synchronik/agent-api-description.yml

100 lines
2.4 KiB
YAML

---
openapi: "3.0.0"
info:
description: |
Janky Agent API defintion
version: "1.0.0"
title: Janky APIs
contact:
email: "rtyler+janky@brokenco.de"
license:
name: "AGPL v3.0"
url: "https://www.gnu.org/licenses/agpl-3.0.en.html"
servers:
- url: 'http://localhost:9000/api/v1'
description: Local dev agent (APIv1)
paths:
/capabilities:
get:
summary: "Retrieve a list of capabilities of this agent"
description:
responses:
200:
description: Getting capabilities
content:
application/json:
schema:
$ref: '#/components/schemas/CapsResponse'
/execute:
put:
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:
200:
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