132 lines
3.1 KiB
YAML
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
|