summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-api/static/schema.yml
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-10-26 16:19:55 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2022-04-04 12:48:04 +0200
commitf0c472b1792779e63fdeb97a470b46300de00050 (patch)
tree99646cf4448f4f73c2c98ede338df19a1497f9b5 /opendc-web/opendc-web-api/static/schema.yml
parent8f958c5a578dc11b890c96c0dc48e3e3f92a4d07 (diff)
feat(web/api): Initial API implementation in Kotlin
This change adds the initial implementation of the new API server in Kotlin, replacing the old API written in Python. The implementation uses Quarkus, RESTEasy, and Hibernate to implement the new API endpoints. The reason for replacing the old API server is unifying the build and deployment toolchains, reducing the number of technologies necessary to work with OpenDC. Furthermore, we envision bundling the entire OpenDC project into a single distributions, allowing users to launch their own deployment trivially.
Diffstat (limited to 'opendc-web/opendc-web-api/static/schema.yml')
-rw-r--r--opendc-web/opendc-web-api/static/schema.yml1631
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