Define the /execute API in the agent spec

This commit is contained in:
R Tyler Croy 2023-01-28 16:47:53 -08:00
parent ed96899c6c
commit cc8cc30b17
No known key found for this signature in database
GPG Key ID: E5C92681BEF6CEA2
2 changed files with 51 additions and 3 deletions

View File

@ -26,14 +26,37 @@ paths:
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: array
type: object
properties:
caps:
$ref: '#/components/schemas/Capability'
type: array
items:
$ref: '#/components/schemas/Capability'
Capability:
type: object
properties:
@ -43,3 +66,28 @@ components:
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
task:
description: 'URL to the task metadata'
type: string

View File

@ -1 +1 @@
{"openapi":"3.0.0","info":{"description":"Janky Agent API defintion\n","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":null,"responses":{"200":{"description":"Getting capabilities","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapsResponse"}}}}}}}},"components":{"schemas":{"CapsResponse":{"type":"array","properties":{"caps":{"$ref":"#/components/schemas/Capability"}}},"Capability":{"type":"object","properties":{"name":{"type":"string"},"path":{"type":"string"},"data":{"type":"object"}}}}}}
{"openapi":"3.0.0","info":{"description":"Janky Agent API defintion\n","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":null,"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":null,"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"},"task":{"description":"URL to the task metadata","type":"string"}}}}}}