diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-04-04 17:00:31 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-04 17:00:31 +0200 |
| commit | 38769373c7e89783d33849283586bfa0b62e8251 (patch) | |
| tree | 4fda128ee6b30018c1aa14c584cc53ade80e67f7 /opendc-web/opendc-web-api/static/schema.yml | |
| parent | 6021aa4278bebb34bf5603ead4b5daeabcdc4c19 (diff) | |
| parent | 527ae2230f5c2dd22f496f45d5d8e3bd4acdb854 (diff) | |
merge: Migrate to Quarkus-based web API
This pull request changes the web API to a Quarkus-based version. Currently, the OpenDC web API is written in Python (using Flask). Although Python is a powerful language to develop web services, having another language next to Kotlin/Java and JavaScript introduces some challenges.
For instance, the web API and UI lack integration with our Gradle-based build pipeline and require additional steps from the developer to start working with. Furthermore, deploying OpenDC requires having Python installed in addition to the JVM.
By converting the web API into a Quarkus application, we can enjoy further integration with our Gradle-based build pipeline and simplify the development/deployment process of OpenDC, by requiring only the JVM and Node to work with OpenDC.
## Implementation Notes :hammer_and_pick:
* Move build dependencies into version catalog
* Design unified communication protocol
* Add Quarkus API implementation
* Add new web client implementation
* Update runner to use new web client
* Fix compatibility with React.js UI
* Remove Python build steps from CI pipeline
* Update Docker deployment for new web API
* Remove obsolete database configuration
## External Dependencies :four_leaf_clover:
* Quarkus
## Breaking API Changes :warning:
* The new web API only supports SQL-based databases for storing user-data, as opposed to MongoDB currently. We intend to use H2 for development and Postgres for production.
Diffstat (limited to 'opendc-web/opendc-web-api/static/schema.yml')
| -rw-r--r-- | opendc-web/opendc-web-api/static/schema.yml | 1631 |
1 files changed, 0 insertions, 1631 deletions
diff --git a/opendc-web/opendc-web-api/static/schema.yml b/opendc-web/opendc-web-api/static/schema.yml deleted file mode 100644 index 56cf58e7..00000000 --- a/opendc-web/opendc-web-api/static/schema.yml +++ /dev/null @@ -1,1631 +0,0 @@ -openapi: 3.0.0 -info: - version: 2.1.0 - title: OpenDC REST API v2 - description: OpenDC is an open-source datacenter simulator for education, featuring - real-time online collaboration, diverse simulation models, and detailed - performance feedback statistics. - license: - name: MIT - url: https://spdx.org/licenses/MIT - contact: - name: Support - url: https://opendc.org -servers: - - url: https://api.opendc.org/v2 -externalDocs: - description: OpenDC REST API v2 - url: https://api.opendc.com/v2/docs/ -security: - - auth0: - - openid -paths: - /projects: - get: - tags: - - projects - description: List Projects of the active user - responses: - "200": - description: Successfully - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - type: array - items: - $ref: "#/components/schemas/Project" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - post: - tags: - - projects - description: Add a Project. - requestBody: - content: - application/json: - schema: - properties: - name: - type: string - description: The new Project. - required: true - responses: - "200": - description: Successfully added Project. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Project" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "/projects/{projectId}": - get: - tags: - - projects - description: Get this Project. - parameters: - - name: projectId - in: path - description: Project's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully retrieved Project. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Project" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Project. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Project not found - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - put: - tags: - - projects - description: Update this Project. - parameters: - - name: projectId - in: path - description: Project's ID. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - properties: - project: - $ref: "#/components/schemas/Project" - description: Project's new properties. - required: true - responses: - "200": - description: Successfully updated Project. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Project" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from updating Project. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Project not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - delete: - tags: - - projects - description: Delete this project. - parameters: - - name: projectId - in: path - description: Project's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully deleted Project. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Project" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from deleting Project. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Project not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - "/projects/{projectId}/topologies": - get: - tags: - - projects - description: Get Project Topologies. - parameters: - - name: projectId - in: path - description: Project's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully retrieved Project Topologies. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - type: array - items: - $ref: "#/components/schemas/Topology" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Project. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Project not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - post: - tags: - - projects - description: Add a Topology. - parameters: - - name: projectId - in: path - description: Project's ID. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - properties: - topology: - $ref: "#/components/schemas/Topology" - description: The new Topology. - required: true - responses: - "200": - description: Successfully added Topology. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Topology" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "404": - description: Project not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - "/projects/{projectId}/portfolios": - get: - tags: - - projects - description: Get Project Portfolios. - parameters: - - name: projectId - in: path - description: Project's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully retrieved Project Portfolios. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - type: array - items: - $ref: "#/components/schemas/Portfolio" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Project. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Project not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - post: - tags: - - projects - description: Add a Portfolio. - parameters: - - name: projectId - in: path - description: Project's ID. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - properties: - topology: - $ref: "#/components/schemas/Portfolio" - description: The new Portfolio. - required: true - responses: - "200": - description: Successfully added Portfolio. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Portfolio" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "404": - description: Project not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - "/topologies/{topologyId}": - get: - tags: - - topologies - description: Get this Topology. - parameters: - - name: topologyId - in: path - description: Topology's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully retrieved Topology. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Topology" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Topology. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Topology not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - put: - tags: - - topologies - description: Update this Topology's name. - parameters: - - name: topologyId - in: path - description: Topology's ID. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - properties: - topology: - $ref: "#/components/schemas/Topology" - description: Topology's new properties. - required: true - responses: - "200": - description: Successfully updated Topology. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Topology" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Project. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Project not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - delete: - tags: - - topologies - description: Delete this Topology. - parameters: - - name: topologyId - in: path - description: Topology's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully deleted Topology. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Topology" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from deleting Topology. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Topology not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - "/portfolios/{portfolioId}": - get: - tags: - - portfolios - description: Get this Portfolio. - parameters: - - name: portfolioId - in: path - description: Portfolio's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully retrieved Portfolio. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Portfolio" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Portfolio. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Portfolio not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - put: - tags: - - portfolios - description: Update this Portfolio. - parameters: - - name: portfolioId - in: path - description: Portfolio's ID. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/Portfolio" - description: Portfolio's new properties. - required: true - responses: - "200": - description: Successfully updated Portfolio. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Portfolio" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Portfolio. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Portfolio not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - delete: - tags: - - portfolios - description: Delete this Portfolio. - parameters: - - name: portfolioId - in: path - description: Portfolio's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully deleted Portfolio. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Portfolio" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Portfolio. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Portfolio not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - "/portfolios/{portfolioId}/scenarios": - get: - tags: - - portfolios - description: Get Portfolio Scenarios. - parameters: - - name: portfolioId - in: path - description: Portfolio's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully retrieved Portfolio Scenarios. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - type: array - items: - $ref: "#/components/schemas/Scenario" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Portfolio. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Portfolio not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - post: - tags: - - portfolios - description: Add a Scenario. - parameters: - - name: portfolioId - in: path - description: Portfolio's ID. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - properties: - topology: - $ref: "#/components/schemas/Scenario" - description: The new Scenario. - required: true - responses: - "200": - description: Successfully added Scenario. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Scenario" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "404": - description: Portfolio not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - "/scenarios/{scenarioId}": - get: - tags: - - scenarios - description: Get this Scenario. - parameters: - - name: scenarioId - in: path - description: Scenario's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully retrieved Scenario. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Scenario" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Scenario. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Scenario not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - put: - tags: - - scenarios - description: Update this Scenario's name (other properties are read-only). - parameters: - - name: scenarioId - in: path - description: Scenario's ID. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/Scenario" - description: Scenario with new name. - required: true - responses: - "200": - description: Successfully updated Scenario. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Scenario" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Scenario. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Scenario not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - delete: - tags: - - scenarios - description: Delete this Scenario. - parameters: - - name: scenarioId - in: path - description: Scenario's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully deleted Scenario. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Scenario" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Scenario. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Scenario not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - /schedulers: - get: - tags: - - simulation - description: Get all available Schedulers - responses: - "200": - description: Successfully retrieved Schedulers. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - type: array - items: - $ref: "#/components/schemas/Scheduler" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - /traces: - get: - tags: - - simulation - description: Get all available Traces - responses: - "200": - description: Successfully retrieved Traces. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - type: array - items: - type: object - properties: - _id: - type: string - name: - type: string - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "/traces/{traceId}": - get: - tags: - - simulation - description: Get this Trace. - parameters: - - name: traceId - in: path - description: Trace's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully retrieved Trace. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Trace" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "404": - description: Trace not found - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - /prefabs: - get: - tags: - - prefabs - description: Get all Prefabs the user has rights to view. - responses: - "200": - description: Successfully retrieved prefabs the user is authorized on. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - type: array - items: - $ref: "#/components/schemas/Prefab" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - post: - tags: - - prefabs - description: Add a Prefab. - requestBody: - content: - application/json: - schema: - properties: - name: - type: string - description: The new Prefab. - required: true - responses: - "200": - description: Successfully added Prefab. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Prefab" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "/prefabs/{prefabId}": - get: - tags: - - prefabs - description: Get this Prefab. - parameters: - - name: prefabId - in: path - description: Prefab's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully retrieved Prefab. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Prefab" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Prefab. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Prefab not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - put: - tags: - - prefabs - description: Update this Prefab. - parameters: - - name: prefabId - in: path - description: Prefab's ID. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - properties: - prefab: - $ref: "#/components/schemas/Prefab" - description: Prefab's new properties. - required: true - responses: - "200": - description: Successfully updated Prefab. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Prefab" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Prefab. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Prefab not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - delete: - tags: - - prefabs - description: Delete this prefab. - parameters: - - name: prefabId - in: path - description: Prefab's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully deleted Prefab. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Prefab" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "404": - description: Prefab not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - /jobs: - get: - tags: - - jobs - description: Get all available jobs to run. - responses: - "200": - description: Successfully retrieved available jobs. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - type: array - items: - $ref: "#/components/schemas/Job" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "/jobs/{jobId}": - get: - tags: - - jobs - description: Get this Job. - parameters: - - name: jobId - in: path - description: Job's ID. - required: true - schema: - type: string - responses: - "200": - description: Successfully retrieved Job. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Job" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Job. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Job not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - post: - tags: - - jobs - description: Update this Job. - parameters: - - name: jobId - in: path - description: Job's ID. - required: true - schema: - type: string - requestBody: - content: - application/json: - schema: - properties: - job: - $ref: "#/components/schemas/Job" - description: Job's new properties. - required: true - responses: - "200": - description: Successfully updated Job. - content: - "application/json": - schema: - type: object - required: - - data - properties: - data: - $ref: "#/components/schemas/Job" - "400": - description: Missing or incorrectly typed parameter. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" - "401": - description: Unauthorized. - content: - "application/json": - schema: - $ref: "#/components/schemas/Unauthorized" - "403": - description: Forbidden from retrieving Job. - content: - "application/json": - schema: - $ref: "#/components/schemas/Forbidden" - "404": - description: Job not found. - content: - "application/json": - schema: - $ref: "#/components/schemas/NotFound" - "409": - description: State conflict. - content: - "application/json": - schema: - $ref: "#/components/schemas/Invalid" -components: - securitySchemes: - auth0: - type: oauth2 - x-token-validation-url: https://opendc.eu.auth0.com/userinfo - flows: - authorizationCode: - authorizationUrl: https://opendc.eu.auth0.com/authorize - tokenUrl: https://opendc.eu.auth0.com/oauth/token - scopes: - openid: Grants access to user_id - runner: Grants access to runner jobs - schemas: - Unauthorized: - type: object - required: - - message - properties: - message: - type: string - Invalid: - type: object - required: - - message - - errors - properties: - message: - type: string - errors: - type: array - items: - type: string - Forbidden: - type: object - required: - - message - properties: - message: - type: string - NotFound: - type: object - required: - - message - properties: - message: - type: string - Scheduler: - type: object - properties: - name: - type: string - Project: - type: object - properties: - _id: - type: string - name: - type: string - datetimeCreated: - type: string - format: dateTime - datetimeLastEdited: - type: string - format: dateTime - topologyIds: - type: array - items: - type: string - portfolioIds: - type: array - items: - type: string - authorizations: - type: array - items: - type: object - properties: - userId: - type: string - level: - type: string - enum: ['OWN', 'EDIT', 'VIEW'] - Topology: - type: object - properties: - _id: - type: string - projectId: - type: string - name: - type: string - rooms: - type: array - items: - type: object - properties: - _id: - type: string - name: - type: string - tiles: - type: array - items: - type: object - properties: - _id: - type: string - positionX: - type: integer - positionY: - type: integer - object: - type: object - properties: - _id: - type: string - name: - type: string - capacity: - type: integer - powerCapacityW: - type: integer - machines: - type: array - items: - type: object - properties: - _id: - type: string - position: - type: integer - cpus: - type: array - items: - type: object - properties: - _id: - type: string - name: - type: string - clockRateMhz: - type: integer - numberOfCores: - type: integer - energyConsumptionW: - type: integer - gpus: - type: array - items: - type: object - properties: - _id: - type: string - name: - type: string - clockRateMhz: - type: integer - numberOfCores: - type: integer - energyConsumptionW: - type: integer - memories: - type: array - items: - type: object - properties: - _id: - type: string - name: - type: string - speedMbPerS: - type: integer - sizeMb: - type: integer - energyConsumptionW: - type: integer - storages: - type: array - items: - type: object - properties: - _id: - type: string - name: - type: string - speedMbPerS: - type: integer - sizeMb: - type: integer - energyConsumptionW: - type: integer - Portfolio: - type: object - properties: - _id: - type: string - projectId: - type: string - name: - type: string - scenarioIds: - type: array - items: - type: string - targets: - type: object - properties: - enabledMetrics: - type: array - items: - type: string - repeatsPerScenario: - type: integer - Scenario: - type: object - properties: - _id: - type: string - portfolioId: - type: string - name: - type: string - trace: - type: object - properties: - traceId: - type: string - loadSamplingFraction: - type: number - topology: - type: object - properties: - topologyId: - type: string - operational: - type: object - properties: - failuresEnabled: - type: boolean - performanceInterferenceEnabled: - type: boolean - schedulerName: - type: string - Job: - type: object - properties: - _id: - type: string - scenarioId: - type: string - state: - type: string - heartbeat: - type: string - results: - type: object - Trace: - type: object - properties: - _id: - type: string - name: - type: string - path: - type: string - type: - type: string - Prefab: - type: object - properties: - _id: - type: string - name: - type: string - datetimeCreated: - type: string - format: dateTime - datetimeLastEdited: - type: string - format: dateTime |
