synchronik/api-description.yml

132 lines
3.1 KiB
YAML

---
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