import os import defectdojo_api from defectdojo_api.rest import ApiException as DefectDojoApiException import datetime from dateutil.relativedelta import relativedelta import dependencytrack_api from dependencytrack_api.rest import ApiException as DependencyTrackApiException try: DTRACK_API_URL = os.environ["DTRACK_API_URL"] DTRACK_TOKEN = os.environ["DTRACK_TOKEN"] DEFECTDOJO_URL = os.environ["DEFECTDOJO_URL"] DEFECTDOJO_TOKEN = os.environ["DEFECTDOJO_TOKEN"] except KeyError as e: raise Exception(f"Env variable {e} is shall be set") defectdojo_configuration = defectdojo_api.Configuration( host = DEFECTDOJO_URL ) defectdojo_configuration.api_key['tokenAuth'] = DEFECTDOJO_TOKEN defectdojo_configuration.api_key_prefix['tokenAuth'] = 'Token' dependencytrack_configuration = dependencytrack_api.Configuration( host = f"{DTRACK_API_URL}/api" ) dependencytrack_configuration.debug = False dependencytrack_configuration.api_key['ApiKeyAuth'] = DTRACK_TOKEN with defectdojo_api.ApiClient(defectdojo_configuration) as defectdojo_api_client: try: print("Create product in DefectDojo") products_api_instance = defectdojo_api.ProductsApi(defectdojo_api_client) product_request = defectdojo_api.ProductRequest( name="Test Product", description="Just a product for test the API", prod_type=1 ) product_response = products_api_instance.products_create(product_request=product_request) print(f"{product_response=}") print("Done.") print("") product_id = product_response.id print(f"{product_id=}") print("Create engagement in DefectDojo") engagements_api_instance = defectdojo_api.EngagementsApi(defectdojo_api_client) start_time = datetime.date.today() end_time = start_time + relativedelta(years=10) engagement_request = defectdojo_api.EngagementRequest( name="Test Engagement 01", target_start=start_time, target_end=end_time, status="In Progress", product=product_id ) engagement_response = engagements_api_instance.engagements_create(engagement_request=engagement_request) print(f"{engagement_response=}") print("Done.") print("") engagement_id = engagement_response.id print(f"{engagement_id=}") except DefectDojoApiException as e: print(f"DefectDojoApiException: {e=}, {str(e)}") with dependencytrack_api.ApiClient(dependencytrack_configuration) as dependencytrack_api_client: try: print("Create project in DependencyTrack") project_api_instance = dependencytrack_api.ProjectApi(dependencytrack_api_client) project = dependencytrack_api.Project( name="TestProject", uuid="", last_bom_import=0 ) project_response = project_api_instance.create_project(project=project) print(f"{project_response=}") print("Done.") print("") project_uuid = project_response.uuid print(f"{project_uuid=}") print("Create project property in DependencyTrack") project_property_api_instance = dependencytrack_api.ProjectPropertyApi(dependencytrack_api_client) property = dependencytrack_api.ProjectProperty( group_name="integrations", property_name="defectdojo.engagementId", property_value=str(engagement_id), property_type="STRING" ) property_response = project_property_api_instance.create_property1(project_uuid, project_property=property) print(f"{property_response=}") print("Done.") print("") print("Create project property in DependencyTrack") property = dependencytrack_api.ProjectProperty( group_name="integrations", property_name="defectdojo.doNotReactivate", property_value="true", property_type="BOOLEAN" ) property_response = project_property_api_instance.create_property1(project_uuid, project_property=property) print(f"{property_response=}") print("Done.") print("") print("Create project property in DependencyTrack") property = dependencytrack_api.ProjectProperty( group_name="integrations", property_name="defectdojo.reimport", property_value="true", property_type="BOOLEAN" ) property_response = project_property_api_instance.create_property1(project_uuid, project_property=property) print(f"{property_response=}") print("Done.") print("") except DependencyTrackApiException as e: print(f"DependencyTrackApiException: {e=}, {str(e)}")