The main way to communicate with Steep (i.e. to submit workflows, to monitor
progress, fetch metadata, etc.) is through its HTTP interface. By default, Steep listens to
incoming connections on port 8080.
GET information
Get information about Steep. This includes:
Steep’s version number
A build ID
A SHA of the Git commit for which the build was created
A timestamp of the moment when the build was created
Resource URL
Parameters
None
Status codes
200
The operation was successful
Example request
Example response
GET health
An endpoint that can be used by external applications at regular intervals to
monitor Steep’s health, i.e. to check if it works correctly and if the
underlying database as well as all remote agents are reachable.
The response is a JSON object, which will always contain the attribute health.
This attribute can be either true if Steep works correctly or false if
some error has occurred. Apart from that, the response may contain additional
information about data stored in the database (such as the number of submissions)
as well as information about remote agents. However, these attributes are not
defined and may change in future versions.
Resource URL
Parameters
None
Status codes
200
The operation was successful
503
Service unavailable. Steep may not work as expected.
Example request
Example response
GET submissions
Get information about all submissions in the database. The response is a JSON
array consisting of submission objects
without the properties workflow, results, and errorMessage. In order to
get the complete details of a submission, use
the GET submission by ID endpoint.
The submissions are returned in the order in which they were added to the
database with the newest ones at the top.
Resource URL
Parameters
size (optional)
The maximum number of submissions to return. The default value is 10.
offset (optional)
The offset of the first submission to return. The default value is 0.
status (optional)
If this parameter is defined, Steep will only return submissions with the given status. Otherwise, it will return all submissions from the database. See the list of submission statuses for valid values.
Response headers
x-page-size
The size of the current page (i.e. the maximum number of submission objects returned). See size request parameter.
x-page-offset
The offset of the first submission returned. See offset request parameter
x-page-total
The total number of submissions in the database matching the given request parameters.
Status codes
200
The operation was successful
400
One of the parameters was invalid. See response body for error message.
Example request
Example response
GET submission by ID
Get details about a single submission
from the database.
Resource URL
Parameters
id
The ID of the submission to return
Status codes
200
The operation was successful
404
The submssion was not found
Example request
Example response
PUT submission
Update a submission. The request
body is a JSON object with the submission properties
to update. At the moment, only the status and priority properties can be updated.
If the operation was successful, the response body contains
the updated submission without the properties workflow, results, and
errorMessage.
Notes:
You can use this endpoint to cancel the execution of a submission (see
example below).
If you update a submission’s priority, the priorities of all process chains
that belong to this submission and have a status
of either REGISTERED, RUNNING, or PAUSED will be updated too. Also, all process
chains generated from this submission in the future will receive the updated
priority. Finished process chains will not be modified.
Resource URL
Parameters
id
The ID of the submission to update
Status codes
200
The operation was successful
400
The request body was invalid
404
The submission was not found
Example request
Example response
POST workflow
Create a new submission. The
request body contains the workflow
to execute.
If the operation was successful, the response body contains submission.
Resource URL
Status codes
202
The workflow has been accepted (i.e. stored in the database) and is scheduled for execution.
400
The posted workflow was invalid. See response body for more information.
Example request
Example response
GET process chains
Get information about all process chains in the database. The response is a JSON
array consisting of process chain objects
without the properties executables, results, totalRuns, runNumber, and
autoResumeAfter. In order to get the complete details of a process chain, use
the GET process chain by ID endpoint.
The process chains are returned in the order in which they were added to the
database with the newest ones at the top.
Some properties such as startTime, status, or endTime depend on a specific
process chain run (see the section on process chains
for more information about runs). This endpoint always displays the latest run
(if available). You can get more information through
the endpoints /processchains/:id/runs
and /processchains/:id/runs/:runNumber.
Resource URL
Parameters
size (optional)
The maximum number of process chains to return. The default value is 10.
offset (optional)
The offset of the first process chain to return. The default value is 0.
submissionId (optional)
If this parameter is defined, Steep will only return process chains from the submission with the given ID. Otherwise, it will return process chains from all submissions. If there is no submission with the given ID, the result will be an empty array.
status (optional)
If this parameter is defined, Steep will only return process chains with the given status. Otherwise, it will return all process chains from the database. See the list of process chain statuses for valid values.
Response headers
x-page-size
The size of the current page (i.e. the maximum number of process chain objects returned). See size request parameter.
x-page-offset
The offset of the first process chain returned. See offset request parameter
x-page-total
The total number of process chains in the database matching the given request parameters.
Status codes
200
The operation was successful
400
One of the parameters was invalid. See response body for error message.
Example request
Example response
GET process chain by ID
Get details about a single process chain
from the database.
Some properties such as startTime, status, or endTime depend on a specific
process chain run (see the section on process chains
for more information about runs). This endpoint always displays the latest run
(if available). You can get more information through
the endpoints /processchains/:id/runs
and /processchains/:id/runs/:runNumber.
This endpoint will only return something if process chain logging is enabled in
the log configuration.
Otherwise, the endpoint will always return HTTP status code 404.
Also note that process chain logs are stored on the machine where the Steep
agent that has executed the process chain is running. The log files will only
be available as long as the machine exists and the agent is still available. If
you want to persist log files, define a location on a shared file system in
the log configuration.
This endpoint supports HTTP range requests,
which allows you to only fetch a portion of a process chain’s log file.
Resource URL
Parameters
id
The ID of the process chain whose log file to return
forceDownload (optional)
true if the Content-Disposition header should be set in the response. This is useful if you link to a log file from a web page and want the browser to download the file instead of displaying its contents. The default value is false.
runNumber (optional)
Specifies the actual run of the process chain whose log file to return (see the section on process chains for details on runs). If no run number is given, the endpoint will return the log file of the latest run. Note that a process chain that currently has the statusPAUSED or REGISTERED, does not have a latest run. In this case, the endpoint will return HTTP status code 404.
Request headers
Range (optional)
The part of the log file that should be returned (see HTTP Range header)
Partial content will be delivered in response to a range request
400
The given run number is invalid (either not a number or less than 1)
404
a) Process chain log file could not be found. Possible reasons: (1) the process chain has not produced any output (yet), (2) the agent that has executed the process chain is not available anymore, (3) process chain logging is disabled in Steep’s configuration, (4) the process chain has the status PAUSED or REGISTERED, (5) the given run number was out of range
A run is represented by an object containing a subset of the properties of a
process chain, namely agentId, startTime, endTime, status, errorMessage, and
autoResumeAfter. See the section on process chains
for more information about runs and these properties.
Runs are ordered by their run number from 1 to n where n is the total
number of runs (see process chain property totalRuns).
Resource URL
Parameters
id
The ID of the process chain whose runs should be returned
The path parameter runNumber specifies the number of the run to return. Run
numbers start at 1 in continuously increasing order. The process chain property
totalRuns specifies how many runs the process chain has.
This endpoint renders a view of a process chain for the run with the given
runNumber. It renders objects similar to the ones returned by the /processchains/:id endpoint.
If runNumber equals totalRuns, both endpoints return the exact same object
(because /processchains/:id
always renders the latest run).
Resource URL
Parameters
id
The ID of the process chain whose runs should be returned
runNumber
The number of the run to render
Status codes
200
The operation was successful
400
The run number was invalid (i.e. not a number)
404
Either the process chain or the run were not found
This endpoint can be used to check if a process chain log file exists and how
large it is. For more information, please refer to the GET process chain logs
endpoint.
Resource URL
Parameters
id
The ID of the process chain whose log file to check
Process chain log file could not be found. Possible reasons: (1) the process chain has not produced any output (yet), (2) the agent that has executed the process chain is not available anymore, (3) process chain logging is disabled in Steep’s configuration
Example request
Example response
PUT process chain
Update a process chain. The request
body is a JSON object with the process chain properties to update. At the
moment, only the status and priority properties can be updated.
If the operation was successful, the response body contains
the updated process chain without the properties executables and results.
Notes:
You can use this endpoint to cancel the execution of a process chain (see
example below).
The priority can only be modified if the process chain status
is REGISTERED, RUNNING, or PAUSED. Otherwise, the operation will result in HTTP error 422.
Resource URL
Parameters
id
The ID of the process chain to update
Status codes
200
The operation was successful
400
The request body was invalid
404
The process chain was not found
422
The process chain’s priority could not be modified because the process chain is already finished, i.e. the process chain status is not REGISTERED, RUNNING, or PAUSED
Example request
Example response
GET agents
Get information about all agents
currently connected to the cluster. In order to get details about a single agent,
use the GET agent by ID endpoint.
This endpoint can be used to check if an agent with a given ID exists.
Resource URL
Parameters
id
The ID of the agent to check
Status codes
200
The operation was successful. The agent exists.
404
The agent was not found
Example request
Example response
GET VMs
Get information about all VMs in the database.
To get details about a single VM, use
the GET VM by ID endpoint.
The VMs are returned in the order in which they were added to the
database with the newest ones at the top.
Resource URL
Parameters
size (optional)
The maximum number of VMs to return. The default value is 10.
offset (optional)
The offset of the first VM to return. The default value is 0.
status (optional)
If this parameter is defined, Steep will only return VMs with the given status. Otherwise, it will return all VMs from the database. See the list of VM statuses for valid values.
Response headers
x-page-size
The size of the current page (i.e. the maximum number of VM objects returned). See size request parameter.
x-page-offset
The offset of the first VM returned. See offset request parameter
x-page-total
The total number of VMs in the database matching the given request parameters.
Status codes
200
The operation was successful
400
One of the parameters was invalid. See response body for error message.
The response is a JSON object with the attributes counts and results:
counts is an object containing the total number of matches in the database for each possible object type (workflow and processChain) as well as a total sum (total). The numbers may either be exact or estimated depending on the count parameter given in the request. The object might also be left off if count equals none.
The maximum number of search results to return. The default value is 10.
offset (optional)
The offset of the first search result to return. The default value is 0.
count (optional)
Specifies how Steep should count the total number of search results and if they should be included in the response. Possible values are: exact to include an exact count in the response (may take a long time depending on how many objects match), estimate to include a rough estimate (very fast but might be incorrect), and none if the total number of results should not be counted at all. The default value is estimate.
timeZone (optional)
An ID of the time zone in which dates and times in the query are specified (typically the time zone of the client or web browser). Valid values are taken from the IANA Time Zone database (e.g. Europe/Berlin). Defaults to the server’s time zone.
Status codes
200
The operation was successful
400
One of the parameters was invalid. See response body for error message.
Example request
Example response
GET Prometheus metrics
Steep can provide metrics to Prometheus. Besides
statistics about the Java Virtual Machine that Steep is running in, the
following metrics are included:
Metric
Description
steep_remote_agents
The number of registered remote agents
steep_controller_process_chains
The number of generated process chains the controller is currently waiting for grouped by submissionId
steep_scheduler_process_chains
The number of process chains with a given status (indicated by the label status)
steep_local_agent_retries
The total number of times an executable with a given service ID (indicated by the label serviceId) had to be retried
steep_eventbus_compressedjson_messages
Total number of compressed JSON messages sent/received over the event bus (label operation is either sent or recv)
steep_eventbus_compressedjson_bytes
Total number of compressed JSON bytes. Label operation is either sent or recv, and label stage is either compressed or uncompressed. Uncompressed bytes will be compressed before they are sent over the event bus, and received compressed bytes will be uncompressed.
steep_eventbus_compressedjson_time
Total number of milliseconds spent compressing or decompressing JSON (label operation is either sent or recv and specifies if sent bytes have been compressed or received bytes have been uncompressed)