REST task configuration
Configure a task's metadata as code
Task configuration defines the core metadata of an Airplane task in a
.task.yaml
or .task.json
task definition file; this includes all information like the task name and parameters aside from the
actual code that is executed when the task is run.While tasks can be initially configured in the Airplane UI, defining tasks as code is advantageous
because it allows you to reap the benefits of version control; you can view the current state of
a task and its history, subject tasks to the same code review and deploy mechanisms as the rest of
your codebase, or roll back a task to a previous commit.
If you do edit the task through the UI, you can rerun
airplane tasks init --from YOUR_TASK_SLUG path/to/defn.task.yaml
to sync changes back to your task
definition file.The following is a complete reference of fields supported in
.task.yaml
or .task.json
task
definition file.Standard fields
The fields below apply to all task definitions, regardless of the type of task.
A unique identifier that ties this definition file to a task in Airplane. This cannot be changed (a
different slug will end up creating a new task).
Slugs must:
- Be fewer than 50 characters long
- Use only lowercase letters, numbers, and underscores
- Start with a lowercase letter
User-facing name for the task. This can be changed.
description
string
User-facing description for the task. This can be changed.
parameters
list
A list of parameters. Each parameter is a user-facing field to input data into the task.
Example:
yamlCopied1parameters:2- slug: name3name: Name4type: shorttext5description: The user's name.6default: Alfred Pennyworth7required: false8options:9- Alfred Pennyworth10- Bruce Wayne11regex: "^[a-zA-Z ]+$"
Unique identifier for the parameter. This is the identifier you'll use to interpolate
parameters into arguments, pass them when calling from the CLI, etc.
User-facing name for the parameter.
Possible Values |
shorttextYour commonly used string input |
longtextA string, but with a larger input box for users |
sqlSimilar to Long Text inputs but offer SQL syntax highlighting |
booleanPresented as on/off toggles |
uploadAllows users to upload a file |
Show more |
The type of the parameter. See Parameter types for more information.
parameters.description
string
User-facing description of the parameter.
Whether the parameter is required.
parameters.default
string/number/boolean
The default value of the parameter. The type depends on the type of the parameter.
parameters.options
list of string/number/boolean/object
Constrains the value of parameter to a list of options.
The type depends on the type of the parameter.
You can optionally add a label to each option. Labels are shown to the user instead of the value.
To add a label, the option should be an object with fields
label
and value
.Example:
yamlCopied1options:2- Alfred Pennyworth3- Bruce Wayne4- label: BW5value: Bruce Wayne
For more information, see Select options.
parameters.regex
string
Allows you to more dynamically control what values are permitted.
For more information, see Regular expressions.
If true, a task must be requested before it can start executing. This disables direct execution,
including schedules.
Requiring requests will disable schedules. Any existing schedules will be paused on the next
attempted execution.
If true, a request can be approved by the requestor.
The restrict callers execute rule disables direct execution of a task in the web UI and hides the
task in the library. This rule can be configured to allow the task to be called from other
tasks/runbooks and views.
Limits how long a task can run before it is automatically cancelled.
Maximum of
43200
(12 hours)For more information, see timeouts.
constraints
object
Restricts this task to run only on agents with matching labels.
Example:
yamlCopied1constraints:2aws-region: us-west-2
For more information, see Run constraints.
schedules
object
Mapping of unique identifiers to schedules that should be deployed with the task.
For more information, see Schedules.
Example:
yamlCopied1schedules:2my_first_schedule:3cron: 0 0 * * *4name: My First Schedule5description: This is my first daily midnight UTC schedule!6paramValues:7my_first_param: my_first_param_value
The unique identifier is used to add, update and remove schedules as changes
are made to the task definition file. Adding a new entry will create a new schedule,
modifying an entry will update the schedule and removing an entry will pause the
schedule.
The unique identifier must adhere to the slug format.
Cron string of the schedule. To see acceptable formats, see
Cron syntax.
schedules.name
string
Name of the schedule.
schedules.description
string
Description of the schedule.
schedules.paramValues
object
Map of param slugs and values to pass to the task on each run.
resources
object
Mapping of resource aliases to resource slugs. Slugs for your resource can be found in the
resource settings.
For more information on resource attachments, see resource attachments.
Example:
yamlCopied1resources:2db: prod_postgres_db
If you would like to use the resource slug as the alias for all resources passed into this task, you can also use a list shorthand:
yamlCopied1resources:2- prod_postgres_db3- prod_rest_api
Possible Values |
task-viewersAnyone who can view the task can also view the run. |
task-participantsCan only be viewed by those who execute, request, or approve the run. |
Manage who can view new runs of this task.
REST
rest
object
Marks the task as a REST task.
Examples:
POST
yamlCopied1rest:2resource: internal_api3method: POST4path: "/users/{{params.user_id}}/update"5bodyType: json6body:7name: "{{params.user_name}}"
GET
yamlCopied1rest:2resource: internal_api3method: GET4path: "/users/{{params.user_id}}"5urlParams:6page: 3
The slug of a REST API resource. If you don't have an existing resource, visit
the Resources settings page
to add a new resource.
The path to request. Your REST resource may specify a path prefix as part
of its base URL, in which case this path is joined to it. Airplane
recommends that this start with a leading slash.
rest.urlParams
object
A key value map from param name to value.
Example:
yamlCopied1page: 32name: "{{params.user_name}}"
rest.headers
object
A key value map from header name to value.
Example:
yamlCopied1My-Custom-Header: "{{params.header_value}}"
rest.bodyType
enum
Possible Values |
json |
raw |
form-data |
x-www-form-urlencoded |
The type of body that this request should send.
rest.body
object
The body of the request for a request of method
POST
, PUT
or PATCH
.
This field is required when bodytype
is json
or raw
.Example:
yamlCopied1bodyType: json2body:3name: John4email: "{{params.user_email}}"
rest.formData
object
The form data of the request for a request of method
POST
, PUT
or PATCH
.
This field is required when bodytype
is form-data
or x-www-form-urlencoded
.Example:
yamlCopied1bodyType: form-data2formData:3name: John4email: "{{params.user_email}}"
rest.retryFailures
boolean/string
If true, the request will be retried if the server returns a 500, 502, 503, or 504 error code. Requests will always be retried on 408 and 429 error codes. This field supports JS templates.
rest.configs
object
The configs attached to this task. See Config variables for more details on how to use config variables in your task.
Example:
yamlCopied1configs:2- API_KEY