--- openapi: "3.0.0" info: description: | Synchronik API v1 defintion version: "1.0.0" title: Synchronik APIs contact: email: "rtyler+synchronik@brokenco.de" license: name: "AGPL v3.0" url: "https://www.gnu.org/licenses/agpl-3.0.en.html" servers: - url: 'http://localhost:8000' description: Local dev server - url: 'http://localhost:9000' description: Local dev agent tags: - name: 'agent' description: 'Agent APIs' - name: 'server' description: 'Server APIs' paths: '/api/v1/projects/{name}': post: tags: - 'server' summary: 'Trigger execution for this project' description: parameters: - in: path name: name required: true example: 'synchronik' schema: type: string responses: 404: summary: 'No project configured by that name' 200: summary: 'Execution has been triggered' '/api/v1/capabilities': get: tags: - 'agent' summary: "Retrieve a list of capabilities of this agent" description: responses: 200: description: Getting capabilities content: application/json: schema: $ref: '#/components/schemas/CapsResponse' '/api/v1/execute': put: tags: - 'agent' summary: "Execute a series of commands on this agent" description: requestBody: content: application/json: schema: $ref: '#/components/schemas/CommandRequest' example: commands: - script: 'echo "Hi"' responses: 201: description: 'Successfully accepted the commands for execution' content: application/json: schema: $ref: '#/components/schemas/CommandResponse' 409: description: 'Returned when the agent is busy with another series of commands' components: schemas: CapsResponse: type: object properties: caps: type: array items: $ref: '#/components/schemas/Capability' Capability: type: object properties: name: type: string path: type: string data: type: object Command: type: object properties: script: type: string description: "A script that can be exec()'d on the agent" CommandRequest: type: object properties: commands: type: array items: $ref: '#/components/schemas/Command' CommandResponse: type: object properties: uuid: type: string format: uuid stream: description: 'URL to streaming WebSockets logs' type: string format: url task: description: 'URL to the task metadata' type: string format: url log: description: 'URL to the raw log of the task run' type: string format: url