Reference
DSL reference
Every key of a Kaabist program, generated from the program JSON Schema.
A program is a JSON document validated by the program JSON Schema; every page here is generated from that schema, so a key exists in the reference exactly when it exists in the language. Programs and versions explains how a program runs.
#Document keys
| Key | Type | Description |
|---|---|---|
kaab | "1" | The DSL major version the document is written in. Required, and currently always "1". |
name | string | The program's name, unique within your organisation: lowercase letters, digits and -, matching ^[a-z0-9][a-z0-9-]{1,62}$. Required for stored programs and optional for an inline job. |
description | string | A free-text description of what the program does, up to 1,000 characters. |
inputs | map of "string" | "number" | "boolean" | "secret" | "enum" or object | The values a job supplies when it runs the program, as a map from input name to an input definition or a bare type string such as "string". Names match ^[a-zA-Z_][a-zA-Z0-9_]{0,63}$ (lint E008) and are read in templates as {{inputs.<name>}}. |
options | object | How the program runs: tier, region, proxy, session, browser settings and budgets. Options a job sends override these key by key. |
landmarks | map of condition | Named conditions that identify pages, referenced elsewhere with { "landmark": "<name>" }. The names login_page and logged_in are reserved: diagnose and session probes use them to recognise a sign-in page and a signed-in page. |
steps | steps | The ordered list of steps the program runs, at least 1 and at most 200 counting nested steps, with control blocks nested at most 3 deep (lint E012). Each step carries exactly one action or control key. |
extract | extract | A top-level extract schema. When no top-level extract step writes data, it is appended as the final step. |
policies | object | Job-wide policies: strict validation, raw values in the result, and what to do about expired sessions, captchas and screenshots. |
#Parts
| Part | What it covers |
|---|---|
| Inputs | What a program takes when a job starts |
| Options | Region, tier, proxy, session, budgets, canary |
| Policies | What happens on validation failures, captchas, expired sessions |
| Steps | The 26 actions and the keys every step takes |
| Conditions | Landmarks, expect, if, when, wait_for |
| Targets | How an element is located |
| Fields | Extract field options: locators, types, validation |
| Assertions | $asserts across extracted fields |
| Transforms | Text transforms applied before parsing |
| Lint codes | What POST /programs/lint reports |