summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
l---------[-rw-r--r--]opendc-api-spec.yml788
-rw-r--r--[l---------]opendc-web/opendc-web-api/static/schema.yml1294
2 files changed, 1294 insertions, 788 deletions
diff --git a/opendc-api-spec.yml b/opendc-api-spec.yml
index c23b2f3d..ca5a3b0c 100644..120000
--- a/opendc-api-spec.yml
+++ b/opendc-api-spec.yml
@@ -1,787 +1 @@
-swagger: '2.0'
-info:
- version: 2.0.0
- title: OpenDC API
- description: 'OpenDC is an open-source datacenter simulator for education, featuring real-time online collaboration, diverse simulation models, and detailed performance feedback statistics.'
-host: api.opendc.org
-basePath: /v2
-schemes:
- - https
-
-security:
- - auth0:
- - openid
-
-securityDefinitions:
- auth0:
- type: oauth2
- scopes:
- openid: Grants access to user_id
- flow: accessCode
- authorizationUrl: https://opendc.eu.auth0.com/authorize
- tokenUrl: https://opendc.eu.auth0.com/oauth/token
- x-token-validation-url: https://opendc.eu.auth0.com/userinfo
-
-paths:
- '/projects':
- get:
- tags:
- - projects
- description: List Projects of the active user
- responses:
- '200':
- description: Successfully
- schema:
- type: array
- items:
- $ref: '#/definitions/Project'
- '401':
- description: Unauthorized.
- post:
- tags:
- - projects
- description: Add a Project.
- parameters:
- - name: project
- in: body
- description: The new Project.
- required: true
- schema:
- properties:
- name:
- type: string
- responses:
- '200':
- description: Successfully added Project.
- schema:
- $ref: '#/definitions/Project'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '/projects/{projectId}':
- get:
- tags:
- - projects
- description: Get this Project.
- parameters:
- - name: projectId
- in: path
- description: Project's ID.
- required: true
- type: string
- responses:
- '200':
- description: Successfully retrieved Project.
- schema:
- $ref: '#/definitions/Project'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from retrieving Project.
- '404':
- description: Project not found
- put:
- tags:
- - projects
- description: Update this Project.
- parameters:
- - name: projectId
- in: path
- description: Project's ID.
- required: true
- type: string
- - name: project
- in: body
- description: Project's new properties.
- required: true
- schema:
- properties:
- project:
- $ref: '#/definitions/Project'
- responses:
- '200':
- description: Successfully updated Project.
- schema:
- $ref: '#/definitions/Project'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from updating Project.
- '404':
- description: Project not found.
- delete:
- tags:
- - projects
- description: Delete this project.
- parameters:
- - name: projectId
- in: path
- description: Project's ID.
- required: true
- type: string
- responses:
- '200':
- description: Successfully deleted Project.
- schema:
- $ref: '#/definitions/Project'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from deleting Project.
- '404':
- description: Project not found.
- '/projects/{projectId}/topologies':
- post:
- tags:
- - projects
- description: Add a Topology.
- parameters:
- - name: projectId
- in: path
- description: Project's ID.
- required: true
- type: string
- - name: topology
- in: body
- description: The new Topology.
- required: true
- schema:
- properties:
- topology:
- $ref: '#/definitions/Topology'
- responses:
- '200':
- description: Successfully added Topology.
- schema:
- $ref: '#/definitions/Topology'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '/projects/{projectId}/portfolios':
- post:
- tags:
- - portfolios
- description: Add a Portfolio.
- parameters:
- - name: projectId
- in: path
- description: Project's ID.
- required: true
- type: string
- - name: portfolio
- in: body
- description: The new Portfolio.
- required: true
- schema:
- properties:
- topology:
- $ref: '#/definitions/Portfolio'
- responses:
- '200':
- description: Successfully added Portfolio.
- schema:
- $ref: '#/definitions/Portfolio'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '/topologies/{topologyId}':
- get:
- tags:
- - topologies
- description: Get this Topology.
- parameters:
- - name: topologyId
- in: path
- description: Topology's ID.
- required: true
- type: string
- responses:
- '200':
- description: Successfully retrieved Topology.
- schema:
- $ref: '#/definitions/Topology'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from retrieving Topology.
- '404':
- description: Topology not found.
- put:
- tags:
- - topologies
- description: Update this Topology's name.
- parameters:
- - name: topologyId
- in: path
- description: Topology's ID.
- required: true
- type: string
- - name: topology
- in: body
- description: Topology's new properties.
- required: true
- schema:
- properties:
- topology:
- $ref: '#/definitions/Topology'
- responses:
- '200':
- description: Successfully updated Topology.
- schema:
- $ref: '#/definitions/Topology'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from updating Topology.
- '404':
- description: Topology not found.
- delete:
- tags:
- - topologies
- description: Delete this Topology.
- parameters:
- - name: topologyId
- in: path
- description: Topology's ID.
- required: true
- type: string
- responses:
- '200':
- description: Successfully deleted Topology.
- schema:
- $ref: '#/definitions/Topology'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from deleting Topology.
- '404':
- description: Topology not found.
- '/portfolios/{portfolioId}':
- get:
- tags:
- - portfolios
- description: Get this Portfolio.
- parameters:
- - name: portfolioId
- in: path
- description: Portfolio's ID.
- required: true
- type: string
- responses:
- '200':
- description: Successfully retrieved Portfolio.
- schema:
- $ref: '#/definitions/Portfolio'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from retrieving Portfolio.
- '404':
- description: Portfolio not found.
- put:
- tags:
- - portfolios
- description: "Update this Portfolio."
- parameters:
- - name: portfolioId
- in: path
- description: Portfolio's ID.
- required: true
- type: string
- - name: portfolio
- in: body
- description: Portfolio's new properties.
- required: true
- schema:
- $ref: '#/definitions/Portfolio'
- responses:
- '200':
- description: Successfully updated Portfolio.
- schema:
- $ref: '#/definitions/Portfolio'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from updating Portfolio.
- '404':
- description: 'Portfolio not found.'
- delete:
- tags:
- - portfolios
- description: Delete this Portfolio.
- parameters:
- - name: portfolioId
- in: path
- description: Portfolio's ID.
- required: true
- type: string
- responses:
- '200':
- description: Successfully deleted Portfolio.
- schema:
- $ref: '#/definitions/Portfolio'
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from deleting Portfolio.
- '404':
- description: Portfolio not found.
- '/scenarios/{scenarioId}':
- get:
- tags:
- - scenarios
- description: Get this Scenario.
- parameters:
- - name: scenarioId
- in: path
- description: Scenario's ID.
- required: true
- type: string
- responses:
- '200':
- description: Successfully retrieved Scenario.
- schema:
- $ref: '#/definitions/Scenario'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from retrieving Scenario.
- '404':
- description: Scenario not found.
- 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
- type: string
- - name: scenario
- in: body
- description: Scenario with new name.
- required: true
- schema:
- $ref: '#/definitions/Scenario'
- responses:
- '200':
- description: Successfully updated Scenario.
- schema:
- $ref: '#/definitions/Scenario'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from updating Scenario.
- '404':
- description: 'Scenario not found.'
- delete:
- tags:
- - scenarios
- description: Delete this Scenario.
- parameters:
- - name: scenarioId
- in: path
- description: Scenario's ID.
- required: true
- type: string
- responses:
- '200':
- description: Successfully deleted Scenario.
- schema:
- $ref: '#/definitions/Scenario'
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from deleting Scenario.
- '404':
- description: Scenario not found.
- /schedulers:
- get:
- tags:
- - simulation
- description: Get all available Schedulers
- responses:
- '200':
- description: Successfully retrieved Schedulers.
- schema:
- type: array
- items:
- $ref: '#/definitions/Scheduler'
- '401':
- description: Unauthorized.
- /traces:
- get:
- tags:
- - simulation
- description: Get all available Traces (non-populated).
- responses:
- '200':
- description: Successfully retrieved Traces (non-populated).
- schema:
- type: array
- items:
- type: object
- properties:
- _id:
- type: string
- name:
- type: string
- '401':
- description: Unauthorized.
- '/traces/{traceId}':
- get:
- tags:
- - simulation
- description: Get this Trace.
- parameters:
- - name: traceId
- in: path
- description: Trace's ID.
- required: true
- type: string
- responses:
- '200':
- description: Successfully retrieved Trace.
- schema:
- $ref: '#/definitions/Trace'
- '401':
- description: Unauthorized.
- '404':
- description: Trace not found.
- /prefabs:
- post:
- tags:
- - prefabs
- description: Add a Prefab.
- parameters:
- - name: prefab
- in: body
- description: The new Prefab.
- required: true
- schema:
- properties:
- name:
- type: string
- responses:
- '200':
- description: Successfully added Prefab.
- schema:
- $ref: '#/definitions/Prefab'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '/prefabs/{prefabId}':
- get:
- tags:
- - prefabs
- description: Get this Prefab.
- parameters:
- - name: prefabId
- in: path
- description: Prefab's ID.
- required: true
- type: string
- responses:
- '200':
- description: Successfully retrieved Prefab.
- schema:
- $ref: '#/definitions/Prefab'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from retrieving Prefab.
- '404':
- description: Prefab not found
- put:
- tags:
- - prefabs
- description: Update this Prefab.
- parameters:
- - name: prefabId
- in: path
- description: Prefab's ID.
- required: true
- type: string
- - name: prefab
- in: body
- description: Prefab's new properties.
- required: true
- schema:
- properties:
- project:
- $ref: '#/definitions/Prefab'
- responses:
- '200':
- description: Successfully updated Prefab.
- schema:
- $ref: '#/definitions/Prefab'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from updating Prefab.
- '404':
- description: Prefab not found.
- delete:
- tags:
- - prefabs
- description: Delete this prefab.
- parameters:
- - name: prefabId
- in: path
- description: Prefab's ID.
- required: true
- type: string
- responses:
- '200':
- description: Successfully deleted Prefab.
- schema:
- $ref: '#/definitions/Prefab'
- '400':
- description: Missing or incorrectly typed parameter.
- '401':
- description: Unauthorized.
- '403':
- description: Forbidden from deleting Prefab.
- '404':
- description: Prefab not found.
- '/prefabs/authorizations':
- get:
- tags:
- - prefabs
- description: Get all Prefabs the user has rights to view.
- responses:
- '200':
- description: Successfully retrieved prefabs the user is authorized on.
- schema:
- $ref: '#/definitions/Prefab'
- '400':
- description: Missing or incorrectly typed parameter.
- '404':
- description: Prefab or userId not found
-
-definitions:
- 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
- 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:
- capacity:
- type: integer
- powerCapacityW:
- type: integer
- machines:
- type: array
- items:
- type: object
- properties:
- position:
- type: integer
- cpuItems:
- type: array
- items:
- type: object
- properties:
- name:
- type: string
- clockRateMhz:
- type: integer
- numberOfCores:
- type: integer
- gpuItems:
- type: array
- items:
- type: object
- properties:
- name:
- type: string
- clockRateMhz:
- type: integer
- numberOfCores:
- type: integer
- memoryItems:
- type: array
- items:
- type: object
- properties:
- name:
- type: string
- speedMbPerS:
- type: integer
- sizeMb:
- type: integer
- storageItems:
- type: array
- items:
- type: integer
- properties:
- name:
- type: string
- speedMbPerS:
- type: integer
- sizeMb:
- 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
- simulation:
- type: object
- properties:
- state:
- type: string
- results:
- type: object
- 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
- 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
+opendc-web/opendc-web-api/static/schema.yml \ No newline at end of file
diff --git a/opendc-web/opendc-web-api/static/schema.yml b/opendc-web/opendc-web-api/static/schema.yml
index 153ad9dc..99e88095 120000..100644
--- a/opendc-web/opendc-web-api/static/schema.yml
+++ b/opendc-web/opendc-web-api/static/schema.yml
@@ -1 +1,1293 @@
-../../../opendc-api-spec.yml \ No newline at end of file
+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":
+ 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":
+ post:
+ tags:
+ - portfolios
+ 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"
+ "/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:
+ project:
+ $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"
+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
+ 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:
+ capacity:
+ type: integer
+ powerCapacityW:
+ type: integer
+ machines:
+ type: array
+ items:
+ type: object
+ properties:
+ position:
+ type: integer
+ cpuItems:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ clockRateMhz:
+ type: integer
+ numberOfCores:
+ type: integer
+ gpuItems:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ clockRateMhz:
+ type: integer
+ numberOfCores:
+ type: integer
+ memoryItems:
+ type: array
+ items:
+ type: object
+ properties:
+ name:
+ type: string
+ speedMbPerS:
+ type: integer
+ sizeMb:
+ type: integer
+ storageItems:
+ type: array
+ items:
+ type: integer
+ properties:
+ name:
+ type: string
+ speedMbPerS:
+ type: integer
+ sizeMb:
+ 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
+ simulation:
+ type: object
+ properties:
+ state:
+ type: string
+ results:
+ type: object
+ 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
+ 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