R. Tyler Croy
19126ed88b
This allows for fetching the Jankyfile directly via REST API so the server doesn't have to do any Git work just yet
100 lines
2.4 KiB
YAML
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:
|
|
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
|