addedOutput schema / $defs / Assert
Added value: +{
+ "additionalProperties": false,
+ "description": "One check on a response. Give `from` and at least one operator; every operator given must hold.",
+ "properties": {
+ "contains": {
+ "description": "A text value must contain this text; an array must have this item."
+ },
+ "equals": {
+ "description": "The value must equal this (numbers compare as numbers, so 5 equals 5.0)."
+ },
+ "exists": {
+ "description": "`true`: the value must exist (a null counts as existing); `false`: it must be absent.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "from": {
+ "description": "What to check: `json:$.data.id` (or just `$.data.id`), `header:Name`, `status`, `time` (milliseconds\nthe response took) or `body` (the whole body as text).",
+ "type": "string"
+ },
+ "gt": {
+ "description": "The value must be a number greater than this.",
+ "format": "double",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "gte": {
+ "description": "...at least this.",
+ "format": "double",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "length": {
+ "description": "The number of characters (text), items (array) or members (object) must be this.",
+ "format": "uint",
+ "minimum": 0,
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "lt": {
+ "description": "...less than this.",
+ "format": "double",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "lte": {
+ "description": "...at most this.",
+ "format": "double",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "name": {
+ "description": "A label for the report. Without it the check is described from its parts.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "not_equals": {
+ "description": "The value must differ from this."
+ },
+ "type": {
+ "description": "The JSON type: `string`, `number`, `boolean`, `array`, `object` or `null`.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "from"
+ ],
+ "type": "object"
+}
addedOutput schema / $defs / Paginate
Added value: +{
+ "additionalProperties": false,
+ "description": "Send the step's request again for the next page, until there are no more. Each page must return the\nexpected status. The items of every page are gathered into one list (see `collect`); `asserts` and\n`extract` see the last page.\n\nWhat the request can use: `{{page.number}}` (1, 2, ...), `{{page.offset}}` (items fetched so far) and\n`{{page.cursor}}` (the cursor from the page before; write `{{page.cursor?}}` so the first page leaves it out).",
+ "properties": {
+ "items": {
+ "description": "Where the list is in each response: `json:$.issues`. Without it the whole body must be an array.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "max_pages": {
+ "description": "Stop after this many pages (default 20, at most 500). The step says so when it stopped here with more to fetch.",
+ "format": "uint",
+ "minimum": 0,
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "next": {
+ "description": "For `cursor`: where the next cursor is (`json:$.next_cursor`). A missing, null or empty value ends the paging.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "page_size": {
+ "description": "The page size the request asks for. A page with fewer items than this is the last one.",
+ "format": "uint",
+ "minimum": 0,
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "style": {
+ "description": "How the API pages: `offset` (default: `startAt=0`, `startAt=100`, ...), `page` (`page=1`, `page=2`, ...),\n`cursor` (each response says where the next page starts; needs `next`) or `link` (each response has a\n`Link: <url>; rel=\"next\"` header, as GitHub does).",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "total": {
+ "description": "For `offset`: where the total count is (`json:$.total`), so paging stops exactly at the end.",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+}
addedOutput schema / $defs / Poll
Added value: +{
+ "additionalProperties": false,
+ "description": "Send the step's request again and again until a condition holds, for something that finishes later (an\nexport, a deployment, an async job). Use `extract` with `\"scope\": \"run\"` to read the status from each response,\nthen name it in `until`. The step fails if the condition never holds.",
+ "properties": {
+ "every_ms": {
+ "description": "Wait this long between requests (default 1000, at most 60000).",
+ "format": "uint64",
+ "minimum": 0,
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "max_attempts": {
+ "description": "Give up after this many requests (default 30, at most 1000).",
+ "format": "uint",
+ "minimum": 0,
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "until": {
+ "description": "A condition on the values extracted so far, like `skip_if`: `{{state}} == DONE`.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "until"
+ ],
+ "type": "object"
+}
addedOutput schema / $defs / Retry
Added value: +{
+ "additionalProperties": false,
+ "description": "Send the request again when it fails for a reason that passes: a rate limit, a busy server, a dropped\nconnection. It waits the `Retry-After` the server asks for, or `backoff_ms` doubled each time.",
+ "properties": {
+ "attempts": {
+ "description": "How many requests in all, the first included (default 3, at most 10).",
+ "format": "uint",
+ "minimum": 0,
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "backoff_ms": {
+ "description": "The first wait in milliseconds, doubled for each try (default 500, at most 60000).",
+ "format": "uint64",
+ "minimum": 0,
+ "type": [
+ "integer",
+ "null"
+ ]
+ },
+ "on_status": {
+ "description": "The statuses to try again on (default 429, 500, 502, 503, 504). A connection that failed is always tried again.",
+ "items": {
+ "format": "uint16",
+ "maximum": 65535,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "type": [
+ "array",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+}
addedOutput schema / $defs / Step / properties / as
Added value: +{
+ "description": "The name of the element in a `for_each` (default `item`).",
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / $defs / Step / properties / asserts
Added value: +{
+ "description": "Checks on the response (`{\"from\": \"json:$.id\", \"equals\": 7}`, `{\"from\": \"time\", \"lt\": 500}`). Every one is\nrun and reported; the step fails if any does. They run after the status check and before `extract`.",
+ "items": {
+ "$ref": "#/$defs/Assert"
+ },
+ "type": "array"
+}
addedOutput schema / $defs / Step / properties / collect
Added value: +{
+ "description": "Keep what the step fetched as the run's value `{{name}}` for the later steps (and for `return`): the items\nof every page for a `paginate`, the response body otherwise; with `for_each`, a list with one entry per\nelement. It lives for this run only and is never stored. Known secrets in it are masked.",
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / $defs / Step / properties / continue_on_error
Added value: +{
+ "description": "With `for_each`: an element that fails is recorded (as null in the collected list) and the step goes on,\ninstead of ending the run. The step fails only if every element fails.",
+ "type": "boolean"
+}
addedOutput schema / $defs / Step / properties / delay_ms
Added value: +{
+ "description": "Wait this long between the requests of one step (pages, elements), to stay under a rate limit.",
+ "format": "uint64",
+ "minimum": 0,
+ "type": [
+ "integer",
+ "null"
+ ]
+}
addedOutput schema / $defs / Step / properties / for_each
Added value: +{
+ "description": "Send this step once for every element of a list: the name of a variable that holds a JSON array (one a\n`collect` filled), or an array written out. The element is `{{item}}` (or the name in `as`), and for an\nobject its fields are `{{item.key}}`, `{{item.fields.name}}`. `{{loop.index}}` counts from 0.",
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / $defs / Step / properties / paginate
Added value: +{
+ "anyOf": [
+ {
+ "$ref": "#/$defs/Paginate"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Page through a list: send the request again for the next page and gather the items. See `Paginate`."
+}
addedOutput schema / $defs / Step / properties / poll
Added value: +{
+ "anyOf": [
+ {
+ "$ref": "#/$defs/Poll"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Send the request again until a condition holds, for a job that finishes later. See `Poll`."
+}
addedOutput schema / $defs / Step / properties / retry
Added value: +{
+ "anyOf": [
+ {
+ "$ref": "#/$defs/Retry"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Try again after a 429, a 5xx or a dropped connection. See `Retry`."
+}
addedOutput schema / $defs / Step / properties / return
Added value: +{
+ "description": "A jq program that turns the run's values into the answer the run returns, e.g.\n`{count: (.issues|length), points: ([.issues[].fields.points]|add)}`. The input is an object of the run's\nvalues (`collect`ed lists, `scope: run` extracts, the variables passed in), without secrets. A step may have\nonly this and no request. The last `return` of the run is its `output`. jq here has no file, network or\nenvironment access.",
+ "type": [
+ "string",
+ "null"
+ ]
+}