diff options
Diffstat (limited to 'opendc-api-spec.yml')
| -rw-r--r-- | opendc-api-spec.yml | 999 |
1 files changed, 0 insertions, 999 deletions
diff --git a/opendc-api-spec.yml b/opendc-api-spec.yml deleted file mode 100644 index 56f1d529..00000000 --- a/opendc-api-spec.yml +++ /dev/null @@ -1,999 +0,0 @@ -swagger: '2.0' -info: - version: 1.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: opendc.org -basePath: /v2 -schemes: - - https - -paths: - '/users': - get: - tags: - - users - description: Search for a User using their email address. - parameters: - - name: email - in: query - description: User's email address. - required: true - type: string - responses: - '200': - description: Successfully searched Users. - schema: - $ref: '#/definitions/User' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '404': - description: User not found. - post: - tags: - - users - description: Add a new User. - parameters: - - name: user - in: body - description: The new User. - required: true - schema: - $ref: '#/definitions/User' - responses: - '200': - description: Successfully added User. - schema: - $ref: '#/definitions/User' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '409': - description: User already exists. - '/users/{userId}': - get: - tags: - - users - description: Get this User. - parameters: - - name: userId - in: path - description: User's ID. - required: true - type: string - responses: - '200': - description: Successfully retrieved User. - schema: - $ref: '#/definitions/User' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '404': - description: User not found. - put: - tags: - - users - description: Update this User's given name and/ or family name. - parameters: - - name: userId - in: path - description: User's ID. - required: true - type: string - - name: user - in: body - description: User's new properties. - required: true - schema: - properties: - givenName: - type: string - familyName: - type: string - responses: - '200': - description: Successfully updated User. - schema: - $ref: '#/definitions/User' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from updating User. - '404': - description: User not found. - delete: - tags: - - users - description: Delete this User. - parameters: - - name: userId - in: path - description: User's ID. - required: true - type: string - responses: - '200': - description: Successfully deleted User. - schema: - $ref: '#/definitions/User' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from deleting User. - '404': - description: User not found. - '/simulations': - post: - tags: - - simulations - description: Add a Simulation. - parameters: - - name: simulation - in: body - description: The new Simulation. - required: true - schema: - properties: - name: - type: string - responses: - '200': - description: Successfully added Simulation. - schema: - $ref: '#/definitions/Simulation' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '/simulations/{simulationId}': - get: - tags: - - simulations - description: Get this Simulation. - parameters: - - name: simulationId - in: path - description: Simulation's ID. - required: true - type: string - responses: - '200': - description: Successfully retrieved Simulation. - schema: - $ref: '#/definitions/Simulation' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from retrieving Simulation. - '404': - description: Simulation not found - put: - tags: - - simulations - description: Update this Simulation. - parameters: - - name: simulationId - in: path - description: Simulation's ID. - required: true - type: string - - name: simulation - in: body - description: Simulation's new properties. - required: true - schema: - properties: - simulation: - $ref: '#/definitions/Simulation' - responses: - '200': - description: Successfully updated Simulation. - schema: - $ref: '#/definitions/Simulation' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from updating Simulation. - '404': - description: Simulation not found. - delete: - tags: - - simulations - description: Delete this simulation. - parameters: - - name: simulationId - in: path - description: Simulation's ID. - required: true - type: string - responses: - '200': - description: Successfully deleted Simulation. - schema: - $ref: '#/definitions/Simulation' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from deleting Simulation. - '404': - description: Simulation not found. - '/simulations/{simulationId}/authorizations': - get: - tags: - - simulations - description: Get this Simulation's Authorizations. - parameters: - - name: simulationId - in: path - description: Simulation's ID. - required: true - type: string - responses: - '200': - description: Successfully retrieved Simulation's Authorizations. - schema: - type: array - items: - type: object - properties: - userId: - type: string - simulationId: - type: string - authorizationLevel: - type: string - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from retrieving this Simulation's Authorizations. - '404': - description: Simulation not found. - '/simulations/{simulationId}/topologies': - post: - tags: - - simulations - description: Add a Topology. - parameters: - - name: simulationId - in: path - description: Simulation'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. - '/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. - '/simulations/{simulationId}/experiments': - get: - tags: - - experiments - description: Get this Simulation's Experiments. - parameters: - - name: simulationId - in: path - description: Simulation's ID. - required: true - type: string - responses: - '200': - description: Successfully retrieved Experiments. - schema: - type: array - items: - $ref: '#/definitions/Experiment' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from retrieving Simulation's Experiments. - '404': - description: Simulation not found. - post: - tags: - - experiments - description: Add a new Experiment for this Simulation. - parameters: - - name: simulationId - in: path - description: Simulation's ID. - required: true - type: string - - name: experiment - in: body - description: Experiment to add to this Simulation. - required: true - schema: - $ref: '#/definitions/Experiment' - responses: - '200': - description: Successfully added new Experiment. - schema: - $ref: '#/definitions/Experiment' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from adding an Experiment to this Simulation. - '404': - description: 'Simulation, Topology, Scheduler or Trace not found.' - '/experiments/{experimentId}': - get: - tags: - - experiments - description: Get this Experiment. - parameters: - - name: experimentId - in: path - description: Experiment's ID. - required: true - type: string - responses: - '200': - description: Successfully retrieved Experiment. - schema: - $ref: '#/definitions/Experiment' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from retrieving Experiment. - '404': - description: Experiment not found. - put: - tags: - - experiments - description: "Update this Experiment's Topology, Trace, Scheduler, and/or name." - parameters: - - name: experimentId - in: path - description: Experiment's ID. - required: true - type: string - - name: experiment - in: body - description: Experiment's new properties. - required: true - schema: - properties: - topologyId: - type: string - traceId: - type: string - schedulerName: - type: string - name: - type: string - responses: - '200': - description: Successfully updated Experiment. - schema: - $ref: '#/definitions/Experiment' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from updating Experiment. - '404': - description: 'Experiment, Topology, Trace, or Scheduler not found.' - delete: - tags: - - experiments - description: Delete this Experiment. - parameters: - - name: experimentId - in: path - description: Experiment's ID. - required: true - type: string - responses: - '200': - description: Successfully deleted Experiment. - schema: - $ref: '#/definitions/Experiment' - '401': - description: Unauthorized. - '403': - description: Forbidden from deleting Experiment. - '404': - description: Experiment not found. - '/experiments/{experimentId}/last-simulated-tick': - get: - tags: - - simulations - description: Get this Experiment's last simulated tick. - parameters: - - name: experimentId - in: path - description: Experiment's ID. - required: true - type: string - responses: - '200': - description: Successfully retrieved Experiment's last simulated tick. - schema: - properties: - lastSimulatedTick: - type: integer - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized - '403': - description: Forbidden from getting this simulation - '404': - description: Simulation not found - '/experiments/{experimentId}/machine-states': - get: - tags: - - simulations - - states - description: Get this experiment's Machine States. - parameters: - - name: experimentId - in: path - description: Experiment's ID. - required: true - type: string - - name: tick - in: query - description: Tick to filter on. - required: false - type: integer - - name: machineId - in: query - description: Machine's ID to filter on. - required: false - type: string - - name: rackId - in: query - description: Rack's ID to filter on. - required: false - type: string - - name: roomId - in: query - description: Room's ID to filter on. - required: false - type: string - responses: - '200': - description: Successfully retrieved Machine States. - schema: - type: array - items: - $ref: '#/definitions/MachineState' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from getting Experiment's Machine States. - '404': - description: 'Experiment, Machine, Rack, Room or Tick not found.' - '/experiments/{experimentId}/rack-states': - get: - tags: - - simulations - - states - description: Get this Experiment's Rack States. - parameters: - - name: experimentId - in: path - description: Experiment's ID. - required: true - type: string - - name: tick - in: query - description: Tick to filter on. - required: false - type: integer - - name: rackId - in: query - description: Rack's ID to filter on. - required: false - type: string - - name: roomId - in: query - description: Room's ID to filter on. - required: false - type: string - responses: - '200': - description: Successfully retrieved Rack States. - schema: - type: array - items: - $ref: '#/definitions/RackState' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from getting Experiment's Rack States. - '404': - description: 'Experiment, Room, Rack or Tick not found.' - '/experiments/{experimentId}/room-states': - get: - tags: - - simulations - - states - description: Get this Experiment's Room States. - parameters: - - name: experimentId - in: path - description: Experiment's ID. - required: true - type: string - - name: tick - in: query - description: Tick to filter on. - required: false - type: integer - - name: roomId - in: query - description: Room's ID to filter on. - required: false - type: string - responses: - '200': - description: Successfully retrieved Room States. - schema: - type: array - items: - $ref: '#/definitions/RoomState' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from getting Experiment's Room States. - '404': - description: 'Experiment, Room or Tick not found.' - '/experiments/{experimentId}/task-states': - get: - tags: - - simulations - - states - description: Get this Experiment's Task States. - parameters: - - name: experimentId - in: path - description: Experiment's ID. - required: true - type: string - - name: tick - in: query - description: Tick to filter on. - required: false - type: integer - - name: taskId - in: query - description: Task's ID to filter on. - required: false - type: string - - name: machineId - in: query - description: Machine's ID to filter on. - required: false - type: string - - name: rackId - in: query - description: ID the rack whose machines' task states to get - required: false - type: string - - name: roomId - in: query - description: ID of the room whose racks' machines' states to get - required: false - type: string - responses: - '200': - description: Successfully retrieved Task States. - schema: - type: array - items: - $ref: '#/definitions/TaskState' - '400': - description: Missing or incorrectly typed parameter. - '401': - description: Unauthorized. - '403': - description: Forbidden from retrieving Experiment's Task States. - '404': - description: 'Experiment, Tick, Task, Machine, Rack or Room not found.' - /schedulers: - get: - tags: - - experiments - description: Get all available Schedulers - responses: - '200': - description: Successfully retrieved Schedulers. - schema: - type: array - items: - $ref: '#/definitions/Scheduler' - '401': - description: Unauthorized. - /traces: - get: - tags: - - experiments - 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: - - experiments - 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. - -definitions: - Experiment: - type: object - properties: - _id: - type: string - simulationId: - type: string - topologyId: - type: string - traceId: - type: string - schedulerName: - type: string - name: - type: string - MachineState: - type: object - properties: - _id: - type: string - machineId: - type: string - experimentId: - type: string - tick: - type: integer - inUseMemoryMb: - type: integer - loadFraction: - type: number - format: float - RackState: - type: object - properties: - _id: - type: string - rackId: - type: string - experimentId: - type: string - tick: - type: integer - inUseMemoryMb: - type: integer - loadFraction: - type: number - format: float - RoomState: - type: object - properties: - _id: - type: string - roomId: - type: string - experimentId: - type: string - tick: - type: integer - inUseMemoryMb: - type: integer - loadFraction: - type: number - format: float - Scheduler: - type: object - properties: - name: - type: string - Simulation: - 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 - TaskState: - type: object - properties: - _id: - type: string - taskId: - type: string - experimentId: - type: string - tick: - type: integer - flopsLeft: - type: integer - Topology: - type: object - properties: - _id: - 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 - Trace: - type: object - properties: - _id: - type: string - name: - type: string - jobs: - type: array - items: - type: object - properties: - _id: - type: string - name: - type: string - tasks: - type: array - items: - type: object - properties: - startTick: - type: integer - totalFlopCount: - type: integer - User: - type: object - properties: - _id: - type: string - googleId: - type: integer - email: - type: string - givenName: - type: string - familyName: - type: string - authorizations: - type: array - items: - type: object - properties: - simulationId: - type: string - authorizationLevel: - type: string |
