openapi: 3.0.0 info: title: Orchard description: Orchard orchestration API version: 0.1.0 paths: /service-accounts: post: summary: "Create a Service Account" tags: - service-accounts responses: '200': description: Service Account resource was successfully created content: application/json: schema: $ref: '#components/schemas/ServiceAccount' '409': description: Service Account resource with with the same name already exists get: summary: "List Service Accounts" tags: - service-accounts responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#components/schemas/ServiceAccount' /service-accounts/{name}: get: summary: "Retrieve a Service Account" tags: - service-accounts responses: '200': description: OK content: application/json: schema: $ref: '#components/schemas/ServiceAccount' '404': description: Service Account resource with the given name doesn't exist put: summary: "Update a Service Account" tags: - service-accounts responses: '200': description: Service Account object was successfully updated content: application/json: schema: $ref: '#components/schemas/ServiceAccount' '404': description: Service Account resource with the given name doesn't exist delete: summary: "Delete a Service Account" tags: - service-accounts responses: '200': description: Service Account resource was successfully deleted '404': description: Service Account resource with the given name doesn't exist /workers: post: summary: "Create a Worker" tags: - workers responses: '200': description: Worker resource was successfully created content: application/json: schema: $ref: '#components/schemas/Worker' '409': description: Worker resource with with the same name already exists get: summary: "List Workers" tags: - workers responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#components/schemas/Worker' /workers/{name}: get: summary: "Retrieve a Worker" tags: - workers responses: '200': description: OK content: application/json: schema: $ref: '#components/schemas/Worker' '404': description: Worker resource with the given name doesn't exist put: summary: "Update a Worker" tags: - workers responses: '200': description: Worker object was successfully updated content: application/json: schema: $ref: '#components/schemas/Worker' '404': description: Worker resource with the given name doesn't exist delete: summary: "Delete a Worker" tags: - workers responses: '200': description: Worker resource was successfully deleted '404': description: Worker resource with the given name doesn't exist /vms: post: summary: "Create a VM" tags: - vms responses: '200': description: VM resource was successfully created content: application/json: schema: $ref: '#components/schemas/VM' '409': description: VM resource with with the same name already exists get: summary: "List VMs" tags: - vms responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#components/schemas/VM' /vms/{name}: get: summary: "Retrieve a VM" tags: - vms responses: '200': description: OK content: application/json: schema: $ref: '#components/schemas/VM' '404': description: VM resource with the given name doesn't exist put: summary: "Update a VM" tags: - vms responses: '200': description: VM object was successfully updated content: application/json: schema: $ref: '#components/schemas/VM' '404': description: VM resource with the given name doesn't exist delete: summary: "Delete a VM" tags: - vms responses: '200': description: VM resource was successfully deleted '404': description: VM resource with the given name doesn't exist /vms/{name}/events: get: summary: "Retrieve events for a given VM" tags: - vms responses: '200': description: OK content: application/json: schema: $ref: '#components/schemas/Events' '404': description: VM resource with the given name doesn't exist post: summary: "Add new events to a VM" tags: - vms responses: '200': description: Events were successfully added content: application/json: schema: $ref: '#components/schemas/Events' '404': description: VM resource with the given name doesn't exist /vms/{name}/port-forward: get: summary: "Port-forward to a VM using WebSocket protocol" tags: - vms parameters: - in: query name: port description: VM's TCP port number to connect to schema: type: integer minimum: 1 maximum: 65535 required: true - in: header name: Connection description: WebSocket protocol required header required: true - in: header name: Upgrade description: WebSocket protocol required header required: true responses: '400': description: Invalid port specified '404': description: VM resource with the given name doesn't exist '503': description: Failed to establish connection with the worker responsible for the specified VM components: schemas: Worker: title: Worker node type: object properties: name: type: string description: Node name VM: title: Virtual Machine type: object properties: name: type: string description: VM name Events: title: Events type: object items: $ref: '#components/schemas/Event' Event: title: Generic Resource Event type: object properties: kind: type: string description: Kind of the event payload: type: string description: Payload of the event timestamp: type: integer description: Unix timestamp of the event ServiceAccount: title: Service Account type: object properties: name: type: string description: Name token: type: string description: Secret token used to access the API roles: type: array items: type: string