Starting Actions from the API
There are several variants of this API call available which might be easier for scripts (or humans) to work with!
Function | HTTP Method | Request Type (How to select an action) | Response Type |
---|---|---|---|
|
POST |
||
|
GET |
||
|
POST |
||
|
GET |
Request type: Action ID in the URL
Used by:
-
StartActionByGet
-
StartActionByGetAndWait
If you are trying to integrate OliveTin with your own scripts or processes, it’s probably easiest to start actions by using an ID directly in the URL, see the example.
Request type: OliveTin request object
Used by:
-
StartAction
-
StartActionAndWait
{
"actionId": "string",
"arguments": [
{
"name": "string",
"value": "string"
}
],
"uniqueTrackingId": "string"
}
To find your Action ID, and understand how Action IDs work, see the Action ID documentation
If you need more control over the execution, then the only other option is to submit a OliveTin reqjest object
, which is just a very simple JSON structure like this;
{
"actionId": "Generate cryptocurrency",
"arguments": [],
"uniqueTrackingId": "my-tracking-id",
}
More detailed examples can be seen below.
Response type: Execution Tracking ID
Used by:
-
StartAction
-
StartActionByGet
{"executionTrackingId":"5bb4860c-bbd0-4bc9-a7d6-42240551500c"}
Response type: LogEntry
Used by:
-
StartActionAndWait
-
StartActionByGetAndWait
{
"logEntry": {
"datetimeStarted": "2024-02-27 14:14:49",
"actionTitle": "Restart httpd on server1",
"stdout": "",
"stderr": "",
"timedOut": true,
"exitCode": -1,
"user": "",
"userClass": "",
"actionIcon": "🔄",
"tags": [
],
"executionTrackingId": "b04b1e90-d457-4158-b7dc-da9e81f21568",
"datetimeFinished": "2024-02-27 14:14:52",
"actionId": "restart_httpd",
"executionStarted": true,
"executionFinished": true,
"blocked": false
}
}
Example API call; Start an action by ID in the URL
user@host: curl http://olivetin.example.com/api/StartActionByGet/pingGithub
The corresponding config.yaml would look like this;
actions:
- title: Ping GitHub.com
id: pingGithub
shell: ping github.com -c 1
IDs are used by these API calls, as you probably want the interface to display a human-readable title, whereas the API call doesn’t want to have spaces or punctuation.
Example API call: Start an action using StartAction
user@host: curl -X POST "http://olivetin.webapps.teratan.lan/api/StartAction" -d '{"actionId": "nuclear_reactor_shutdown"}'
PS C:\Users\xcons> $json = '{"actionId": "deploy_attack_gnomes"}'
PS C:\Users\xcons> Invoke-RestMethod -Method "Post" -Uri "http://olivetinServer:1337/api/StartAction" -Body $json
Example API call: Start an action using StartAction
with arguments
user:host: curl -X POST 'http://olivetin.example.com/api/StartAction' -d '{"actionId": "Ping_host", "arguments": [{"name": "host", "value": "example.com"},{"name": "count", "value": "1"}]}'