300 lines
7.8 KiB
YAML
300 lines
7.8 KiB
YAML
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
|