diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_API_V1_ArchV2/changelog.md b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_API_V1_ArchV2/changelog.md new file mode 100644 index 0000000000..dd77a52ed0 --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_API_V1_ArchV2/changelog.md @@ -0,0 +1,3 @@ +# Changelog + +## 2025 R2.1 \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_API_V1_ArchV2/explore.aws-pre-prod-api-v1.json b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_API_V1_ArchV2/explore.aws-pre-prod-api-v1.json new file mode 100644 index 0000000000..2278ce5bb8 --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_API_V1_ArchV2/explore.aws-pre-prod-api-v1.json @@ -0,0 +1 @@ +{"openapi":"3.1.0","info":{"title":"Explore Service","summary":"Service to manage jobs","version":"0.1.0"},"servers":[{"url":"/api/explore/v1"}],"paths":{"/health":{"get":{"tags":["health"],"summary":"Health","description":"Returns healthy message.","operationId":"health-health","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health-Health"}}}}},"security":[{"HTTPBearer":[]}]}},"/jobs":{"post":{"tags":["jobs"],"summary":"Create Job","description":"Create a new job.\n\n:param job: The job to create","operationId":"jobs-create_job","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_jobs-create_job"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExploreJobRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["jobs"],"summary":"Get Jobs","description":"Get all jobs using filter.\n\n:param explore_service: The explore service instance to use for querying data.\n:param filter_exp: OData filter to filter jobs\n:param order_by: Comma separated list of fields to sort the results by. Prepend a field with \"-\" to specify\n that descending order should be used instead of the ascending (which is the default).\n:param skip: items to skip\n:param top: number of items to retrieve\n:param count: If True, the \"count\" entry of the response is populated with the number of retrieved elements.","operationId":"jobs-get_jobs","security":[{"HTTPBearer":[]}],"parameters":[{"name":"$filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"$Filter"}},{"name":"$orderby","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"$Orderby"}},{"name":"$skip","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"$Skip"}},{"name":"$top","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":100,"title":"$Top"}},{"name":"$count","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"$Count"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedExploreJobsRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/{job_id}":{"get":{"tags":["jobs"],"summary":"Get Job","description":"Get a job by its id.\n\n:param job_id: id of the job to retrieve","operationId":"jobs-get_job","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExploreJobRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/{job_id}/kill":{"post":{"tags":["jobs"],"summary":"Kill Job","description":"Submits request to kill job.\n\nThe request takes some time as it depends on resource manager to release all the resources.\n\n:param job_id: The job identifier for the job to be killed","operationId":"jobs-kill_job","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExploreJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/{job_id}/restart":{"post":{"tags":["jobs"],"summary":"Restart failed/killed job","description":"Restarts a failed/killed job.\n\n:param job_id: The job identifier for the job to be restarted","operationId":"jobs-restart_job","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExploreJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/jobs/{job_id}/clone":{"post":{"tags":["jobs"],"summary":"Clone Job","description":"Clones a job based on reference job id.\n\n:param job_id: The job identifier for the job to be cloned","operationId":"jobs-clone_job","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExploreJob"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/post/{job_id}":{"post":{"tags":["post"],"summary":"Get Post Job Session","description":"Gets or creates a new post session.\n\n:param job_id: The job_id to post-process","operationId":"post-get_post_job_session","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"shutdown_mode","in":"query","required":false,"schema":{"allOf":[{"$ref":"#/components/schemas/ShutdownModeEnum"}],"default":"auto","title":"Shutdown Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"string","title":"Response Post-Get Post Job Session"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pypi/index.html":{"get":{"tags":["pypi"],"summary":"Get Pypi Root Index Html","description":"Index page for pypi index.","operationId":"pypi-get_pypi_root_index_html","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}},"security":[{"HTTPBearer":[]}]}},"/pypi/{package_name}/":{"get":{"tags":["pypi"],"summary":"Get Pypi Package Index Html","description":"Index page for each package.","operationId":"pypi-get_pypi_package_index_html","parameters":[{"name":"package_name","in":"path","required":true,"schema":{"type":"string","title":"Package Name"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/pypi/wheels/{wheel_file_name}":{"get":{"tags":["pypi"],"summary":"Get Wheel","description":"Wheel download endpoint.","operationId":"pypi-get_wheel","parameters":[{"name":"wheel_file_name","in":"path","required":true,"schema":{"type":"string","title":"Wheel File Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"AssetFileDefinition":{"properties":{"source_type":{"type":"string","enum":["asset"],"const":"asset","title":"Source Type","default":"asset"},"destination":{"type":"string","title":"Destination"},"internal_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Reference"},"file_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Type"},"asset_id":{"type":"string","title":"Asset Id"},"version":{"type":"string","title":"Version"}},"type":"object","required":["destination","asset_id","version"],"title":"AssetFileDefinition","description":"Asset file definition."},"Body_jobs-create_job":{"properties":{"job":{"type":"string","title":"Job"},"files":{"items":{"type":"string","format":"binary"},"type":"array","title":"Files","default":[]}},"type":"object","required":["job"],"title":"Body_jobs-create_job"},"ExploreJob":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Id"},"template_name":{"type":"string","title":"Template Name"},"solver_queue_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solver Queue Name"},"solver_application_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solver Application Name"},"solver_application_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solver Application Version"},"simctl_queue_name":{"type":"string","title":"Simctl Queue Name"},"simctl_application_name":{"type":"string","title":"Simctl Application Name"},"simctl_application_version":{"type":"string","title":"Simctl Application Version"},"job_configuration":{"allOf":[{"$ref":"#/components/schemas/ExploreJobConfiguration"}],"default":{}},"resource_manager_job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resource Manager Job Id"},"resource_manager_post_job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resource Manager Post Job Id"},"status":{"allOf":[{"$ref":"#/components/schemas/ExploreJobStatusEnum"}],"default":"pending"},"cleaned":{"type":"boolean","title":"Cleaned","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"status_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Status Updated At"},"failed_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failed Reason"},"job_access_key":{"type":"string","title":"Job Access Key"},"state_summary":{"allOf":[{"$ref":"#/components/schemas/JsonValue"}],"default":{}},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"}},"type":"object","required":["name","template_name","simctl_queue_name","simctl_application_name","simctl_application_version"],"title":"ExploreJob","description":"Database job definition."},"ExploreJobConfiguration":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"template_name":{"type":"string","title":"Template Name"},"template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Id"},"simulation_controller_settings":{"allOf":[{"$ref":"#/components/schemas/SimulationControllerSettings"}],"default":{"files_to_use":[],"files_to_retrieve":{}}},"tasks":{"items":{"$ref":"#/components/schemas/TaskRuntimeParams"},"type":"array","title":"Tasks"},"files":{"additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/AssetFileDefinition"},{"$ref":"#/components/schemas/UploadFileDefinition"}]},"type":"object","title":"Files","default":{}},"parameters":{"additionalProperties":{"$ref":"#/components/schemas/ParameterDescription"},"type":"object","title":"Parameters","default":{}}},"type":"object","required":["name","template_name","tasks"],"title":"ExploreJobConfiguration","description":"Configuration for an Explore job."},"ExploreJobRead":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"template_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Id"},"template_name":{"type":"string","title":"Template Name"},"solver_queue_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solver Queue Name"},"solver_application_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solver Application Name"},"solver_application_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solver Application Version"},"simctl_queue_name":{"type":"string","title":"Simctl Queue Name"},"simctl_application_name":{"type":"string","title":"Simctl Application Name"},"simctl_application_version":{"type":"string","title":"Simctl Application Version"},"job_configuration":{"allOf":[{"$ref":"#/components/schemas/ExploreJobConfiguration"}],"default":{}},"resource_manager_job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resource Manager Job Id"},"resource_manager_post_job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Resource Manager Post Job Id"},"status":{"$ref":"#/components/schemas/ExploreJobStatusEnum"},"cleaned":{"type":"boolean","title":"Cleaned"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"status_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Status Updated At"},"failed_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failed Reason"},"state_summary":{"$ref":"#/components/schemas/JsonValue"},"user_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Name"}},"type":"object","required":["name","template_name","simctl_queue_name","simctl_application_name","simctl_application_version","resource_manager_job_id","resource_manager_post_job_id","status","cleaned","created_at","status_updated_at","failed_reason","state_summary","user_name"],"title":"ExploreJobRead","description":"Public job definition."},"ExploreJobResponse":{"properties":{"message":{"type":"string","title":"Message"},"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["message","job_id","status"],"title":"ExploreJobResponse","description":"Response Definition."},"ExploreJobStatusEnum":{"type":"string","enum":["pending","running","failed","succeeded","killing","killed"],"title":"ExploreJobStatusEnum","description":"Enum of job status."},"FilesListParameterSource":{"properties":{"source_type":{"type":"string","enum":["files_list"],"const":"files_list","title":"Source Type","default":"files_list"},"files":{"items":{"type":"string"},"type":"array","title":"Files"}},"type":"object","required":["files"],"title":"FilesListParameterSource","description":"File list parameter source."},"FindReplaceParameterSource":{"properties":{"source_type":{"type":"string","enum":["find_replace"],"const":"find_replace","title":"Source Type","default":"find_replace"},"associated_file":{"type":"string","title":"Associated File"}},"type":"object","required":["associated_file"],"title":"FindReplaceParameterSource","description":"Find and Replace parameter source."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JsonValue":{},"OtherParameterSource":{"properties":{"source_type":{"type":"string","enum":["other"],"const":"other","title":"Source Type","default":"other"}},"type":"object","title":"OtherParameterSource","description":"Other parameter source."},"PaginatedExploreJobsRead":{"properties":{"values":{"items":{"$ref":"#/components/schemas/ExploreJobRead"},"type":"array","title":"Values","default":[]},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Count"}},"type":"object","title":"PaginatedExploreJobsRead","description":"Paginated results."},"ParameterDataTypeEnum":{"type":"string","enum":["float","integer","string","boolean"],"title":"ParameterDataTypeEnum","description":"Enum of parameter data types."},"ParameterDescription":{"properties":{"name":{"type":"string","title":"Name"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"data_type":{"$ref":"#/components/schemas/ParameterDataTypeEnum"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"source":{"anyOf":[{"$ref":"#/components/schemas/FindReplaceParameterSource"},{"$ref":"#/components/schemas/FilesListParameterSource"},{"$ref":"#/components/schemas/OtherParameterSource"}],"title":"Source"},"default_value":{"anyOf":[{"type":"boolean"},{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Default Value"},"validity_safe_expression":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validity Safe Expression"},"attributes":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Attributes","default":{}}},"type":"object","required":["name","data_type","source"],"title":"ParameterDescription","description":"Parameter description."},"ShutdownModeEnum":{"type":"string","enum":["auto","manual"],"title":"ShutdownModeEnum","description":"Enum of shutdown mode."},"SimulationControllerSettings":{"properties":{"queue_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Queue Name"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"files_to_use":{"items":{"type":"string"},"type":"array","title":"Files To Use","default":[]},"files_to_retrieve":{"additionalProperties":{"type":"string"},"type":"object","title":"Files To Retrieve","default":{}}},"type":"object","title":"SimulationControllerSettings","description":"Simulation controller settings."},"TaskRuntimeParams":{"properties":{"task_id":{"type":"string","title":"Task Id"},"instance_name":{"type":"string","title":"Instance Name"},"inputs":{"$ref":"#/components/schemas/JsonValue"}},"type":"object","required":["task_id","instance_name","inputs"],"title":"TaskRuntimeParams","description":"This class holds necessary parameters to run a task.","object_validation":"task@task_id:inputs"},"UploadFileDefinition":{"properties":{"source_type":{"type":"string","enum":["upload"],"const":"upload","title":"Source Type","default":"upload"},"destination":{"type":"string","title":"Destination"},"internal_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Reference"},"file_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Type"}},"type":"object","required":["destination"],"title":"UploadFileDefinition","description":"Upload file definition."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}} \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_API_V1_ArchV2/intro_archv2_.md b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_API_V1_ArchV2/intro_archv2_.md new file mode 100644 index 0000000000..7015c46c3f --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_API_V1_ArchV2/intro_archv2_.md @@ -0,0 +1,108 @@ +# AVx Python APIs Documentation + +## Background + +The AVx python APIs are hosted as a python package on cluster as part of the Explore service deployment. The developers can install the package using pip and use it to call AVx autonomy APIs without the need to make raw REST calls. + +PyPi Regsitry URL: + +The python package is hosted as PyPi compliant registry on each deployed cluster. The registry URL looks like this: + +https://BASE_URL/pypi + +For example, for AFT deployment: + + + +## Usage Example + +Pre-requisites: + +We are assuming that on the system is running **Ubuntu 22.04**, there are following already installed: + +- python 3.10 +- pip 25.1 +- uv 0.6 + +And we assume that you are using AVx Autonomy Toolchain version **25R2.1** + +Step 1: Create virtual environment + +``` +$ python -m venv .venv +``` + +Step 2: Activate the virtual environment + +``` +$ source .venv/bin/activate +``` + +Step 3: Install python packages: + +- ansys-api-avxcelerate-autonomy +- ansys-avxcelerate-autonomy + +``` +$ pip install ansys-api-avxcelerate-autonomy ansys-avxcelerate-autonomy --extra-index-url [https://explore-service.traefik.me:9081/pypi](https://explore-service.traefik.me:9081/v1/pypi) + +Step 4: Use ansys-api-avxcelerate-autonomy and ansys-avxcelerate-autonomy in your python code +``` + +``` +import asyncio + +from ansys.api.avxcelerate.autonomy.explore_service.v1.api.jobs_api import JobsApi + +from ansys.api.avxcelerate.autonomy.explore_service.v1.api_client import ApiClient + +from ansys.api.avxcelerate.autonomy.explore_service.v1.configuration import Configuration + +from ansys.api.avxcelerate.autonomy.explore_service.v1.exceptions import NotFoundException + +from ansys.api.avxcelerate.autonomy.explore_service.v1.models.explore_job_read import ExploreJobRead + +from ansys.avxcelerate.autonomy.utils.auth_client_session import AuthClientSession + +from ansys.avxcelerate.autonomy.utils.token_provider import TokenProvider + +async def main(): + +base_url = "" + +configuration = Configuration(host=f"{base_url}/api/explore/v1") + +async with ApiClient(configuration) as api_client: + +session = AuthClientSession(base_url=f"{base_url}/api/explore/v1/") + +provider = TokenProvider(f"{base_url}/auth") + +session.set_provider(provider) + +provider.login() + +api_client.rest_client.pool_manager = session + +jobs_api = JobsApi(api_client) + +job_id = "exp-dec894b2-647c-4ca5-b516-cdfc18c58fdd" + +try: + +job: ExploreJobRead = await jobs_api.get_job(job_id) + +print(job) + +except NotFoundException: + +print("No job found against this id") + +except Exception as ex: + +print(str(ex)) + +print("Couldn't get job against this job id") + +asyncio.run(main()) +``` \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/auth_1.png b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/auth_1.png new file mode 100644 index 0000000000..6b99e4475c Binary files /dev/null and b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/auth_1.png differ diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/auth_2.png b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/auth_2.png new file mode 100644 index 0000000000..1ab38d74ad Binary files /dev/null and b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/auth_2.png differ diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/avx-explore-analyze-api-r2.1.json b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/avx-explore-analyze-api-r2.1.json new file mode 100644 index 0000000000..b5dd1217f9 --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/avx-explore-analyze-api-r2.1.json @@ -0,0 +1 @@ +{"swagger": "2.0", "basePath": "/api/tsa", "paths": {"/v1/tsa/sut-config": {"get": {"responses": {"200": {"description": "Fetched all available Tags from SUT configuration."}, "500": {"description": "Error fetching SUT configuration Tags."}, "404": {"description": "SUT configuration Tags not found!"}}, "summary": "Retrieve available SUT configuration tags", "operationId": "get_sut_configuration_tags", "tags": ["SUT Configuration"]}}, "/v1/tsa/sut-config/{sut_config_tag}": {"get": {"responses": {"500": {"description": "Error fetching versions for the selected Tag. Contact admin!"}, "404": {"description": "No version was found!"}, "200": {"description": "Fetched all available versions for the selected SUT Tag."}}, "summary": "Retrieve SUT versions for given sut_config_tag", "operationId": "get_sut_configuration_versions", "parameters": [{"name": "sut_config_tag", "in": "path", "required": true, "type": "string", "description": "Tag of the Sut Config to read "}], "tags": ["SUT Configuration"]}}, "/v1/tsa/sut-config/{sut_config_tag}/{sut_config_version}": {"get": {"responses": {"500": {"description": "Error fetching SUT configuration. Contact admin!"}, "404": {"description": "SUT Config for the : not found."}, "200": {"description": "Fetched SUT Config for the provided :."}}, "summary": "Retrieve a specific SUT Config by its unique pair of identifiers :", "operationId": "get_sut_configuration", "parameters": [{"name": "sut_config_tag", "in": "path", "required": true, "type": "string", "description": "Tag ID of the Sut Config to get "}, {"name": "sut_config_version", "in": "path", "required": true, "type": "string", "description": "Supported version for the chosen Tag "}], "tags": ["SUT Configuration"]}}, "/v2/tsa": {"post": {"responses": {"500": {"description": "Internal Server Error. Triggering the TSA airflow job failed. Contact Admin. The server has encountered a situation it does not know how to handle."}, "400": {"description": "Bad Request. Couldn't trigger the TSA airflow job - check that the input parameters are correct and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. The TSA airflow job was successfully triggered."}}, "summary": "Trigger a TSA airflow job", "operationId": "post_tsa_airflow_job", "parameters": [{"name": "payload", "required": true, "in": "body", "schema": {"$ref": "#/definitions/TsaConfig"}}], "tags": ["Airflow Pipeline"]}}, "/v2/tsa-airflow-resample/{job_id}/{chunk_id}/{job_iteration}": {"post": {"responses": {"500": {"description": "Internal Server Error. Triggering the TSA airflow job failed. Contact Admin. The server has encountered a situation it does not know how to handle."}, "400": {"description": "Bad Request. Couldn't trigger the TSA airflow job - check that the input parameters are correct and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. The TSA airflow job was successfully triggered."}}, "summary": "Trigger a resample job by job ID, chunk ID and iteration", "operationId": "post_tsa_airflow_resample_job", "parameters": [{"name": "job_id", "in": "path", "required": true, "type": "string", "description": "The identifier of the TSA job"}, {"name": "chunk_id", "in": "path", "required": true, "type": "string", "description": "The identifier of the TSA job chunk within the job"}, {"name": "job_iteration", "in": "path", "required": true, "type": "integer", "description": "Job iteration number"}], "tags": ["Airflow Pipeline"]}}, "/v2/tsa/algorithms": {"get": {"responses": {"200": {"description": "Retrieved all available information on algorithms."}, "400": {"description": "Bad Request. Couldn't find algorithm information. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}}, "summary": "Retrieve all information available for algorithms", "operationId": "get_algorithms", "parameters": [{"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Algorithms"]}}, "/v2/tsa/health": {"get": {"responses": {"204": {"description": "No Content. There is no content to send for this request, but the headers may be useful. The user agent may update its cached headers for this resource with the new ones. "}, "200": {"description": "The request succeeded. The service is healthy."}}, "summary": "Get the health status of the service", "operationId": "get_tsa_monitoring_health", "tags": ["Monitoring"]}}, "/v2/tsa/jobs/cancel/{job_id}": {"post": {"responses": {"400": {"description": "Bad Request. The job couldn't be canceled. Check the job ID is correct and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "\"Success. A message will appear to confirm cancellation. {\"status\": \"cancelling\", \"message\": \"Job cancellation started\"}"}}, "summary": "Cancel the job based on the job ID and update the job status in the database", "operationId": "post_tsa_job_cancel", "parameters": [{"name": "job_id", "in": "path", "required": true, "type": "string", "description": "The identifier of the TSA job"}, {"name": "payload", "required": true, "in": "body", "schema": {"$ref": "#/definitions/Job_Cancel_Request"}}], "tags": ["Analyze"]}}, "/v2/tsa/jobs/chunk_files/{job_id}/{chunk_id}": {"parameters": [{"name": "job_id", "in": "path", "required": true, "type": "string"}], "get": {"responses": {"500": {"description": "Internal Server Error. Contact admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "Not Found. Check the TSA job ID and chunk_id is correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad Request. Couldn't retrieve the file. Check the TSA job ID and chunk_id and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. The file content has been retrieved."}}, "summary": "Retrieve chunk file content based on the job ID and chunk ID", "operationId": "get_tsa_chunk_file", "parameters": [{"name": "chunk_id", "in": "path", "required": true, "type": "string", "description": "The identifier of the TSA job chunk"}, {"required": true, "example": "parameter", "enum": ["kpi", "parameter", "parquet"], "in": "query", "description": "Type of file", "name": "file_type", "type": "string"}], "tags": ["Analyze"]}}, "/v2/tsa/jobs/files/{job_id}/{sample_id}": {"get": {"responses": {"500": {"description": "Internal Server Error. Contact admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "Not Found. Check the TSA job ID and sample_id is correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad Request. Couldn't retrieve the file. Check the TSA job ID and sample_id and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. The file content has been retrieved."}}, "summary": "Retrieve content of different file types based on the sample ID of a Job", "operationId": "get_tsa_sample_file", "parameters": [{"name": "job_id", "in": "path", "required": true, "type": "string", "description": "The identifier of the TSA job"}, {"name": "sample_id", "in": "path", "required": true, "type": "string", "description": "Sample identifier"}, {"required": true, "example": "scenario", "enum": ["kpi", "scenario", "sensor_error", "simulation_log", "simulation_trace_log", "simulation_trace"], "in": "query", "description": "Type of file", "name": "file_type", "type": "string"}], "tags": ["Analyze"]}}, "/v2/tsa/jobs/simulation_status/{job_chunk_id}": {"get": {"responses": {"400": {"description": "Bad Request. Couldn't retrieve the simulation status, check the job chunk id is correct and try again."}, "200": {"description": "Success. Retrieved simulation status of TSA job chunk id."}}, "summary": "Retrieve simulation status of TSA job chunk ID", "operationId": "get_sim_status", "parameters": [{"name": "job_chunk_id", "in": "path", "required": true, "type": "string", "description": "The identifier of the TSA job_chunk"}], "tags": ["Analyze"]}}, "/v2/tsa/jobs/simulation_status/{job_chunk_id}/stats": {"post": {"responses": {"201": {"description": "Reported successfully"}}, "summary": "Report the change of active simulations at the moment", "description": "Relative values are considered (\u00b11)", "operationId": "post_simulation_status_metric", "parameters": [{"name": "job_chunk_id", "in": "path", "required": true, "type": "string", "description": "The TSA job-chunk-id for which statistics are reported."}, {"name": "payload", "required": true, "in": "body", "schema": {"$ref": "#/definitions/Job_Chunk_Id_Status_Update"}}], "tags": ["Analyze"]}}, "/v2/tsa/jobs/task_status/{job_id}/{job_chunk_id}": {"get": {"responses": {"400": {"description": "Bad Request. Couldn't retrieve the status of TSA job {job_id}, check the job ID an the chunk ID are correct and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Job_Task_Status"}}}}, "summary": "Retrieve the status of a TSA job identified with its job ID and chunk ID", "operationId": "get_tsa_job_task_status", "parameters": [{"name": "job_id", "in": "path", "required": true, "type": "string", "description": "The identifier of the TSA job"}, {"name": "job_chunk_id", "in": "path", "required": true, "type": "string", "description": "The chunk identifier of the TSA job"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Analyze"]}}, "/v2/tsa/jobs/{job_id}": {"get": {"responses": {"400": {"description": "Bad Request. The status of TSA job {job_id} couldn't be retrieved. Check the job ID is correct and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success", "schema": {"$ref": "#/definitions/Job"}}}, "summary": "Retrieve the status of a TSA job identified by the job ID", "operationId": "get_tsa_job", "parameters": [{"name": "job_id", "in": "path", "required": true, "type": "string", "description": "The identifier of the TSA job"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Analyze"]}}, "/v2/tsa/logical-scenarios": {"get": {"responses": {"200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/LogicalScenario"}}}, "400": {"description": "Bad Request. Could not retrieve available logical scenarios. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}}, "summary": "Retrieve a list of all available logical scenarios", "operationId": "get_logical_scenarios", "parameters": [{"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}}, "/v2/tsa/logical-scenarios/config": {"get": {"responses": {"400": {"description": "Bad Request. Could not retrieve logical scenario config file. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. Retrieved logical scenario config file."}}, "summary": "Retrieve contents of a scenario config file", "operationId": "get_scenario_config", "tags": ["Logical Scenario"]}}, "/v2/tsa/logical-scenarios/group-type": {"get": {"responses": {"400": {"description": "Bad Request. Could not retrieve group-type data. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/GroupType"}}}}, "summary": "Retrieve group types data for scenarios", "operationId": "get_group_types", "parameters": [{"name": "name", "in": "query", "type": "string", "description": "Name of the group-type"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "deprecated": true, "tags": ["Logical Scenario"]}}, "/v2/tsa/logical-scenarios/groups": {"get": {"responses": {"400": {"description": "Bad Request. Could not retrieve logical scenario group data. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success", "schema": {"$ref": "#/definitions/Group"}}}, "summary": "Retrieve groups data for scenarios", "operationId": "get_groups", "parameters": [{"name": "name", "in": "query", "type": "string", "description": "Name of the group"}, {"name": "type", "in": "query", "type": "string", "description": "Type of the group"}, {"name": "source_id", "in": "query", "type": "string", "description": "Type of the group"}, {"name": "enabled", "in": "query", "type": "boolean", "description": "Enabled flag of the group"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "deprecated": true, "tags": ["Logical Scenario"]}}, "/v2/tsa/logical-scenarios/id/{scenario_id}/versions/{version}": {"get": {"responses": {"404": {"description": "Not Found. Could not retrieve logical scenario. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad Request. Could not retrieve logical scenario. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success", "schema": {"$ref": "#/definitions/LogicalScenario"}}}, "summary": "Retrieve logical scenario by ID and version", "operationId": "get_logical_scenario_id_and_version", "parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string", "description": "scenario_id of logical scenario "}, {"name": "version", "in": "path", "required": true, "type": "string", "description": "version of logical scenario "}, {"required": false, "in": "query", "description": "fields to include in response. comma separated without space as a single string. example : id,label,parameters[].name", "name": "fields", "type": "string"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}}, "/v2/tsa/logical-scenarios/kpis": {"get": {"responses": {"400": {"description": "Bad Request. Could not retrieve KPI data. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/KPI"}}}}, "summary": "Retrieve KPI data for logical scenarios", "operationId": "get_kpis", "parameters": [{"name": "name", "in": "query", "type": "array", "description": "comma-saperated list of kpis names", "items": {"type": "string"}, "collectionFormat": "csv"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}}, "/v2/tsa/logical-scenarios/{scenario_id}/assets": {"parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string"}], "get": {"responses": {"404": {"description": "Not Found. The scenario does not exist. Check the scenario ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad request. the scenario ID was not provided in the request. Add the scenario ID and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/asset"}}}}, "summary": "Retrieve asset list for a specific logical scenario ID", "operationId": "get_logical_scenario_id_assets_link", "parameters": [{"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}}, "/v2/tsa/logical-scenarios/{scenario_id}/scenario_file": {"get": {"responses": {"404": {"description": "Not Found. A logical scenario with the specified ID was not found. Check if the specified ID is correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success. Retrieved logical scenario file by ID."}}, "summary": "Download the logical scenario file", "operationId": "get_logical_scenario_file", "parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string", "description": "ID of logical scenario "}], "tags": ["Logical Scenario"]}}, "/v2/tsa/logical-scenarios/{scenario_id}/versions/{scenario_version}/map_files": {"get": {"responses": {"404": {"description": "Not Found. Maps associated with the scenarios not found in the system"}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/asset"}}}}, "operationId": "get_logical_scenario_map_files", "parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string", "description": "ID of logical scenario "}, {"name": "scenario_version", "in": "path", "required": true, "type": "string", "description": "Version of logical scenario "}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}}, "/v2/tsa/logical-scenarios/{scenario_id}/versions/{version}/scenario_file": {"get": {"responses": {"404": {"description": "Not Found. The logical scenario with the specified ID and version was not found. Please verify the ID and version and try again. This may occur if the resource does not exist or is hidden from unauthorized clients."}, "200": {"description": "Success. Retrieved logical scenario file by ID and version."}}, "summary": "Download the logical scenario file by id and version", "operationId": "get_logical_scenario_file_by_version", "parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string", "description": "ID of logical scenario "}, {"name": "version", "in": "path", "required": true, "type": "string", "description": "version of logical scenario "}], "tags": ["Logical Scenario"]}}, "/v2/tsa/logical-scenarios/{scenario_name}": {"get": {"responses": {"400": {"description": "Bad Request. Could not retrieve details of the logical scenario {scenario_name}. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success", "schema": {"$ref": "#/definitions/LogicalScenario"}}}, "summary": "Retrieve details of a specific logical scenario by scenario name", "operationId": "get_logical_scenario_resource", "parameters": [{"name": "scenario_name", "in": "path", "required": true, "type": "string", "description": "The scenario Name"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}}, "/v2/tsa/logical-scenarios/{scenario_name}/versions": {"get": {"responses": {"500": {"description": "Internal Server Error. Versions of the logical scenario could not be retrieved. The server has encountered a situation it does not know how to handle. Contact Admin."}, "404": {"description": "Bad Request. Logical scenario not found. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. Retrieved versions of the logical scenario."}}, "summary": "Retrieve all versions for the given logical scenario name", "operationId": "get_scenario_versions", "parameters": [{"name": "scenario_name", "in": "path", "required": true, "type": "string", "description": "The logical scenario name"}], "tags": ["Logical Scenario"]}}, "/v2/tsa/maprfs-health": {"get": {"responses": {"204": {"description": "No Content. The test to access the MapR file system failed. There is no content to send for this request, but the headers may be useful. The user agent may update its cached headers for this resource with the new ones."}, "200": {"description": "The test to access the MapR file system succeeded."}}, "summary": "Get the health status of the MapR file system", "operationId": "get_tsa_monitoring_maprfs_health", "tags": ["Monitoring"]}}, "/v2/tsa/metric": {"get": {"responses": {"200": {"description": "Success. The metrics for the service have been retrieved."}}, "summary": "Retrieve the metrics of the service", "operationId": "get_tsa_monitoring_metrics", "tags": ["Monitoring"]}, "post": {"responses": {"400": {"description": "Bad Request. Please check your request and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. The monitoring data has been added."}}, "summary": "Post the metrics to the service", "operationId": "post_tsa_monitoring_metrics", "parameters": [{"required": false, "in": "query", "description": "Other simulation cases like no kpis, invalid scenario, etc.", "name": "other_simulations", "type": "string"}, {"required": false, "in": "query", "description": "Number of logical scenarios", "name": "no_of_logical_scenarios", "type": "string"}, {"required": false, "in": "query", "description": "Number of failed simulations", "name": "no_of_failed_simulations", "type": "string"}, {"required": false, "in": "query", "description": "Number of successful simulations", "name": "no_of_successful_simulations", "type": "string"}, {"required": false, "in": "query", "description": "Number of valid concrete scenarios created", "name": "no_of_valid_concrete_scenarios", "type": "string"}, {"required": false, "in": "query", "description": "Number of invalid concrete scenarios created", "name": "no_of_invalid_concrete_scenarios", "type": "string"}, {"required": false, "in": "query", "description": "Number of jobs created", "name": "number_of_jobs_created", "type": "string"}, {"required": false, "in": "query", "description": "Distance driven", "name": "distance_driven", "type": "string"}, {"required": false, "in": "query", "description": "Date", "name": "date", "type": "string"}, {"required": false, "in": "query", "description": "Job ID", "name": "job_id", "type": "string"}], "tags": ["Monitoring"]}}, "/v2/tsa/ping": {"get": {"responses": {"200": {"description": "Successfully pinged"}}, "summary": "Ping the service", "operationId": "get_tsa_monitoring_ping", "tags": ["Monitoring"]}}, "/v2/tsa/reports": {"post": {"responses": {"400": {"description": "Bad Request. The request to create a CVS report with the job data couldn't be completed. Check that the list of TSA jobs are correct and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. The request to create a CVS report with all the job data has been completed. Please find the path of the CVS report in the response body."}}, "summary": "Create a CSV file with data for all the jobs in body", "operationId": "post_tsa_reports", "parameters": [{"required": true, "example": "{}", "in": "body", "description": "The list of TSA jobs", "name": "body", "type": "string"}], "tags": ["Simulation Reports"]}}, "/v2/tsa/reports/analytics-result/{job_id}": {"get": {"responses": {"400": {"description": "Bad Request. The request to retrieve analytics results for {job_id} couldn't be completed. Check that the job ID is correct and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. The analytics results for the {job_id} have been retrieved."}}, "summary": "Retrieve analytics results of a specific TSA job ID", "operationId": "get_tsa_analytics_result", "parameters": [{"name": "job_id", "in": "path", "required": true, "type": "string", "description": "The identifier of the TSA job"}], "tags": ["Simulation Reports"]}}, "/v2/tsa/reports/{job_id}/{chunk_id}": {"get": {"responses": {"404": {"description": "Not Found. The report couldn't be retrieved because the TSA job or TSA chunk were not found. Check that the job ID and chunk ID are correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad Request. The request to retrieve the {job_id} report couldn't be completed. Check that the job ID and chunk ID are correct and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. The report for {job_id} has been retrieved.", "schema": {"$ref": "#/definitions/JobReport"}}}, "summary": "Retrieve generated report according to the Job ID", "operationId": "get_tsa_report2", "parameters": [{"name": "job_id", "in": "path", "required": true, "type": "string", "description": "The identifier of the TSA job"}, {"name": "chunk_id", "in": "path", "required": true, "type": "string", "description": "The identifier of the TSA job chunk within the job or 'all'"}], "tags": ["Simulation Reports"]}}, "/v2/tsa/total-license-count": {"get": {"responses": {"400": {"description": "Bad Request. Please check your request and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. The total number of license count is obtained."}}, "summary": "Get the total number of license count", "operationId": "get_tsa_airflow_job_license_checkin", "tags": ["Airflow Pipeline"]}}, "/v3/tsa": {"post": {"responses": {"500": {"description": "Internal Server Error. Triggering the TSA airflow job failed. Contact Admin. The server has encountered a situation it does not know how to handle."}, "400": {"description": "Bad Request. Couldn't trigger the TSA airflow job - check that the input parameters are correct and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. The TSA airflow job was successfully triggered."}}, "summary": "Trigger a TSA airflow job", "operationId": "post_tsa_airflow_job_experimental", "parameters": [{"name": "parameter_json", "in": "formData", "type": "file"}, {"name": "kpi_json", "in": "formData", "type": "file"}, {"name": "job_config", "in": "formData", "type": "string", "required": true}, {"name": "driver_input", "in": "formData", "type": "file"}, {"name": "arch2", "in": "formData", "type": "string"}], "consumes": ["multipart/form-data"], "tags": ["Airflow Pipeline"]}}, "/v3/tsa/jobs": {"get": {"responses": {"400": {"description": "Bad Request. Couldn't retrieve the TSA jobs status. Please check the TSA job ID and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Tsa_Jobs_Response"}}}}, "summary": "Retrieve the status and configuration of all TSA jobs", "operationId": "get_tsa_jobs_v3", "parameters": [{"required": false, "example": "{\"job_id\":[\"job_1\", \"job_2\"], \"status\":[\"status_1\", \"status_2\"]}", "in": "query", "description": "Filtering one or more column entries with list of values", "name": "in", "type": "string"}, {"required": false, "example": "timestamp:desc (default)", "in": "query", "description": "Ordering a column in ascending (asc) or descending (desc) order", "name": "order_by", "type": "string"}, {"required": false, "example": "{\"job_id\":\"tsa-\", \"scenario\":\"scen\"}", "in": "query", "description": "Condition like startswith for filtering column/ columns based on partial string", "name": "like", "type": "string"}, {"required": false, "example": "User-1", "in": "query", "description": "User ID by which the records need to be filtered", "name": "user_id", "type": "string"}, {"required": false, "example": "Sensitivity Analysis", "in": "query", "description": "Type of the job for which the records need to be filtered by", "name": "job_type", "type": "string"}, {"required": false, "example": "avoid_lateral_collision_scenario", "in": "query", "description": "Scenario for which the records need to be filtered by", "name": "scenario", "type": "string"}, {"required": false, "example": "080_042_081", "in": "query", "description": "System under test for which the records need to be filtered by", "name": "SUT", "type": "string"}, {"required": false, "example": "tsa-cdf9b3ee-e3a1-11eb-b379-0a580a83287d", "in": "query", "description": "Id of the job for which the records need to be filtered by", "name": "job_id", "type": "string"}, {"required": false, "example": "Success", "in": "query", "description": "Status of the job for which the records need to be filtered by", "name": "status", "type": "string"}, {"required": false, "example": "nloop", "in": "query", "description": "Source of the jobs data", "name": "source", "type": "string"}, {"required": false, "example": "1000", "in": "query", "description": "Starting index to return the records from(offset value or the number of records to skip)", "name": "skip", "type": "string"}, {"required": false, "example": "2500", "in": "query", "description": "Number of records to return in the response", "name": "limit", "type": "string"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Analyze"]}}, "/v3/tsa/logical-scenarios": {"get": {"responses": {"400": {"description": "Bad Request. Could not retrieve available logical scenarios. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/LogicalScenarios"}}}}, "summary": "Retrieve a list of all available logical scenarios with their total count", "operationId": "get_logical_scenarios_v3", "parameters": [{"required": false, "example": "date:desc", "in": "query", "description": "Ordering a column in ascending (asc) or descending (desc) order", "name": "order_by", "type": "string"}, {"required": false, "example": "{\"name\":[\"scen_1\", \"scen_2\"]}", "in": "query", "description": "Filtering one or more column entries with list of values", "name": "in", "type": "string"}, {"required": false, "example": "{\"name\":\"scenario-\"", "in": "query", "description": "Condition like startswith for filtering column/ columns based on partial string", "name": "like", "type": "string"}, {"required": false, "example": "1000", "in": "query", "description": "Starting index to return the records from", "name": "skip", "type": "string"}, {"required": false, "example": "100", "in": "query", "description": "Number of records to return in the response", "name": "limit", "type": "string"}, {"required": false, "in": "query", "description": "Filter by date", "name": "date", "type": "string"}, {"required": false, "in": "query", "description": "Filter by name", "name": "name", "type": "string"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}}}, "info": {"title": "AVxcelerate Explore & Analyze", "version": "2025R2.1", "description": "This is the REST API for the Explore and Analyze (TSA) application that is part of the Ansys AVxcelerate Autonomy.
The REST API provides endpoints to manage logical scenarios and their related entities including associated assets, algorithms, Analyze jobs, simulation reports and Airflow Pipeline.
Please refer to the Analyze and Explore User Guide available on the Ansys documentation portal for examples of how to use the available REST API features.", "contact": {"name": "support@ansys.com", "email": "support@ansys.com", "url": null}, "license": {"name": "Ansys software"}}, "produces": ["application/json"], "consumes": ["application/json"], "securityDefinitions": {"apikey": {"type": "apiKey", "in": "header", "name": "Authorization"}}, "security": [{"apikey": []}], "tags": [{"name": "Logical Scenario", "description": "Endpoints to manage logical scenarios and associated data"}, {"name": "Algorithms", "description": "Endpoints to manage algorithms"}, {"name": "Monitoring", "description": "Endpoints to monitor the health of the services"}, {"name": "Analyze", "description": "The endpoints that manage the configuration and status of the job in the Explore and Analyze application."}, {"name": "Simulation Reports", "description": "The endpoints used to generate simulation reports"}, {"name": "Airflow Pipeline", "description": "The endpoints used to trigger a test-space analytics run with Airflow."}, {"name": "SUT Configuration", "description": "This section is not used in this REST API, please use the dedicated SUT REST API to manage SUT endpoints"}], "definitions": {"LogicalScenario": {"properties": {"id": {"type": "string", "description": "ID of LogicalScenario.", "example": "14c1c565-7dca-4ef4-9180-bfbb1e0914a4"}, "name": {"type": "string", "description": "The name of this LogicalScenario.", "example": "cut-out"}, "date": {"type": "string", "format": "date-time", "description": "Modification date and time", "example": "2022-09-21T14:32:58"}, "label": {"type": "string", "description": "The label of this LogicalScenario.", "example": "Avoid Lateral Collision Scenario"}, "description": {"type": "string", "description": "The description of this LogicalScenario.", "example": "One non-ego vehicle performing a cut-out maneuver"}, "parameters": {"type": "array", "description": "The parameters of this LogicalScenario.", "example": [{"description": "velocity of the host", "name": "velocity", "label": "Relative Velocity", "data_type": "double", "unit": "m/s"}], "items": {"$ref": "#/definitions/ParameterDescription"}}, "kpis": {"type": "array", "description": "The kpis of this LogicalScenario.", "default": [], "example": [{"description": "Minimum value of Time to Collision during simulation", "name": "min_ttc", "label": "Minimum time to collision", "target": "application/adp/test/evaluation/kpi/closed_loop_evaluation/closed_loop_kpi_evaluation.test.sh", "data_type": "double", "unit": "s"}], "items": {"$ref": "#/definitions/KPI"}}, "file_format": {"type": "string", "description": "File format of concrete scenario file", "example": "XOSC"}, "user_data": {"type": "object", "description": "User data for the logical scenario.", "example": "{}"}}, "type": "object"}, "ParameterDescription": {"properties": {"name": {"type": "string", "description": "The name of this ParameterDescription.", "example": "velocity"}, "label": {"type": "string", "description": "User friendly label for this parameter.", "example": "Relative Velocity"}, "description": {"type": "string", "description": "The description of this ParameterDescription.", "example": "velocity of the host"}, "data_type": {"type": "string", "description": "The type of this ParameterDescription", "example": "double", "enum": ["double", "integer", "string", "boolean"]}, "unit": {"type": "string", "description": "The unit of this ParameterDescription if applicable", "example": "m/s"}, "constraints": {"type": "array", "items": {"description": "Constraints on the parameter", "allOf": [{"$ref": "#/definitions/Constraints"}]}}, "default_value": {"type": "string", "description": "The default value for this parameter", "example": "16.66666667"}}, "type": "object"}, "Constraints": {"properties": {"id": {"type": "string", "description": "The unique identifier of this constraint", "example": "8a674f3b-2dfa-4503-8767-f382568435c9"}, "rule": {"type": "string", "description": "Rule to be applied on the constraint", "example": ">=", "enum": ["==", ">", "<", ">=", "<=", "<>"]}, "formula": {"type": "string", "description": "Formula to be implemented in constraint", "example": "-3"}, "group": {"type": "integer", "description": "Index of the corresponding constraint group (0-indexed)", "example": 0}}, "type": "object"}, "KPI": {"properties": {"name": {"type": "string", "description": "The name of this KPI", "example": "min_ttc"}, "label": {"type": "string", "description": "User friendly label for this KPI", "example": "Minimum time to collision"}, "description": {"type": "string", "description": "The description of this KPI", "example": "Minimum value of Time to Collision during simulation"}, "data_type": {"type": "string", "description": "The data type of this KPI", "example": "double", "enum": ["double", "integer", "string", "boolean"]}, "unit": {"type": "string", "description": "The unit of this KPI if applicable", "example": "s"}}, "type": "object"}, "Group": {"properties": {"id": {"type": "string", "description": "Auto generated id of the group"}, "name": {"type": "string", "description": "User defined unique name of the group"}, "description": {"type": "string", "description": "User defined description of the group"}, "source_id": {"type": "string", "description": "Source of Truth for the group."}, "enabled": {"type": "boolean", "description": "Enable flag of groups"}, "scenarios": {"type": "array", "description": "List of referenced scenarios", "items": {"$ref": "#/definitions/ScenarioReference"}}}, "type": "object"}, "ScenarioReference": {"properties": {"id": {"type": "string", "description": "Id of the attached scenario"}, "name": {"type": "string", "description": "Name of the attached scenario"}, "label": {"type": "string", "description": "label of the attached scenario"}}, "type": "object"}, "GroupType": {"properties": {"id": {"type": "string", "description": "Auto generated id of the group type"}, "name": {"type": "string", "description": "User defined unique name of the group type"}, "description": {"type": "string", "description": "User defined description of the group type"}, "groups": {"type": "array", "description": "List of referenced groups", "items": {"$ref": "#/definitions/GroupReference"}}}, "type": "object"}, "GroupReference": {"properties": {"id": {"type": "string", "description": "Id of the attached group"}, "name": {"type": "string", "description": "Id of the attached scenario"}, "scenarios": {"type": "array", "description": "List of referenced scenarios", "items": {"$ref": "#/definitions/ScenarioReference"}}}, "type": "object"}, "asset": {"properties": {"id": {"type": "string", "description": "The unique identifier of asset", "example": "1"}, "name": {"type": "string", "description": "The Name of asset", "example": "driver_input.json"}, "file_type": {"type": "string", "description": "Type of the asset", "example": "driver_input, map"}, "version": {"type": "string", "description": "creation date/version"}}, "type": "object"}, "LogicalScenarios": {"properties": {"data": {"type": "array", "description": "The list of scenarios", "items": {"$ref": "#/definitions/LogicalScenarioMin"}}, "total": {"type": "integer", "description": "The total number of scenarios", "example": 1000}}, "type": "object"}, "LogicalScenarioMin": {"properties": {"id": {"type": "string", "description": "ID of LogicalScenario.", "example": "14c1c565-7dca-4ef4-9180-bfbb1e0914a4"}, "name": {"type": "string", "description": "The name of this LogicalScenario.", "example": "cut-out"}, "date": {"type": "string", "format": "date-time", "description": "Modification date and time", "example": "2022-09-21T14:32:58"}, "label": {"type": "string", "description": "The label of this LogicalScenario.", "example": "Avoid Lateral Collision Scenario"}, "file_format": {"type": "string", "description": "File format of concrete scenario file", "example": "XOSC"}}, "type": "object"}, "Job_Task_Status": {"properties": {"duration": {"type": "string", "description": "Duration in seconds taken to complete task", "example": "50.9196"}, "end_date": {"type": "string", "description": "DateTime when task execution completed", "example": "2020-09-15 11:33:57.198179+00:00"}, "execution_date": {"type": "string", "description": "DateTime when Job iteration was submitted for execution", "example": "2020-09-15 11:32:09+00:00"}, "max_tries": {"type": "string", "description": "Maximum tries of this task ", "example": "0"}, "queued_dttm": {"type": "string", "description": "DateTime when task was queued for execution", "example": "2020-09-15 11:33:01.999767+00:00"}, "start_date": {"type": "string", "description": "DateTime when task execution started", "example": "2020-09-15 11:33:06.278579+00:00"}, "state": {"type": "string", "description": "State of this task", "example": "running"}, "task_name": {"type": "string", "description": "Name of this task", "example": "ResultProcessor"}, "task_label": {"type": "string", "description": "Label of this task", "example": "Result Processor"}, "airflow_run_id": {"type": "string", "description": "Airflow run id ", "example": "2022-04-07T09:16:20.097860"}}, "type": "object"}, "Job": {"properties": {"job_id": {"type": "string", "description": "The job_id of this Job.", "example": "ce267512-88d9-47c2-947c-bd25e93d26b1"}, "job_config": {"type": "object", "description": "The job_config of this Job.", "example": "{}"}, "number_of_chunks": {"type": "string", "description": "The number_of_chunks of this Job.", "example": "2"}, "status": {"type": "string", "description": "The status of this Job.", "example": "SUCCESS"}, "start_time": {"type": "string", "description": "DateTime when job was created.", "example": ""}, "end_time": {"type": "string", "description": "DateTime when job ended.", "example": ""}, "source": {"type": "string", "description": "Source from where job was created.", "example": "UI"}, "job_type": {"type": "string", "description": "Type of job.", "example": "sensitivity_analysis"}, "job_chunks": {"type": "object", "description": "The job_config of this Job.", "example": "{}"}, "total_samples": {"type": "integer", "description": "Total number of samples for this Job.", "example": 10}, "operator_config": {"type": "object", "description": "The operator config of this Job.", "example": "{}"}, "user_id": {"type": "string", "description": "User name of the user who created the job", "example": "ABC"}, "kpi_json_present": {"type": "boolean", "description": "Flag to determine if KPI file is uploaded"}, "comment": {"type": "string", "description": "Comment added by user when job was created", "example": "Test Sensitivity Job"}}, "type": "object"}, "Tsa_Jobs_Response": {"properties": {"data": {"type": "array", "description": "The list of TSA Jobs", "items": {"$ref": "#/definitions/Job"}}, "limit": {"type": "integer", "description": "Number of records to return in the response", "example": 2500}, "offset": {"type": "integer", "description": "Starting index to return the records from(offset value or the number of records to skip)", "example": 0}, "total": {"type": "integer", "description": "The total number of TSA Jobs", "example": 1000}}, "type": "object"}, "Job_Chunk_Id_Status_Update": {"required": ["value"], "properties": {"value": {"type": "integer", "description": "Simulation status change", "example": "1"}, "type": {"type": "string", "description": "Type of the change: only relative supported", "default": "rel", "example": "rel", "enum": ["rel"]}}, "type": "object"}, "Job_Cancel_Request": {"properties": {"message": {"type": "string", "description": "Cancellation message/reason.", "example": "This is sample cancellation message."}}, "type": "object"}, "JobReport": {"properties": {"job_id": {"type": "string", "description": "The job_id of this Job.", "example": "123"}, "chunks": {"type": "array", "description": "List of chunks for the job", "items": {"$ref": "#/definitions/JobChunk"}}, "kpis": {"type": "array", "description": "List of kpis and related metadata", "items": {"$ref": "#/definitions/KPI"}}, "parameters": {"type": "array", "description": "List of parameters and related metadata", "items": {"$ref": "#/definitions/Parameter"}}}, "type": "object"}, "JobChunk": {"properties": {"chunk_id": {"type": "string", "description": "Chunk id", "example": "tsa-123-1"}, "samples": {"type": "array", "description": "List of samples for the chunk", "items": {"$ref": "#/definitions/Sample"}}}, "type": "object"}, "Sample": {"properties": {"sample_id": {"type": "integer", "description": "Sample Identifier", "example": 1}, "sample_status": {"type": "array", "description": "List of task status for this sample", "items": {"$ref": "#/definitions/SampleStatus"}}, "safe": {"type": "boolean", "description": "Tells if the sample if safe (True) or unsafe (False) with respect to failure_state KPI", "example": true}, "sample_params": {"type": "object", "description": "Name value pairs of parameters for this sample", "example": {"lateral_distance": -3.0, "longitudinal_distance": -5.0, "relative_velocity": -2.0}}, "scenario_json_file_path": {"type": "string", "description": "", "example": "/input/scenarios/scenario_tsa-123-1-1.json"}, "kpi_results": {"type": "object", "description": "Name value pairs of kpis for this sample", "example": {"critical_lateral_events": 1, "driven_distance": "637.120010"}}, "kpis_json_file_path": {"type": "string", "description": "", "example": "/output/1/scenario_tsa-123-1-1.json"}}, "type": "object"}, "SampleStatus": {"properties": {"name": {"type": "string", "description": "Task name for the sample", "example": "Algorithm Sampling"}, "completed_time": {"type": "string", "description": "Time at which the task for this sample was complete", "example": "2021-03-02T19:21:56.377727+00:00"}, "status": {"type": "string", "description": "Status of the task for this sample", "example": "success"}}, "type": "object"}, "Parameter": {"properties": {"name": {"type": "string", "description": "The name of this Parameter.", "example": "velocity"}, "label": {"type": "string", "description": "User friendly label for this Parameter", "example": "Relative Velocity"}, "description": {"type": "string", "description": "The description of this Parameter", "example": "velocity of the host"}, "data_type": {"type": "string", "description": "The type of this Parameter", "example": "double", "enum": ["double", "integer", "string", "boolean"]}, "unit": {"type": "string", "description": "The unit of this Parameter if applicable", "example": "m/s"}}, "type": "object"}, "TsaConfig": {"required": ["source", "system_under_test_config"], "properties": {"parameter_bounds": {"type": "object", "description": "Dictionary with parameter name as key and parameter_bounds data as value.", "example": {"sensor_position_error": {"distribution_type": "continuous", "min": 1.5, "max": 2.5}, "sensor_velocity_error": {"distribution_type": "continuous", "min": -0.5, "max": 3}}, "additionalProperties": {"$ref": "#/definitions/ParameterBounds"}}, "scenario_config": {"description": "The scenario_config of this TsaConfig", "allOf": [{"$ref": "#/definitions/ScenarioConfig"}]}, "custom_configs": {"description": "The custom_configs of this TsaConfig", "allOf": [{"$ref": "#/definitions/CustomConfigs"}]}, "sampling_algorithm_config": {"description": "The sampling_algorithm_config of this TsaConfig.", "allOf": [{"$ref": "#/definitions/SamplingAlgorithmConfig"}]}, "system_under_test_config": {"description": "The system_under_test_config of this TsaConfig.", "allOf": [{"$ref": "#/definitions/SystemUnderTest"}]}, "analytics_algorithm_config": {"description": "The analytics_algorithm_config of this TsaConfig.", "allOf": [{"$ref": "#/definitions/AnalyticsAlgorithmConfig"}]}, "source": {"type": "string", "description": "Source from where this job is getting created.", "example": "UI"}, "job_type": {"type": "string", "description": "Type of the job.", "example": "reliability_analysis", "enum": ["sensitivity_analysis", "reliability_analysis"]}, "skip_error_injection": {"type": "boolean", "description": "Skip Error Injection step or not", "example": false}, "validate_kpis_definition": {"type": "boolean", "description": "Validate kpis definition or not", "example": true}, "comment": {"type": "string", "description": "Comment added by user when job was created", "example": "Test Sensitivity Job"}}, "type": "object"}, "ParameterBounds": {"properties": {"constant": {"type": "string", "description": "The constant of this ParameterBounds."}, "constant_type": {"type": "string", "description": "Treat constant parameters as given data type", "example": "double", "enum": ["double", "integer", "string", "boolean"]}, "discrete_type": {"type": "string", "description": "Treat discrete parameters as given data type", "example": "double", "enum": ["double", "integer", "string", "boolean"]}, "discrete_values": {"type": "array", "description": "The discrete values of this ParameterBounds.", "items": {"type": "string"}}, "distribution_type": {"type": "string", "description": "The distribution_type of this ParameterBounds", "example": "continuous", "enum": ["continuous", "constant", "discrete"]}, "min": {"type": "number", "description": "The min of this ParameterBounds."}, "max": {"type": "number", "description": "The max of this ParameterBounds."}, "pdf": {"description": "The pdf of this ParameterBounds.", "allOf": [{"$ref": "#/definitions/ProbabilityDistributionFunction"}]}}, "type": "object"}, "ProbabilityDistributionFunction": {"properties": {"name": {"type": "string", "description": "The name of this ProbabilityDistributionFunction."}, "variables": {"type": "object", "description": "The variables of this ProbabilityDistributionFunction.", "additionalProperties": {"type": "string"}}}, "type": "object"}, "ScenarioConfig": {"required": ["name"], "properties": {"name": {"type": "string", "description": "The name of this ScenarioConfig.", "example": "avoid_lateral_collision_scenario"}, "version": {"type": "string", "description": "The version of this Scenario.", "example": "version_1.0.0"}, "file_format": {"type": "string", "description": "File format of concrete scenario file", "example": "xosc"}, "parameter_bounds": {"type": "object", "description": "Dictionary with parameter name as key and parameter_bounds data as value.", "example": {"relative_velocity": {"distribution_type": "continuous", "pdf": {"name": "gaussian", "variables": {"mean": "2", "stdev": "3"}}}, "lateral_distance": {"distribution_type": "continuous", "pdf": {"name": "gaussian", "variables": {"mean": "2", "stdev": "3"}}}, "longitudinal_distance": {"distribution_type": "continuous", "pdf": {"name": "gaussian", "variables": {"mean": "2", "stdev": "3"}}}}, "additionalProperties": {"$ref": "#/definitions/ParameterBounds"}}, "parameter_correlations": {"type": "array", "description": "List of all pair-wise parameter correlations.", "example": [{"x": "relative_velocity", "y": "lateral_distance", "value": 0.5}], "items": {"$ref": "#/definitions/ParameterCorrelations"}}}, "type": "object"}, "ParameterCorrelations": {"properties": {"x": {"type": "string", "description": "The name of the first parameter to be correlated."}, "y": {"type": "string", "description": "The name of the second parameter to be correlated."}, "value": {"type": "number", "description": "The correlation between the two parameters."}}, "type": "object"}, "CustomConfigs": {"properties": {"error_injection": {"type": "object", "description": "The error_injection config of CustomConfigs of this TsaConfig", "additionalProperties": {"type": "object"}}}, "type": "object"}, "SamplingAlgorithmConfig": {"properties": {"name": {"type": "string", "description": "The name of this SamplingAlgorithmConfig.", "example": "monte_carlo_sampling"}, "settings": {"type": "object", "description": "The settings of this SamplingAlgorithmConfig.", "example": {"number_of_samples": 10, "key": "settings"}, "additionalProperties": {"type": ["string", "number"]}}}, "type": "object"}, "SystemUnderTest": {"properties": {"release": {"type": "string", "description": "Identifier of the release container.", "example": "highway_2020.05"}, "target": {"type": "string", "description": "Executable inside the release container to run the simulation with the ad function.", "example": "application/adp/test/evaluation/kpi/closed_loop_evaluation/closed_loop_kpi_evaluation.test.sh"}, "*": {"type": "object", "additionalProperties": {"type": "string"}}}, "type": "object"}, "AnalyticsAlgorithmConfig": {"properties": {"name": {"type": "string", "description": "The name of this AnalyticsAlgorithmConfig.", "example": "monte_carlo_reliability"}, "settings": {"type": "object", "description": "The settings of this AnalyticsAlgorithmConfig.", "example": {"failure_state_value": 0, "failure_state_kpi": "min_ttc", "failure_state_operator": "<="}, "additionalProperties": {"type": ["string", "number"]}}}, "type": "object"}}, "responses": {"ParseError": {"description": "When a mask can't be parsed"}, "MaskError": {"description": "When any error occurs on mask"}}} \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/changelog.md b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/changelog.md new file mode 100644 index 0000000000..dd77a52ed0 --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/changelog.md @@ -0,0 +1,3 @@ +# Changelog + +## 2025 R2.1 \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/schema_general_release_note.png b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/schema_general_release_note.png new file mode 100644 index 0000000000..59a70d89c6 Binary files /dev/null and b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/schema_general_release_note.png differ diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/tsa-rest-desc.md b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/tsa-rest-desc.md new file mode 100644 index 0000000000..d5a3d4ee1d --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Analyze_API_ArchV1/tsa-rest-desc.md @@ -0,0 +1,57 @@ +## Introduction +When using the AVxcelerate toolchain, you need to use the REST APIs to connect the different components and share information with one another. First you will use Simulation Framework to create custom activities and a Simulation Loop, you will then use the SUT REST API to connect the Simulation Loop to your System Under Test (SUT) that will be the base of your simulation. The SUT REST API allows you to import the Simulation Framework configuration file, that will be selected later during the configuration of the simulation on the Explore application. The SUT REST API allows you to manage the SUT configuration files within the toolchain. + +Once this is done, you will use the Scenario Manager application to import Logical Scenarios and Assets (assets are complementary configuration files, such as Maps) into the toolchain. You will use the Scenario Manager REST API to manage these logical scenarios and assets. + +Once the Logical scenario is imported, you will use the Explore & Analyze interface to configure each simulation according to your development goals. Each simulation will be configured to reflect the aspect of the automotive function that requires testing. In order to manage all the files and information that will be made available with the Explore & Analyze application, you will need to use the Explore & Analyze REST API. + +This REST API is used to manage the data available in the Explore and analyze application. +The REST API provides endpoints to retrieve Logical Scenario and Algorithms data, Monitor the system, retrieve data from the executed simulation and create simulation reports. +Please refer to the Scenario Manager and Explore and Analyze User and Safety Manual available on the Ansys documentation portal for examples of how to use the available REST API features. + +## Platform overview + +Schema + +## Authentication + +Generating Token for REST API Authentication. + +To generate a token, run the following command from your terminal: + +```curl 'GET' +$ curl \ + -d "client_id=tsalsm-rest-api" \ + -d "client_secret=" \ + -d "username=avx-toolchain-user" \ + -d "password=" \ + -d "scope=offline_access" \ + -d "grant_type=password" \ + "http://explore.apps.YOURCUSTOMURL.com/auth/realms/avx/protocol/openid-connect/token" +``` + + The output should be the following: copy and save the generated token so that you use it to authenticate. + +```json +{ + "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrQWVwLWVZNVNRVlRIMHhqNUFBMXM3U19IeGpRSmxLckNLcE51STFLQkxNIn0.eyJleHAiOjE2ODc0NDA5NzIsImlhdCI6MTY4NzQ0MDY3MiwianRpIjoiYjhkOWFlMWYtMTZmMy00NDM1LTk0MzItYmJjN2NhZWE5NDQ3IiwiaXNzIjoiaHR0cHM6Ly9leHBsb3JlLnN0YWdlLmFwcHMuZnJpc2JlZWRldi5jb20vYXV0aC9yZWFsbXMvYXZ4IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImI1NGVhODZkLTkzMjUtNDYwZi1iMDdhLTJlOTBlMmQwNmJiZiIsInR5cCI6IkJlYXJlciIsImF6cCI6InRzYWxzbS1yZXN0LWFwaSIsInNlc3Npb25fc3RhdGUiOiI5YTE2Y2U5NC0xMTY5LTQzY2MtYjYyNS01ZTAxNTc3ZTNkNDYiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iLCJkZWZhdWx0LXJvbGVzLWF2eCJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoib2ZmbGluZV9hY2Nlc3MgZW1haWwgcHJvZmlsZSIsInNpZCI6IjlhMTZjZTk0LTExNjktNDNjYy1iNjI1LTVlMDE1NzdlM2Q0NiIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhdngtdG9vbGNoYWluLXVzZXIiLCJnaXZlbl9uYW1lIjoiIiwiZmFtaWx5X25hbWUiOiIiLCJlbWFpbCI6InRzYWxzbUBhbnN5cy5jb20ifQ.mk5-FqoMvbPeUSRRc3kVicAVt2U-xSYRVmzFwVeDKbcYlJMD551EYf9dzS2F9DBxPOoBDUyAdWyAov8Hj-VcscuMCpuPm9ikq6zf9sXOWCOlT3SYQIm7vHhb16_K1rtbAwRHlRPvyu4IAplj3SBsybkhUFQlSpWyRupl7Y80QZiaSoGviWh8EQabbhdSjzb-JFkOr7CZuQL4G5irpGjQDNa7zX6HzvQYpPWXrhYDpXItP2ZzEDHKIQAK-DUKIQyj8EfemEKx6BUbHquiC_n4f_VCIeGsr9pOPRK_5U87nzrE-rpzVsrFg77cURyX8cXFxfXYgDuB5KmbzLvz5mCxsQ", + "expires_in": 300, + "refresh_expires_in": 0, + "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIwMmFkMjc0MS03MDc4LTRiYTktYTkyNy03NjhlZjRlYmM1YjcifQ.eyJpYXQiOjE2ODc0NDA2NzIsImp0aSI6ImMyMzhmOGY5LWViNGQtNGM5Yy05NWNjLWJjZmQ0MDhkMWFhNiIsImlzcyI6Imh0dHBzOi8vZXhwbG9yZS5zdGFnZS5hcHBzLmZyaXNiZWVkZXYuY29tL2F1dGgvcmVhbG1zL2F2eCIsImF1ZCI6Imh0dHBzOi8vZXhwbG9yZS5zdGFnZS5hcHBzLmZyaXNiZWVkZXYuY29tL2F1dGgvcmVhbG1zL2F2eCIsInN1YiI6ImI1NGVhODZkLTkzMjUtNDYwZi1iMDdhLTJlOTBlMmQwNmJiZiIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJ0c2Fsc20tcmVzdC1hcGkiLCJzZXNzaW9uX3N0YXRlIjoiOWExNmNlOTQtMTE2OS00M2NjLWI2MjUtNWUwMTU3N2UzZDQ2Iiwic2NvcGUiOiJvZmZsaW5lX2FjY2VzcyBlbWFpbCBwcm9maWxlIiwic2lkIjoiOWExNmNlOTQtMTE2OS00M2NjLWI2MjUtNWUwMTU3N2UzZDQ2In0.wTrdeIoEoum8mMaam-eZerfPAywnb2LGr1Wsxv6tBYg", + "token_type": "Bearer", + "not-before-policy": 0, + "session_state": "9a16ce94-1169-43cc-b625-5e01577e3d46", + "scope": "offline_access email profile" +} +``` + +The mandatory attributes are `refresh_token` and `access_token`. + +2. Go to the REST API documentation page. +4. Click **Authorize**. + +PHOTO + +5. Enter Bearer in the *Value* field, with a space at the end. Then, insert the access token. Click **Authorize** once again. + +PHOTO \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Resources_API_V1_ArchV2/changelog.md b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Resources_API_V1_ArchV2/changelog.md new file mode 100644 index 0000000000..dd77a52ed0 --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Resources_API_V1_ArchV2/changelog.md @@ -0,0 +1,3 @@ +# Changelog + +## 2025 R2.1 \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Resources_API_V1_ArchV2/explore.aws-pre-prod-api-resources-v1.json b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Resources_API_V1_ArchV2/explore.aws-pre-prod-api-resources-v1.json new file mode 100644 index 0000000000..015643ccc5 --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Resources_API_V1_ArchV2/explore.aws-pre-prod-api-resources-v1.json @@ -0,0 +1 @@ +{"openapi":"3.1.0","info":{"title":"Resource Manager API","summary":"Service to manage resources to run the jobs.","description":"\n## API allows to perform CRUD operations on resources such as queues, deployments, applications, app-runtime-configs.\n### Features\n- **Queues**:\n - User can create queues with the required storages, resource limits and environment variables\n - Allowing to manage queues helps user to configure different applications within resource limits and group the\n applications requiring same storages together.\n- **Plugins**:\n - User can register a plugin with definition of container runtime.\n - Example, Docker Engine / Kubernetes\n- **Jobs**:\n - User can submit a resource-manager job by providing application details (name, version, image, environment\n variables, etc.) & track it to its completion.\n - User can also check the status of the job and clean the resources job has acquired.\n","contact":{"name":"Ansys AVxcelerate Autonomy","url":"https://developer.ansys.com/docs/avxcelerate","email":"TeamTyson@ansys.com"},"version":"0.1.0"},"servers":[{"url":"/api/resources/v1"}],"paths":{"/health":{"get":{"tags":["health"],"summary":"Health","description":"Returns healthy message.","operationId":"health-health","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health-Health"}}}}},"security":[{"HTTPBearer":[]}]}},"/queues":{"post":{"tags":["queues"],"summary":"Create Queue","description":"Create a new queue.\n\n:param queue: The queue to create","operationId":"queues-create_queue","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response Queues-Create Queue"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["queues"],"summary":"Update Queue","description":"Update a queue using its name.\n\n:param queue: The queue to update","operationId":"queues-update_queue","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response Queues-Update Queue"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"get":{"tags":["queues"],"summary":"Get Queues","description":"Get all queues using filter.\n\n:param filter_exp: OData filter to filter queues\n:param offset: items to skip\n:param limit: number of items to retrieve","operationId":"queues-get_queues","parameters":[{"name":"filter_exp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter expression","description":"The expression must be compatible with OData"},"description":"The expression must be compatible with OData"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","title":"The pagination offset","default":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"title":"The pagination limit","default":100}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/QueueRead"},"title":"Response Queues-Get Queues"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/queues/{queue_id}":{"get":{"tags":["queues"],"summary":"Get Queue","description":"Get a queue by its id.\n\n:param queue_id: id of the queue to retrieve","operationId":"queues-get_queue","parameters":[{"name":"queue_id","in":"path","required":true,"schema":{"type":"integer","title":"Queue Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueueRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/jobs":{"post":{"tags":["jobs"],"summary":"Create Job","description":"Create a new job.\n\n:param job: The job to create","operationId":"jobs-create_job","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response Jobs-Create Job"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"get":{"tags":["jobs"],"summary":"Get Jobs","description":"Get all jobs using filter.\n\n:param filter: OData filter to filter jobs\n:param offset: items to skip\n:param limit: number of items to retrieve","operationId":"jobs-get_jobs","parameters":[{"name":"filter_exp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter Exp"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JobRead"},"title":"Response Jobs-Get Jobs"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/jobs/{job_id}":{"get":{"tags":["jobs"],"summary":"Get Job","description":"Get a job by its id.\n\n:param job_id: id of the job to retrieve","operationId":"jobs-get_job","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/jobs/{job_id}/status":{"get":{"tags":["jobs"],"summary":"Get Job Status","description":"Get job status by its id.\n\n:param job_id: id of the job to retrieve","operationId":"jobs-get_job_status","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobStatusEnum"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/jobs/{job_id}/clean":{"post":{"tags":["jobs"],"summary":"Clean Job","description":"Clean job resources.\n\n:param job_id: id of the job to clean","operationId":"jobs-clean_job","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/plugins":{"get":{"tags":["plugins"],"summary":"Get Plugins","description":"Get all plugins.","operationId":"plugins-get_plugins","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PluginConfiguration"},"type":"array","title":"Response Plugins-Get Plugins"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["plugins"],"summary":"Register Plugin","description":"Register a new plugin.\n\n:param plugin: The plugin configuration","operationId":"plugins-register_plugin","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginConfiguration"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PluginConfiguration"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/applications":{"get":{"tags":["applications"],"summary":"Get Applications","description":"Get applications.","operationId":"applications-get_applications","parameters":[{"name":"filter_exp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter expression","description":"The expression must be compatible with OData"},"description":"The expression must be compatible with OData"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","title":"The pagination offset","default":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"title":"The pagination limit","default":100}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApplicationRead"},"title":"Response Applications-Get Applications"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["applications"],"summary":"Create Application","description":"Creates a new application.\n\n:param application: The application to create","operationId":"applications-create_application","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response Applications-Create Application"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["applications"],"summary":"Update Application","description":"Updates an application.\n\n:param application: The application to update","operationId":"applications-update_application","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response Applications-Update Application"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/applications/{app_id}":{"get":{"tags":["applications"],"summary":"Get Application","description":"Gets application by its id.\n\n:param app_id: id of the application","operationId":"applications-get_application","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/app-runtime-config/application/{app_id}":{"get":{"tags":["app-runtime-config"],"summary":"Get App Runtime Configs For Application","description":"Get all queues registered for given application id.\n\nIt retrieves the queues for the provided application from AppRuntimeConfig Model.\n\n:param app_id: Optional field if provided returns the registered queues for given application\n:param filter_exp: OData filter to filter queues\n:param offset: items to skip\n:param limit: number of items to retrieve","operationId":"app-runtime-config-get_app_runtime_configs_for_application","parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","title":"App Id"}},{"name":"filter_exp","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter expression","description":"The expression must be compatible with OData"},"description":"The expression must be compatible with OData"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","title":"The pagination offset","default":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"title":"The pagination limit","default":100}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AppRuntimeConfigRead"},"title":"Response App-Runtime-Config-Get App Runtime Configs For Application"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/app-runtime-config":{"get":{"tags":["app-runtime-config"],"summary":"Get App Runtime Config","description":"Get application queue for given queue id and application id.\n\n:param queue_id: queue id\n:param app_id: application id","operationId":"app-runtime-config-get_app_runtime_config","parameters":[{"name":"queue_id","in":"query","required":true,"schema":{"type":"integer","title":"Queue Id"}},{"name":"app_id","in":"query","required":true,"schema":{"type":"integer","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppRuntimeConfigRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/app-runtime-config/{queue_id}/application/{app_id}":{"post":{"tags":["app-runtime-config"],"summary":"Register Application To Queue","description":"Registers an application to the provided queue.\n\n:param queue_id: The queue where the application will be registered\n:param app_id: The application to register","operationId":"app-runtime-config-register_application_to_queue","parameters":[{"name":"queue_id","in":"path","required":true,"schema":{"type":"integer","title":"Queue Id"}},{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppRuntimeConfigCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response App-Runtime-Config-Register Application To Queue"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["app-runtime-config"],"summary":"Update Application To Queue","description":"Update an application to the provided queue.\n\n:param queue_id: The queue where the application will be registered\n:param app_id: The application to update","operationId":"app-runtime-config-update_application_to_queue","parameters":[{"name":"queue_id","in":"path","required":true,"schema":{"type":"integer","title":"Queue Id"}},{"name":"app_id","in":"path","required":true,"schema":{"type":"integer","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppRuntimeConfigCreate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"integer","title":"Response App-Runtime-Config-Update Application To Queue"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"AppRuntimeConfigAttributes":{"properties":{"image":{"type":"string","title":"Image"},"working_dir":{"type":"string","title":"Working Dir"},"mount":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Mount"},"network":{"type":"string","title":"Network"},"ports":{"items":{"type":"integer"},"type":"array","title":"Ports"}},"type":"object","title":"AppRuntimeConfigAttributes","description":"Attribute definition for AppRuntimeConfig data model."},"AppRuntimeConfigCreate":{"properties":{"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"default_resources":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"attributes":{"anyOf":[{"$ref":"#/components/schemas/AppRuntimeConfigAttributes"},{"type":"null"}]},"service_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Service Port"}},"type":"object","title":"AppRuntimeConfigCreate","description":"AppRuntimeConfig definition for creation."},"AppRuntimeConfigRead":{"properties":{"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"default_resources":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"attributes":{"anyOf":[{"$ref":"#/components/schemas/AppRuntimeConfigAttributes"},{"type":"null"}]},"service_port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Service Port"},"app_id":{"type":"integer","title":"App Id"},"queue_id":{"type":"integer","title":"Queue Id"},"application":{"$ref":"#/components/schemas/ApplicationRead"},"queue":{"$ref":"#/components/schemas/QueueRead"}},"type":"object","required":["app_id","queue_id","application","queue"],"title":"AppRuntimeConfigRead","description":"Public application queue definition."},"ApplicationAttributes":{"properties":{"kpis":{"items":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object"},"type":"array","title":"Kpis"},"assets":{"items":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object"},"type":"array","title":"Assets"},"solver_settings":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Solver Settings"}},"type":"object","title":"ApplicationAttributes","description":"Attribute definition for Application data model."},"ApplicationCreate":{"properties":{"name":{"type":"string","title":"Name"},"version":{"type":"string","title":"Version"},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"parent":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent"},"application_type":{"type":"string","title":"Application Type"},"attributes":{"anyOf":[{"$ref":"#/components/schemas/ApplicationAttributes"},{"type":"null"}]}},"type":"object","required":["name","version"],"title":"ApplicationCreate","description":"Application definition for creation."},"ApplicationRead":{"properties":{"name":{"type":"string","title":"Name"},"version":{"type":"string","title":"Version"},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"parent":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent"},"application_type":{"type":"string","title":"Application Type"},"attributes":{"anyOf":[{"$ref":"#/components/schemas/ApplicationAttributes"},{"type":"null"}]},"id":{"type":"integer","title":"Id"}},"type":"object","required":["name","version","id"],"title":"ApplicationRead","description":"Public application definition."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JobCreate":{"properties":{"name":{"type":"string","title":"Name"},"queue_id":{"type":"integer","title":"Queue Id"},"parent_job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Job Id"},"application_id":{"type":"integer","title":"Application Id"},"arguments":{"items":{"type":"string"},"type":"array","title":"Arguments","default":[]},"replica_count":{"type":"integer","title":"Replica Count","default":1},"auto_clean":{"type":"boolean","title":"Auto Clean","default":false},"resources_requested":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"labels":{"additionalProperties":{"type":"string"},"type":"object","title":"Labels","default":{}},"attributes":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Attributes","default":{}}},"type":"object","required":["name","queue_id","application_id"],"title":"JobCreate","description":"Job definition on creation."},"JobRead":{"properties":{"name":{"type":"string","title":"Name"},"queue_id":{"type":"integer","title":"Queue Id"},"parent_job_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Job Id"},"application_id":{"type":"integer","title":"Application Id"},"arguments":{"items":{"type":"string"},"type":"array","title":"Arguments","default":[]},"replica_count":{"type":"integer","title":"Replica Count","default":1},"auto_clean":{"type":"boolean","title":"Auto Clean","default":false},"resources_requested":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"labels":{"additionalProperties":{"type":"string"},"type":"object","title":"Labels","default":{}},"attributes":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Attributes","default":{}},"id":{"type":"integer","title":"Id"},"internal_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Id"},"status":{"$ref":"#/components/schemas/JobStatusEnum"},"cleaned":{"type":"boolean","title":"Cleaned"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"status_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Status Updated At"},"failed_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failed Reason"}},"type":"object","required":["name","queue_id","application_id","id","internal_id","status","cleaned","created_at","status_updated_at","failed_reason"],"title":"JobRead","description":"Public job definition."},"JobStatusEnum":{"type":"string","enum":["pending","running","failed","succeeded"],"title":"JobStatusEnum","description":"Enum of job status."},"JsonValue":{},"PluginConfiguration":{"properties":{"name":{"type":"string","title":"Name"},"module_name":{"type":"string","title":"Module Name"},"class_name":{"type":"string","title":"Class Name"},"attributes":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Attributes","default":{}}},"type":"object","required":["name","module_name","class_name"],"title":"PluginConfiguration","description":"Plugin configuration."},"QueueCreate":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"plugin":{"type":"string","title":"Plugin"},"working_dir":{"type":"string","title":"Working Dir","default":"/jobs"},"default_resources":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"maximum_resources":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"attributes":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Attributes","default":{}},"storages":{"items":{"$ref":"#/components/schemas/JsonValue"},"type":"array","title":"Storages","default":[]},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}}},"type":"object","required":["name","description","plugin"],"title":"QueueCreate","description":"Queue definition for creation."},"QueueRead":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"plugin":{"type":"string","title":"Plugin"},"working_dir":{"type":"string","title":"Working Dir","default":"/jobs"},"default_resources":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"maximum_resources":{"anyOf":[{"$ref":"#/components/schemas/ResourcesDefinition"},{"type":"null"}]},"attributes":{"additionalProperties":{"$ref":"#/components/schemas/JsonValue"},"type":"object","title":"Attributes","default":{}},"storages":{"items":{"$ref":"#/components/schemas/JsonValue"},"type":"array","title":"Storages","default":[]},"env":{"additionalProperties":{"type":"string"},"type":"object","title":"Env","default":{}},"id":{"type":"integer","title":"Id"}},"type":"object","required":["name","description","plugin","id"],"title":"QueueRead","description":"Public queue definition."},"ResourcesDefinition":{"properties":{"cpu":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cpu"},"memory_gb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Memory Gb"}},"type":"object","title":"ResourcesDefinition","description":"Resource definition."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}} \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Resources_API_V1_ArchV2/intro_archv2_.md b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Resources_API_V1_ArchV2/intro_archv2_.md new file mode 100644 index 0000000000..7015c46c3f --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Explore_Resources_API_V1_ArchV2/intro_archv2_.md @@ -0,0 +1,108 @@ +# AVx Python APIs Documentation + +## Background + +The AVx python APIs are hosted as a python package on cluster as part of the Explore service deployment. The developers can install the package using pip and use it to call AVx autonomy APIs without the need to make raw REST calls. + +PyPi Regsitry URL: + +The python package is hosted as PyPi compliant registry on each deployed cluster. The registry URL looks like this: + +https://BASE_URL/pypi + +For example, for AFT deployment: + + + +## Usage Example + +Pre-requisites: + +We are assuming that on the system is running **Ubuntu 22.04**, there are following already installed: + +- python 3.10 +- pip 25.1 +- uv 0.6 + +And we assume that you are using AVx Autonomy Toolchain version **25R2.1** + +Step 1: Create virtual environment + +``` +$ python -m venv .venv +``` + +Step 2: Activate the virtual environment + +``` +$ source .venv/bin/activate +``` + +Step 3: Install python packages: + +- ansys-api-avxcelerate-autonomy +- ansys-avxcelerate-autonomy + +``` +$ pip install ansys-api-avxcelerate-autonomy ansys-avxcelerate-autonomy --extra-index-url [https://explore-service.traefik.me:9081/pypi](https://explore-service.traefik.me:9081/v1/pypi) + +Step 4: Use ansys-api-avxcelerate-autonomy and ansys-avxcelerate-autonomy in your python code +``` + +``` +import asyncio + +from ansys.api.avxcelerate.autonomy.explore_service.v1.api.jobs_api import JobsApi + +from ansys.api.avxcelerate.autonomy.explore_service.v1.api_client import ApiClient + +from ansys.api.avxcelerate.autonomy.explore_service.v1.configuration import Configuration + +from ansys.api.avxcelerate.autonomy.explore_service.v1.exceptions import NotFoundException + +from ansys.api.avxcelerate.autonomy.explore_service.v1.models.explore_job_read import ExploreJobRead + +from ansys.avxcelerate.autonomy.utils.auth_client_session import AuthClientSession + +from ansys.avxcelerate.autonomy.utils.token_provider import TokenProvider + +async def main(): + +base_url = "" + +configuration = Configuration(host=f"{base_url}/api/explore/v1") + +async with ApiClient(configuration) as api_client: + +session = AuthClientSession(base_url=f"{base_url}/api/explore/v1/") + +provider = TokenProvider(f"{base_url}/auth") + +session.set_provider(provider) + +provider.login() + +api_client.rest_client.pool_manager = session + +jobs_api = JobsApi(api_client) + +job_id = "exp-dec894b2-647c-4ca5-b516-cdfc18c58fdd" + +try: + +job: ExploreJobRead = await jobs_api.get_job(job_id) + +print(job) + +except NotFoundException: + +print("No job found against this id") + +except Exception as ex: + +print(str(ex)) + +print("Couldn't get job against this job id") + +asyncio.run(main()) +``` \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/auth_1.png b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/auth_1.png new file mode 100644 index 0000000000..6b99e4475c Binary files /dev/null and b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/auth_1.png differ diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/auth_2.png b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/auth_2.png new file mode 100644 index 0000000000..1ab38d74ad Binary files /dev/null and b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/auth_2.png differ diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/avx-sut-api-r2.1.json b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/avx-sut-api-r2.1.json new file mode 100644 index 0000000000..6865045f36 --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/avx-sut-api-r2.1.json @@ -0,0 +1 @@ +{"swagger": "2.0", "basePath": "/api/sut", "paths": {"/sut-config": {"get": {"responses": {"200": {"description": "Success. Retrieved all available SUT configuration tags.", "schema": {"$ref": "#/definitions/Tags%20Response"}}, "500": {"description": "Internal Server Error. Error retrieving SUT configuration tags. Contact admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "Not Found. SUT configuration tags not found. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}}, "summary": "Retrieve a list of all available SUT tags", "operationId": "get_sut_config_tags", "parameters": [{"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["SUT Configurations"]}, "post": {"responses": {"403": {"description": "Forbidden. Error while adding new SUT configuration. Check your login information and try again. The client does not have access rights to the content; that is, it is unauthorized, so the server is refusing to give the requested resource. Unlike 401 Unauthorized, the client's identity is known to the server."}, "200": {"description": "Success. Added new SUT configuration."}}, "summary": "Add a new SUT configuration", "operationId": "post_sut_config_tags", "parameters": [{"example": "override", "in": "query", "description": "Comma-separated list of policies to consider. Possible values: override", "name": "policy_items", "type": "string"}, {"required": true, "example": "{\"tag\": \"sut\", \"version\":\"latest\"}", "in": "body", "description": "SUT Configuration to add", "name": "payload", "type": "string"}], "produces": "application/json", "tags": ["SUT Configurations"]}}, "/sut-config/{sut_config_tag}": {"get": {"responses": {"200": {"description": "Success. Retrieved all available versions for the selected SUT tag.", "schema": {"$ref": "#/definitions/Versions%20Response"}}, "500": {"description": "Internal Server Error. Error retrieving versions for the selected SUT tag. Contact admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "Not Found. The SUT tag version was not found. Check that the SUT tag is correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}}, "summary": "Retrieve a list of all available versions for the specified SUT tag", "operationId": "get_sut_config_versions_by_tag", "parameters": [{"name": "sut_config_tag", "in": "path", "required": true, "type": "string", "description": "Tag of the SUT Configuration to retrieve"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["SUT Configurations"]}, "delete": {"responses": {"500": {"description": "Internal Server Error. Error retrieving SUT configuration. Contact admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "Not Found. The SUT configuration was not found. Check that the SUT configuration is correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success. Deleted SUT configuration."}}, "summary": "Delete all SUT configurations with a specific tag", "operationId": "delete_sut_config_versions_by_tag", "parameters": [{"name": "sut_config_tag", "in": "path", "required": true, "type": "string", "description": "Tag of the SUT configuration to delete. May find many configurations"}], "tags": ["SUT Configurations"]}}, "/sut-config/{sut_config_tag}/{sut_config_version}": {"get": {"responses": {"200": {"description": "Success. Retrieved SUT configuration for the provided :.", "schema": {"$ref": "#/definitions/SUT%20Configurations"}}, "500": {"description": "Internal Server Error. Error retrieving SUT configuration. Contact admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "Not Found. The SUT configuration was not found. Check that the SUT tag and version are correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}}, "summary": "Retrieve a specific SUT configuration by its unique pair of identifiers (tag and version)", "operationId": "get_sut_config_by_version", "parameters": [{"name": "sut_config_tag", "in": "path", "required": true, "type": "string", "description": "Filter SUT configurations by tag"}, {"name": "sut_config_version", "in": "path", "required": true, "type": "string", "description": "Filter SUT configurations by version"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["SUT Configurations"]}, "delete": {"responses": {"500": {"description": "Internal Server Error. Error fetching SUT configuration. Contact admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "Not Found. The SUT configuration was not found. Check that the SUT tag and version are correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success. Deleted SUT Configuration."}}, "summary": "Delete a specific SUT configuration by its unique pair of identifiers (tag and version)", "operationId": "delete_sut_config_by_version", "parameters": [{"name": "sut_config_tag", "in": "path", "required": true, "type": "string", "description": "Filter SUT configurations by tag"}, {"name": "sut_config_version", "in": "path", "required": true, "type": "string", "description": "Filter SUT configurations by version"}], "tags": ["SUT Configurations"]}}}, "info": {"title": "SUT Configuration Service (TSA)", "version": "1.0.0", "description": "This REST API is used to manage the SUT data available in TSA and is part of the Ansys AVxcelerate Autonomous Driving Toolchain.
The REST API provides endpoints to manage SUT configurations, you can add an SUT, retrieve a list of available SUT configurations and other associated information.
Please refer to the Scenario Manager and Explore and Analyze User Guide available on the Ansys documentation portal for examples of how to use the available REST API features.", "contact": {"name": "support@ansys.com", "email": "support@ansys.com", "url": null}, "license": {"name": "Ansys software"}}, "produces": ["application/json"], "consumes": ["application/json"], "securityDefinitions": {"apikey": {"type": "apiKey", "in": "header", "name": "Authorization"}}, "security": [{"apikey": []}], "tags": [{"name": "SUT Configurations", "description": "Endpoints related to SUT configurations"}], "definitions": {"Tags Response": {"required": ["tags"], "properties": {"tags": {"type": "array", "example": ["SimFwk"], "uniqueItems": true, "items": {"type": "string", "pattern": "^[a-zA-Z0-9-_\\.]+$"}}}, "type": "object"}, "Versions Response": {"required": ["tag", "versions"], "properties": {"tag": {"type": "string", "example": "SimFwk", "pattern": "^[a-zA-Z0-9-_\\.]+$"}, "versions": {"type": "array", "example": ["2022.R1.20.51231"], "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^[a-zA-Z0-9-_\\.]+$"}}}, "type": "object"}, "SUT Configurations": {"required": ["tag", "version"], "properties": {"tag": {"type": "string", "description": "Configuration name/tag Could be anything customer/user defined.", "example": "SimFwk", "pattern": "^[a-zA-Z0-9-_\\.]+$"}, "version": {"type": "string", "description": "Configuration version/image-tag", "example": "2022.R1.20.51231", "pattern": "^[a-zA-Z0-9-_\\.]+$"}, "execution_command": {"type": "string", "description": "Pattern used to fulfill inputs", "example": "%executable% %file:scenario% %file:assets% %file:simulation_result%"}, "env_requirement": {"$ref": "#/definitions/Env Requirement"}, "world_simulator": {"$ref": "#/definitions/World Simulator"}, "ad_stack": {"description": "Details about AD stack", "allOf": [{"$ref": "#/definitions/AD stack"}]}, "settings": {"type": "array", "items": {"$ref": "#/definitions/Setting"}}, "sensor_models": {"type": "array", "items": {"$ref": "#/definitions/Sensor Model"}}, "evaluations": {"type": "array", "description": "Evaluations or KPIs", "items": {"$ref": "#/definitions/Evaluation"}}, "error_injection": {"$ref": "#/definitions/Error injection"}, "vehicle_model": {"$ref": "#/definitions/Vehicle Model"}, "diagnostic_manager": {"description": "The setup of diagnostic manager used inside Simfwk, currently is not implemented yet", "allOf": [{"$ref": "#/definitions/Diagnostic manager"}]}, "orchestration": {"description": "The activity scheduling info of Simfwk, currently is not implemented yet", "allOf": [{"$ref": "#/definitions/Orchestration"}]}, "communication": {"description": "The communication core info of Simfwk, currently is not implemented yet", "allOf": [{"$ref": "#/definitions/Communication"}]}}, "type": "object"}, "Env Requirement": {"properties": {"cpu_core": {"type": "integer"}, "memory": {"type": "integer"}, "disk_space": {"type": "integer"}}, "type": "object"}, "World Simulator": {"properties": {"type": {"type": "string"}, "sample_rate": {"type": "integer"}, "config_path": {"type": "string"}, "custom_data_path": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "AD stack": {"properties": {"type": {"type": "string", "example": "internal"}, "tag": {"type": "string"}, "version": {"type": "string"}, "ad-functions": {"type": "array", "items": {"$ref": "#/definitions/AD Function"}}}, "type": "object"}, "AD Function": {"properties": {"name": {"type": "string"}, "description": {"type": "string"}, "version": {"type": "string"}}, "type": "object"}, "Setting": {"properties": {"name": {"type": "string"}, "description": {"type": "string"}, "type": {"type": "string"}, "default_value": {"anyOf": [{"type": "string"}, {"type": "number"}, {"type": "integer"}]}}, "type": "object"}, "Sensor Model": {"required": ["description", "name", "type"], "properties": {"name": {"type": "string", "example": "fmu-adcam-front"}, "type": {"type": "string", "example": "FMU"}, "description": {"type": "string", "example": "front camera model"}, "config_path": {"type": "string", "example": "/sim_configs/sensors/adcam_front.xml"}, "custom_data_path": {"type": "string", "example": ""}, "version": {"type": "string", "example": "0.1"}}, "type": "object"}, "Evaluation": {"required": ["name"], "properties": {"name": {"type": "string", "example": "always_in_lane"}, "source_id": {"type": "string", "example": "CB-ID#1231"}, "description": {"type": "string", "example": "check if the host keeps on the host lane"}, "config_path": {"type": "string"}, "version": {"type": "string", "example": "0.1"}}, "type": "object"}, "Error injection": {"required": ["tag", "version"], "properties": {"tag": {"type": "string", "example": "srs2appsil_sensor_error", "pattern": "^[a-zA-Z0-9-_\\.]+$"}, "version": {"type": "string", "example": "latest", "pattern": "^[a-zA-Z0-9-_\\.]+$"}, "description": {"type": "string", "example": ""}, "sensor_error_parameters": {"type": "array", "items": {"$ref": "#/definitions/Sensor Error parameter"}}, "error_parameters": {"type": "array", "items": {"$ref": "#/definitions/Error Parameters"}}}, "type": "object"}, "Sensor Error parameter": {"required": ["label", "name", "unit"], "properties": {"name": {"type": "string", "example": "frr_front_position_error"}, "label": {"type": "string", "example": "FRR front position error"}, "unit": {"type": "string", "example": ""}, "default_value": {"anyOf": [{"type": "string"}, {"type": "number"}, {"type": "integer"}]}, "constraints": {"$ref": "#/definitions/Error constraints"}}, "type": "object"}, "Error constraints": {"properties": {"min": {"type": "number"}, "max": {"type": "number"}}, "type": "object"}, "Error Parameters": {"required": ["error_type"], "properties": {"error_type": {"type": "string", "example": "objectListErrors"}, "properties": {"type": "array", "items": {"$ref": "#/definitions/Error Properties"}}}, "type": "object"}, "Error Properties": {"required": ["display_name", "name", "type"], "properties": {"name": {"type": "string", "example": "activity_name"}, "type": {"type": "string", "example": "string"}, "display_name": {"type": "string", "example": "Activity Name"}, "enum": {"type": "array", "example": ["frr_front", "lidar"], "items": {"type": "string"}}, "unit": {"type": "string"}, "default_value": {"anyOf": [{"type": "string"}, {"type": "number"}, {"type": "integer"}]}, "constraints": {"$ref": "#/definitions/Error constraints"}}, "type": "object"}, "Vehicle Model": {"properties": {"name": {"type": "string", "example": "ideal-vehicle-model"}, "vehicle_type": {"type": "string", "example": "bmw 7-serie"}, "tag": {"type": "string", "example": "G20-v01"}, "config_path": {"type": "string", "example": "/sim_configs/vehicle/dummy_vehicle.json"}, "version": {"type": "string", "example": "0.1.0"}}, "type": "object"}, "Diagnostic manager": {"properties": {"dashboard_url": {"type": "string", "example": "https://dummy-simfwk.diagnostic"}, "type": {"type": "string", "example": "all-on"}, "version": {"type": "string", "example": "0.1.1"}}, "type": "object"}, "Orchestration": {"properties": {"chain_file_path": {"type": "string", "example": "/sim_configs/orchestration/chain.json"}, "version": {"type": "string", "example": "0.0.1"}}, "type": "object"}, "Communication": {"properties": {"strategy": {"type": "string", "example": "async"}, "version": {"type": "string", "example": "0.1.2"}}, "type": "object"}}, "responses": {"ParseError": {"description": "When a mask can't be parsed"}, "MaskError": {"description": "When any error occurs on mask"}}} \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/changelog.md b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/changelog.md new file mode 100644 index 0000000000..dd77a52ed0 --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/changelog.md @@ -0,0 +1,3 @@ +# Changelog + +## 2025 R2.1 \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/schema_general_release_note.png b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/schema_general_release_note.png new file mode 100644 index 0000000000..59a70d89c6 Binary files /dev/null and b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/schema_general_release_note.png differ diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/sut-rest-desc.md b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/sut-rest-desc.md new file mode 100644 index 0000000000..19064209d8 --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_SUT_API_ARchV1/sut-rest-desc.md @@ -0,0 +1,57 @@ +## Introduction +When using the AVxcelerate toolchain, you need to use the REST APIs to connect the different components and share information with one another. First you will use Simulation Framework to create custom activities and a Simulation Loop, you will then use the SUT REST API to connect the Simulation Loop to your System Under Test (SUT) that will be the base of your simulation. The SUT REST API allows you to import the Simulation Framework configuration file, that will be selected later during the configuration of the simulation on the Explore application. The SUT REST API allows you to manage the SUT configuration files within the toolchain. + +Once this is done, you will use the Scenario Manager application to import Logical Scenarios and Assets (assets are complementary configuration files, such as Maps) into the toolchain. You will use the Scenario Manager REST API to manage these logical scenarios and assets. + +Once the Logical scenario is imported, you will use the Explore & Analyze interface to configure each simulation according to your development goals. Each simulation will be configured to reflect the aspect of the automotive function that requires testing. In order to manage all the files and information that will be made available with the Explore & Analyze application, you will need to use the Explore & Analyze REST API. + +This REST API is used to manage the SUT data available in the Explore & Analyze aplication. +The REST API provides endpoints to manage SUT configurations, you can add, delete SUTs and retrieve a list of available SUT configurations. +Please refer to the Scenario Manager and Explore and Analyze User and Safety manual available on the Ansys documentation portal for examples of how to use the available REST API features. + +## Platform overview + +Schema + +## Authentication + +Generating Token for REST API Authentication. + +To generate a token, run the following command from your terminal: + +```curl 'GET' +$ curl \ + -d "client_id=tsalsm-rest-api" \ + -d "client_secret=" \ + -d "username=avx-toolchain-user" \ + -d "password=" \ + -d "scope=offline_access" \ + -d "grant_type=password" \ + "http://explore.apps.YOURCUSTOMURL.com/auth/realms/avx/protocol/openid-connect/token" +``` + + The output should be the following: copy and save the generated token so that you use it to authenticate. + +```json +{ + "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrQWVwLWVZNVNRVlRIMHhqNUFBMXM3U19IeGpRSmxLckNLcE51STFLQkxNIn0.eyJleHAiOjE2ODc0NDA5NzIsImlhdCI6MTY4NzQ0MDY3MiwianRpIjoiYjhkOWFlMWYtMTZmMy00NDM1LTk0MzItYmJjN2NhZWE5NDQ3IiwiaXNzIjoiaHR0cHM6Ly9leHBsb3JlLnN0YWdlLmFwcHMuZnJpc2JlZWRldi5jb20vYXV0aC9yZWFsbXMvYXZ4IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImI1NGVhODZkLTkzMjUtNDYwZi1iMDdhLTJlOTBlMmQwNmJiZiIsInR5cCI6IkJlYXJlciIsImF6cCI6InRzYWxzbS1yZXN0LWFwaSIsInNlc3Npb25fc3RhdGUiOiI5YTE2Y2U5NC0xMTY5LTQzY2MtYjYyNS01ZTAxNTc3ZTNkNDYiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iLCJkZWZhdWx0LXJvbGVzLWF2eCJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoib2ZmbGluZV9hY2Nlc3MgZW1haWwgcHJvZmlsZSIsInNpZCI6IjlhMTZjZTk0LTExNjktNDNjYy1iNjI1LTVlMDE1NzdlM2Q0NiIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhdngtdG9vbGNoYWluLXVzZXIiLCJnaXZlbl9uYW1lIjoiIiwiZmFtaWx5X25hbWUiOiIiLCJlbWFpbCI6InRzYWxzbUBhbnN5cy5jb20ifQ.mk5-FqoMvbPeUSRRc3kVicAVt2U-xSYRVmzFwVeDKbcYlJMD551EYf9dzS2F9DBxPOoBDUyAdWyAov8Hj-VcscuMCpuPm9ikq6zf9sXOWCOlT3SYQIm7vHhb16_K1rtbAwRHlRPvyu4IAplj3SBsybkhUFQlSpWyRupl7Y80QZiaSoGviWh8EQabbhdSjzb-JFkOr7CZuQL4G5irpGjQDNa7zX6HzvQYpPWXrhYDpXItP2ZzEDHKIQAK-DUKIQyj8EfemEKx6BUbHquiC_n4f_VCIeGsr9pOPRK_5U87nzrE-rpzVsrFg77cURyX8cXFxfXYgDuB5KmbzLvz5mCxsQ", + "expires_in": 300, + "refresh_expires_in": 0, + "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIwMmFkMjc0MS03MDc4LTRiYTktYTkyNy03NjhlZjRlYmM1YjcifQ.eyJpYXQiOjE2ODc0NDA2NzIsImp0aSI6ImMyMzhmOGY5LWViNGQtNGM5Yy05NWNjLWJjZmQ0MDhkMWFhNiIsImlzcyI6Imh0dHBzOi8vZXhwbG9yZS5zdGFnZS5hcHBzLmZyaXNiZWVkZXYuY29tL2F1dGgvcmVhbG1zL2F2eCIsImF1ZCI6Imh0dHBzOi8vZXhwbG9yZS5zdGFnZS5hcHBzLmZyaXNiZWVkZXYuY29tL2F1dGgvcmVhbG1zL2F2eCIsInN1YiI6ImI1NGVhODZkLTkzMjUtNDYwZi1iMDdhLTJlOTBlMmQwNmJiZiIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJ0c2Fsc20tcmVzdC1hcGkiLCJzZXNzaW9uX3N0YXRlIjoiOWExNmNlOTQtMTE2OS00M2NjLWI2MjUtNWUwMTU3N2UzZDQ2Iiwic2NvcGUiOiJvZmZsaW5lX2FjY2VzcyBlbWFpbCBwcm9maWxlIiwic2lkIjoiOWExNmNlOTQtMTE2OS00M2NjLWI2MjUtNWUwMTU3N2UzZDQ2In0.wTrdeIoEoum8mMaam-eZerfPAywnb2LGr1Wsxv6tBYg", + "token_type": "Bearer", + "not-before-policy": 0, + "session_state": "9a16ce94-1169-43cc-b625-5e01577e3d46", + "scope": "offline_access email profile" +} +``` + +The mandatory attributes are `refresh_token` and `access_token`. + +2. Go to the REST API documentation page. +4. Click **Authorize**. + +PHOTO + +5. Enter Bearer in the *Value* field, with a space at the end. Then, insert the access token. Click **Authorize** once again. + +PHOTO \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/auth_1.png b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/auth_1.png new file mode 100644 index 0000000000..6b99e4475c Binary files /dev/null and b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/auth_1.png differ diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/auth_2.png b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/auth_2.png new file mode 100644 index 0000000000..1ab38d74ad Binary files /dev/null and b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/auth_2.png differ diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/avx-scenario-manager-api-r2.1.json b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/avx-scenario-manager-api-r2.1.json new file mode 100644 index 0000000000..c96c8a56aa --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/avx-scenario-manager-api-r2.1.json @@ -0,0 +1 @@ +{"swagger": "2.0", "basePath": "/api/lsm", "paths": {"/v1/assets": {"get": {"responses": {"200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Asset"}}}}, "summary": "Retrieve a list of all available assets", "operationId": "get_generic_documents", "parameters": [{"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Assets"]}, "post": {"responses": {"500": {"description": "Internal Server Error. Unable to upload file. Contact Admin. The server has encountered a situation it does not know how to handle."}, "409": {"description": "Conflict. Asset already exists. Try uploading another asset. This response is sent when a request conflicts with the current state of the server."}, "400": {"description": "Bad Request. Invalid File(s). Check the file format and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "201": {"description": "Success. Files uploaded successfully."}}, "summary": "Upload new assets through file upload", "description": "Swagger does not work to upload files. Please use postman or the Scenario Manager application. Please make sure the uploaded document is\nencoded as UTF-8.", "operationId": "post_generic_documents", "parameters": [{"name": "files", "in": "formData", "type": "array", "required": true, "description": "the files to upload", "items": {"type": "file"}, "collectionFormat": "multi"}, {"name": "logical_scenarios", "in": "query", "type": "array", "description": "Comma separated list of logical scenario IDs", "items": {"type": "string"}, "collectionFormat": "csv"}, {"name": "file_type", "in": "query", "type": "string", "required": true, "description": "Type of the asset", "example": "map", "enum": ["driver_input", "map"]}], "consumes": ["application/x-www-form-urlencoded", "multipart/form-data"], "tags": ["Assets"]}}, "/v1/assets/{asset_id}": {"get": {"responses": {"404": {"description": "Not Found. Check the ID or the name and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad Request. No ID or name was provided, provide the ID or name and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. Retrieved asset file by ID."}}, "summary": "Download an asset by ID or name", "description": "The ID or the name must be provided. If both are provided, only the ID is used.", "operationId": "get_documents_id", "parameters": [{"name": "asset_id", "in": "path", "required": true, "type": "string"}], "tags": ["Assets"]}, "post": {"responses": {"500": {"description": "Internal Server Error. Unable to upload file. Contact Admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "Generic Document does not exist."}, "400": {"description": "Invalid File(s)."}, "200": {"description": "Success. File uploaded successfully."}}, "summary": "Update an existing asset", "operationId": "post_documents_id", "parameters": [{"name": "asset_id", "in": "path", "required": true, "type": "string", "description": "ID of the asset to update"}, {"name": "files", "in": "formData", "type": "array", "required": true, "description": "the files to upload", "items": {"type": "file"}, "collectionFormat": "multi"}, {"name": "logical_scenarios", "in": "query", "type": "array", "description": "Comma separated list of logical scenario IDs", "items": {"type": "string"}, "collectionFormat": "csv"}, {"name": "file_type", "in": "query", "type": "string", "required": true, "description": "Type of the asset", "example": "map", "enum": ["driver_input", "map"]}], "consumes": ["application/x-www-form-urlencoded", "multipart/form-data"], "tags": ["Assets"]}}, "/v1/assets/{asset_id}/versions": {"get": {"responses": {"404": {"description": "Documents not found."}, "200": {"description": "Retrieved all versions of the asset by ID."}}, "summary": "Retrieve all versions of a specific asset", "operationId": "get_generic_documents_id_all_versions", "parameters": [{"name": "asset_id", "in": "path", "required": true, "type": "string", "description": "ID of the asset "}], "tags": ["Assets"]}}, "/v1/assets/{asset_id}/versions/{version_id}": {"get": {"responses": {"404": {"description": "Document not found."}, "200": {"description": "Retrieved version of asset by ID."}}, "summary": "Retrieve a specific version of a asset", "operationId": "get_generic_document_id_version", "parameters": [{"name": "asset_id", "in": "path", "required": true, "type": "string", "description": "ID of the asset"}, {"name": "version_id", "in": "path", "required": true, "type": "string", "description": "version ID of the asset"}], "tags": ["Assets"]}}, "/v1/group-type": {"get": {"responses": {"200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/GroupType"}}}}, "summary": "Retrieve a list of available group-types", "operationId": "get_group_types", "parameters": [{"name": "name", "in": "query", "type": "string", "description": "Name of the group"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "deprecated": true, "tags": ["GroupType"]}, "post": {"responses": {"200": {"description": "Success"}}, "summary": "Upload a new group-type", "operationId": "post_group_types", "parameters": [{"name": "payload", "required": true, "in": "body", "schema": {"$ref": "#/definitions/GroupTypeInput"}}], "deprecated": true, "tags": ["GroupType"]}}, "/v1/group-type/{id}": {"parameters": [{"in": "path", "description": "ID of an existing group type", "name": "id", "required": true, "type": "string"}], "get": {"responses": {"200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/GroupType"}}}}, "summary": "Retrieve the assets associated to a specific group-type with its unique identifier (ID)", "operationId": "get_group_types_by_id", "parameters": [{"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "deprecated": true, "tags": ["GroupType"]}, "post": {"responses": {"200": {"description": "Success"}}, "summary": "Update a specific group-type with its unique identifier (ID)", "operationId": "post_group_types_by_id", "parameters": [{"name": "payload", "required": true, "in": "body", "schema": {"$ref": "#/definitions/GroupTypeInput"}}], "deprecated": true, "tags": ["GroupType"]}}, "/v1/groups": {"get": {"responses": {"200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Group"}}}}, "summary": "Retrieve a list of available groups", "operationId": "get_groups", "parameters": [{"name": "name", "in": "query", "type": "string", "description": "Name of the group"}, {"name": "type", "in": "query", "type": "string", "description": "Type of the group"}, {"name": "source_id", "in": "query", "type": "string", "description": "Source ID of the group"}, {"name": "enabled", "in": "query", "type": "boolean", "description": "Enabled flag of the group"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "deprecated": true, "tags": ["Groups"]}, "post": {"responses": {"200": {"description": "Success"}}, "summary": "Upload a new group", "operationId": "post_groups", "parameters": [{"name": "payload", "required": true, "in": "body", "schema": {"$ref": "#/definitions/GroupInput"}}], "deprecated": true, "tags": ["Groups"]}}, "/v1/groups/{group_id}/versions": {"get": {"responses": {"404": {"description": "Groups not found. Check that the group ID is correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success. Retrieved all versions of the group."}}, "summary": "Retrieve a group version with its unique identifier (ID)", "operationId": "get_group_id_all_versions", "parameters": [{"name": "group_id", "in": "path", "required": true, "type": "string", "description": "ID of the group "}], "deprecated": true, "tags": ["Groups"]}}, "/v1/groups/{group_id}/versions/{file_version}": {"get": {"responses": {"404": {"description": "File version of the specific group not found. Check that the group ID is correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Group"}}}}, "summary": "Retrieve a specific version of a group file with its ID and version ID", "operationId": "get_group_id_version", "parameters": [{"name": "group_id", "in": "path", "required": true, "type": "string", "description": "ID of the group"}, {"name": "file_version", "in": "path", "required": true, "type": "string", "description": "version ID of the group"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "deprecated": true, "tags": ["Groups"]}}, "/v1/groups/{id}": {"parameters": [{"in": "path", "description": "ID of an existing group", "name": "id", "required": true, "type": "string"}], "get": {"responses": {"200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Group"}}}}, "summary": "Retrieve a group and its associated assets by its unique identifier (ID)", "operationId": "get_groups_by_id", "parameters": [{"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "deprecated": true, "tags": ["Groups"]}, "post": {"responses": {"200": {"description": "Success"}}, "summary": "Update a group with its unique identifier (ID)", "operationId": "post_groups_by_id", "parameters": [{"name": "payload", "required": true, "in": "body", "schema": {"$ref": "#/definitions/GroupInput"}}], "deprecated": true, "tags": ["Groups"]}}, "/v1/inventory": {"get": {"responses": {"200": {"description": "Success. Retrieved all catalogs and xodr/map files"}}, "summary": "Retrieve a list of available catalogs and map files", "operationId": "get_inventory_items", "tags": ["Inventory"]}}, "/v1/inventory/catalog-files": {"get": {"responses": {"404": {"description": "Not found. Check the catalog type and try again"}, "200": {"description": "Success. Retrieved all available catalogs"}}, "summary": "Retrieve names of catalog files", "operationId": "get_catalog_files", "parameters": [{"required": false, "in": "query", "description": "Filter by type", "name": "type", "type": "string"}], "tags": ["Inventory"]}}, "/v1/inventory/catalog-types": {"get": {"responses": {"200": {"description": "Success. Retrieved all available catalogs types"}}, "summary": "Retrieve all types of catalogs", "operationId": "get_catalog_types", "tags": ["Inventory"]}}, "/v1/inventory/xodr-files": {"get": {"responses": {"200": {"description": "Success. Retrieved all available xodr/map file names"}}, "summary": "Retrieve names of map/xodr files", "operationId": "get_xodr_files", "tags": ["Inventory"]}}, "/v1/inventory/{file_type}/{file_name}": {"parameters": [{"name": "file_type", "in": "path", "required": true, "type": "string"}, {"name": "file_name", "in": "path", "required": true, "type": "string"}], "get": {"responses": {"404": {"description": "Not Found. Check the catalog name and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad Request. No Name was provided, provide name and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. Retrieved catalog file by type and name."}}, "operationId": "get_file_by_type_and_name", "tags": ["Inventory"]}}, "/v1/kpis": {"get": {"responses": {"404": {"description": "Not Found. No KPIs were found. Try uploading the KPIs and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Key%20Performance%20Indicators%20%28KPI%29"}}}}, "summary": "Retrieve all KPIs", "description": "Returns a list of the latest versions of all KPIs.", "operationId": "get_kpi", "parameters": [{"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Key Performance Indicators"]}, "post": {"responses": {"500": {"description": "Internal Server Error. The KPI couldn't be imported. Contact Admin. The server has encountered a situation it does not know how to handle."}, "409": {"description": "Conflict. The KPI already exists. Check the file with the KPI and try again. This response is sent when a request conflicts with the current state of the server."}, "400": {"description": "Bad Request. The KPI added are invalid. Check the KPI and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "201": {"description": "Success. The KPI was imported. "}}, "summary": "Uploads a new KPI file", "description": "Swagger will not work. Please use postman or the LSM UI. The content of the KPI file being uploaded must be\nencoded using UTF-8.", "operationId": "post_kpi", "parameters": [{"name": "files", "in": "formData", "type": "array", "required": true, "description": "Files to upload", "items": {"type": "file"}, "collectionFormat": "multi"}], "consumes": ["application/x-www-form-urlencoded", "multipart/form-data"], "tags": ["Key Performance Indicators"]}}, "/v1/kpis/{kpi_id}": {"get": {"responses": {"404": {"description": "Not Found. Could not retrieve KPI. Check the KPI ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Key%20Performance%20Indicators%20%28KPI%29"}}}}, "summary": "Retrieve a KPI by its unique identifier (ID)", "description": "Returns the KPI object.", "operationId": "get_kpi_update", "parameters": [{"name": "kpi_id", "in": "path", "required": true, "type": "string", "description": "ID of the KPI "}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Key Performance Indicators"]}, "post": {"responses": {"500": {"description": "Internal Server Error. The KPI couldn't be updated. Contact Admin. The server has encountered a situation it does not know how to handle."}, "409": {"description": "Conflict. KPI already exists. This response is sent when a request conflicts with the current state of the server."}, "404": {"description": "KPI not found. Check the KPI ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad request. Invalid KPI ID. Check the KPI ID and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success. The KPI has been updated."}}, "summary": "Update an existing KPI", "operationId": "post_kpi_update", "parameters": [{"name": "kpi_id", "in": "path", "required": true, "type": "string", "description": "ID of the KPI "}, {"name": "files", "in": "formData", "type": "file", "required": true, "description": "Files to upload"}], "consumes": ["multipart/form-data"], "tags": ["Key Performance Indicators"]}}, "/v1/logical-scenarios": {"get": {"responses": {"200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Scenario_min"}}}}, "summary": "Retrieve a list of all available logical scenarios", "description": "Retrieves a list of logical scenario information containing the logical scenario ID, name, label, status, and if a generator is\navailable.", "operationId": "get_logical_scenarios", "parameters": [{"required": false, "example": "1000", "in": "query", "description": "Starting index to return the records from", "name": "skip", "type": "string"}, {"required": false, "example": "100", "in": "query", "description": "Number of records to return in the response", "name": "limit", "type": "string"}, {"required": false, "in": "query", "description": "Filter by status", "name": "status", "type": "string"}, {"required": false, "in": "query", "description": "Filter by name", "name": "name", "type": "string"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}, "post": {"responses": {"500": {"description": "Internal Server Error. Unable to upload logical scenarios. Contact Admin. The server has encountered a situation it does not know how to handle."}, "409": {"description": "Conflict. Logical scenario already exists. Enter the name of a new logical scenario and try again. This response is sent when a request conflicts with the current state of the server."}, "400": {"description": "Bad Request. Invalid logical scenario name. Check the logical scenario name and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "201": {"description": "Success. Logical scenarios uploaded successfully."}}, "summary": "Upload new logical scenarios", "description": "Swagger will not work. Please use postman or the Scenario Manager application.", "operationId": "post_logical_scenarios", "parameters": [{"name": "name", "in": "query", "type": "string", "description": "Logical Scenario Name"}, {"name": "are_scenarios_ready", "in": "query", "type": "boolean", "required": true, "description": "Are the uploaded scenarios ready"}, {"name": "files", "in": "formData", "type": "array", "required": true, "description": "Files to upload", "items": {"type": "file"}, "collectionFormat": "multi"}, {"name": "asset_ids", "in": "query", "type": "array", "description": "Comma separated list of asset IDs", "items": {"type": "string"}, "collectionFormat": "csv"}], "consumes": ["application/x-www-form-urlencoded", "multipart/form-data"], "tags": ["Logical Scenario"]}}, "/v1/logical-scenarios/expert-distributions": {"post": {"responses": {"500": {"description": "Unable to upload file."}, "404": {"description": "Logical scenario not found."}, "400": {"description": "Invalid File"}, "201": {"description": "Expert parameter distributions uploaded successfully."}}, "summary": "Upload parameter distributions", "description": "Uploads parameter distributions for the parameters of the scenario which is mentioned in the \ntag of the associated *.xosc file. Swagger will not work. Please use postman or the Scenario Manager application.", "operationId": "post_expert_distributions", "parameters": [{"name": "files", "in": "formData", "type": "array", "required": true, "description": "Files to upload", "items": {"type": "file"}, "collectionFormat": "multi"}], "consumes": ["application/x-www-form-urlencoded", "multipart/form-data"], "tags": ["Logical Scenario"]}}, "/v1/logical-scenarios/metadata-only": {"post": {"responses": {"500": {"description": "Internal Server Error. Unable to upload logical scenarios. Contact Admin. The server has encountered a situation it does not know how to handle."}, "409": {"description": "Conflict. The logical scenarios already exists. Check the logical scenario ID and try again. This response is sent when a request conflicts with the current state of the server."}, "400": {"description": "Bad Request. Logical scenarios couldn't be uploaded. Check the logical scenario ID and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "201": {"description": "Logical scenarios have been uploaded successfully."}}, "summary": "Upload new scenarios with metadata only", "operationId": "post_logical_scenarios_metadata_only", "parameters": [{"name": "name", "in": "query", "type": "string", "description": "Logical Scenario Name"}, {"name": "are_scenarios_ready", "in": "query", "type": "boolean", "required": true, "description": "Are the uploaded scenarios ready"}, {"name": "files", "in": "formData", "type": "array", "required": true, "description": "Files to upload", "items": {"type": "file"}, "collectionFormat": "multi"}, {"name": "asset_ids", "in": "query", "type": "array", "description": "Comma separated list of asset IDs", "items": {"type": "string"}, "collectionFormat": "csv"}], "consumes": ["application/x-www-form-urlencoded", "multipart/form-data"], "tags": ["Logical Scenario"]}}, "/v1/logical-scenarios/metadata-only/{scenario_id}": {"post": {"responses": {"200": {"description": "Success. The logical scenario has been updated."}, "500": {"description": "Internal server error while updating the logical scenario. Contact Admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "Logical scenario not found. Check the ID of the logical scenario and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad Request. Check the logical scenario ID and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}}, "summary": "Update an existing logical scenario", "operationId": "post_logical_scenario_metadata_only_id", "parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string", "description": "ID of the logical scenario "}, {"name": "ready_scenario", "in": "query", "type": "boolean", "required": true, "description": "If the scenario status is ready or not"}, {"name": "file", "in": "formData", "type": "file", "required": true, "description": "Files to upload"}], "consumes": ["multipart/form-data"], "tags": ["Logical Scenario"]}}, "/v1/logical-scenarios/{scenario_id}": {"get": {"responses": {"404": {"description": "The logical scenario with the specified ID was not found. Check the logical scenario ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success", "schema": {"$ref": "#/definitions/Logical%20Scenario"}}}, "summary": "Retrieve logical scenario by its unique identifier (ID)", "description": "This field must contain a list of information to retrieve (names) separated by a \",\" without spaces. For example: ID,label,parameters[].name", "operationId": "get_logical_scenario_id", "parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string", "description": "ID of the logical scenario "}, {"required": false, "in": "query", "description": "Specify any specific information to retrieve in this field - leave blank to get all the available information", "name": "fields", "type": "string"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}, "post": {"responses": {"200": {"description": "Success. The logical scenario has been updated."}, "500": {"description": "Internal Server Error. The logical scenario couldn't be updated. Contact Admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "Not Found. The logical scenario with the specified ID was not found. Check the logical scenario ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad Request. Check the logical scenario ID and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}}, "summary": "Update an existing logical scenario with its unique identifier (ID)", "operationId": "post_logical_scenario_id", "parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string", "description": "ID of the logical scenario "}, {"name": "are_scenarios_ready", "in": "query", "type": "boolean", "required": true, "description": "Are the updated scenarios ready"}, {"name": "files", "in": "formData", "type": "array", "description": "Files to upload", "items": {"type": "file"}, "collectionFormat": "multi"}, {"name": "asset_ids", "in": "query", "type": "array", "description": "Comma separated list of asset IDs", "items": {"type": "string"}, "collectionFormat": "csv"}], "consumes": ["application/x-www-form-urlencoded", "multipart/form-data"], "tags": ["Logical Scenario"]}}, "/v1/logical-scenarios/{scenario_id}/assets": {"parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string"}], "get": {"responses": {"404": {"description": "Not Found. Linked assets couldn't be retrieved. Check the logical scenario ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad Request. Linked assets couldn't be retrieved. Add the logical scenario ID and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Asset_min"}}}}, "operationId": "get_logical_scenario_id_assets_link", "parameters": [{"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}}, "/v1/logical-scenarios/{scenario_id}/scenario_file": {"get": {"responses": {"404": {"description": "Not Found. A logical scenario with the specified ID was not found. Check if the specified ID is correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success. Retrieved logical scenario file by ID."}}, "summary": "Download the logical scenario file", "operationId": "get_logical_scenario_file", "parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string", "description": "ID of logical scenario "}], "tags": ["Logical Scenario"]}}, "/v1/logical-scenarios/{scenario_id}/versions": {"get": {"responses": {"404": {"description": "Not Found. The logical scenario versions were not found. Check if the specified logical scenario ID is correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success. Retrieved all logical scenario versions."}}, "summary": "Retrieve all versions of a specific logical scenario", "operationId": "get_logical_scenario_versions", "parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string", "description": "ID of logical scenario. "}], "tags": ["Logical Scenario"]}}, "/v1/logical-scenarios/{scenario_id}/versions/{scenario_version}": {"get": {"responses": {"404": {"description": "Not Found. The logical scenario with the specified ID or version ID was not found. Check if the specified ID or version is correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success", "schema": {"$ref": "#/definitions/Logical%20Scenario"}}}, "summary": "Retrieve a specific version of a logical scenario", "description": "The fields query parameter allows you to specify which fields to include in the response. This query parameter\nis a comma separated list of field names without spaces. For example: ID,label,parameters[].name", "operationId": "get_logical_scenario_version_id", "parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string", "description": "ID of the logical scenario "}, {"name": "scenario_version", "in": "path", "required": true, "type": "string", "description": "Version ID of the logical scenario "}, {"required": false, "in": "query", "description": "Specify any specific information to retrieve in this field - leave blank to get all the available information.", "name": "fields", "type": "string"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}}, "/v1/logical-scenarios/{scenario_id}/versions/{scenario_version}/map_files": {"get": {"responses": {"404": {"description": "Not Found. Maps associated with the scenarios not found in the system"}, "200": {"description": "Success", "schema": {"$ref": "#/definitions/Asset_min"}}}, "operationId": "get_logical_scenario_map_files", "parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string", "description": "ID of logical scenario "}, {"name": "scenario_version", "in": "path", "required": true, "type": "string", "description": "Version of logical scenario "}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}}, "/v1/logical-scenarios/{scenario_id}/versions/{scenario_version}/scenario_file": {"get": {"responses": {"404": {"description": "Not Found. No logical scenario were found. Check if the specified logical scenario ID and versions are correct and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web"}, "200": {"description": "Success. Retrieved logical scenario file by ID and version."}}, "summary": "Download the specific version of a logical scenario file", "operationId": "get_logical_scenario_file_version", "parameters": [{"name": "scenario_id", "in": "path", "required": true, "type": "string", "description": "ID of logical scenario "}, {"name": "scenario_version", "in": "path", "required": true, "type": "string", "description": "Version of logical scenario "}], "tags": ["Logical Scenario"]}}, "/v1/monitoring/health": {"get": {"responses": {"204": {"description": "the service is unavailable."}, "200": {"description": "the service is healthy"}}, "summary": "Get the health status of the service", "operationId": "get_monitoring_health", "security": [], "tags": ["Monitoring"]}}, "/v1/monitoring/metric": {"get": {"responses": {"200": {"description": "the metrics for the service"}}, "summary": "Get the metrics for the service", "operationId": "get_monitoring_metrics", "security": [], "tags": ["Monitoring"]}}, "/v1/monitoring/ping": {"get": {"responses": {"200": {"description": "Successfully pinged"}}, "summary": "Ping the service", "operationId": "get_monitoring_ping", "security": [], "tags": ["Monitoring"]}}, "/v1/parameters": {"get": {"responses": {"404": {"description": "No parameters were found."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Parameter"}}}}, "summary": "Retrieve available parameters", "description": "If the parameter_name query parameter is not specified, then all available parameters are retrieved.", "operationId": "get_parameter_info_name", "parameters": [{"required": false, "example": "1000", "in": "query", "description": "Starting index to return the records from", "name": "skip", "type": "string"}, {"required": false, "example": "100", "in": "query", "description": "Number of records to return in the response", "name": "limit", "type": "string"}, {"required": false, "in": "query", "description": "Enter the parameter name", "name": "parameter_name", "type": "string"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Parameter"]}}, "/v1/parameters/{parameter_id}": {"get": {"responses": {"404": {"description": "Not Found. A parameter with the specified ID was not found. Check the parameter ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success", "schema": {"$ref": "#/definitions/Parameter"}}}, "summary": "Retrieve a parameter by its unique identifier (ID)", "description": "This field must contain a list of information to retrieve (names) separated by a \",\" without spaces.\nFor example: ID,label,parameters[].name", "operationId": "get_parameter_info_id", "parameters": [{"name": "parameter_id", "in": "path", "required": true, "type": "string", "description": "ID of parameter "}, {"required": false, "in": "query", "description": "Specify any specific information to retrieve in this field - leave blank to get all the available information.", "name": "fields", "type": "string"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Parameter"]}}, "/v1/requirements": {"get": {"responses": {"200": {"description": "Retrieved all available requirements."}}, "summary": "Retrieve a list of all available requirements", "operationId": "get_requirements", "parameters": [{"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Requirement"]}, "post": {"responses": {"500": {"description": "Internal Server Request. Unable to upload the file. Contact Admin. The server has encountered a situation it does not know how to handle."}, "409": {"description": "Conflict. This requirement already exists. Check the requirement file and try again. This response is sent when a request conflicts with the current state of the server."}, "400": {"description": "Bad Request. Invalid File(s). Check the files and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "201": {"description": "Success. The files have been uploaded."}}, "summary": "Upload new requirement files", "description": "Swagger will not work to upload files, please use postman or the Scenario Manager application. Please make sure the document\nbeing uploaded has a UTF-8 encoding.", "operationId": "post_requirements", "parameters": [{"name": "files", "in": "formData", "type": "array", "required": true, "description": "The files to upload in format mentioned in requirement model", "items": {"type": "file"}, "collectionFormat": "multi"}], "consumes": ["application/x-www-form-urlencoded", "multipart/form-data"], "tags": ["Requirement"]}}, "/v1/requirements/{requirement_id}": {"get": {"responses": {"200": {"description": "Success. The requirement has been retrieved."}, "404": {"description": "Not Found.The requirement couldn't be retrieved. Check the requirement ID ad try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}}, "summary": "Retrieve a specific requirement by its unique identifier (ID)", "operationId": "get_requirements_id", "parameters": [{"name": "requirement_id", "in": "path", "required": true, "type": "string", "description": "ID of the requirement to get "}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Requirement"]}, "post": {"responses": {"500": {"description": "Internal Server Error. Unable to upload file. Contact Admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "Not Found. Requirement does not exist. Check the requirement ID ad try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad Request. Invalid File(s). Check the files and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "File uploaded successfully."}}, "summary": "Update an existing requirement", "operationId": "post_requirements_id", "parameters": [{"name": "requirement_id", "in": "path", "required": true, "type": "string", "description": "ID of the requirement to get "}, {"name": "files", "in": "formData", "type": "file", "required": true, "description": "The files to upload in format mentioned in requirement model"}], "consumes": ["multipart/form-data"], "tags": ["Requirement"]}}, "/v1/requirements/{requirement_id}/versions": {"get": {"responses": {"404": {"description": "Not Found. The versions of the requirement couldn't be retrieved. Check the requirement ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Retrieved all versions of the requirement."}}, "summary": "Retrieve all versions of a specific requirement", "operationId": "get_requirements_id_versions", "parameters": [{"name": "requirement_id", "in": "path", "required": true, "type": "string", "description": "ID of the requirement "}], "tags": ["Requirement"]}}, "/v1/requirements/{requirement_id}/versions/{version_id}": {"get": {"responses": {"200": {"description": "Success. Retrieved version of the requirement."}, "404": {"description": "Not Found. The version of the requirement couldn't be retrieved. Check the requirement ID and version ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}}, "summary": "Retrieve a specific version of a requirement", "operationId": "get_requirements_id_versions_version_id", "parameters": [{"name": "requirement_id", "in": "path", "required": true, "type": "string", "description": "ID of the requirement "}, {"name": "version_id", "in": "path", "required": true, "type": "string", "description": "Version ID of the requirement "}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Requirement"]}}, "/v1/thresholds": {"get": {"responses": {"200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Threshold"}}}}, "summary": "Retrieve a list of all available thresholds", "operationId": "get_thresholds", "parameters": [{"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Threshold"]}, "post": {"responses": {"200": {"description": "Success"}}, "summary": "Upload a new threshold", "operationId": "post_thresholds", "parameters": [{"name": "payload", "required": true, "in": "body", "schema": {"$ref": "#/definitions/ThresholdInput"}}], "tags": ["Threshold"]}}, "/v1/thresholds/kpi/{kpi_id}": {"post": {"responses": {"200": {"description": "Success. The KPI was updated."}, "500": {"description": "Internal Server Error. The KPI could not be updated. Contact Admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "Not Found. A Kpi with the specified ID was not found. Check the KPI ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad Request. Check the KPI ID and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}}, "summary": "Update the existing KPI by linking thresholds to it", "operationId": "post_kpi_thresholds_link", "parameters": [{"name": "kpi_id", "in": "path", "required": true, "type": "string", "description": "ID of the KPI "}, {"name": "threshold_ids", "in": "query", "type": "array", "description": "Comma separated list of threshold IDs", "items": {"type": "string"}, "collectionFormat": "csv"}], "tags": ["Threshold"]}}, "/v1/thresholds/requirements/{requirement_id}": {"post": {"responses": {"200": {"description": "Success. The requirement has been updated."}, "500": {"description": "Internal Server Error. The requirement could not be updated. Contact Admin. The server has encountered a situation it does not know how to handle."}, "404": {"description": "A requirement with the specified ID was not found. Check the requirement ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "400": {"description": "Bad Request. Check the requirement ID and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}}, "summary": "Update an existing requirement by linking thresholds to it", "operationId": "post_requirements_link_thresholds", "parameters": [{"name": "requirement_id", "in": "path", "required": true, "type": "string", "description": "ID of the requirement "}, {"name": "threshold_ids", "in": "query", "type": "array", "description": "Comma separated list of threshold IDs", "items": {"type": "string"}, "collectionFormat": "csv"}], "tags": ["Threshold"]}}, "/v1/thresholds/{threshold_id}": {"parameters": [{"in": "path", "description": "ID of an existing threshold", "name": "threshold_id", "required": true, "type": "string"}], "get": {"responses": {"200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Threshold"}}}}, "summary": "Retrieve a threshold by its unique identifier", "operationId": "get_threshold_by_id", "parameters": [{"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Threshold"]}, "post": {"responses": {"200": {"description": "Success"}}, "summary": "Update an existing threshold", "operationId": "post_threshold_by_id", "parameters": [{"name": "payload", "required": true, "in": "body", "schema": {"$ref": "#/definitions/ThresholdInput"}}], "tags": ["Threshold"]}}, "/v1/thresholds/{threshold_id}/versions": {"get": {"responses": {"404": {"description": "The threshold couldn't be found. Check the threshold ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success. Retrieved all versions of the threshold by ID."}}, "summary": "Retrieve all versions of a specific threshold", "operationId": "get_threshold_id_all_versions", "parameters": [{"name": "threshold_id", "in": "path", "required": true, "type": "string", "description": "ID of the threshold "}], "tags": ["Threshold"]}}, "/v1/thresholds/{threshold_id}/versions/{version_id}": {"get": {"responses": {"404": {"description": "The threshold couldn't be found. Check the threshold ID, version and version ID and try again. The server cannot find the requested resource. In the browser, this means the URL is not recognized. In an API, this can also mean that the endpoint is valid but the resource itself does not exist. Servers may also send this response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client. This response code is probably the most well known due to its frequent occurrence on the web."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Threshold"}}}}, "summary": "Retrieve a specific version of a threshold", "operationId": "get_threshold_id_version", "parameters": [{"name": "threshold_id", "in": "path", "required": true, "type": "string", "description": "ID of the threshold"}, {"name": "version_id", "in": "path", "required": true, "type": "string", "description": "Version of the threshold"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Threshold"]}}, "/v2/logical-scenarios": {"get": {"responses": {"500": {"description": "Internal Server Error. Contact admin. The server has encountered a situation it does not know how to handle."}, "400": {"description": "Bad Request. Couldn't retrieve the list of scenarios. Check the format for filters if any and try again. The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing)."}, "200": {"description": "Success", "schema": {"type": "array", "items": {"$ref": "#/definitions/Scenario_response"}}}}, "summary": "Retrieve a list of all available logical scenarios and their total count", "description": "Retrieves a list of logical scenario information containing the logical scenario ID, name, label, status, and if a generator is\navailable along with the total count of the scenarios", "operationId": "get_logical_scenarios_v2", "parameters": [{"required": false, "example": "date:desc (default)", "in": "query", "description": "Ordering a column in ascending (asc) or descending (desc) order", "name": "order_by", "type": "string"}, {"required": false, "example": "{\"name\":[\"scen_1\", \"scen_2\"]}", "in": "query", "description": "Filtering one or more column entries with list of values", "name": "in", "type": "string"}, {"required": false, "example": "{\"name\":\"scenario-\"", "in": "query", "description": "Condition like startswith for filtering column/ columns based on partial string", "name": "like", "type": "string"}, {"required": false, "example": "1000", "in": "query", "description": "Starting index to return the records from", "name": "skip", "type": "string"}, {"required": false, "example": "100", "in": "query", "description": "Number of records to return in the response", "name": "limit", "type": "string"}, {"required": false, "in": "query", "description": "Filter by date", "name": "date", "type": "string"}, {"required": false, "in": "query", "description": "Filter by label", "name": "label", "type": "string"}, {"required": false, "in": "query", "description": "Filter by status", "name": "status", "type": "string"}, {"required": false, "in": "query", "description": "Filter by name", "name": "name", "type": "string"}, {"name": "X-Fields", "in": "header", "type": "string", "format": "mask", "description": "An optional fields mask"}], "tags": ["Logical Scenario"]}}}, "info": {"title": "AVxcelerate Scenario Manager", "version": "2025R2.1", "description": "This is the REST API for the Scenario Manager (LSM) application that is part of the Ansys AVxcelerate Autonomy.
The REST API provides endpoints to manage logical scenarios and their related entities including requirements, parameters, Key performance indicators (KPIs), groups and group types.
Please refer to the AVxcelerate Scenario Manager User Guide available on the Ansys documentation portal for examples of how to use the available REST API features.", "contact": {"name": "support@ansys.com", "email": "support@ansys.com", "url": "https://ansys.com"}, "license": {"name": "Ansys software"}}, "produces": ["application/json"], "consumes": ["application/json"], "securityDefinitions": {"apikey": {"type": "apiKey", "in": "header", "name": "Authorization"}}, "security": [{"apikey": []}], "tags": [{"name": "Logical Scenario", "description": "Endpoints to manage logical scenarios and related documents"}, {"name": "Parameter", "description": "Endpoints to manage parameters"}, {"name": "Key Performance Indicators", "description": "Endpoints to manage Key Performance Indicators (KPI)"}, {"name": "Assets", "description": "Endpoints to manage assets"}, {"name": "Monitoring", "description": "Endpoints related to monitoring the service"}, {"name": "Groups", "description": "Endpoints related to managing groups in the Scenario Manager"}, {"name": "Threshold", "description": "Endpoints to manage thresholds"}, {"name": "GroupType", "description": "Endpoints related to manage group-types in the Scenario Manager"}, {"name": "Requirement", "description": "Endpoint to manage requirements"}, {"name": "Inventory", "description": "Endpoints to list and download the catalogs and maps referred to in the scenario"}], "definitions": {"Logical Scenario": {"properties": {"id": {"type": "string", "description": "The unique identifier of this logical scenario", "example": "1"}, "label": {"type": "string", "description": "User friendly label for this logical scenario.", "example": "Avoid Lateral Collision Scenario"}, "name": {"type": "string", "description": "The name of this logical scenario", "example": "avoid_lateral_collision_scenario"}, "date": {"type": "string", "format": "date-time", "description": "Modification date and time", "example": "2022-09-21T14:32:58"}, "description": {"type": "string", "description": "The description of this logical scenario", "example": "Avoid lateral collision"}, "parameters": {"type": "array", "description": "The parameters of this logical scenario", "items": {"$ref": "#/definitions/Parameter"}}, "assets": {"type": "array", "items": {"type": "string", "description": "ID of the asset attached to the scenario", "example": "41a5f5a9-ff0d-4f4f-a89a-32dd78b76846"}}, "fragment_info": {"type": "array", "description": "Information of the underlying fragments of this scenario", "items": {"$ref": "#/definitions/Fragment_info"}}, "status": {"type": "string", "description": "Status of the scenario", "example": "ready"}, "file_format": {"type": "string", "description": "Format of the scenario definition", "example": "XOSC", "enum": ["XOSC", "JSCENE", "None"]}, "lsm_generator_available": {"type": "boolean", "description": "Flag indicating if the scenario has a generator available on the LSM", "example": true}, "user_data": {"type": "object"}}, "type": "object"}, "Parameter": {"properties": {"id": {"type": "string", "description": "The unique identifier of this parameter", "example": "1"}, "label": {"type": "string", "description": "User friendly label for this parameter.", "example": "Relative Velocity"}, "name": {"type": "string", "description": "The name of this parameter", "example": "relative_velocity"}, "description": {"type": "string", "description": "The description of this Parameter", "example": "Relative speed to lateral vehicle"}, "data_type": {"type": "string", "description": "Treat parameters as given data type", "example": "double", "enum": ["boolean", "dateTime", "double", "int", "integer", "string", "unsignedInt", "unsignedShort"]}, "unit": {"type": "string", "description": "The unit of this parameter", "example": "m/s", "enum": ["m/s", "kmp/h"]}, "parameter_distributions": {"description": "Parameter distributions for this parameter", "allOf": [{"$ref": "#/definitions/ParameterDistributions"}]}, "constraints": {"type": "array", "items": {"description": "Constraints on the parameter", "allOf": [{"$ref": "#/definitions/Constraints"}]}}, "default_value": {"type": "string", "description": "The default value for this parameter", "example": "16.66666667"}}, "type": "object"}, "ParameterDistributions": {"properties": {"deterministic_distribution": {"description": "Deterministic distribution", "allOf": [{"$ref": "#/definitions/DeterministicDistribution"}]}, "stochastic_distribution": {"description": "Stochastic distribution", "allOf": [{"$ref": "#/definitions/StochasticDistribution"}]}}, "type": "object"}, "DeterministicDistribution": {"properties": {"deterministic_multi_parameter_distribution": {"description": "Multi-parameter deterministic distribution", "allOf": [{"$ref": "#/definitions/DeterministicMultiParameterDistribution"}]}, "deterministic_single_parameter_distribution": {"description": "Single-parameter deterministic distribution", "allOf": [{"$ref": "#/definitions/DeterministicSingleParameterDistribution"}]}}, "type": "object"}, "DeterministicMultiParameterDistribution": {"properties": {"value_set_distribution": {"description": "Value set distribution for this parameter", "allOf": [{"$ref": "#/definitions/ValueSetDistribution"}]}}, "type": "object"}, "ValueSetDistribution": {"properties": {"parameter_value_set": {"description": "Parameter value set for this parameter", "allOf": [{"$ref": "#/definitions/ParameterValueSet"}]}}, "type": "object"}, "ParameterValueSet": {"properties": {"parameter_assignment": {"description": "Parameter assignment for this parameter", "allOf": [{"$ref": "#/definitions/ParameterAssignment"}]}}, "type": "object"}, "ParameterAssignment": {"properties": {"value": {"type": "string", "description": "Value for this parameter", "example": "40"}}, "type": "object"}, "DeterministicSingleParameterDistribution": {"properties": {"distribution_set": {"type": "array", "description": "Distribution set for this parameter", "items": {"type": "string"}}, "distribution_range": {"description": "Distribution range for this parameter", "allOf": [{"$ref": "#/definitions/DistributionRange"}]}}, "type": "object"}, "DistributionRange": {"properties": {"step_width": {"type": "number", "description": "Step width for this parameter", "example": 0.4}, "range": {"description": "Range for this parameter", "allOf": [{"$ref": "#/definitions/Range"}]}}, "type": "object"}, "Range": {"properties": {"lower_limit": {"type": "number", "description": "Lower limit of distribution", "example": -2}, "upper_limit": {"type": "number", "description": "Upper limit of distribution", "example": 2}}, "type": "object"}, "StochasticDistribution": {"properties": {"probability_distribution_set": {"type": "array", "description": "Probability distribution set for this parameter", "items": {"$ref": "#/definitions/ProbabilityDistributionSet"}}, "normal_distribution": {"description": "Normal Distribution for this parameter", "allOf": [{"$ref": "#/definitions/NormalDistribution"}]}, "uniform_distribution": {"description": "Uniform Distribution for this parameter", "allOf": [{"$ref": "#/definitions/UniformDistribution"}]}, "poisson_distribution": {"description": "Poisson Distribution for this parameter", "allOf": [{"$ref": "#/definitions/PoissonDistribution"}]}, "histogram": {"type": "array", "description": "Histogram for this parameter", "items": {"$ref": "#/definitions/Bin"}}}, "type": "object"}, "ProbabilityDistributionSet": {"properties": {"value": {"type": "string", "description": "value", "example": "ActorA"}, "weight": {"type": "number", "description": "Weight of this value", "example": 0.25}}, "type": "object"}, "NormalDistribution": {"properties": {"expected_value": {"type": "number", "description": "Expected value of this normal distribution", "example": 2}, "variance": {"type": "number", "description": "Variance of this normal distribution", "example": 1}}, "type": "object"}, "UniformDistribution": {"properties": {"range": {"description": "Range for this parameter", "allOf": [{"$ref": "#/definitions/Range"}]}}, "type": "object"}, "PoissonDistribution": {"properties": {"expected_value": {"type": "number", "description": "Expected value of this poisson distribution", "example": 2}}, "type": "object"}, "Bin": {"properties": {"weight": {"type": "number", "description": "Weight in this bin", "example": 0.4}, "range": {"description": "Range for this bin", "allOf": [{"$ref": "#/definitions/Range"}]}}, "type": "object"}, "Constraints": {"properties": {"id": {"type": "string", "description": "The unique identifier of this constraint", "example": "b9981762-ca4a-436d-b89f-349b1ba0044"}, "rule": {"type": "string", "description": "Rule to be applied on the constraint", "example": ">=", "enum": ["==", ">", "<", ">=", "<=", "<>"]}, "formula": {"type": "string", "description": "Formula to be implemented in constraint", "example": "4"}, "group": {"type": "integer", "description": "Index of the corresponding constraint group (0-indexed)", "example": 0}}, "type": "object"}, "Fragment_info": {"required": ["fragment_name", "fragment_type", "source_id", "version"], "properties": {"fragment_name": {"type": "string", "description": "Fragment name", "example": "Minimal Scenario"}, "fragment_type": {"type": "string", "description": "Fragment type", "example": "Logical Scenario"}, "source_id": {"type": "string", "description": "Source fragment ID", "example": "2056145"}, "version": {"type": "string", "description": "Version ID of CodeBeamer", "example": "11"}}, "type": "object"}, "Asset_min": {"properties": {"id": {"type": "string", "description": "Unique identifier (ID) of this asset", "example": "1"}, "name": {"type": "string", "description": "Name of this asset", "example": "driver_input.json"}, "file_type": {"type": "string", "description": "Type of the asset", "example": "driver_input", "enum": ["driver_input", "map"]}, "version": {"type": "string", "description": "Creation date/version of the asset"}}, "type": "object"}, "Scenario_min": {"properties": {"id": {"type": "string", "description": "The unique identifier (ID) of this logical scenario", "example": "1"}, "name": {"type": "string", "description": "Name of this logical scenario", "example": "avoid_lateral_collision_scenario"}, "date": {"type": "string", "format": "date-time", "description": "Modification date and time", "example": "2022-09-21T14:32:58"}, "label": {"type": "string", "description": "Label of this logical scenario", "example": "Avoid lateral collision"}, "status": {"type": "string", "description": "Status of the logical scenario", "example": "ready"}, "lsm_generator_available": {"type": "boolean", "description": "Flag indicating if the logical scenario has a generator available in the Scenario Manager.", "example": true}}, "type": "object"}, "Scenario_response": {"properties": {"data": {"type": "array", "description": "The list of scenarios", "items": {"$ref": "#/definitions/Scenario_min"}}, "total": {"type": "integer", "description": "The total number of scenarios", "example": 1000}}, "type": "object"}, "Key Performance Indicators (KPI)": {"properties": {"id": {"type": "string", "description": "The unique identifier of this KPI", "example": "b829473e-042b-427f-9585"}, "name": {"type": "string", "description": "The name of this KPI.", "example": "min_ttc"}, "label": {"type": "string", "description": "User friendly label (description) for this KPI.", "example": "Minimum time to collision"}, "description": {"type": "string", "description": "The description of this KPI.", "example": "Minimum value of Time to Collision during simulation"}, "target": {"type": "string"}, "parameters": {"type": "array", "items": {"type": "string", "description": "The parameters of this KPI.", "example": ["Very uncomfortable breaking", "some other feedback"]}}, "data_type": {"type": "string", "description": "The data type of this KPI", "example": "double", "enum": ["double", "integer", "string", "boolean"]}, "unit": {"type": "string"}, "id_version": {"type": "string", "description": "The version of this kpi entry", "example": "57062bc5f66f27bc23b7"}, "thresholds": {"type": "array", "items": {"type": "string", "description": "ID of the threshold attached to the kpi"}}, "user_data": {"type": "object"}}, "type": "object"}, "Asset": {"properties": {"id": {"type": "string", "description": "Unique identifier (ID) of this asset", "example": "004ad8"}, "name": {"type": "string", "description": "Name of this asset", "example": "ALKS_Road_Different_Curvature.xodr"}, "file_type": {"type": "string", "description": "Type of the asset", "example": "driver_input", "enum": ["driver_input", "map"]}, "logical_scenarios": {"type": "array", "description": "List of referenced scenarios", "items": {"$ref": "#/definitions/ScenarioReference"}}}, "type": "object"}, "ScenarioReference": {"properties": {"id": {"type": "string", "description": "Id of the attached scenario"}, "name": {"type": "string", "description": "Name of the attached scenario"}, "label": {"type": "string", "description": "label of the attached scenario"}, "status": {"type": "string", "description": "status of the attached scenario"}}, "type": "object"}, "GroupInput": {"required": ["name"], "properties": {"name": {"type": "string", "description": "User defined unique name of the group"}, "description": {"type": "string", "description": "User defined description of the group"}, "type": {"type": "string", "description": "A user identified type of group"}, "source_id": {"type": "string", "description": "Source of Truth for the group."}, "scenarios": {"type": "array", "description": "List of scenario IDs to be linked to the group", "items": {"type": "string"}}, "kpis": {"type": "array", "description": "List of kpi IDs to be linked to the group", "items": {"type": "string"}}, "requirements": {"type": "array", "description": "List of requirement IDs to be linked to the group", "items": {"type": "string"}}, "enabled": {"type": "boolean", "description": "Enable flag of groups"}}, "type": "object"}, "Group": {"properties": {"id": {"type": "string", "description": "Auto generated id of the group"}, "name": {"type": "string", "description": "User defined unique name of the group"}, "description": {"type": "string", "description": "User defined description of the group"}, "source_id": {"type": "string", "description": "Source of Truth for the group."}, "enabled": {"type": "boolean", "description": "Enable flag of groups"}, "scenarios": {"type": "array", "description": "List of referenced scenarios", "items": {"$ref": "#/definitions/ScenarioReference"}}, "kpis": {"type": "array", "description": "List of referenced kpis", "items": {"$ref": "#/definitions/KpiReference"}}, "requirements": {"type": "array", "description": "List of referenced requirements", "items": {"$ref": "#/definitions/RequirementReference"}}, "user_data": {"type": "object"}, "is_latest_version": {"type": "boolean", "description": "latest_version flag of groups"}, "file_version": {"type": "string", "description": "Version of the group"}}, "type": "object"}, "KpiReference": {"properties": {"id": {"type": "string", "description": "Id of the attached kpi"}, "name": {"type": "string", "description": "Name of the attached kpi"}, "label": {"type": "string", "description": "label of the attached kpi"}}, "type": "object"}, "RequirementReference": {"properties": {"id": {"type": "string", "description": "Id of the attached requirement"}, "name": {"type": "string", "description": "Name of the attached requirement"}, "qualified_name": {"type": "string", "description": "label of the attached requirement"}}, "type": "object"}, "ThresholdInput": {"properties": {"value": {"type": "string", "description": "User defined value of the threshold"}, "operator": {"type": "string", "description": "User defined operator of the threshold"}}, "type": "object"}, "Threshold": {"properties": {"id": {"type": "string", "description": "Auto generated id of the threshold"}, "value": {"type": "string", "description": "User defined value of the threshold"}, "operator": {"type": "string", "description": "User defined operator of the threshold"}, "creation_date": {"type": "string", "description": "Creation date of the threshold"}}, "type": "object"}, "GroupTypeInput": {"properties": {"name": {"type": "string", "description": "User defined unique name of the group type"}, "description": {"type": "string", "description": "User defined description of the croup type"}, "groups": {"type": "array", "items": {"type": "string", "description": "Group ids belonging to this group type"}}}, "type": "object"}, "GroupType": {"properties": {"id": {"type": "string", "description": "Auto generated id of the group type"}, "name": {"type": "string", "description": "User defined unique name of the group type"}, "description": {"type": "string", "description": "User defined description of the croup type"}, "groups": {"type": "array", "description": "List of referenced groups", "items": {"$ref": "#/definitions/GroupReference"}}}, "type": "object"}, "GroupReference": {"properties": {"id": {"type": "string", "description": "Id of the attached group"}, "name": {"type": "string", "description": "Id of the attached scenario"}, "scenarios": {"type": "array", "description": "List of referenced scenarios", "items": {"$ref": "#/definitions/ScenarioReference"}}}, "type": "object"}}, "responses": {"ParseError": {"description": "When a mask can't be parsed"}, "MaskError": {"description": "When any error occurs on mask"}}} \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/changelog.md b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/changelog.md new file mode 100644 index 0000000000..dd77a52ed0 --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/changelog.md @@ -0,0 +1,3 @@ +# Changelog + +## 2025 R2.1 \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/lsm-rest-desc.md b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/lsm-rest-desc.md new file mode 100644 index 0000000000..4fcbe25cdf --- /dev/null +++ b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/lsm-rest-desc.md @@ -0,0 +1,54 @@ +## Introduction +When using the AVxcelerate toolchain, you need to use the REST APIs to connect the different components and share information with one another. First you will use Simulation Framework to create custom activities and a Simulation Loop, you will then use the SUT REST API to connect the Simulation Loop to your System Under Test (SUT) that will be the base of your simulation. The SUT REST API allows you to import the Simulation Framework configuration file, that will be selected later during the configuration of the simulation on the Explore application. The SUT REST API allows you to manage the SUT configuration files within the toolchain. + +Once this is done, you will use the Scenario Manager application to import Logical Scenarios and Assets (assets are complementary configuration files, such as Maps) into the toolchain. You will use the Scenario Manager REST API to manage these logical scenarios and assets. + +Once the Logical scenario is imported, you will use the Explore & Analyze interface to configure each simulation according to your development goals. Each simulation will be configured to reflect the aspect of the automotive function that requires testing. In order to manage all the files and information that will be made available with the Explore & Analyze application, you will need to use the Explore & Analyze REST API. + +This REST API is used to manage the data available with the Scenario Manager. +The REST API provides endpoints to manage Logical Scenarios and assets: import in bulk, update, retrieve complete lists or specific version, check existing logical scenarios. But also, create, upload new KPI files, update existing or retrieve lists of KPIs. You can manage the Logical scenario groups, groupTypes and requirements that will allow smoother management for large scale simulations. Check the inventory (retrieve a list of catalogs and map files, etc.) +Please refer to the Scenario Manager and Explore and Analyze User and Safety manual available on the Ansys documentation portal for examples of how to use the available REST API features. +## Platform overview +Schema +## Authentication + +Generating Token for REST API Authentication. + +To generate a token, run the following command from your terminal: + +```curl 'GET' +$ curl \ + -d "client_id=tsalsm-rest-api" \ + -d "client_secret=" \ + -d "username=avx-toolchain-user" \ + -d "password=" \ + -d "scope=offline_access" \ + -d "grant_type=password" \ + "http://explore.apps.YOURCUSTOMURL.com/auth/realms/avx/protocol/openid-connect/token" +``` + + The output should be the following: copy and save the generated token so that you use it to authenticate. + +```json +{ + "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJrQWVwLWVZNVNRVlRIMHhqNUFBMXM3U19IeGpRSmxLckNLcE51STFLQkxNIn0.eyJleHAiOjE2ODc0NDA5NzIsImlhdCI6MTY4NzQ0MDY3MiwianRpIjoiYjhkOWFlMWYtMTZmMy00NDM1LTk0MzItYmJjN2NhZWE5NDQ3IiwiaXNzIjoiaHR0cHM6Ly9leHBsb3JlLnN0YWdlLmFwcHMuZnJpc2JlZWRldi5jb20vYXV0aC9yZWFsbXMvYXZ4IiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImI1NGVhODZkLTkzMjUtNDYwZi1iMDdhLTJlOTBlMmQwNmJiZiIsInR5cCI6IkJlYXJlciIsImF6cCI6InRzYWxzbS1yZXN0LWFwaSIsInNlc3Npb25fc3RhdGUiOiI5YTE2Y2U5NC0xMTY5LTQzY2MtYjYyNS01ZTAxNTc3ZTNkNDYiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iLCJkZWZhdWx0LXJvbGVzLWF2eCJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoib2ZmbGluZV9hY2Nlc3MgZW1haWwgcHJvZmlsZSIsInNpZCI6IjlhMTZjZTk0LTExNjktNDNjYy1iNjI1LTVlMDE1NzdlM2Q0NiIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhdngtdG9vbGNoYWluLXVzZXIiLCJnaXZlbl9uYW1lIjoiIiwiZmFtaWx5X25hbWUiOiIiLCJlbWFpbCI6InRzYWxzbUBhbnN5cy5jb20ifQ.mk5-FqoMvbPeUSRRc3kVicAVt2U-xSYRVmzFwVeDKbcYlJMD551EYf9dzS2F9DBxPOoBDUyAdWyAov8Hj-VcscuMCpuPm9ikq6zf9sXOWCOlT3SYQIm7vHhb16_K1rtbAwRHlRPvyu4IAplj3SBsybkhUFQlSpWyRupl7Y80QZiaSoGviWh8EQabbhdSjzb-JFkOr7CZuQL4G5irpGjQDNa7zX6HzvQYpPWXrhYDpXItP2ZzEDHKIQAK-DUKIQyj8EfemEKx6BUbHquiC_n4f_VCIeGsr9pOPRK_5U87nzrE-rpzVsrFg77cURyX8cXFxfXYgDuB5KmbzLvz5mCxsQ", + "expires_in": 300, + "refresh_expires_in": 0, + "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIwMmFkMjc0MS03MDc4LTRiYTktYTkyNy03NjhlZjRlYmM1YjcifQ.eyJpYXQiOjE2ODc0NDA2NzIsImp0aSI6ImMyMzhmOGY5LWViNGQtNGM5Yy05NWNjLWJjZmQ0MDhkMWFhNiIsImlzcyI6Imh0dHBzOi8vZXhwbG9yZS5zdGFnZS5hcHBzLmZyaXNiZWVkZXYuY29tL2F1dGgvcmVhbG1zL2F2eCIsImF1ZCI6Imh0dHBzOi8vZXhwbG9yZS5zdGFnZS5hcHBzLmZyaXNiZWVkZXYuY29tL2F1dGgvcmVhbG1zL2F2eCIsInN1YiI6ImI1NGVhODZkLTkzMjUtNDYwZi1iMDdhLTJlOTBlMmQwNmJiZiIsInR5cCI6Ik9mZmxpbmUiLCJhenAiOiJ0c2Fsc20tcmVzdC1hcGkiLCJzZXNzaW9uX3N0YXRlIjoiOWExNmNlOTQtMTE2OS00M2NjLWI2MjUtNWUwMTU3N2UzZDQ2Iiwic2NvcGUiOiJvZmZsaW5lX2FjY2VzcyBlbWFpbCBwcm9maWxlIiwic2lkIjoiOWExNmNlOTQtMTE2OS00M2NjLWI2MjUtNWUwMTU3N2UzZDQ2In0.wTrdeIoEoum8mMaam-eZerfPAywnb2LGr1Wsxv6tBYg", + "token_type": "Bearer", + "not-before-policy": 0, + "session_state": "9a16ce94-1169-43cc-b625-5e01577e3d46", + "scope": "offline_access email profile" +} +``` + +The mandatory attributes are `refresh_token` and `access_token`. + +2. Go to the REST API documentation page. +4. Click **Authorize**. + +PHOTO + +5. Enter Bearer in the *Value* field, with a space at the end. Then, insert the access token. Click **Authorize** once again. + +PHOTO \ No newline at end of file diff --git a/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/schema_general_release_note.png b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/schema_general_release_note.png new file mode 100644 index 0000000000..59a70d89c6 Binary files /dev/null and b/2025R2/AVX_Autonomy_REST_API_25R2/AVX_Scenario_Manager_API_ArchV1/schema_general_release_note.png differ