Docs
API 1.39
Status
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

KeyTypeDescription
kaab"1"The DSL major version the document is written in. Required, and currently always "1".
namestringThe 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.
descriptionstringA free-text description of what the program does, up to 1,000 characters.
inputsmap of "string" | "number" | "boolean" | "secret" | "enum" or objectThe 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>}}.
optionsobjectHow the program runs: tier, region, proxy, session, browser settings and budgets. Options a job sends override these key by key.
landmarksmap of conditionNamed 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.
stepsstepsThe 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.
extractextractA top-level extract schema. When no top-level extract step writes data, it is appended as the final step.
policiesobjectJob-wide policies: strict validation, raw values in the result, and what to do about expired sessions, captchas and screenshots.

#Parts

PartWhat it covers
InputsWhat a program takes when a job starts
OptionsRegion, tier, proxy, session, budgets, canary
PoliciesWhat happens on validation failures, captchas, expired sessions
StepsThe 26 actions and the keys every step takes
ConditionsLandmarks, expect, if, when, wait_for
TargetsHow an element is located
FieldsExtract field options: locators, types, validation
Assertions$asserts across extracted fields
TransformsText transforms applied before parsing
Lint codesWhat POST /programs/lint reports

Was this page helpful?