Skip to main content

tripl (0.1.0)

Download OpenAPI specification:Download

Analytics tracking plan service

auth

Login, registration, logout, and current-user lookup.

Get Status

Responses

Response samples

Content type
application/json
{
  • "has_users": true,
  • "registration_enabled": true,
  • "email_configured": false,
  • "deployment_mode": "self_hosted",
  • "email_verification_required": false,
  • "google_sign_in": false,
  • "oidc_sign_in": false,
  • "oidc_button_label": "string",
  • "public_demo": false,
  • "multi_org": false
}

Register

Self-service sign-up.

Self-hosted: into the default organization (the first account owns it and is a platform admin); org_name / org_slug are ignored.

Hosted: org_name and org_slug are required and the account creates and owns that organization. It starts unverified — the verification link is mailed through the operator relay after the commit (a failed send is logged; the user can resend) — so 503 up front when that relay cannot send.

Request Body schema: application/json
required
email
required
string <email> (Email)
password
required
string (Password) <= 255 characters
Name (string) or Name (null) (Name)
Org Name (string) or Org Name (null) (Org Name)
Org Slug (string) or Org Slug (null) (Org Slug)

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "password": "string",
  • "name": "string",
  • "org_name": "string",
  • "org_slug": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "email": "string",
  • "name": "string",
  • "role": "owner",
  • "is_platform_admin": false,
  • "email_verified": false,
  • "orgs": [
    ],
  • "org": "string",
  • "api_key_scope": "read",
  • "active_step_ins": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Preview Invitation

Show who an invitation is for, before the invitee has an account.

Unauthenticated by necessity — the whole point is that this person cannot sign in yet. It discloses nothing the token holder does not already have: the address it was issued to, the organization role it grants, and when it lapses. It does not reveal whether the instance has other users, or who they are.

Shares the cheap /status bucket rather than the register bucket: previewing is a read, and it must not consume the quota the invitee needs to actually redeem. Unknown, expired and used tokens all return the same 400.

path Parameters
token
required
string (Token)

Responses

Response samples

Content type
application/json
{
  • "email": "string",
  • "role": "owner",
  • "expires_at": "2019-08-24T14:15:22Z"
}

Accept Invitation

Redeem an invitation: into a new account, or into the signed-in one.

Signed in (a browser session cookie): the invitation adds a membership of its organization to THIS account, but only when the account's email is the invitation's (case-insensitive) — else 403 and the invitation stays unused; on a hosted instance the account must also have verified its address (403); 409 when the account is already a member. Answers 200 and leaves the session as it is (F20 PR6).

Not signed in: the new-account path. password is required, the account is created with the invitation's address and the new user is signed straight in (201). Self-hosted the account counts as email-verified. Hosted it starts unverified — the inviter was handed the raw link, so redeeming it proves nothing about the address — and a verification link is mailed through the operator relay after the commit (a failed send is logged; the user can resend). Reachable regardless of registration_mode — an owner-issued, single-use, expiring, address-bound invitation is a different mechanism from the instance-wide door, so a closed instance can still onboard exactly the people its owner named.

On the register rate-limit bucket, so guessing tokens costs the same as hammering signup.

Public demos require an already signed-in, verified account matching the invitation. Anonymous password redemption is refused with 403, without creating an account or sending verification mail. Acceptance grants the member organization role and viewer access to its existing ready demos; existing project grants are preserved. A full demo organization returns 409.

path Parameters
token
required
string (Token)
Request Body schema: application/json
required
Password (string) or Password (null) (Password)
Name (string) or Name (null) (Name)

Responses

Request samples

Content type
application/json
{
  • "password": "string",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "email": "string",
  • "name": "string",
  • "role": "owner",
  • "is_platform_admin": false,
  • "email_verified": false,
  • "orgs": [
    ],
  • "org": "string",
  • "api_key_scope": "read",
  • "active_step_ins": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Login

Request Body schema: application/json
required
email
required
string (Email) [ 3 .. 320 ] characters
password
required
string (Password) [ 8 .. 255 ] characters

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "password": "stringst"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "email": "string",
  • "name": "string",
  • "role": "owner",
  • "is_platform_admin": false,
  • "email_verified": false,
  • "orgs": [
    ],
  • "org": "string",
  • "api_key_scope": "read",
  • "active_step_ins": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Request Password Reset

Request Body schema: application/json
required
email
required
string <email> (Email)

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com"
}

Response samples

Content type
application/json
{
  • "message": "string",
  • "email_configured": true
}

Confirm Password Reset

Request Body schema: application/json
required
token
required
string (Token) [ 1 .. 512 ] characters
new_password
required
string (New Password) <= 255 characters

Responses

Request samples

Content type
application/json
{
  • "token": "string",
  • "new_password": "string"
}

Response samples

Content type
application/json
{
  • "message": "string"
}

Request Email Verification

Mail the signed-in account a fresh verification link (a resend).

A browser session only (an API key is 403). 204 without doing anything when the address is already verified or the instance does not require verification (self-hosted); 503 when the operator relay cannot send. Otherwise every earlier link of the account stops working and the new one goes out after the response (a failed send is logged).

Responses

Confirm Email Verification

Redeem a verification link, signed in as the account it was issued to.

Needs a browser session (401 without one): the link alone proves only that someone read the mail, the session proves it is the account holder who did. A session of a different account gets the same 400 as an unknown, expired or used token, and the token stays usable. On success every other session of the account is signed out, and on a hosted instance an address listed in PLATFORM_ADMIN_EMAILS becomes a platform admin — the only place that grant happens. On the login bucket, like the password reset confirm, so guessing tokens costs what guessing passwords does.

Request Body schema: application/json
required
token
required
string (Token) [ 1 .. 512 ] characters

Responses

Request samples

Content type
application/json
{
  • "token": "string"
}

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Logout

Responses

Get Me

The signed-in account with its organization role(s) and the platform-admin flag.

For an API key it also names the key's organization (org) and scope (api_key_scope): what tripl whoami prints. Read from the database on every call, so a membership added, changed or removed shows at once.

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "email": "string",
  • "name": "string",
  • "role": "owner",
  • "is_platform_admin": false,
  • "email_verified": false,
  • "orgs": [
    ],
  • "org": "string",
  • "api_key_scope": "read",
  • "active_step_ins": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Start

Send the browser to Google's account chooser.

query Parameters
Next (string) or Next (null) (Next)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Callback

Google's redirect back: signed in and into the app, or back to sign-in.

query Parameters
Code (string) or Code (null) (Code)
State (string) or State (null) (State)
Error (string) or Error (null) (Error)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Start

Send the browser to the instance's OpenID Connect provider.

query Parameters
Next (string) or Next (null) (Next)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Callback

The provider's redirect back: signed in and into the app, or back to sign-in.

query Parameters
Code (string) or Code (null) (Code)
State (string) or State (null) (State)
Error (string) or Error (null) (Error)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

users

User administration and role management.

List Invitations

Outstanding invitations into the organization: the roster of pending access.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Invitation

Invite one person into the request's organization, at an organization role.

OwnerUserDep is org owner/admin-only AND rejects API keys of any scope, so minting an account always requires an interactive session — an automation token can never conjure a new identity. Inviting at owner takes an owner: an admin cannot mint an account more privileged than their own.

The redeem link is returned in the body, not merely emailed: SMTP is optional and unconfigured on many instances, so a body-only path is the one that always works. It appears here and nowhere else. When the operator has SMTP configured the link is also mailed, through the operator's relay (never an organization's), after the response.

On a public demo the link is the only delivery: no mail is prepared or sent. Only the member organization role is allowed, with at most ten members plus unexpired pending invitations (409 when full), and ten mints per rolling hour per organization and inviter (429 when exhausted).

The invitation belongs to the organization the request acts in: the one an /orgs/{org}/users/invitations URL names, else the legacy default.

Request Body schema: application/json
required
email
required
string <email> (Email)
role
string (OrganizationRole)
Default: "member"
Enum: "owner" "admin" "member"

A user's role in one organization (organization_members.role).

The source of truth for organization-level rights (F20 PR4). owner and admin administer the organization and are the implicit owner of every project in it; only an owner can make or unmake another owner. member holds the role of their project_members row in a project, or the organization's default_project_role where they hold none.

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "role": "owner"
}

Response samples

Content type
application/json
{
  • "invitation": {
    },
  • "accept_path": "string",
  • "expires_at": "2019-08-24T14:15:22Z"
}

Revoke Invitation

Revoke an invitation into the organization; its link stops working immediately.

path Parameters
invitation_id
required
string <uuid> (Invitation Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Users

The members of the request's organization with their organization role.

Any member may see the roster (it feeds the member pickers); a signed-in account outside the organization gets 403.

query Parameters
limit
integer (Limit) [ 1 .. 1000 ]
Default: 200
offset
integer (Offset) >= 0
Default: 0

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Update User Role

Change a member's ORGANIZATION role (owner | admin | member).

404 for an account outside the organization, 400 when it would leave the organization without an owner, 403 when an admin tries to make or unmake an owner. The member stays signed in; the new role applies from their next request.

path Parameters
user_id
required
string <uuid> (User Id)
Request Body schema: application/json
required
role
required
string (OrganizationRole)
Enum: "owner" "admin" "member"

A user's role in one organization (organization_members.role).

The source of truth for organization-level rights (F20 PR4). owner and admin administer the organization and are the implicit owner of every project in it; only an owner can make or unmake another owner. member holds the role of their project_members row in a project, or the organization's default_project_role where they hold none.

Responses

Request samples

Content type
application/json
{
  • "role": "owner"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "email": "string",
  • "name": "string",
  • "role": "owner",
  • "created_at": "2019-08-24T14:15:22Z"
}

projects

Projects (tracking plans) and their lifecycle.

List Projects

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Project

Request Body schema: application/json
required
name
required
string (Name) [ 1 .. 255 ] characters
slug
required
string (Slug) [ 1 .. 255 ] characters ^[a-z0-9]+(?:-[a-z0-9]+)*$
description
string (Description)
Default: ""
app_version_keep_releases
integer (App Version Keep Releases) [ 1 .. 100 ]
Default: 5
timezone
string (Timezone) <= 64 characters
Default: "UTC"
Template Id (string) or Template Id (null) (Template Id)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "slug": "string",
  • "description": "",
  • "app_version_keep_releases": 5,
  • "timezone": "UTC",
  • "template_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "slug": "string",
  • "description": "string",
  • "app_version_keep_releases": 5,
  • "timezone": "UTC",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "summary": {
    },
  • "is_demo": false,
  • "generation_status": "pending",
  • "generation_stage": "string",
  • "generation_error": "string",
  • "demo_recipe_version": "string",
  • "demo_seeded_at": "2019-08-24T14:15:22Z",
  • "demo_last_tick_at": "2019-08-24T14:15:22Z",
  • "created_by_user_id": "209f54c4-4c33-43bc-9c6a-ef4c65ad7473",
  • "can_mutate": false,
  • "my_role": "owner",
  • "template_branch_id": "174debae-6906-4e06-a700-e9595f777514"
}

Create Demo Project

Start a demo: the response is its seeding shell; the worker seeds it.

Poll GET /projects/{slug} until generation_status reads ready (or failed). The project.create audit row is filed by the worker once the demo is ready, so a cancelled or failed demo leaves none.

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "slug": "string",
  • "description": "string",
  • "app_version_keep_releases": 5,
  • "timezone": "UTC",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "summary": {
    },
  • "is_demo": false,
  • "generation_status": "pending",
  • "generation_stage": "string",
  • "generation_error": "string",
  • "demo_recipe_version": "string",
  • "demo_seeded_at": "2019-08-24T14:15:22Z",
  • "demo_last_tick_at": "2019-08-24T14:15:22Z",
  • "created_by_user_id": "209f54c4-4c33-43bc-9c6a-ef4c65ad7473",
  • "can_mutate": false,
  • "my_role": "owner"
}

Cancel Demo Provisioning

Abandon this user's in-flight demo provision, if one is still seeding.

Deliberately ungated by the kill switch: it only ever removes work. Declared before /demo/{slug}/reset so the literal path is never shadowed.

Responses

Response samples

Content type
application/json
{
  • "cancelled": true,
  • "slug": "string",
  • "state": "stopped"
}

Reset Demo Project

Re-seed a demo in place. Restricted to the demo's creator or an owner.

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "slug": "string",
  • "description": "string",
  • "app_version_keep_releases": 5,
  • "timezone": "UTC",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "summary": {
    },
  • "is_demo": false,
  • "generation_status": "pending",
  • "generation_stage": "string",
  • "generation_error": "string",
  • "demo_recipe_version": "string",
  • "demo_seeded_at": "2019-08-24T14:15:22Z",
  • "demo_last_tick_at": "2019-08-24T14:15:22Z",
  • "created_by_user_id": "209f54c4-4c33-43bc-9c6a-ef4c65ad7473",
  • "can_mutate": false,
  • "my_role": "owner"
}

Delete Demo Project

Delete a demo and its owned synthetic warehouse. Creator or owner only.

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Get Project

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "slug": "string",
  • "description": "string",
  • "app_version_keep_releases": 5,
  • "timezone": "UTC",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "summary": {
    },
  • "is_demo": false,
  • "generation_status": "pending",
  • "generation_stage": "string",
  • "generation_error": "string",
  • "demo_recipe_version": "string",
  • "demo_seeded_at": "2019-08-24T14:15:22Z",
  • "demo_last_tick_at": "2019-08-24T14:15:22Z",
  • "created_by_user_id": "209f54c4-4c33-43bc-9c6a-ef4c65ad7473",
  • "can_mutate": false,
  • "my_role": "owner"
}

Update Project

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Slug (string) or Slug (null) (Slug)
Description (string) or Description (null) (Description)
app_version_keep_releases
integer (App Version Keep Releases) [ 1 .. 100 ]
timezone
string (Timezone) <= 64 characters

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "slug": "string",
  • "description": "string",
  • "app_version_keep_releases": 1,
  • "timezone": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "slug": "string",
  • "description": "string",
  • "app_version_keep_releases": 5,
  • "timezone": "UTC",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "summary": {
    },
  • "is_demo": false,
  • "generation_status": "pending",
  • "generation_stage": "string",
  • "generation_error": "string",
  • "demo_recipe_version": "string",
  • "demo_seeded_at": "2019-08-24T14:15:22Z",
  • "demo_last_tick_at": "2019-08-24T14:15:22Z",
  • "created_by_user_id": "209f54c4-4c33-43bc-9c6a-ef4c65ad7473",
  • "can_mutate": false,
  • "my_role": "owner"
}

Delete Project

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Reset Anomalies

Owner-only: clear every anomaly (+ breakdown) in the project's period.

Destructive and irreversible. Derived monitoring signals disappear with the anomalies they are computed from. dry_run only counts.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Before (string) or Before (null) (Before)
After (string) or After (null) (After)
dry_run
boolean (Dry Run)
Default: false

Responses

Request samples

Content type
application/json
{
  • "before": "2019-08-24T14:15:22Z",
  • "after": "2019-08-24T14:15:22Z",
  • "dry_run": false
}

Response samples

Content type
application/json
{
  • "metric_anomalies": 0,
  • "metric_breakdown_anomalies": 0,
  • "metric_baselines": 0
}

Reset Drifts

Owner-only: clear every schema + distribution drift in the project's period.

Destructive and irreversible. dry_run only counts.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Before (string) or Before (null) (Before)
After (string) or After (null) (After)
dry_run
boolean (Dry Run)
Default: false

Responses

Request samples

Content type
application/json
{
  • "before": "2019-08-24T14:15:22Z",
  • "after": "2019-08-24T14:15:22Z",
  • "dry_run": false
}

Response samples

Content type
application/json
{
  • "schema_drifts": 0,
  • "distribution_drifts": 0
}

Retire Unused Variables

Owner-only: drop the variables a scan minted that nothing refers to.

A scan creates a variable for every placeholder it discovers and has never retired one, so a project whose warehouse holds a JSON column keyed by user-typed text accumulates a row per key forever. This deletes only rows that a scan created, no human has edited, no event field value names, and that carry no observed context, drift or override — see core.variable_retirement for why "no observed context" alone is not enough to be safe.

dry_run defaults to true, so the first call is always a preview. It returns the same counts the real pass would, broken down by why each surviving row was kept.

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
mode
string (Mode)
Default: "delete"
Enum: "delete" "exclude"
dry_run
boolean (Dry Run)
Default: true

Responses

Request samples

Content type
application/json
{
  • "mode": "delete",
  • "dry_run": true
}

Response samples

Content type
application/json
{
  • "scanned": 0,
  • "retirable": 0,
  • "retired": 0,
  • "kept_referenced": 0,
  • "kept_observed": 0,
  • "kept_documented": 0,
  • "kept_user_edited": 0,
  • "kept_excluded": 0
}

events

Tracked events within a project's plan.

List Events

path Parameters
slug
required
string (Slug)
query Parameters
Event Type Id (string) or Event Type Id (null) (Event Type Id)
Search (string) or Search (null) (Search)
Array of Status (strings) or Status (null) (Status)
Tag (string) or Tag (null) (Tag)
Silent Since Days (integer) or Silent Since Days (null) (Silent Since Days)
Reviewed (boolean) or Reviewed (null) (Reviewed)
Has Open Questions (boolean) or Has Open Questions (null) (Has Open Questions)
Field Value (string) or Field Value (null) (Field Value)
Meta Value (string) or Meta Value (null) (Meta Value)
Property (string) or Property (null) (Property)

Property id or name: only events whose property list carries it.

offset
integer (Offset) >= 0
Default: 0
limit
integer (Limit) [ 1 .. 10000 ]
Default: 200
order_by
string (Order By)
Default: "catalog"
Enum: "catalog" "volume" "health"
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Create Event

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
event_type_id
required
string <uuid> (Event Type Id)
name
required
string (Name) [ 1 .. 500 ] characters
title
string (Title) <= 500 characters
Default: ""
description
string (Description)
Default: ""
status
string (EventStatus)
Default: "draft"
Enum: "draft" "in_review" "ready_for_dev" "implemented" "live" "deprecated" "archived"
Sunset At (string) or Sunset At (null) (Sunset At)
Owner Id (string) or Owner Id (null) (Owner Id)
reviewed
boolean (Reviewed)
Default: false
metric_breakdown_columns
Array of strings (Metric Breakdown Columns)
Default: []
Required Presence Threshold (number) or Required Presence Threshold (null) (Required Presence Threshold)
tags
Array of strings (Tags)
Default: []
Array of objects (Field Values)
Default: []
Array of objects (Meta Values)
Default: []

Responses

Request samples

Content type
application/json
{
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "name": "string",
  • "title": "",
  • "description": "",
  • "status": "draft",
  • "sunset_at": "2019-08-24T14:15:22Z",
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": false,
  • "metric_breakdown_columns": [ ],
  • "required_presence_threshold": 1,
  • "tags": [ ],
  • "field_values": [ ],
  • "meta_values": [ ]
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "event_type": {
    },
  • "name": "string",
  • "source_name": "string",
  • "title": "",
  • "description": "string",
  • "required_presence_threshold": 0,
  • "order": 0,
  • "status": "draft",
  • "sunset_at": "2019-08-24T14:15:22Z",
  • "superseded_by_event_id": "b7c6c075-4a79-4889-82b9-5606b7763014",
  • "last_seen_at": "2019-08-24T14:15:22Z",
  • "first_seen_at": "2019-08-24T14:15:22Z",
  • "main_event_id": "706e2002-f72e-4674-8e62-0edec45e1407",
  • "lifecycle_findings": [ ],
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": false,
  • "metric_breakdown_columns": [ ],
  • "drift_count": 0,
  • "tags": [ ],
  • "field_values": [ ],
  • "meta_values": [ ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc",
  • "warnings": [
    ]
}

List Tags

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • "string"
]

Lookup Events By Names

path Parameters
slug
required
string (Slug)
query Parameters
event_type_id
required
string <uuid> (Event Type Id)
names
required
Array of strings (Names) [ 1 .. 200 ] items
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Bulk Create Events

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
Array
event_type_id
required
string <uuid> (Event Type Id)
name
required
string (Name) [ 1 .. 500 ] characters
title
string (Title) <= 500 characters
Default: ""
description
string (Description)
Default: ""
status
string (EventStatus)
Default: "draft"
Enum: "draft" "in_review" "ready_for_dev" "implemented" "live" "deprecated" "archived"
Sunset At (string) or Sunset At (null) (Sunset At)
Owner Id (string) or Owner Id (null) (Owner Id)
reviewed
boolean (Reviewed)
Default: false
metric_breakdown_columns
Array of strings (Metric Breakdown Columns)
Default: []
Required Presence Threshold (number) or Required Presence Threshold (null) (Required Presence Threshold)
tags
Array of strings (Tags)
Default: []
Array of objects (Field Values)
Default: []
Array of objects (Meta Values)
Default: []

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Bulk Delete Events

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
event_ids
required
Array of strings <uuid> (Event Ids) non-empty [ items <uuid > ]

Responses

Request samples

Content type
application/json
{
  • "event_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Bulk Update Events

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
event_ids
required
Array of strings <uuid> (Event Ids) non-empty [ items <uuid > ]
EventStatus (string) or null
Sunset At (string) or Sunset At (null) (Sunset At)
Owner Id (string) or Owner Id (null) (Owner Id)
Reviewed (boolean) or Reviewed (null) (Reviewed)

Responses

Request samples

Content type
application/json
{
  • "event_ids": [
    ],
  • "status": "draft",
  • "sunset_at": "2019-08-24T14:15:22Z",
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": true
}

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Reorder Events

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
event_ids
required
Array of strings <uuid> (Event Ids) non-empty [ items <uuid > ]

Responses

Request samples

Content type
application/json
{
  • "event_ids": [
    ]
}

Response samples

Content type
application/json
[
  • {
    }
]

Get Event

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "event_type": {
    },
  • "name": "string",
  • "source_name": "string",
  • "title": "",
  • "description": "string",
  • "required_presence_threshold": 0,
  • "order": 0,
  • "status": "draft",
  • "sunset_at": "2019-08-24T14:15:22Z",
  • "superseded_by_event_id": "b7c6c075-4a79-4889-82b9-5606b7763014",
  • "last_seen_at": "2019-08-24T14:15:22Z",
  • "first_seen_at": "2019-08-24T14:15:22Z",
  • "main_event_id": "706e2002-f72e-4674-8e62-0edec45e1407",
  • "lifecycle_findings": [ ],
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": false,
  • "metric_breakdown_columns": [ ],
  • "drift_count": 0,
  • "tags": [ ],
  • "field_values": [ ],
  • "meta_values": [ ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc"
}

Update Event

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Title (string) or Title (null) (Title)
Description (string) or Description (null) (Description)
EventStatus (string) or null
Sunset At (string) or Sunset At (null) (Sunset At)
Superseded By Event Id (string) or Superseded By Event Id (null) (Superseded By Event Id)
Owner Id (string) or Owner Id (null) (Owner Id)
Reviewed (boolean) or Reviewed (null) (Reviewed)
Array of Metric Breakdown Columns (strings) or Metric Breakdown Columns (null) (Metric Breakdown Columns)
Required Presence Threshold (number) or Required Presence Threshold (null) (Required Presence Threshold)
Array of Tags (strings) or Tags (null) (Tags)
Array of Field Values (objects) or Field Values (null) (Field Values)
Array of Meta Values (objects) or Meta Values (null) (Meta Values)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "title": "string",
  • "description": "string",
  • "status": "draft",
  • "sunset_at": "2019-08-24T14:15:22Z",
  • "superseded_by_event_id": "b7c6c075-4a79-4889-82b9-5606b7763014",
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": true,
  • "metric_breakdown_columns": [
    ],
  • "required_presence_threshold": 1,
  • "tags": [
    ],
  • "field_values": [
    ],
  • "meta_values": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "event_type": {
    },
  • "name": "string",
  • "source_name": "string",
  • "title": "",
  • "description": "string",
  • "required_presence_threshold": 0,
  • "order": 0,
  • "status": "draft",
  • "sunset_at": "2019-08-24T14:15:22Z",
  • "superseded_by_event_id": "b7c6c075-4a79-4889-82b9-5606b7763014",
  • "last_seen_at": "2019-08-24T14:15:22Z",
  • "first_seen_at": "2019-08-24T14:15:22Z",
  • "main_event_id": "706e2002-f72e-4674-8e62-0edec45e1407",
  • "lifecycle_findings": [ ],
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": false,
  • "metric_breakdown_columns": [ ],
  • "drift_count": 0,
  • "tags": [ ],
  • "field_values": [ ],
  • "meta_values": [ ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc",
  • "warnings": [
    ]
}

Delete Event

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Event Properties

The event's property list (F23). Edit an entry through PUT /variables/{variable_id}/event-overrides/{event_id}.

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Event History

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Move Event

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
direction
required
string (Direction)
Enum: "up" "down"
Array of Visible Event Ids (strings) or Visible Event Ids (null) (Visible Event Ids)

Responses

Request samples

Content type
application/json
{
  • "direction": "up",
  • "visible_event_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "event_type": {
    },
  • "name": "string",
  • "source_name": "string",
  • "title": "",
  • "description": "string",
  • "required_presence_threshold": 0,
  • "order": 0,
  • "status": "draft",
  • "sunset_at": "2019-08-24T14:15:22Z",
  • "superseded_by_event_id": "b7c6c075-4a79-4889-82b9-5606b7763014",
  • "last_seen_at": "2019-08-24T14:15:22Z",
  • "first_seen_at": "2019-08-24T14:15:22Z",
  • "main_event_id": "706e2002-f72e-4674-8e62-0edec45e1407",
  • "lifecycle_findings": [ ],
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": false,
  • "metric_breakdown_columns": [ ],
  • "drift_count": 0,
  • "tags": [ ],
  • "field_values": [ ],
  • "meta_values": [ ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc"
}

event-types

Event type definitions and metadata.

List Event Types

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Event Type

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
name
required
string (Name) [ 1 .. 100 ] characters
display_name
required
string (Display Name) [ 1 .. 255 ] characters
description
string (Description)
Default: ""
color
string (Color) ^#[0-9a-fA-F]{6}$
Default: "#6366f1"
order
integer (Order)
Default: 0
Array of objects (Field Definitions)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "display_name": "string",
  • "description": "",
  • "color": "#6366f1",
  • "order": 0,
  • "field_definitions": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "field_definitions": [ ],
  • "event_name_format": "string"
}

Get Event Type

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "field_definitions": [ ],
  • "event_name_format": "string"
}

Update Event Type

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
Display Name (string) or Display Name (null) (Display Name)
Description (string) or Description (null) (Description)
Color (string) or Color (null) (Color)
Order (integer) or Order (null) (Order)

Responses

Request samples

Content type
application/json
{
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "field_definitions": [ ],
  • "event_name_format": "string"
}

Delete Event Type

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Event Type Drifts

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Apply Schema Drift Action

path Parameters
slug
required
string (Slug)
drift_id
required
string <uuid> (Drift Id)
Request Body schema: application/json
required
action
required
string (Action)
Enum: "accept" "snooze" "false_positive" "reopen"
Note (string) or Note (null) (Note)
Snoozed Until (string) or Snoozed Until (null) (Snoozed Until)
force
boolean (Force)
Default: false

Override the guard that refuses to accept a missing_field drift for a column a scan config's event name format builds event names from . API-only escape hatch for a project-wide config that names the column but never scans this event type; requires a note explaining why, which lands in the audit record. The UI does not offer it — a warning next to an Accept button is a thing operators click past, and clicking past it is what caused the outage.

Responses

Request samples

Content type
application/json
{
  • "action": "accept",
  • "note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z",
  • "force": false
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "field_name": "string",
  • "drift_type": "new_field",
  • "observed_type": "string",
  • "declared_type": "string",
  • "sample_value": "string",
  • "status": "open",
  • "resolution_note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z",
  • "resolved_at": "2019-08-24T14:15:22Z",
  • "resolved_by": "d0d57369-b08b-4db8-8952-8cdeedd9aebc",
  • "detected_at": "2019-08-24T14:15:22Z"
}

event-type-owners

Ownership assignments for event types.

List Owners

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Add Owner

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)
Request Body schema: application/json
required
user_id
required
string <uuid> (User Id)

Responses

Request samples

Content type
application/json
{
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "user_email": "string",
  • "user_name": "string",
  • "granted_by": "a8e4a498-f971-4203-a849-4967743579d4",
  • "created_at": "2019-08-24T14:15:22Z"
}

Remove Owner

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)
owner_id
required
string <uuid> (Owner Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Project Owners

Owners of every live event type in the project; group by event_type_id.

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

fields

Field definitions attached to event types.

List Fields

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Field

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
name
required
string (Name) [ 1 .. 100 ] characters
display_name
required
string (Display Name) [ 1 .. 255 ] characters
field_type
required
string (FieldDefinitionType)
Enum: "string" "number" "boolean" "json" "enum" "url"
is_required
boolean (Is Required)
Default: false
Array of Enum Options (strings) or Enum Options (null) (Enum Options)
description
string (Description)
Default: ""
order
integer (Order)
Default: 0
sensitivity
string (Sensitivity)
Default: "none"
Enum: "none" "pii" "phi" "financial" "secret"
Contract Required Max Null Rate (number) or Contract Required Max Null Rate (null) (Contract Required Max Null Rate)
Contract Regex (string) or Contract Regex (null) (Contract Regex)
Contract Min Value (number) or Contract Min Value (null) (Contract Min Value)
Contract Max Value (number) or Contract Max Value (null) (Contract Max Value)
contract_max_bad_rate
number (Contract Max Bad Rate) [ 0 .. 1 ]
Default: 0

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "display_name": "string",
  • "field_type": "string",
  • "is_required": false,
  • "enum_options": [
    ],
  • "description": "",
  • "order": 0,
  • "sensitivity": "none",
  • "contract_required_max_null_rate": 1,
  • "contract_regex": "string",
  • "contract_min_value": 0,
  • "contract_max_value": 0,
  • "contract_max_bad_rate": 0
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "name": "string",
  • "display_name": "string",
  • "field_type": "string",
  • "is_required": true,
  • "enum_options": [
    ],
  • "description": "string",
  • "order": 0,
  • "sensitivity": "none",
  • "contract_required_max_null_rate": 0,
  • "contract_regex": "string",
  • "contract_min_value": 0,
  • "contract_max_value": 0,
  • "contract_max_bad_rate": 0
}

Bulk Create Fields

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
required
Array of objects (Fields) non-empty
Array (non-empty)
name
required
string (Name) [ 1 .. 100 ] characters
display_name
required
string (Display Name) [ 1 .. 255 ] characters
field_type
required
string (FieldDefinitionType)
Enum: "string" "number" "boolean" "json" "enum" "url"
is_required
boolean (Is Required)
Default: false
Array of Enum Options (strings) or Enum Options (null) (Enum Options)
description
string (Description)
Default: ""
order
integer (Order)
Default: 0
sensitivity
string (Sensitivity)
Default: "none"
Enum: "none" "pii" "phi" "financial" "secret"
Contract Required Max Null Rate (number) or Contract Required Max Null Rate (null) (Contract Required Max Null Rate)
Contract Regex (string) or Contract Regex (null) (Contract Regex)
Contract Min Value (number) or Contract Min Value (null) (Contract Min Value)
Contract Max Value (number) or Contract Max Value (null) (Contract Max Value)
contract_max_bad_rate
number (Contract Max Bad Rate) [ 0 .. 1 ]
Default: 0

Responses

Request samples

Content type
application/json
{
  • "fields": [
    ]
}

Response samples

Content type
application/json
[
  • {
    }
]

Reorder Fields

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
field_ids
required
Array of strings <uuid> (Field Ids) [ items <uuid > ]

Responses

Request samples

Content type
application/json
{
  • "field_ids": [
    ]
}

Response samples

Content type
application/json
[
  • {
    }
]

Update Field

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)
field_id
required
string <uuid> (Field Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
Display Name (string) or Display Name (null) (Display Name)
FieldDefinitionType (string) or null
Is Required (boolean) or Is Required (null) (Is Required)
Array of Enum Options (strings) or Enum Options (null) (Enum Options)
Description (string) or Description (null) (Description)
Order (integer) or Order (null) (Order)
Sensitivity (string) or null
Contract Required Max Null Rate (number) or Contract Required Max Null Rate (null) (Contract Required Max Null Rate)
Contract Regex (string) or Contract Regex (null) (Contract Regex)
Contract Min Value (number) or Contract Min Value (null) (Contract Min Value)
Contract Max Value (number) or Contract Max Value (null) (Contract Max Value)
Contract Max Bad Rate (number) or Contract Max Bad Rate (null) (Contract Max Bad Rate)

Responses

Request samples

Content type
application/json
{
  • "display_name": "string",
  • "field_type": "string",
  • "is_required": true,
  • "enum_options": [
    ],
  • "description": "string",
  • "order": 0,
  • "sensitivity": "none",
  • "contract_required_max_null_rate": 1,
  • "contract_regex": "string",
  • "contract_min_value": 0,
  • "contract_max_value": 0,
  • "contract_max_bad_rate": 1
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "name": "string",
  • "display_name": "string",
  • "field_type": "string",
  • "is_required": true,
  • "enum_options": [
    ],
  • "description": "string",
  • "order": 0,
  • "sensitivity": "none",
  • "contract_required_max_null_rate": 0,
  • "contract_regex": "string",
  • "contract_min_value": 0,
  • "contract_max_value": 0,
  • "contract_max_bad_rate": 0
}

Delete Field

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)
field_id
required
string <uuid> (Field Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

meta-fields

Project-wide meta/context fields.

List Meta Fields

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Meta Field

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
name
required
string (Name) [ 1 .. 100 ] characters
display_name
required
string (Display Name) [ 1 .. 255 ] characters
field_type
required
string (MetaFieldType)
Enum: "string" "url" "boolean" "enum" "date"
is_required
boolean (Is Required)
Default: false
allow_multiple
boolean (Allow Multiple)
Default: false
Array of Enum Options (strings) or Enum Options (null) (Enum Options)
Default Value (string) or Default Value (null) (Default Value)
Link Template (string) or Link Template (null) (Link Template)
order
integer (Order)
Default: 0
sensitivity
string (Sensitivity)
Default: "none"
Enum: "none" "pii" "phi" "financial" "secret"

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "display_name": "string",
  • "field_type": "string",
  • "is_required": false,
  • "allow_multiple": false,
  • "enum_options": [
    ],
  • "default_value": "string",
  • "link_template": "string",
  • "order": 0,
  • "sensitivity": "none"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "display_name": "string",
  • "field_type": "string",
  • "is_required": true,
  • "allow_multiple": false,
  • "enum_options": [
    ],
  • "default_value": "string",
  • "link_template": "string",
  • "order": 0,
  • "sensitivity": "none"
}

Get Meta Field Usage

Values and events a delete of this field would clear.

path Parameters
slug
required
string (Slug)
meta_field_id
required
string <uuid> (Meta Field Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "value_count": 0,
  • "event_count": 0
}

Update Meta Field

path Parameters
slug
required
string (Slug)
meta_field_id
required
string <uuid> (Meta Field Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
Display Name (string) or Display Name (null) (Display Name)
MetaFieldType (string) or null
Is Required (boolean) or Is Required (null) (Is Required)
Allow Multiple (boolean) or Allow Multiple (null) (Allow Multiple)
Array of Enum Options (strings) or Enum Options (null) (Enum Options)
Default Value (string) or Default Value (null) (Default Value)
Link Template (string) or Link Template (null) (Link Template)
Order (integer) or Order (null) (Order)
Sensitivity (string) or null

Responses

Request samples

Content type
application/json
{
  • "display_name": "string",
  • "field_type": "string",
  • "is_required": true,
  • "allow_multiple": true,
  • "enum_options": [
    ],
  • "default_value": "string",
  • "link_template": "string",
  • "order": 0,
  • "sensitivity": "none"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "display_name": "string",
  • "field_type": "string",
  • "is_required": true,
  • "allow_multiple": false,
  • "enum_options": [
    ],
  • "default_value": "string",
  • "link_template": "string",
  • "order": 0,
  • "sensitivity": "none"
}

Delete Meta Field

path Parameters
slug
required
string (Slug)
meta_field_id
required
string <uuid> (Meta Field Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

properties

Event properties: typed, documented values referenced by the plan (${name}), with per-event lists and drift.

Bulk Update Variables Properties

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
variable_ids
required
Array of strings <uuid> (Variable Ids) non-empty [ items <uuid > ]
VariableType (string) or null
Description (string) or Description (null) (Description)
Array of Allowed Values Add (strings) or Allowed Values Add (null) (Allowed Values Add)
Array of Allowed Values Remove (strings) or Allowed Values Remove (null) (Allowed Values Remove)

Responses

Request samples

Content type
application/json
{
  • "variable_ids": [
    ],
  • "variable_type": "string",
  • "description": "string",
  • "allowed_values_add": [
    ],
  • "allowed_values_remove": [
    ]
}

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Bulk Delete Variables Properties

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
variable_ids
required
Array of strings <uuid> (Variable Ids) non-empty [ items <uuid > ]

Responses

Request samples

Content type
application/json
{
  • "variable_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Property Drifts Properties

New, missing-required and type-changed properties a scan saw (F23).

path Parameters
slug
required
string (Slug)
query Parameters
Variable Id (string) or Variable Id (null) (Variable Id)
Event Id (string) or Event Id (null) (Event Id)
PropertyDriftKind (string) or Kind (null) (Kind)
active_only
boolean (Active Only)
Default: false

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Apply Property Drift Action Properties

path Parameters
slug
required
string (Slug)
drift_id
required
string <uuid> (Drift Id)
Request Body schema: application/json
required
action
required
string (Action)
Enum: "accept" "snooze" "false_positive" "reopen"
Note (string) or Note (null) (Note)
Snoozed Until (string) or Snoozed Until (null) (Snoozed Until)

Responses

Request samples

Content type
application/json
{
  • "action": "accept",
  • "note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "variable_id": "8339bd98-4109-4958-960a-f55d5e3ec302",
  • "variable_name": "string",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_name": "string",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "kind": "new_property",
  • "detail": { },
  • "status": "open",
  • "resolution_note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z",
  • "resolved_at": "2019-08-24T14:15:22Z",
  • "resolved_by": "d0d57369-b08b-4db8-8952-8cdeedd9aebc",
  • "detected_at": "2019-08-24T14:15:22Z"
}

List Value Drifts Properties

path Parameters
slug
required
string (Slug)
query Parameters
Variable Id (string) or Variable Id (null) (Variable Id)
Event Id (string) or Event Id (null) (Event Id)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Apply Value Drift Action Properties

path Parameters
slug
required
string (Slug)
drift_id
required
string <uuid> (Drift Id)
Request Body schema: application/json
required
action
required
string (Action)
Enum: "accept" "snooze" "false_positive" "reopen"
scope
string (Scope)
Default: "global"
Enum: "global" "event"
Note (string) or Note (null) (Note)
Snoozed Until (string) or Snoozed Until (null) (Snoozed Until)

Responses

Request samples

Content type
application/json
{
  • "action": "accept",
  • "scope": "global",
  • "note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "variable_id": "8339bd98-4109-4958-960a-f55d5e3ec302",
  • "variable_name": "string",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_name": "string",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "observed_values": [ ],
  • "status": "open",
  • "resolution_note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z",
  • "resolved_at": "2019-08-24T14:15:22Z",
  • "resolved_by": "d0d57369-b08b-4db8-8952-8cdeedd9aebc",
  • "detected_at": "2019-08-24T14:15:22Z"
}

List Variables Properties

path Parameters
slug
required
string (Slug)
query Parameters
offset
integer (Offset) >= 0
Default: 0
limit
integer (Limit) [ 1 .. 5000 ]
Default: 200
usage
string (Usage)
Default: "all"
Enum: "all" "used" "unused"

Narrow to the variables nothing refers to ('unused' — exactly the set the retirement sweep would take) or to their complement ('used'). Declared as an enum rather than a free string so an unknown value is a 422 and not a 500.

Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Create Variable Properties

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
name
required
string (Name) [ 1 .. 100 ] characters ^[a-z][a-z0-9_]*$
variable_type
string (VariableType)
Default: "string"
Enum: "string" "number" "boolean" "date" "datetime" "json" "string_array" "number_array"
description
string (Description)
Default: ""
allowed_values
Array of strings (Allowed Values) <= 500 items
bindings
Array of strings (Bindings) <= 100 items
Json Schema (object) or Json Schema (null) (Json Schema)

JSON Schema fragment refining variable_type: type, format, items, properties, required and the numeric, string and array constraints. Must agree with variable_type (number may narrow to integer, json is an object or array). Documented values stay in allowed_values. null: the type is just variable_type.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "variable_type": "string",
  • "description": "",
  • "allowed_values": [
    ],
  • "bindings": [
    ],
  • "json_schema": { }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "source_name": "string",
  • "variable_type": "string",
  • "description": "string",
  • "allowed_values": [ ],
  • "bindings": [ ],
  • "excluded_from_scans": false,
  • "json_schema": { },
  • "event_count": 0,
  • "context_count": 0,
  • "low_context_count": 0,
  • "high_context_count": 0,
  • "sample_values": [ ],
  • "open_drift_count": 0,
  • "listed_event_count": 0,
  • "required_event_count": 0,
  • "event_names": [ ],
  • "event_refs": [ ]
}

List Variable Values Properties

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Clear Variable Values Properties

Drop the variable's observed contexts and keep the variable.

Deleting the variable was the only reset available and it takes the description, documented values, bindings, overrides and drift triage with it — none of which a scan rebuilds.

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Context Id (string) or Context Id (null) (Context Id)

Clear one context row instead of all of them. The id is the id on VariableValueContextResponse — the same value /values already returns, so a client can scope the clear to a single (event, field).

Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Event Overrides Properties

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List Property Events Properties

The events whose property list carries this property, with each entry's required flag, override and last measured presence (F23.8).

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Bulk Upsert Event Overrides Properties

Add the property to many events' lists, or apply one patch to each entry: the single PUT's semantics, all or nothing (F23.8).

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
event_ids
required
Array of strings <uuid> (Event Ids) [ 1 .. 5000 ] items [ items <uuid > ]
Required (boolean) or Required (null) (Required)

Whether every occurrence of each event must carry the property.

Array of Values (strings) or Values (null) (Values)

Allowed values for these events, replacing the property's global list. null: no override, the global list applies.

Responses

Request samples

Content type
application/json
{
  • "event_ids": [
    ],
  • "required": true,
  • "values": [
    ]
}

Response samples

Content type
application/json
{
  • "created": 0,
  • "updated": 0,
  • "removed": 0
}

Bulk Delete Event Overrides Properties

Take the property off many events' lists (F23.8). Events that do not carry it are skipped, and the audit row names only the entries removed.

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
event_ids
required
Array of strings <uuid> (Event Ids) [ 1 .. 5000 ] items [ items <uuid > ]

Responses

Request samples

Content type
application/json
{
  • "event_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "created": 0,
  • "updated": 0,
  • "removed": 0
}

Upsert Event Override Properties

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
event_id
required
string <uuid> (Event Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
Array of Values (strings) or Values (null) (Values)

Allowed values for this event, replacing the variable's global list. null: no override, the global list applies.

Required (boolean) or Required (null) (Required)

Whether every occurrence of the event must carry this property.

Responses

Request samples

Content type
application/json
{
  • "values": [
    ],
  • "required": true
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "variable_id": "8339bd98-4109-4958-960a-f55d5e3ec302",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_name": "string",
  • "values": [
    ],
  • "required": false
}

Delete Event Override Properties

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
event_id
required
string <uuid> (Event Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Update Variable Properties

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
Name (string) or Name (null) (Name)
VariableType (string) or null
Description (string) or Description (null) (Description)
Array of Allowed Values (strings) or Allowed Values (null) (Allowed Values)
Array of Bindings (strings) or Bindings (null) (Bindings)
Excluded From Scans (boolean) or Excluded From Scans (null) (Excluded From Scans)
Json Schema (object) or Json Schema (null) (Json Schema)

JSON Schema fragment refining variable_type: type, format, items, properties, required and the numeric, string and array constraints. Must agree with variable_type (number may narrow to integer, json is an object or array). Documented values stay in allowed_values. null: the type is just variable_type.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "variable_type": "string",
  • "description": "string",
  • "allowed_values": [
    ],
  • "bindings": [
    ],
  • "excluded_from_scans": true,
  • "json_schema": { }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "source_name": "string",
  • "variable_type": "string",
  • "description": "string",
  • "allowed_values": [ ],
  • "bindings": [ ],
  • "excluded_from_scans": false,
  • "json_schema": { },
  • "event_count": 0,
  • "context_count": 0,
  • "low_context_count": 0,
  • "high_context_count": 0,
  • "sample_values": [ ],
  • "open_drift_count": 0,
  • "listed_event_count": 0,
  • "required_event_count": 0,
  • "event_names": [ ],
  • "event_refs": [ ]
}

Delete Variable Properties

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

variables

Deprecated alias of properties (the former name), kept for one release.

Bulk Update Variables Deprecated

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
variable_ids
required
Array of strings <uuid> (Variable Ids) non-empty [ items <uuid > ]
VariableType (string) or null
Description (string) or Description (null) (Description)
Array of Allowed Values Add (strings) or Allowed Values Add (null) (Allowed Values Add)
Array of Allowed Values Remove (strings) or Allowed Values Remove (null) (Allowed Values Remove)

Responses

Request samples

Content type
application/json
{
  • "variable_ids": [
    ],
  • "variable_type": "string",
  • "description": "string",
  • "allowed_values_add": [
    ],
  • "allowed_values_remove": [
    ]
}

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Bulk Delete Variables Deprecated

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
variable_ids
required
Array of strings <uuid> (Variable Ids) non-empty [ items <uuid > ]

Responses

Request samples

Content type
application/json
{
  • "variable_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Property Drifts Deprecated

New, missing-required and type-changed properties a scan saw (F23).

path Parameters
slug
required
string (Slug)
query Parameters
Variable Id (string) or Variable Id (null) (Variable Id)
Event Id (string) or Event Id (null) (Event Id)
PropertyDriftKind (string) or Kind (null) (Kind)
active_only
boolean (Active Only)
Default: false

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Apply Property Drift Action Deprecated

path Parameters
slug
required
string (Slug)
drift_id
required
string <uuid> (Drift Id)
Request Body schema: application/json
required
action
required
string (Action)
Enum: "accept" "snooze" "false_positive" "reopen"
Note (string) or Note (null) (Note)
Snoozed Until (string) or Snoozed Until (null) (Snoozed Until)

Responses

Request samples

Content type
application/json
{
  • "action": "accept",
  • "note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "variable_id": "8339bd98-4109-4958-960a-f55d5e3ec302",
  • "variable_name": "string",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_name": "string",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "kind": "new_property",
  • "detail": { },
  • "status": "open",
  • "resolution_note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z",
  • "resolved_at": "2019-08-24T14:15:22Z",
  • "resolved_by": "d0d57369-b08b-4db8-8952-8cdeedd9aebc",
  • "detected_at": "2019-08-24T14:15:22Z"
}

List Value Drifts Deprecated

path Parameters
slug
required
string (Slug)
query Parameters
Variable Id (string) or Variable Id (null) (Variable Id)
Event Id (string) or Event Id (null) (Event Id)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Apply Value Drift Action Deprecated

path Parameters
slug
required
string (Slug)
drift_id
required
string <uuid> (Drift Id)
Request Body schema: application/json
required
action
required
string (Action)
Enum: "accept" "snooze" "false_positive" "reopen"
scope
string (Scope)
Default: "global"
Enum: "global" "event"
Note (string) or Note (null) (Note)
Snoozed Until (string) or Snoozed Until (null) (Snoozed Until)

Responses

Request samples

Content type
application/json
{
  • "action": "accept",
  • "scope": "global",
  • "note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "variable_id": "8339bd98-4109-4958-960a-f55d5e3ec302",
  • "variable_name": "string",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_name": "string",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "observed_values": [ ],
  • "status": "open",
  • "resolution_note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z",
  • "resolved_at": "2019-08-24T14:15:22Z",
  • "resolved_by": "d0d57369-b08b-4db8-8952-8cdeedd9aebc",
  • "detected_at": "2019-08-24T14:15:22Z"
}

List Variables Deprecated

path Parameters
slug
required
string (Slug)
query Parameters
offset
integer (Offset) >= 0
Default: 0
limit
integer (Limit) [ 1 .. 5000 ]
Default: 200
usage
string (Usage)
Default: "all"
Enum: "all" "used" "unused"

Narrow to the variables nothing refers to ('unused' — exactly the set the retirement sweep would take) or to their complement ('used'). Declared as an enum rather than a free string so an unknown value is a 422 and not a 500.

Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Create Variable Deprecated

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
name
required
string (Name) [ 1 .. 100 ] characters ^[a-z][a-z0-9_]*$
variable_type
string (VariableType)
Default: "string"
Enum: "string" "number" "boolean" "date" "datetime" "json" "string_array" "number_array"
description
string (Description)
Default: ""
allowed_values
Array of strings (Allowed Values) <= 500 items
bindings
Array of strings (Bindings) <= 100 items
Json Schema (object) or Json Schema (null) (Json Schema)

JSON Schema fragment refining variable_type: type, format, items, properties, required and the numeric, string and array constraints. Must agree with variable_type (number may narrow to integer, json is an object or array). Documented values stay in allowed_values. null: the type is just variable_type.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "variable_type": "string",
  • "description": "",
  • "allowed_values": [
    ],
  • "bindings": [
    ],
  • "json_schema": { }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "source_name": "string",
  • "variable_type": "string",
  • "description": "string",
  • "allowed_values": [ ],
  • "bindings": [ ],
  • "excluded_from_scans": false,
  • "json_schema": { },
  • "event_count": 0,
  • "context_count": 0,
  • "low_context_count": 0,
  • "high_context_count": 0,
  • "sample_values": [ ],
  • "open_drift_count": 0,
  • "listed_event_count": 0,
  • "required_event_count": 0,
  • "event_names": [ ],
  • "event_refs": [ ]
}

List Variable Values Deprecated

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Clear Variable Values Deprecated

Drop the variable's observed contexts and keep the variable.

Deleting the variable was the only reset available and it takes the description, documented values, bindings, overrides and drift triage with it — none of which a scan rebuilds.

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Context Id (string) or Context Id (null) (Context Id)

Clear one context row instead of all of them. The id is the id on VariableValueContextResponse — the same value /values already returns, so a client can scope the clear to a single (event, field).

Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Event Overrides Deprecated

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List Property Events Deprecated

The events whose property list carries this property, with each entry's required flag, override and last measured presence (F23.8).

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Bulk Upsert Event Overrides Deprecated

Add the property to many events' lists, or apply one patch to each entry: the single PUT's semantics, all or nothing (F23.8).

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
event_ids
required
Array of strings <uuid> (Event Ids) [ 1 .. 5000 ] items [ items <uuid > ]
Required (boolean) or Required (null) (Required)

Whether every occurrence of each event must carry the property.

Array of Values (strings) or Values (null) (Values)

Allowed values for these events, replacing the property's global list. null: no override, the global list applies.

Responses

Request samples

Content type
application/json
{
  • "event_ids": [
    ],
  • "required": true,
  • "values": [
    ]
}

Response samples

Content type
application/json
{
  • "created": 0,
  • "updated": 0,
  • "removed": 0
}

Bulk Delete Event Overrides Deprecated

Take the property off many events' lists (F23.8). Events that do not carry it are skipped, and the audit row names only the entries removed.

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
event_ids
required
Array of strings <uuid> (Event Ids) [ 1 .. 5000 ] items [ items <uuid > ]

Responses

Request samples

Content type
application/json
{
  • "event_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "created": 0,
  • "updated": 0,
  • "removed": 0
}

Upsert Event Override Deprecated

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
event_id
required
string <uuid> (Event Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
Array of Values (strings) or Values (null) (Values)

Allowed values for this event, replacing the variable's global list. null: no override, the global list applies.

Required (boolean) or Required (null) (Required)

Whether every occurrence of the event must carry this property.

Responses

Request samples

Content type
application/json
{
  • "values": [
    ],
  • "required": true
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "variable_id": "8339bd98-4109-4958-960a-f55d5e3ec302",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_name": "string",
  • "values": [
    ],
  • "required": false
}

Delete Event Override Deprecated

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
event_id
required
string <uuid> (Event Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Update Variable Deprecated

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
Name (string) or Name (null) (Name)
VariableType (string) or null
Description (string) or Description (null) (Description)
Array of Allowed Values (strings) or Allowed Values (null) (Allowed Values)
Array of Bindings (strings) or Bindings (null) (Bindings)
Excluded From Scans (boolean) or Excluded From Scans (null) (Excluded From Scans)
Json Schema (object) or Json Schema (null) (Json Schema)

JSON Schema fragment refining variable_type: type, format, items, properties, required and the numeric, string and array constraints. Must agree with variable_type (number may narrow to integer, json is an object or array). Documented values stay in allowed_values. null: the type is just variable_type.

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "variable_type": "string",
  • "description": "string",
  • "allowed_values": [
    ],
  • "bindings": [
    ],
  • "excluded_from_scans": true,
  • "json_schema": { }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "source_name": "string",
  • "variable_type": "string",
  • "description": "string",
  • "allowed_values": [ ],
  • "bindings": [ ],
  • "excluded_from_scans": false,
  • "json_schema": { },
  • "event_count": 0,
  • "context_count": 0,
  • "low_context_count": 0,
  • "high_context_count": 0,
  • "sample_values": [ ],
  • "open_drift_count": 0,
  • "listed_event_count": 0,
  • "required_event_count": 0,
  • "event_names": [ ],
  • "event_refs": [ ]
}

Delete Variable Deprecated

path Parameters
slug
required
string (Slug)
variable_id
required
string <uuid> (Variable Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

relations

Relationships between plan entities.

List Relations

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Relation

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
source_event_type_id
required
string <uuid> (Source Event Type Id)
target_event_type_id
required
string <uuid> (Target Event Type Id)
source_field_id
required
string <uuid> (Source Field Id)
target_field_id
required
string <uuid> (Target Field Id)
relation_type
string (Relation Type) <= 50 characters
Default: "belongs_to"
description
string (Description)
Default: ""

Responses

Request samples

Content type
application/json
{
  • "source_event_type_id": "e101ab89-ea5f-45aa-b5b7-983418675185",
  • "target_event_type_id": "825466c9-7393-4184-b9b0-7c4b77ed3fa0",
  • "source_field_id": "7b9c5fa5-6c9c-40e1-9dc3-cb2d44ecb47a",
  • "target_field_id": "64e4f54c-73d3-4f44-9b1b-25ec59b9d085",
  • "relation_type": "belongs_to",
  • "description": ""
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "source_event_type_id": "e101ab89-ea5f-45aa-b5b7-983418675185",
  • "target_event_type_id": "825466c9-7393-4184-b9b0-7c4b77ed3fa0",
  • "source_field_id": "7b9c5fa5-6c9c-40e1-9dc3-cb2d44ecb47a",
  • "target_field_id": "64e4f54c-73d3-4f44-9b1b-25ec59b9d085",
  • "relation_type": "string",
  • "description": "string"
}

Update Relation

path Parameters
slug
required
string (Slug)
relation_id
required
string <uuid> (Relation Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
Source Event Type Id (string) or Source Event Type Id (null) (Source Event Type Id)
Target Event Type Id (string) or Target Event Type Id (null) (Target Event Type Id)
Source Field Id (string) or Source Field Id (null) (Source Field Id)
Target Field Id (string) or Target Field Id (null) (Target Field Id)
Relation Type (string) or Relation Type (null) (Relation Type)
Description (string) or Description (null) (Description)

Responses

Request samples

Content type
application/json
{
  • "source_event_type_id": "e101ab89-ea5f-45aa-b5b7-983418675185",
  • "target_event_type_id": "825466c9-7393-4184-b9b0-7c4b77ed3fa0",
  • "source_field_id": "7b9c5fa5-6c9c-40e1-9dc3-cb2d44ecb47a",
  • "target_field_id": "64e4f54c-73d3-4f44-9b1b-25ec59b9d085",
  • "relation_type": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "source_event_type_id": "e101ab89-ea5f-45aa-b5b7-983418675185",
  • "target_event_type_id": "825466c9-7393-4184-b9b0-7c4b77ed3fa0",
  • "source_field_id": "7b9c5fa5-6c9c-40e1-9dc3-cb2d44ecb47a",
  • "target_field_id": "64e4f54c-73d3-4f44-9b1b-25ec59b9d085",
  • "relation_type": "string",
  • "description": "string"
}

Delete Relation

path Parameters
slug
required
string (Slug)
relation_id
required
string <uuid> (Relation Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

scans

Scan configs and warehouse scan/preview jobs.

List Scan Configs

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Scan Config

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
data_source_id
required
string <uuid> (Data Source Id)
Event Type Id (string) or Event Type Id (null) (Event Type Id)
name
required
string (Name) [ 1 .. 255 ] characters
base_query
required
string (Base Query) non-empty
Event Type Column (string) or Event Type Column (null) (Event Type Column)
Time Column (string) or Time Column (null) (Time Column)
Event Name Format (string) or Event Name Format (null) (Event Name Format)
json_value_paths
Array of strings (Json Value Paths)
Array of objects (Event Group Rules)
setup_preset
string (Setup Preset)
Default: "custom"
Enum: "custom" "event_properties"
Event Name Column (string) or Event Name Column (null) (Event Name Column)
Properties Column (string) or Properties Column (null) (Properties Column)
json_string_columns
Array of strings (Json String Columns)
metric_breakdown_columns
Array of strings (Metric Breakdown Columns)
Metric Breakdown Values Limit (integer) or Metric Breakdown Values Limit (null) (Metric Breakdown Values Limit)
distribution_drift_fields
Array of strings (Distribution Drift Fields)
cardinality_threshold
integer (Cardinality Threshold) >= 1
Default: 100
ScanInterval (string) or null
ScanInterval (string) or null
Scan Lookback Hours (integer) or Scan Lookback Hours (null) (Scan Lookback Hours)
Scan Row Limit (integer) or Scan Row Limit (null) (Scan Row Limit)
Metrics Row Limit (integer) or Metrics Row Limit (null) (Metrics Row Limit)
App Version Column (string) or App Version Column (null) (App Version Column)
App Version Keep Releases (integer) or App Version Keep Releases (null) (App Version Keep Releases)
Deprecated

Deprecated compatibility mirror of Project.app_version_keep_releases; caller values are ignored.

App Version Prerelease Pattern (string) or App Version Prerelease Pattern (null) (App Version Prerelease Pattern)
App Version Active Share Min (number) or App Version Active Share Min (null) (App Version Active Share Min)
Platform Column (string) or Platform Column (null) (Platform Column)

Responses

Request samples

Content type
application/json
{
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "name": "string",
  • "base_query": "string",
  • "event_type_column": "string",
  • "time_column": "string",
  • "event_name_format": "string",
  • "json_value_paths": [
    ],
  • "event_group_rules": [
    ],
  • "setup_preset": "custom",
  • "event_name_column": "string",
  • "properties_column": "string",
  • "json_string_columns": [
    ],
  • "metric_breakdown_columns": [
    ],
  • "metric_breakdown_values_limit": 1,
  • "distribution_drift_fields": [
    ],
  • "cardinality_threshold": 100,
  • "interval": "15m",
  • "replay_chunk_interval": "15m",
  • "scan_lookback_hours": 1,
  • "scan_row_limit": 1,
  • "metrics_row_limit": 1,
  • "app_version_column": "string",
  • "app_version_keep_releases": 1,
  • "app_version_prerelease_pattern": "string",
  • "app_version_active_share_min": 0,
  • "platform_column": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "name": "string",
  • "base_query": "string",
  • "event_type_column": "string",
  • "time_column": "string",
  • "event_name_format": "string",
  • "json_value_paths": [
    ],
  • "event_group_rules": [
    ],
  • "setup_preset": "custom",
  • "event_name_column": "string",
  • "properties_column": "string",
  • "json_string_columns": [
    ],
  • "metric_breakdown_columns": [
    ],
  • "metric_breakdown_values_limit": 0,
  • "distribution_drift_fields": [
    ],
  • "cardinality_threshold": 0,
  • "interval": "15m",
  • "replay_chunk_interval": "15m",
  • "scan_lookback_hours": 0,
  • "scan_row_limit": 0,
  • "metrics_row_limit": 0,
  • "app_version_column": "string",
  • "app_version_keep_releases": 0,
  • "app_version_prerelease_pattern": "string",
  • "app_version_active_share_min": 0,
  • "platform_column": "string",
  • "last_event_at": "2019-08-24T14:15:22Z",
  • "last_collection_at": "2019-08-24T14:15:22Z",
  • "freshness": {
    },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "monitoring_enabled": true
}

Get Scan Activity

Each scan's latest job, failing streak and rows read in the last 24 hours.

One request for the whole Scans list, aggregated in SQL, so the streak and the 24h total are exact rather than floors over a capped page of jobs.

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "window_from": "2019-08-24T14:15:22Z",
  • "window_to": "2019-08-24T14:15:22Z",
  • "items": [
    ]
}

Preview Scan Config

Enqueue a preview job; poll GET /preview-jobs/{job_id} for the result.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
data_source_id
required
string <uuid> (Data Source Id)
base_query
required
string (Base Query) non-empty
limit
integer (Limit) [ 1 .. 50 ]
Default: 10
json_value_paths
Array of strings (Json Value Paths)
Time Column (string) or Time Column (null) (Time Column)
Scan Lookback Hours (integer) or Scan Lookback Hours (null) (Scan Lookback Hours)
include_json_paths
boolean (Include Json Paths)
Default: false
Event Name Column (string) or Event Name Column (null) (Event Name Column)
Properties Column (string) or Properties Column (null) (Properties Column)
json_string_columns
Array of strings (Json String Columns)

Responses

Request samples

Content type
application/json
{
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "base_query": "string",
  • "limit": 10,
  • "json_value_paths": [
    ],
  • "time_column": "string",
  • "scan_lookback_hours": 1,
  • "include_json_paths": false,
  • "event_name_column": "string",
  • "properties_column": "string",
  • "json_string_columns": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "status": "pending",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "result_summary": { },
  • "error_message": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Get Scan Preview Job

path Parameters
slug
required
string (Slug)
job_id
required
string <uuid> (Job Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "status": "pending",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "result_summary": { },
  • "error_message": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Dry Run Scan Config

Enqueue a dry-run; poll GET /dry-run-jobs/{job_id} for the result.

Owner-only for the same reason preview is: the SQL is free text from a draft, executed verbatim against a stored warehouse credential.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)
Data Source Id (string) or Data Source Id (null) (Data Source Id)
Base Query (string) or Base Query (null) (Base Query)
Event Type Id (string) or Event Type Id (null) (Event Type Id)
Event Type Column (string) or Event Type Column (null) (Event Type Column)
Time Column (string) or Time Column (null) (Time Column)
Event Name Format (string) or Event Name Format (null) (Event Name Format)
Array of objects (Event Group Rules)
json_value_paths
Array of strings (Json Value Paths)
setup_preset
string (Setup Preset)
Default: "custom"
Enum: "custom" "event_properties"
Event Name Column (string) or Event Name Column (null) (Event Name Column)
Properties Column (string) or Properties Column (null) (Properties Column)
json_string_columns
Array of strings (Json String Columns)
cardinality_threshold
integer (Cardinality Threshold) >= 1
Default: 100
App Version Column (string) or App Version Column (null) (App Version Column)
Platform Column (string) or Platform Column (null) (Platform Column)
Scan Lookback Hours (integer) or Scan Lookback Hours (null) (Scan Lookback Hours)
sample_row_limit
integer (Sample Row Limit) [ 100 .. 20000 ]
Default: 5000

Responses

Request samples

Content type
application/json
{
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "base_query": "string",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "event_type_column": "string",
  • "time_column": "string",
  • "event_name_format": "string",
  • "event_group_rules": [
    ],
  • "json_value_paths": [
    ],
  • "setup_preset": "custom",
  • "event_name_column": "string",
  • "properties_column": "string",
  • "json_string_columns": [
    ],
  • "cardinality_threshold": 100,
  • "app_version_column": "string",
  • "platform_column": "string",
  • "scan_lookback_hours": 1,
  • "sample_row_limit": 5000
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "status": "pending",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "result_summary": {
    },
  • "error_message": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Get Scan Dry Run Job

path Parameters
slug
required
string (Slug)
job_id
required
string <uuid> (Job Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "status": "pending",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "result_summary": {
    },
  • "error_message": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Get Scan Config

path Parameters
slug
required
string (Slug)
scan_id
required
string <uuid> (Scan Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "name": "string",
  • "base_query": "string",
  • "event_type_column": "string",
  • "time_column": "string",
  • "event_name_format": "string",
  • "json_value_paths": [
    ],
  • "event_group_rules": [
    ],
  • "setup_preset": "custom",
  • "event_name_column": "string",
  • "properties_column": "string",
  • "json_string_columns": [
    ],
  • "metric_breakdown_columns": [
    ],
  • "metric_breakdown_values_limit": 0,
  • "distribution_drift_fields": [
    ],
  • "cardinality_threshold": 0,
  • "interval": "15m",
  • "replay_chunk_interval": "15m",
  • "scan_lookback_hours": 0,
  • "scan_row_limit": 0,
  • "metrics_row_limit": 0,
  • "app_version_column": "string",
  • "app_version_keep_releases": 0,
  • "app_version_prerelease_pattern": "string",
  • "app_version_active_share_min": 0,
  • "platform_column": "string",
  • "last_event_at": "2019-08-24T14:15:22Z",
  • "last_collection_at": "2019-08-24T14:15:22Z",
  • "freshness": {
    },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "last_metrics_run_at": "2019-08-24T14:15:22Z",
  • "next_metrics_run_at": "2019-08-24T14:15:22Z",
  • "monitoring_enabled": true
}

Update Scan Config

path Parameters
slug
required
string (Slug)
scan_id
required
string <uuid> (Scan Id)
Request Body schema: application/json
required
Event Type Id (string) or Event Type Id (null) (Event Type Id)
Name (string) or Name (null) (Name)
Base Query (string) or Base Query (null) (Base Query)
Event Type Column (string) or Event Type Column (null) (Event Type Column)
Time Column (string) or Time Column (null) (Time Column)
Event Name Format (string) or Event Name Format (null) (Event Name Format)
Array of Json Value Paths (strings) or Json Value Paths (null) (Json Value Paths)
Array of Event Group Rules (objects) or Event Group Rules (null) (Event Group Rules)
Setup Preset (string) or Setup Preset (null) (Setup Preset)
Event Name Column (string) or Event Name Column (null) (Event Name Column)
Properties Column (string) or Properties Column (null) (Properties Column)
Array of Json String Columns (strings) or Json String Columns (null) (Json String Columns)
Array of Metric Breakdown Columns (strings) or Metric Breakdown Columns (null) (Metric Breakdown Columns)
Metric Breakdown Values Limit (integer) or Metric Breakdown Values Limit (null) (Metric Breakdown Values Limit)
Array of Distribution Drift Fields (strings) or Distribution Drift Fields (null) (Distribution Drift Fields)
Cardinality Threshold (integer) or Cardinality Threshold (null) (Cardinality Threshold)
ScanInterval (string) or null
ScanInterval (string) or null
Scan Lookback Hours (integer) or Scan Lookback Hours (null) (Scan Lookback Hours)
Scan Row Limit (integer) or Scan Row Limit (null) (Scan Row Limit)
Metrics Row Limit (integer) or Metrics Row Limit (null) (Metrics Row Limit)
App Version Column (string) or App Version Column (null) (App Version Column)
App Version Keep Releases (integer) or App Version Keep Releases (null) (App Version Keep Releases)
Deprecated

Deprecated compatibility mirror of Project.app_version_keep_releases; caller values are ignored.

App Version Prerelease Pattern (string) or App Version Prerelease Pattern (null) (App Version Prerelease Pattern)
App Version Active Share Min (number) or App Version Active Share Min (null) (App Version Active Share Min)
Platform Column (string) or Platform Column (null) (Platform Column)

Responses

Request samples

Content type
application/json
{
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "name": "string",
  • "base_query": "string",
  • "event_type_column": "string",
  • "time_column": "string",
  • "event_name_format": "string",
  • "json_value_paths": [
    ],
  • "event_group_rules": [
    ],
  • "setup_preset": "custom",
  • "event_name_column": "string",
  • "properties_column": "string",
  • "json_string_columns": [
    ],
  • "metric_breakdown_columns": [
    ],
  • "metric_breakdown_values_limit": 1,
  • "distribution_drift_fields": [
    ],
  • "cardinality_threshold": 1,
  • "interval": "15m",
  • "replay_chunk_interval": "15m",
  • "scan_lookback_hours": 1,
  • "scan_row_limit": 1,
  • "metrics_row_limit": 1,
  • "app_version_column": "string",
  • "app_version_keep_releases": 1,
  • "app_version_prerelease_pattern": "string",
  • "app_version_active_share_min": 0,
  • "platform_column": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "name": "string",
  • "base_query": "string",
  • "event_type_column": "string",
  • "time_column": "string",
  • "event_name_format": "string",
  • "json_value_paths": [
    ],
  • "event_group_rules": [
    ],
  • "setup_preset": "custom",
  • "event_name_column": "string",
  • "properties_column": "string",
  • "json_string_columns": [
    ],
  • "metric_breakdown_columns": [
    ],
  • "metric_breakdown_values_limit": 0,
  • "distribution_drift_fields": [
    ],
  • "cardinality_threshold": 0,
  • "interval": "15m",
  • "replay_chunk_interval": "15m",
  • "scan_lookback_hours": 0,
  • "scan_row_limit": 0,
  • "metrics_row_limit": 0,
  • "app_version_column": "string",
  • "app_version_keep_releases": 0,
  • "app_version_prerelease_pattern": "string",
  • "app_version_active_share_min": 0,
  • "platform_column": "string",
  • "last_event_at": "2019-08-24T14:15:22Z",
  • "last_collection_at": "2019-08-24T14:15:22Z",
  • "freshness": {
    },
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "monitoring_enabled": true
}

Delete Scan Config

path Parameters
slug
required
string (Slug)
scan_id
required
string <uuid> (Scan Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Get Platform Presence

Per-event platform presence matrix for the scan's platform_column.

Empty when the scan has no platform_column set (the platform dimension is inert), so callers can render the panel unconditionally.

path Parameters
slug
required
string (Slug)
scan_id
required
string <uuid> (Scan Id)

Responses

Response samples

Content type
application/json
{
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "platform_column": "string",
  • "platforms": [
    ],
  • "items": [
    ]
}

Run Scan

path Parameters
slug
required
string (Slug)
scan_id
required
string <uuid> (Scan Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "status": "pending",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "result_summary": { },
  • "error_message": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Apply Scan Event Groups

path Parameters
slug
required
string (Slug)
scan_id
required
string <uuid> (Scan Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "status": "pending",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "result_summary": { },
  • "error_message": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Replay Scan Metrics

path Parameters
slug
required
string (Slug)
scan_id
required
string <uuid> (Scan Id)
Request Body schema: application/json
required
time_from
required
string <date-time> (Time From)
time_to
required
string <date-time> (Time To)

Responses

Request samples

Content type
application/json
{
  • "time_from": "2019-08-24T14:15:22Z",
  • "time_to": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "status": "pending",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "result_summary": { },
  • "error_message": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

List Scan Jobs

Newest jobs first, capped.

This was uncapped, and the Scans tab fans it out over every scan config on a 10-second poll: production configs hold 1,366-1,551 jobs each, so an open tab pulled roughly 4,400 rows every 10 seconds and rendered them unvirtualized.

path Parameters
slug
required
string (Slug)
scan_id
required
string <uuid> (Scan Id)
query Parameters
limit
integer (Limit) [ 1 .. 200 ]
Default: 50

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Scan Job

path Parameters
slug
required
string (Slug)
scan_id
required
string <uuid> (Scan Id)
job_id
required
string <uuid> (Job Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "status": "pending",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "result_summary": { },
  • "error_message": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Cancel Scan Job

path Parameters
slug
required
string (Slug)
scan_id
required
string <uuid> (Scan Id)
job_id
required
string <uuid> (Job Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "status": "pending",
  • "started_at": "2019-08-24T14:15:22Z",
  • "completed_at": "2019-08-24T14:15:22Z",
  • "result_summary": { },
  • "error_message": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

List Source Freshness

Each scan config's freshness: fresh, late, overdue or unknown.

Computed on read from what the latest collection recorded, so a scan whose worker has stopped turns overdue without any job having to say so.

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

metrics

Computed metrics and metric definitions.

Get Events Metrics

path Parameters
slug
required
string (Slug)
query Parameters
Event Type Id (string) or Event Type Id (null) (Event Type Id)
Search (string) or Search (null) (Search)
Tag (string) or Tag (null) (Tag)
Array of Status (strings) or Status (null) (Status)
From (string) or From (null) (From)
To (string) or To (null) (To)
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "scope": "string",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scan_config_name": "string",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "interval": "15m",
  • "latest_signal": {
    },
  • "sigma_threshold": 4,
  • "last_collected_at": "2019-08-24T14:15:22Z",
  • "next_collection_at": "2019-08-24T14:15:22Z",
  • "week_total": 0,
  • "prior_week_total": 0,
  • "data": [
    ],
  • "forecast": [ ]
}

Get Events Window Metrics

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
event_ids
required
Array of strings <uuid> (Event Ids) [ items <uuid > ]
Time From (string) or Time From (null) (Time From)
Time To (string) or Time To (null) (Time To)

Responses

Request samples

Content type
application/json
{
  • "event_ids": [
    ],
  • "time_from": "2019-08-24T14:15:22Z",
  • "time_to": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
[
  • {
    }
]

Get Overview Kpi Series

path Parameters
slug
required
string (Slug)
query Parameters
days
integer (Days) [ 1 .. 365 ]
Default: 14

Responses

Response samples

Content type
application/json
{
  • "days": 0,
  • "new_events": [
    ]
}

Get Overview Top Events

path Parameters
slug
required
string (Slug)
query Parameters
window_hours
integer (Window Hours) [ 1 .. 720 ]
Default: 48
limit
integer (Limit) [ 1 .. 100 ]
Default: 6

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Project Total Metrics

path Parameters
slug
required
string (Slug)
query Parameters
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)
From (string) or From (null) (From)
To (string) or To (null) (To)

Responses

Response samples

Content type
application/json
{
  • "scope": "string",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scan_config_name": "string",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "interval": "15m",
  • "latest_signal": {
    },
  • "sigma_threshold": 4,
  • "last_collected_at": "2019-08-24T14:15:22Z",
  • "next_collection_at": "2019-08-24T14:15:22Z",
  • "week_total": 0,
  • "prior_week_total": 0,
  • "data": [
    ],
  • "forecast": [ ]
}

Get Event Metrics

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
query Parameters
From (string) or From (null) (From)
To (string) or To (null) (To)

Responses

Response samples

Content type
application/json
{
  • "scope": "string",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scan_config_name": "string",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "interval": "15m",
  • "latest_signal": {
    },
  • "sigma_threshold": 4,
  • "last_collected_at": "2019-08-24T14:15:22Z",
  • "next_collection_at": "2019-08-24T14:15:22Z",
  • "week_total": 0,
  • "prior_week_total": 0,
  • "data": [
    ],
  • "forecast": [ ]
}

Get Event Metric Breakdowns

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
query Parameters
Column (string) or Column (null) (Column)
From (string) or From (null) (From)
To (string) or To (null) (To)

Responses

Response samples

Content type
application/json
{
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "interval": "15m",
  • "columns": [
    ],
  • "selected_column": "string",
  • "series": [
    ]
}

Get Event Type Metrics

path Parameters
slug
required
string (Slug)
event_type_id
required
string <uuid> (Event Type Id)
query Parameters
From (string) or From (null) (From)
To (string) or To (null) (To)

Responses

Response samples

Content type
application/json
{
  • "scope": "string",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scan_config_name": "string",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "interval": "15m",
  • "latest_signal": {
    },
  • "sigma_threshold": 4,
  • "last_collected_at": "2019-08-24T14:15:22Z",
  • "next_collection_at": "2019-08-24T14:15:22Z",
  • "week_total": 0,
  • "prior_week_total": 0,
  • "data": [
    ],
  • "forecast": [ ]
}

Get Active Signals

Cacheable no-args variant. For filtering by a large event-id list (>>a few), prefer POST /anomalies/signals/query — GET's query-string overflow is real once you cross ~50 ids (proxy/browser limits).

expanded=true (the AnomaliesPage view) also surfaces per-event scopes and keeps each incident's child rows, tagged incident_child rather than collapsed into the parent project_total signal.

needs_verdict=true keeps only signals with no verdict that nothing hides — the Anomalies page's default filter (F01, #254).

path Parameters
slug
required
string (Slug)
query Parameters
Array of Event Id (strings) or Event Id (null) (Event Id)
expanded
boolean (Expanded)
Default: false
needs_verdict
boolean (Needs Verdict)
Default: false

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Query Active Signals

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
event_ids
Array of strings <uuid> (Event Ids) [ items <uuid > ]
Default: []

Responses

Request samples

Content type
application/json
{
  • "event_ids": [ ]
}

Response samples

Content type
application/json
[
  • {
    }
]

Get Anomaly Attribution

Why did it change, for one anomaly (F02, #255): the contribution breakdown and release context stored when it was detected, for lazy loading (a chart marker other than the latest signal). 404 when the anomaly is not this project's.

path Parameters
slug
required
string (Slug)
anomaly_id
required
string <uuid> (Anomaly Id)

Responses

Response samples

Content type
application/json
{
  • "anomaly_id": "ad2dfd01-0c70-4540-950a-db06805bc49d",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "attribution_status": "ready",
  • "attribution": {
    }
}

Query Signal Series

Row sparklines for many open signals in one request. POST for the same reason as /signals/query: the batch outgrows a query string.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
required
Array of objects (Scopes) <= 500 items
Array (<= 500 items)
scan_config_id
required
string <uuid> (Scan Config Id)
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref)
bucket
required
string <date-time> (Bucket)

Responses

Request samples

Content type
application/json
{
  • "scopes": [
    ]
}

Response samples

Content type
application/json
[
  • {
    }
]

Acknowledge Signal

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref) [ 1 .. 64 ] characters
bucket
required
string <date-time> (Bucket)

Responses

Request samples

Content type
application/json
{
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "bucket": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "acknowledged_at": "2019-08-24T14:15:22Z",
  • "muted": false,
  • "muted_until": "2019-08-24T14:15:22Z",
  • "expected": false,
  • "expected_note": "string",
  • "hidden": false
}

Unacknowledge Signal

path Parameters
slug
required
string (Slug)
query Parameters
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref) [ 1 .. 64 ] characters
bucket
required
string <date-time> (Bucket)
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Mute Signal Scope

Hide every signal on the scope for 24 h, 7 d or until unmuted.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref) [ 1 .. 64 ] characters
bucket
required
string <date-time> (Bucket)
duration
required
string (Duration)
Enum: "24h" "7d" "until_unmuted"

Responses

Request samples

Content type
application/json
{
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "bucket": "2019-08-24T14:15:22Z",
  • "duration": "24h"
}

Response samples

Content type
application/json
{
  • "acknowledged_at": "2019-08-24T14:15:22Z",
  • "muted": false,
  • "muted_until": "2019-08-24T14:15:22Z",
  • "expected": false,
  • "expected_note": "string",
  • "hidden": false
}

Unmute Signal Scope

path Parameters
slug
required
string (Slug)
query Parameters
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref) [ 1 .. 64 ] characters
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Mark Signal Expected

Record a known cause: annotate the signal's bucket and hide the signal.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref) [ 1 .. 64 ] characters
bucket
required
string <date-time> (Bucket)
Note (string) or Note (null) (Note)

Responses

Request samples

Content type
application/json
{
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "bucket": "2019-08-24T14:15:22Z",
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "acknowledged_at": "2019-08-24T14:15:22Z",
  • "muted": false,
  • "muted_until": "2019-08-24T14:15:22Z",
  • "expected": false,
  • "expected_note": "string",
  • "hidden": false
}

Unmark Signal Expected

path Parameters
slug
required
string (Slug)
query Parameters
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref) [ 1 .. 64 ] characters
bucket
required
string <date-time> (Bucket)
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Notify Signal Owners

Email the owners of a signal's event type / metric once, now (F07, #260).

The "Notify owners" action for a signal no rule routed to an incident. One row per owner tried; no owners is an empty list; an unknown signal is 404. An owner emailed about this signal in the last 10 minutes is skipped ("notified N minutes ago"); at most 20 owners are contacted per request.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref) [ 1 .. 64 ] characters
bucket
required
string <date-time> (Bucket)

Responses

Request samples

Content type
application/json
{
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "bucket": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "owners": [
    ]
}

Set Signal Verdict

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref) [ 1 .. 64 ] characters
bucket
required
string <date-time> (Bucket)
verdict
required
string (SignalVerdict)
Enum: "expected" "tracking_bug" "false_positive" "real_issue"

The verdict half of SignalTriageAction: what a signal turned out to be.

SignalExpectedReason (string) or null
Note (string) or Note (null) (Note)

Responses

Request samples

Content type
application/json
{
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "bucket": "2019-08-24T14:15:22Z",
  • "verdict": "expected",
  • "expected_reason": "campaign",
  • "note": "string"
}

Response samples

Content type
application/json
{
  • "acknowledged_at": "2019-08-24T14:15:22Z",
  • "muted": false,
  • "muted_until": "2019-08-24T14:15:22Z",
  • "expected": false,
  • "expected_note": "string",
  • "hidden": false,
  • "verdict": {
    },
  • "incident": {
    }
}

Clear Signal Verdict

path Parameters
slug
required
string (Slug)
query Parameters
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref) [ 1 .. 64 ] characters
bucket
required
string <date-time> (Bucket)
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Get Signal Verdict Counts

Verdict tallies over the open signals (for the project health score).

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "needs_verdict": 0,
  • "expected": 0,
  • "tracking_bug": 0,
  • "false_positive": 0,
  • "real_issue": 0
}

Get Top Movers

Top-N breakdown rows that "moved" a given anomaly bucket, |z| desc.

path Parameters
slug
required
string (Slug)
scan_config_id
required
string <uuid> (Scan Config Id)
query Parameters
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref)
bucket
required
string <date-time> (Bucket)
limit
integer (Limit) [ 1 .. 100 ]
Default: 10

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Seasonality Heatmap

7×24 hour-of-day × weekday heatmap of volume and anomaly density.

path Parameters
slug
required
string (Slug)
scan_config_id
required
string <uuid> (Scan Config Id)
query Parameters
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref)
From (string) or From (null) (From)
To (string) or To (null) (To)

Responses

Response samples

Content type
application/json
{
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "cells": [
    ],
  • "max_count": 0,
  • "total_count": 0,
  • "interval": "string",
  • "hourly_resolution": true
}

Get Breakdown Timeline

Per-bucket count timeline for one breakdown_value (drill-down).

path Parameters
slug
required
string (Slug)
scan_config_id
required
string <uuid> (Scan Config Id)
query Parameters
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref)
breakdown_column
required
string (Breakdown Column)
breakdown_value
required
string (Breakdown Value)
is_other
boolean (Is Other)
Default: false
From (string) or From (null) (From)
To (string) or To (null) (To)

Responses

Response samples

Content type
application/json
{
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "breakdown_column": "string",
  • "breakdown_value": "string",
  • "is_other": true,
  • "interval": "15m",
  • "data": [
    ]
}

Get App Version Series

path Parameters
slug
required
string (Slug)
scan_config_id
required
string <uuid> (Scan Config Id)
query Parameters
scope_type
string (MetricScopeType)
Default: "project_total"
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
Scope Ref (string) or Scope Ref (null) (Scope Ref)
From (string) or From (null) (From)
To (string) or To (null) (To)

Responses

Response samples

Content type
application/json
{
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "app_version_column": "string",
  • "interval": "15m",
  • "latest_version": "string",
  • "sigma_threshold": 4,
  • "versions": [
    ],
  • "series": [
    ]
}

Get App Version Adoption

path Parameters
slug
required
string (Slug)
scan_config_id
required
string <uuid> (Scan Config Id)
query Parameters
From (string) or From (null) (From)
To (string) or To (null) (To)

Responses

Response samples

Content type
application/json
{
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "app_version_column": "string",
  • "interval": "15m",
  • "latest_version": "string",
  • "sigma_threshold": 4,
  • "versions": [
    ],
  • "series": [
    ],
  • "totals": [
    ]
}

Get Release Regressions

path Parameters
slug
required
string (Slug)
scan_config_id
required
string <uuid> (Scan Config Id)
query Parameters
MetricScopeType (string) or Scope Type (null) (Scope Type)

Responses

Response samples

Content type
application/json
{
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "app_version_column": "string",
  • "latest_version": "string",
  • "comparability": [
    ],
  • "items": [
    ]
}

Get Distribution Drifts

path Parameters
slug
required
string (Slug)
query Parameters
scope_type
required
string (MetricScopeType)
Enum: "project_total" "event_type" "event" "schema" "distribution" "release_regression" "metric" "variable_value_drift" "source_freshness" "lifecycle" "property_drift"
scope_ref
required
string (Scope Ref)
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)
From (string) or From (null) (From)
To (string) or To (null) (To)

Responses

Response samples

Content type
application/json
{
  • "scope": "string",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "fields": [
    ],
  • "data": [
    ]
}

reconciliation

Plan-vs-warehouse reconciliation runs.

List Shadow Events

path Parameters
slug
required
string (Slug)
query Parameters
ShadowEventStatus (string) or Status (null) (Status)
limit
integer (Limit) [ 1 .. 500 ]
Default: 100
offset
integer (Offset) >= 0
Default: 0

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0,
  • "new_count": 0
}

Accept Shadow Event

path Parameters
slug
required
string (Slug)
candidate_id
required
string <uuid> (Candidate Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
Event Type Id (string) or Event Type Id (null) (Event Type Id)
Name (string) or Name (null) (Name)

Responses

Request samples

Content type
application/json
{
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "candidate_id": "2f28f791-f0fd-4155-a356-c24e996beeda",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "status": "new"
}

Dismiss Shadow Event

path Parameters
slug
required
string (Slug)
candidate_id
required
string <uuid> (Candidate Id)

Responses

Response samples

Content type
application/json
{
  • "candidate_id": "2f28f791-f0fd-4155-a356-c24e996beeda",
  • "status": "new"
}

Batch Shadow Events

Accept or dismiss many inbox rows in one request.

Each row is handled and audited exactly as its single route would, and a refused row is reported in results without stopping the rest.

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
action
required
string (Action)
Enum: "accept" "dismiss"
required
Array of objects (Items) [ 1 .. 200 ] items

Responses

Request samples

Content type
application/json
{
  • "action": "accept",
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "results": [
    ],
  • "succeeded": 0,
  • "failed": 0
}

List Dead Events

path Parameters
slug
required
string (Slug)
query Parameters
days
integer (Days) [ 1 .. 365 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0,
  • "days": 0
}

Archive Dead Events

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
event_ids
required
Array of strings <uuid> (Event Ids) non-empty [ items <uuid > ]
status
string (EventStatus)
Default: "archived"
Enum: "draft" "in_review" "ready_for_dev" "implemented" "live" "deprecated" "archived"

Responses

Request samples

Content type
application/json
{
  • "event_ids": [
    ],
  • "status": "draft"
}

Response samples

Content type
application/json
{
  • "event_ids": [
    ],
  • "status": "draft",
  • "archived_count": 0
}

Get Coverage

path Parameters
slug
required
string (Slug)
query Parameters
days
integer (Days) [ 1 .. 180 ]
Default: 14
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "summary": {
    },
  • "days": 0
}

plan-branches

Working branches of a tracking plan.

List Branches

List a project's branches.

include_diff_counts fills ahead / behind_base for each open feature branch (draft, ready_for_review, changes_requested, approved) from a single shared main snapshot, so a branches list does not need one /branches/{id}/diff call per row. Merged and closed branches keep both null, like main. It is opt-in because it costs one plan snapshot per open branch plus one for main; leave it off when you only need the branch rows.

path Parameters
slug
required
string (Slug)
query Parameters
include_diff_counts
boolean (Include Diff Counts)
Default: false

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Create Branch

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
name
required
string (Name) <= 255 characters
description
string (Description)
Default: ""

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": ""
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "kind": "main",
  • "status": "draft",
  • "description": "string",
  • "base_revision_id": "3ded3faf-b36b-49f9-84eb-022d2acef61c",
  • "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
  • "merged_at": "2019-08-24T14:15:22Z",
  • "merged_by": "4f4607b3-7f91-40a2-97ed-fdb9b72f68b8",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "ahead": 0,
  • "behind_base": true
}

Get Branch

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "kind": "main",
  • "status": "draft",
  • "description": "string",
  • "base_revision_id": "3ded3faf-b36b-49f9-84eb-022d2acef61c",
  • "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
  • "merged_at": "2019-08-24T14:15:22Z",
  • "merged_by": "4f4607b3-7f91-40a2-97ed-fdb9b72f68b8",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "ahead": 0,
  • "behind_base": true,
  • "reviewers": [
    ],
  • "approvals": [
    ]
}

Delete Branch

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Transition Branch

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)
Request Body schema: application/json
required
action
required
string (Action)
Enum: "submit" "request_changes" "approve" "reopen" "close"

Responses

Request samples

Content type
application/json
{
  • "action": "submit"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "kind": "main",
  • "status": "draft",
  • "description": "string",
  • "base_revision_id": "3ded3faf-b36b-49f9-84eb-022d2acef61c",
  • "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
  • "merged_at": "2019-08-24T14:15:22Z",
  • "merged_by": "4f4607b3-7f91-40a2-97ed-fdb9b72f68b8",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "ahead": 0,
  • "behind_base": true,
  • "reviewers": [
    ],
  • "approvals": [
    ]
}

Add Reviewer

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)
Request Body schema: application/json
required
user_id
required
string <uuid> (User Id)

Responses

Request samples

Content type
application/json
{
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "created_at": "2019-08-24T14:15:22Z"
}

Remove Reviewer

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)
user_id
required
string <uuid> (User Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Comments

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Comment

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)
Request Body schema: application/json
required
body
required
string (Body)
Parent Id (string) or Parent Id (null) (Parent Id)

Responses

Request samples

Content type
application/json
{
  • "body": "string",
  • "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc",
  • "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef",
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "body": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Delete Comment

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)
comment_id
required
string <uuid> (Comment Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Diff Branch

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)

Responses

Response samples

Content type
application/json
{
  • "entries": [
    ],
  • "summary": {
    },
  • "behind_base": true,
  • "renames": [
    ]
}

Revert Branch Change

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)
Request Body schema: application/json
required
entity_type
required
string (Entity Type)
Enum: "event_type" "field_definition" "event" "variable" "meta_field" "relation"
name
required
string (Name)
Parent (string) or Parent (null) (Parent)
Field (string) or Field (null) (Field)
Entity Id (string) or Entity Id (null) (Entity Id)

Responses

Request samples

Content type
application/json
{
  • "entity_type": "event_type",
  • "name": "string",
  • "parent": "string",
  • "field": "string",
  • "entity_id": "string"
}

Response samples

Content type
application/json
{
  • "entries": [
    ],
  • "summary": {
    },
  • "behind_base": true,
  • "renames": [
    ]
}

Get Branch Conflicts

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)

Responses

Response samples

Content type
application/json
{
  • "entities": [
    ],
  • "unresolved_count": 0,
  • "behind": false,
  • "overlap_count": 0,
  • "merge_blocked": false,
  • "updatable": true
}

Preview Update From Main

What "Update from main" would bring onto the branch, and what overlaps.

Read-only. main_hash is main as this preview read it; send it back as expected_main_hash so the update refuses (409 main_moved) rather than apply changes nobody reviewed.

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)

Responses

Response samples

Content type
application/json
{
  • "behind": true,
  • "updatable": true,
  • "blockers": [
    ],
  • "base_revision_id": "3ded3faf-b36b-49f9-84eb-022d2acef61c",
  • "main_hash": "string",
  • "main_changes": [
    ],
  • "conflicts": {
    }
}

Update From Main

Three-way merge main INTO the branch; the branch's base becomes main.

Every field both sides changed needs a choice — ours takes main's value, theirs keeps the branch's — given inline in resolutions or saved earlier through /resolutions (stored choices count only when expected_main_hash is sent). Refusals, all 409 and all writing nothing: unresolved_conflicts (with the full conflicts list), update_blocked (the preview's blockers), main_moved, incomplete_base_snapshot, update_constraint_violation, and a merged or closed branch. A branch already level with main answers 200 with updated: false.

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)
Request Body schema: application/json
required
Expected Main Hash (string) or Expected Main Hash (null) (Expected Main Hash)
Array of objects (Resolutions) <= 5000 items

Responses

Request samples

Content type
application/json
{
  • "expected_main_hash": "string",
  • "resolutions": [
    ]
}

Response samples

Content type
application/json
{
  • "updated": true,
  • "branch": {
    },
  • "applied": [
    ],
  • "previous_base_revision_id": "97b8c6db-2dd9-4a49-801d-d4ed1237ff5e",
  • "base_revision_id": "3ded3faf-b36b-49f9-84eb-022d2acef61c"
}

Save Branch Resolution

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)
Request Body schema: application/json
required
entity_type
required
string (Entity Type)
Enum: "event_type" "field_definition" "event" "variable" "meta_field" "relation"
entity_name
required
string (Entity Name) [ 1 .. 255 ] characters
field_name
required
string (Field Name) [ 1 .. 80 ] characters
choice
required
string (MergeResolutionChoice)
Enum: "ours" "theirs"

Responses

Request samples

Content type
application/json
{
  • "entity_type": "event_type",
  • "entity_name": "string",
  • "field_name": "string",
  • "choice": "ours"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc",
  • "entity_type": "string",
  • "entity_name": "string",
  • "field_name": "string",
  • "choice": "ours",
  • "resolved_by": "d0d57369-b08b-4db8-8952-8cdeedd9aebc",
  • "created_at": "2019-08-24T14:15:22Z"
}

Delete Branch Resolution

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)
resolution_id
required
string <uuid> (Resolution Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Merge Branch

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "kind": "main",
  • "status": "draft",
  • "description": "string",
  • "base_revision_id": "3ded3faf-b36b-49f9-84eb-022d2acef61c",
  • "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
  • "merged_at": "2019-08-24T14:15:22Z",
  • "merged_by": "4f4607b3-7f91-40a2-97ed-fdb9b72f68b8",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "ahead": 0,
  • "behind_base": true,
  • "reviewers": [
    ],
  • "approvals": [
    ]
}

dependencies

What depends on a plan entity, and what a planned change affects.

Get Dependencies

Upstream and downstream edges of one entity, on ?branch= or main.

An id that no longer resolves answers entity.exists = false with any project-wide rows that still name it, rather than 404.

path Parameters
slug
required
string (Slug)
query Parameters
entity
required
string (Entity) <= 64 characters

The entity to explain, as ':' with kind one of event, event_type, field, variable, metric, fact_table, alert_rule, relation.

depth
integer (Depth) [ 1 .. 2 ]
Default: 1
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "entity": {
    },
  • "upstream": [
    ],
  • "downstream": [
    ],
  • "counts_by_kind": {
    },
  • "possible_counts_by_kind": {
    }
}

Post Impact

What each planned delete / deprecate / rename would affect. Changes nothing.

Always one hop: depth in the body is accepted for compatibility and ignored (use GET /dependencies?depth=2 to walk further).

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
required
Array of objects (Changes) [ 1 .. 200 ] items
depth
integer (Depth)
Default: 1
Enum: 1 2

Responses

Request samples

Content type
application/json
{
  • "changes": [
    ],
  • "depth": 1
}

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Get Branch Impact

The downstream objects a working branch's changes touch, from its diff.

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

plan-revisions

Committed plan revisions and history.

Create Revision

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
summary
string (Summary) <= 2000 characters
Default: ""

Responses

Request samples

Content type
application/json
{
  • "summary": ""
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "summary": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
  • "kind": "snapshot",
  • "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc",
  • "entity_counts": {
    },
  • "payload": { }
}

List Revisions

path Parameters
slug
required
string (Slug)
query Parameters
offset
integer (Offset) >= 0
Default: 0
limit
integer (Limit) [ 1 .. 200 ]
Default: 50

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Get Revision

path Parameters
slug
required
string (Slug)
revision_id
required
string <uuid> (Revision Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "summary": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "created_by": "ee824cad-d7a6-4f48-87dc-e8461a9201c4",
  • "kind": "snapshot",
  • "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc",
  • "entity_counts": {
    },
  • "payload": { }
}

Diff Revision

path Parameters
slug
required
string (Slug)
revision_id
required
string <uuid> (Revision Id)
query Parameters
compare_to
required
string <uuid> (Compare To)

Responses

Response samples

Content type
application/json
{
  • "revision_id": "f8f7f022-982b-4bef-ba7d-4bb808fdbe2a",
  • "compare_to": "846220e4-43c3-4942-997b-fe1dae7730fc",
  • "entries": [
    ],
  • "summary": {
    }
}

plan-validation

Check tracking calls or captured payloads against the plan (tripl check).

Validate Plan

One verdict per tracking call: known event, allowed values, contracts.

Up to 5000 items per request. A null field value means "set at runtime" and is never an error. Changes nothing.

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
required
Array of objects (Items) <= 5000 items
strict
boolean (Strict)
Default: false

Responses

Request samples

Content type
application/json
{
  • "items": [
    ],
  • "strict": false
}

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "summary": {
    }
}

plan-export

Export the plan as JSON Schema or as a model for tripl codegen.

Export Plan

The plan of main (or ?branch=) as a schema bundle or a codegen model.

Deterministic: the same plan exports byte-identical, with the plan revision, the branch and a content hash. Changes nothing.

path Parameters
slug
required
string (Slug)
query Parameters
format
string (Format)
Default: "jsonschema"
Enum: "jsonschema" "codegen_model"

jsonschema: one JSON Schema (draft 2020-12) per event. codegen_model: the plan shaped for tripl codegen.

Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
Example
{
  • "revision": "b587a570-d9a5-40c2-87da-edba28b3005f",
  • "branch": "string",
  • "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc",
  • "plan_hash": "string",
  • "format": "jsonschema",
  • "schemas": {
    }
}

chart-annotations

Annotations overlaid on metric charts.

List Chart Annotations

path Parameters
slug
required
string (Slug)
query Parameters
ChartAnnotationScopeType (string) or Scope Type (null) (Scope Type)
Scope Ref (string) or Scope Ref (null) (Scope Ref)
Time From (string) or Time From (null) (Time From)
Time To (string) or Time To (null) (Time To)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Chart Annotation

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
bucket
required
string <date-time> (Bucket)
label
required
string (Label) [ 1 .. 200 ] characters
Description (string) or Description (null) (Description)
color
string (Color) <= 20 characters
Default: "#ef4444"
ChartAnnotationScopeType (string) or null
Scope Ref (string) or Scope Ref (null) (Scope Ref)
source
string (ChartAnnotationSource)
Default: "manual"
Enum: "manual" "release" "api"

Who put a chart annotation there.

manual is a person in the UI, api is a CI/CLI client posting a deploy marker, and release is the metrics worker marking the bucket an app version activated in. release is reserved to the worker: the create API refuses it, so every release marker is one the activation gate drew.

Url (string) or Url (null) (Url)

Responses

Request samples

Content type
application/json
{
  • "bucket": "2019-08-24T14:15:22Z",
  • "label": "string",
  • "description": "string",
  • "color": "#ef4444",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "source": "manual",
  • "url": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "bucket": "2019-08-24T14:15:22Z",
  • "label": "string",
  • "description": "string",
  • "color": "string",
  • "source": "manual",
  • "url": "string",
  • "created_by_user_id": "209f54c4-4c33-43bc-9c6a-ef4c65ad7473",
  • "created_at": "2019-08-24T14:15:22Z",
  • "scope_name": "string"
}

Delete Chart Annotation

path Parameters
slug
required
string (Slug)
annotation_id
required
string <uuid> (Annotation Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

anomaly-settings

Per-project anomaly detection settings.

Get Project Anomaly Settings

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "anomaly_detection_enabled": true,
  • "detect_project_total": true,
  • "detect_event_types": true,
  • "detect_events": true,
  • "detect_metrics": true,
  • "baseline_window_buckets": 0,
  • "min_history_buckets": 0,
  • "sigma_threshold": 0,
  • "min_expected_count": 0,
  • "recent_signal_window_hours": 0,
  • "anomaly_ingestion_settling_minutes": 0,
  • "holiday_country": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Update Project Anomaly Settings

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Anomaly Detection Enabled (boolean) or Anomaly Detection Enabled (null) (Anomaly Detection Enabled)
Detect Project Total (boolean) or Detect Project Total (null) (Detect Project Total)
Detect Event Types (boolean) or Detect Event Types (null) (Detect Event Types)
Detect Events (boolean) or Detect Events (null) (Detect Events)
Detect Metrics (boolean) or Detect Metrics (null) (Detect Metrics)
Baseline Window Buckets (integer) or Baseline Window Buckets (null) (Baseline Window Buckets)
Min History Buckets (integer) or Min History Buckets (null) (Min History Buckets)
Sigma Threshold (number) or Sigma Threshold (null) (Sigma Threshold)
Min Expected Count (integer) or Min Expected Count (null) (Min Expected Count)
Recent Signal Window Hours (integer) or Recent Signal Window Hours (null) (Recent Signal Window Hours)
Anomaly Ingestion Settling Minutes (integer) or Anomaly Ingestion Settling Minutes (null) (Anomaly Ingestion Settling Minutes)
Holiday Country (string) or Holiday Country (null) (Holiday Country)

Responses

Request samples

Content type
application/json
{
  • "anomaly_detection_enabled": true,
  • "detect_project_total": true,
  • "detect_event_types": true,
  • "detect_events": true,
  • "detect_metrics": true,
  • "baseline_window_buckets": 1,
  • "min_history_buckets": 1,
  • "sigma_threshold": 0.1,
  • "min_expected_count": 0,
  • "recent_signal_window_hours": 1,
  • "anomaly_ingestion_settling_minutes": 1440,
  • "holiday_country": "st"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "anomaly_detection_enabled": true,
  • "detect_project_total": true,
  • "detect_event_types": true,
  • "detect_events": true,
  • "detect_metrics": true,
  • "baseline_window_buckets": 0,
  • "min_history_buckets": 0,
  • "sigma_threshold": 0,
  • "min_expected_count": 0,
  • "recent_signal_window_hours": 0,
  • "anomaly_ingestion_settling_minutes": 0,
  • "holiday_country": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

List Holiday Countries

ISO 3166-1 alpha-2 codes holiday_country accepts (F18).

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
[
  • "string"
]

List Anomaly Scope Overrides

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Delete Anomaly Scope Override

Undo one false-positive ratchet: the scope returns to the project setting.

path Parameters
slug
required
string (Slug)
override_id
required
string <uuid> (Override Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

alerting

Alert rules and delivery destinations.

List Alert Destinations

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Alert Destination

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
type
required
string (AlertDestinationType)
Enum: "slack" "telegram" "webhook" "email" "jira" "linear" "pagerduty" "teams" "demo_sink"
name
required
string (Name) <= 255 characters
enabled
boolean (Enabled)
Default: true
Delivery Schedule Cron (string) or Delivery Schedule Cron (null) (Delivery Schedule Cron)
Webhook Url (string) or Webhook Url (null) (Webhook Url)
Bot Token (string) or Bot Token (null) (Bot Token)
Chat Id (string) or Chat Id (null) (Chat Id)
Target Url (string) or Target Url (null) (Target Url)
Webhook Header Name (string) or Webhook Header Name (null) (Webhook Header Name)
Webhook Header Value (string) or Webhook Header Value (null) (Webhook Header Value)
Email Recipients (string) or Email Recipients (null) (Email Recipients)
Email From Address (string) or Email From Address (null) (Email From Address)
Email Subject Template (string) or Email Subject Template (null) (Email Subject Template)
Jira Base Url (string) or Jira Base Url (null) (Jira Base Url)
Jira Auth Email (string) or Jira Auth Email (null) (Jira Auth Email)
Jira Api Token (string) or Jira Api Token (null) (Jira Api Token)
Jira Project Key (string) or Jira Project Key (null) (Jira Project Key)
Jira Issue Type (string) or Jira Issue Type (null) (Jira Issue Type)
Linear Api Key (string) or Linear Api Key (null) (Linear Api Key)
Linear Team Id (string) or Linear Team Id (null) (Linear Team Id)
Linear State Id (string) or Linear State Id (null) (Linear State Id)
Linear Label Ids (string) or Linear Label Ids (null) (Linear Label Ids)
Pagerduty Routing Key (string) or Pagerduty Routing Key (null) (Pagerduty Routing Key)
Pagerduty Severity (string) or Pagerduty Severity (null) (Pagerduty Severity)
Teams Webhook Url (string) or Teams Webhook Url (null) (Teams Webhook Url)

Responses

Request samples

Content type
application/json
{
  • "type": "slack",
  • "name": "string",
  • "enabled": true,
  • "delivery_schedule_cron": "string",
  • "webhook_url": "string",
  • "bot_token": "string",
  • "chat_id": "string",
  • "target_url": "string",
  • "webhook_header_name": "string",
  • "webhook_header_value": "string",
  • "email_recipients": "string",
  • "email_from_address": "string",
  • "email_subject_template": "string",
  • "jira_base_url": "string",
  • "jira_auth_email": "string",
  • "jira_api_token": "string",
  • "jira_project_key": "string",
  • "jira_issue_type": "string",
  • "linear_api_key": "string",
  • "linear_team_id": "string",
  • "linear_state_id": "string",
  • "linear_label_ids": "string",
  • "pagerduty_routing_key": "string",
  • "pagerduty_severity": "string",
  • "teams_webhook_url": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "type": "slack",
  • "name": "string",
  • "enabled": true,
  • "webhook_set": true,
  • "bot_token_set": true,
  • "chat_id": "string",
  • "target_url_set": true,
  • "webhook_header_name": "string",
  • "email_recipients": "string",
  • "email_from_address": "string",
  • "email_subject_template": "string",
  • "jira_base_url": "string",
  • "jira_auth_email": "string",
  • "jira_api_token_set": true,
  • "jira_project_key": "string",
  • "jira_issue_type": "string",
  • "linear_api_key_set": true,
  • "linear_team_id": "string",
  • "linear_state_id": "string",
  • "linear_label_ids": "string",
  • "pagerduty_routing_key_set": true,
  • "pagerduty_severity": "string",
  • "teams_webhook_set": true,
  • "delivery_schedule_cron": "string",
  • "project_timezone": "UTC",
  • "last_digest_at": "2019-08-24T14:15:22Z",
  • "next_digest_at": "2019-08-24T14:15:22Z",
  • "held_count": 0,
  • "is_local": false,
  • "delivery_count": 0,
  • "incident_count": 0,
  • "rules": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Get Monitors Summary

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "monitors": [
    ],
  • "firing_count": 0,
  • "warning_count": 0,
  • "healthy_count": 0,
  • "total": 0,
  • "scope_readiness": {
    }
}

Get Alert Destination

path Parameters
slug
required
string (Slug)
destination_id
required
string <uuid> (Destination Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "type": "slack",
  • "name": "string",
  • "enabled": true,
  • "webhook_set": true,
  • "bot_token_set": true,
  • "chat_id": "string",
  • "target_url_set": true,
  • "webhook_header_name": "string",
  • "email_recipients": "string",
  • "email_from_address": "string",
  • "email_subject_template": "string",
  • "jira_base_url": "string",
  • "jira_auth_email": "string",
  • "jira_api_token_set": true,
  • "jira_project_key": "string",
  • "jira_issue_type": "string",
  • "linear_api_key_set": true,
  • "linear_team_id": "string",
  • "linear_state_id": "string",
  • "linear_label_ids": "string",
  • "pagerduty_routing_key_set": true,
  • "pagerduty_severity": "string",
  • "teams_webhook_set": true,
  • "delivery_schedule_cron": "string",
  • "project_timezone": "UTC",
  • "last_digest_at": "2019-08-24T14:15:22Z",
  • "next_digest_at": "2019-08-24T14:15:22Z",
  • "held_count": 0,
  • "is_local": false,
  • "delivery_count": 0,
  • "incident_count": 0,
  • "rules": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Update Alert Destination

path Parameters
slug
required
string (Slug)
destination_id
required
string <uuid> (Destination Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Enabled (boolean) or Enabled (null) (Enabled)
Delivery Schedule Cron (string) or Delivery Schedule Cron (null) (Delivery Schedule Cron)
Webhook Url (string) or Webhook Url (null) (Webhook Url)
Bot Token (string) or Bot Token (null) (Bot Token)
Chat Id (string) or Chat Id (null) (Chat Id)
Target Url (string) or Target Url (null) (Target Url)
Webhook Header Name (string) or Webhook Header Name (null) (Webhook Header Name)
Webhook Header Value (string) or Webhook Header Value (null) (Webhook Header Value)
Email Recipients (string) or Email Recipients (null) (Email Recipients)
Email From Address (string) or Email From Address (null) (Email From Address)
Email Subject Template (string) or Email Subject Template (null) (Email Subject Template)
Jira Base Url (string) or Jira Base Url (null) (Jira Base Url)
Jira Auth Email (string) or Jira Auth Email (null) (Jira Auth Email)
Jira Api Token (string) or Jira Api Token (null) (Jira Api Token)
Jira Project Key (string) or Jira Project Key (null) (Jira Project Key)
Jira Issue Type (string) or Jira Issue Type (null) (Jira Issue Type)
Linear Api Key (string) or Linear Api Key (null) (Linear Api Key)
Linear Team Id (string) or Linear Team Id (null) (Linear Team Id)
Linear State Id (string) or Linear State Id (null) (Linear State Id)
Linear Label Ids (string) or Linear Label Ids (null) (Linear Label Ids)
Pagerduty Routing Key (string) or Pagerduty Routing Key (null) (Pagerduty Routing Key)
Pagerduty Severity (string) or Pagerduty Severity (null) (Pagerduty Severity)
Teams Webhook Url (string) or Teams Webhook Url (null) (Teams Webhook Url)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "enabled": true,
  • "delivery_schedule_cron": "string",
  • "webhook_url": "string",
  • "bot_token": "string",
  • "chat_id": "string",
  • "target_url": "string",
  • "webhook_header_name": "string",
  • "webhook_header_value": "string",
  • "email_recipients": "string",
  • "email_from_address": "string",
  • "email_subject_template": "string",
  • "jira_base_url": "string",
  • "jira_auth_email": "string",
  • "jira_api_token": "string",
  • "jira_project_key": "string",
  • "jira_issue_type": "string",
  • "linear_api_key": "string",
  • "linear_team_id": "string",
  • "linear_state_id": "string",
  • "linear_label_ids": "string",
  • "pagerduty_routing_key": "string",
  • "pagerduty_severity": "string",
  • "teams_webhook_url": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "type": "slack",
  • "name": "string",
  • "enabled": true,
  • "webhook_set": true,
  • "bot_token_set": true,
  • "chat_id": "string",
  • "target_url_set": true,
  • "webhook_header_name": "string",
  • "email_recipients": "string",
  • "email_from_address": "string",
  • "email_subject_template": "string",
  • "jira_base_url": "string",
  • "jira_auth_email": "string",
  • "jira_api_token_set": true,
  • "jira_project_key": "string",
  • "jira_issue_type": "string",
  • "linear_api_key_set": true,
  • "linear_team_id": "string",
  • "linear_state_id": "string",
  • "linear_label_ids": "string",
  • "pagerduty_routing_key_set": true,
  • "pagerduty_severity": "string",
  • "teams_webhook_set": true,
  • "delivery_schedule_cron": "string",
  • "project_timezone": "UTC",
  • "last_digest_at": "2019-08-24T14:15:22Z",
  • "next_digest_at": "2019-08-24T14:15:22Z",
  • "held_count": 0,
  • "is_local": false,
  • "delivery_count": 0,
  • "incident_count": 0,
  • "rules": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Delete Alert Destination

path Parameters
slug
required
string (Slug)
destination_id
required
string <uuid> (Destination Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Test Alert Destination Draft

Send the test message through settings that are not saved yet.

The destination dialog's "Send test": an unsaved destination, or an edit in progress, where destination_id lends the stored secrets the form left blank. Same contract as the saved destination's Test — editor-only, always 200 with ok/error — and the same audit action, so "who pressed Test" has one place to look whichever button it was.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Destination Id (string) or Destination Id (null) (Destination Id)
type
required
string (AlertDestinationType)
Enum: "slack" "telegram" "webhook" "email" "jira" "linear" "pagerduty" "teams" "demo_sink"
Name (string) or Name (null) (Name)
Webhook Url (string) or Webhook Url (null) (Webhook Url)
Bot Token (string) or Bot Token (null) (Bot Token)
Chat Id (string) or Chat Id (null) (Chat Id)
Target Url (string) or Target Url (null) (Target Url)
Webhook Header Name (string) or Webhook Header Name (null) (Webhook Header Name)
Webhook Header Value (string) or Webhook Header Value (null) (Webhook Header Value)
Email Recipients (string) or Email Recipients (null) (Email Recipients)
Email From Address (string) or Email From Address (null) (Email From Address)
Jira Base Url (string) or Jira Base Url (null) (Jira Base Url)
Jira Auth Email (string) or Jira Auth Email (null) (Jira Auth Email)
Jira Api Token (string) or Jira Api Token (null) (Jira Api Token)
Jira Project Key (string) or Jira Project Key (null) (Jira Project Key)
Jira Issue Type (string) or Jira Issue Type (null) (Jira Issue Type)
Linear Api Key (string) or Linear Api Key (null) (Linear Api Key)
Linear Team Id (string) or Linear Team Id (null) (Linear Team Id)
Linear State Id (string) or Linear State Id (null) (Linear State Id)
Linear Label Ids (string) or Linear Label Ids (null) (Linear Label Ids)
Pagerduty Routing Key (string) or Pagerduty Routing Key (null) (Pagerduty Routing Key)
Pagerduty Severity (string) or Pagerduty Severity (null) (Pagerduty Severity)
Teams Webhook Url (string) or Teams Webhook Url (null) (Teams Webhook Url)

Responses

Request samples

Content type
application/json
{
  • "destination_id": "f73cdd0c-5b5d-4102-9dde-c2ec04ceba9e",
  • "type": "slack",
  • "name": "string",
  • "webhook_url": "string",
  • "bot_token": "string",
  • "chat_id": "string",
  • "target_url": "string",
  • "webhook_header_name": "string",
  • "webhook_header_value": "string",
  • "email_recipients": "string",
  • "email_from_address": "string",
  • "jira_base_url": "string",
  • "jira_auth_email": "string",
  • "jira_api_token": "string",
  • "jira_project_key": "string",
  • "jira_issue_type": "string",
  • "linear_api_key": "string",
  • "linear_team_id": "string",
  • "linear_state_id": "string",
  • "linear_label_ids": "string",
  • "pagerduty_routing_key": "string",
  • "pagerduty_severity": "string",
  • "teams_webhook_url": "string"
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string",
  • "sent_at": "2019-08-24T14:15:22Z",
  • "error_kind": "config",
  • "http_status": 0
}

Test Alert Destination

Send one fixed test message through this destination's real channel.

Editor-only: it puts a message in somebody's Slack/Telegram/inbox and, for a tracker destination, opens a ticket. Always 200 — a channel refusal is the answer the caller asked for, not a server fault (see AlertDestinationTestResponse).

Recorded in the audit log rather than as an AlertDelivery, so the Delivery log keeps meaning "an alert fired"; see services/_alerting_test_send.

path Parameters
slug
required
string (Slug)
destination_id
required
string <uuid> (Destination Id)

Responses

Response samples

Content type
application/json
{
  • "ok": true,
  • "error": "string",
  • "sent_at": "2019-08-24T14:15:22Z",
  • "error_kind": "config",
  • "http_status": 0
}

Create Alert Rule

path Parameters
slug
required
string (Slug)
destination_id
required
string <uuid> (Destination Id)
Request Body schema: application/json
required
name
required
string (Name) <= 255 characters
enabled
boolean (Enabled)
Default: true
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)
include_project_total
boolean (Include Project Total)
Default: true
include_event_types
boolean (Include Event Types)
Default: true
include_events
boolean (Include Events)
Default: true
include_schema_drifts
boolean (Include Schema Drifts)
Default: false
include_distribution_drifts
boolean (Include Distribution Drifts)
Default: false
include_variable_value_drifts
boolean (Include Variable Value Drifts)
Default: false
include_release_regressions
boolean (Include Release Regressions)
Default: false
include_metrics
boolean (Include Metrics)
Default: false
include_source_freshness
boolean (Include Source Freshness)
Default: false
include_lifecycle
boolean (Include Lifecycle)
Default: false
include_property_drifts
boolean (Include Property Drifts)
Default: false
notify_on_spike
boolean (Notify On Spike)
Default: true
notify_on_drop
boolean (Notify On Drop)
Default: true
ai_explanation_enabled
boolean (Ai Explanation Enabled)
Default: false
notify_owners
boolean (Notify Owners)
Default: false
min_percent_delta
number (Min Percent Delta) >= 0
Default: 30
min_absolute_delta
number (Min Absolute Delta) >= 0
Default: 0
min_expected_count
number (Min Expected Count) >= 0
Default: 0
cooldown_minutes
integer (Cooldown Minutes) >= 1
Default: 1440
Message Template (string) or Message Template (null) (Message Template)
Items Template (string) or Items Template (null) (Items Template)
message_format
string (AlertMessageFormat)
Default: "plain"
Enum: "plain" "slack_mrkdwn" "telegram_html" "telegram_markdownv2"
Array of objects (Filters)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "enabled": true,
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "include_project_total": true,
  • "include_event_types": true,
  • "include_events": true,
  • "include_schema_drifts": false,
  • "include_distribution_drifts": false,
  • "include_variable_value_drifts": false,
  • "include_release_regressions": false,
  • "include_metrics": false,
  • "include_source_freshness": false,
  • "include_lifecycle": false,
  • "include_property_drifts": false,
  • "notify_on_spike": true,
  • "notify_on_drop": true,
  • "ai_explanation_enabled": false,
  • "notify_owners": false,
  • "min_percent_delta": 30,
  • "min_absolute_delta": 0,
  • "min_expected_count": 0,
  • "cooldown_minutes": 1440,
  • "message_template": "string",
  • "items_template": "string",
  • "message_format": "plain",
  • "filters": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "destination_id": "f73cdd0c-5b5d-4102-9dde-c2ec04ceba9e",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "name": "string",
  • "enabled": true,
  • "include_project_total": true,
  • "include_event_types": true,
  • "include_events": true,
  • "include_schema_drifts": true,
  • "include_distribution_drifts": true,
  • "include_variable_value_drifts": true,
  • "include_release_regressions": true,
  • "include_metrics": true,
  • "include_source_freshness": true,
  • "include_lifecycle": true,
  • "include_property_drifts": true,
  • "notify_on_spike": true,
  • "notify_on_drop": true,
  • "ai_explanation_enabled": true,
  • "notify_owners": false,
  • "min_percent_delta": 0,
  • "min_absolute_delta": 0,
  • "min_expected_count": 0,
  • "cooldown_minutes": 0,
  • "message_template": "string",
  • "items_template": "string",
  • "message_format": "plain",
  • "filters": [
    ],
  • "muted": true,
  • "muted_until": "2019-08-24T14:15:22Z",
  • "total_deliveries": 0,
  • "last_delivery_at": "2019-08-24T14:15:22Z",
  • "last_delivery_status": "pending",
  • "incident_count": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Update Alert Rule

path Parameters
slug
required
string (Slug)
destination_id
required
string <uuid> (Destination Id)
rule_id
required
string <uuid> (Rule Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Enabled (boolean) or Enabled (null) (Enabled)
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)
Include Project Total (boolean) or Include Project Total (null) (Include Project Total)
Include Event Types (boolean) or Include Event Types (null) (Include Event Types)
Include Events (boolean) or Include Events (null) (Include Events)
Include Schema Drifts (boolean) or Include Schema Drifts (null) (Include Schema Drifts)
Include Distribution Drifts (boolean) or Include Distribution Drifts (null) (Include Distribution Drifts)
Include Variable Value Drifts (boolean) or Include Variable Value Drifts (null) (Include Variable Value Drifts)
Include Release Regressions (boolean) or Include Release Regressions (null) (Include Release Regressions)
Include Metrics (boolean) or Include Metrics (null) (Include Metrics)
Include Source Freshness (boolean) or Include Source Freshness (null) (Include Source Freshness)
Include Lifecycle (boolean) or Include Lifecycle (null) (Include Lifecycle)
Include Property Drifts (boolean) or Include Property Drifts (null) (Include Property Drifts)
Notify On Spike (boolean) or Notify On Spike (null) (Notify On Spike)
Notify On Drop (boolean) or Notify On Drop (null) (Notify On Drop)
Ai Explanation Enabled (boolean) or Ai Explanation Enabled (null) (Ai Explanation Enabled)
Notify Owners (boolean) or Notify Owners (null) (Notify Owners)
Min Percent Delta (number) or Min Percent Delta (null) (Min Percent Delta)
Min Absolute Delta (number) or Min Absolute Delta (null) (Min Absolute Delta)
Min Expected Count (number) or Min Expected Count (null) (Min Expected Count)
Cooldown Minutes (integer) or Cooldown Minutes (null) (Cooldown Minutes)
Message Template (string) or Message Template (null) (Message Template)
Items Template (string) or Items Template (null) (Items Template)
AlertMessageFormat (string) or null
Array of Filters (objects) or Filters (null) (Filters)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "enabled": true,
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "include_project_total": true,
  • "include_event_types": true,
  • "include_events": true,
  • "include_schema_drifts": true,
  • "include_distribution_drifts": true,
  • "include_variable_value_drifts": true,
  • "include_release_regressions": true,
  • "include_metrics": true,
  • "include_source_freshness": true,
  • "include_lifecycle": true,
  • "include_property_drifts": true,
  • "notify_on_spike": true,
  • "notify_on_drop": true,
  • "ai_explanation_enabled": true,
  • "notify_owners": true,
  • "min_percent_delta": 0,
  • "min_absolute_delta": 0,
  • "min_expected_count": 0,
  • "cooldown_minutes": 1,
  • "message_template": "string",
  • "items_template": "string",
  • "message_format": "plain",
  • "filters": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "destination_id": "f73cdd0c-5b5d-4102-9dde-c2ec04ceba9e",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "name": "string",
  • "enabled": true,
  • "include_project_total": true,
  • "include_event_types": true,
  • "include_events": true,
  • "include_schema_drifts": true,
  • "include_distribution_drifts": true,
  • "include_variable_value_drifts": true,
  • "include_release_regressions": true,
  • "include_metrics": true,
  • "include_source_freshness": true,
  • "include_lifecycle": true,
  • "include_property_drifts": true,
  • "notify_on_spike": true,
  • "notify_on_drop": true,
  • "ai_explanation_enabled": true,
  • "notify_owners": false,
  • "min_percent_delta": 0,
  • "min_absolute_delta": 0,
  • "min_expected_count": 0,
  • "cooldown_minutes": 0,
  • "message_template": "string",
  • "items_template": "string",
  • "message_format": "plain",
  • "filters": [
    ],
  • "muted": true,
  • "muted_until": "2019-08-24T14:15:22Z",
  • "total_deliveries": 0,
  • "last_delivery_at": "2019-08-24T14:15:22Z",
  • "last_delivery_status": "pending",
  • "incident_count": 0,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Delete Alert Rule

path Parameters
slug
required
string (Slug)
destination_id
required
string <uuid> (Destination Id)
rule_id
required
string <uuid> (Rule Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Simulate Alert Rule

path Parameters
slug
required
string (Slug)
destination_id
required
string <uuid> (Destination Id)
rule_id
required
string <uuid> (Rule Id)
query Parameters
days
integer (Days) [ 1 .. 90 ]
Default: 7
Cooldown Minutes Override (integer) or Cooldown Minutes Override (null) (Cooldown Minutes Override)
Min Percent Delta Override (number) or Min Percent Delta Override (null) (Min Percent Delta Override)
Min Expected Count Override (number) or Min Expected Count Override (null) (Min Expected Count Override)
Sigma Threshold Override (number) or Sigma Threshold Override (null) (Sigma Threshold Override)
Request Body schema: application/json
Any of
Name (string) or Name (null) (Name)
Enabled (boolean) or Enabled (null) (Enabled)
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)
Include Project Total (boolean) or Include Project Total (null) (Include Project Total)
Include Event Types (boolean) or Include Event Types (null) (Include Event Types)
Include Events (boolean) or Include Events (null) (Include Events)
Include Schema Drifts (boolean) or Include Schema Drifts (null) (Include Schema Drifts)
Include Distribution Drifts (boolean) or Include Distribution Drifts (null) (Include Distribution Drifts)
Include Variable Value Drifts (boolean) or Include Variable Value Drifts (null) (Include Variable Value Drifts)
Include Release Regressions (boolean) or Include Release Regressions (null) (Include Release Regressions)
Include Metrics (boolean) or Include Metrics (null) (Include Metrics)
Include Source Freshness (boolean) or Include Source Freshness (null) (Include Source Freshness)
Include Lifecycle (boolean) or Include Lifecycle (null) (Include Lifecycle)
Include Property Drifts (boolean) or Include Property Drifts (null) (Include Property Drifts)
Notify On Spike (boolean) or Notify On Spike (null) (Notify On Spike)
Notify On Drop (boolean) or Notify On Drop (null) (Notify On Drop)
Ai Explanation Enabled (boolean) or Ai Explanation Enabled (null) (Ai Explanation Enabled)
Notify Owners (boolean) or Notify Owners (null) (Notify Owners)
Min Percent Delta (number) or Min Percent Delta (null) (Min Percent Delta)
Min Absolute Delta (number) or Min Absolute Delta (null) (Min Absolute Delta)
Min Expected Count (number) or Min Expected Count (null) (Min Expected Count)
Cooldown Minutes (integer) or Cooldown Minutes (null) (Cooldown Minutes)
Message Template (string) or Message Template (null) (Message Template)
Items Template (string) or Items Template (null) (Items Template)
AlertMessageFormat (string) or null
Array of Filters (objects) or Filters (null) (Filters)

Responses

Request samples

Content type
application/json
Example
{
  • "name": "string",
  • "enabled": true,
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "include_project_total": true,
  • "include_event_types": true,
  • "include_events": true,
  • "include_schema_drifts": true,
  • "include_distribution_drifts": true,
  • "include_variable_value_drifts": true,
  • "include_release_regressions": true,
  • "include_metrics": true,
  • "include_source_freshness": true,
  • "include_lifecycle": true,
  • "include_property_drifts": true,
  • "notify_on_spike": true,
  • "notify_on_drop": true,
  • "ai_explanation_enabled": true,
  • "notify_owners": true,
  • "min_percent_delta": 0,
  • "min_absolute_delta": 0,
  • "min_expected_count": 0,
  • "cooldown_minutes": 1,
  • "message_template": "string",
  • "items_template": "string",
  • "message_format": "plain",
  • "filters": [
    ]
}

Response samples

Content type
application/json
{
  • "rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60",
  • "rule_name": "string",
  • "days": 0,
  • "window_from": "2019-08-24T14:15:22Z",
  • "window_to": "2019-08-24T14:15:22Z",
  • "anomalies_considered": 0,
  • "matched_before_cooldown": 0,
  • "firings": [
    ],
  • "noisy": true,
  • "cooldown_minutes_used": 0,
  • "cooldown_minutes_saved": 0,
  • "min_percent_delta_used": 0,
  • "min_percent_delta_saved": 0,
  • "min_expected_count_used": 0,
  • "min_expected_count_saved": 0,
  • "sigma_threshold_used": 0,
  • "sigma_threshold_saved": 0,
  • "rendered_message": "string"
}

List Alert Deliveries

path Parameters
slug
required
string (Slug)
query Parameters
AlertDeliveryStatus (string) or Status (null) (Status)
AlertDestinationType (string) or Channel (null) (Channel)
Destination Id (string) or Destination Id (null) (Destination Id)
Rule Id (string) or Rule Id (null) (Rule Id)
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id)
Correlation Group Id (string) or Correlation Group Id (null) (Correlation Group Id)
ungrouped
boolean (Ungrouped)
Default: false
Date From (string) or Date From (null) (Date From)
Date To (string) or Date To (null) (Date To)
offset
integer (Offset) >= 0
Default: 0
limit
integer (Limit) [ 1 .. 200 ]
Default: 50
Cursor (string) or Cursor (null) (Cursor)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0,
  • "next_cursor": "string"
}

Get Alert Delivery

path Parameters
slug
required
string (Slug)
delivery_id
required
string <uuid> (Delivery Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scan_job_id": "9221fb1e-ebca-47f1-a680-9436e6250294",
  • "destination_id": "f73cdd0c-5b5d-4102-9dde-c2ec04ceba9e",
  • "rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60",
  • "destination_name": "string",
  • "rule_name": "string",
  • "scan_name": "string",
  • "status": "pending",
  • "channel": "slack",
  • "matched_count": 0,
  • "payload_snapshot": { },
  • "error_message": "string",
  • "is_local": false,
  • "is_simulated": false,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "sent_at": "2019-08-24T14:15:22Z",
  • "items": [
    ],
  • "owner_notifications": [
    ]
}

Retry Alert Delivery

path Parameters
slug
required
string (Slug)
delivery_id
required
string <uuid> (Delivery Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scan_job_id": "9221fb1e-ebca-47f1-a680-9436e6250294",
  • "destination_id": "f73cdd0c-5b5d-4102-9dde-c2ec04ceba9e",
  • "rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60",
  • "destination_name": "string",
  • "rule_name": "string",
  • "scan_name": "string",
  • "status": "pending",
  • "channel": "slack",
  • "matched_count": 0,
  • "payload_snapshot": { },
  • "error_message": "string",
  • "is_local": false,
  • "is_simulated": false,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "sent_at": "2019-08-24T14:15:22Z",
  • "items": [
    ],
  • "owner_notifications": [
    ]
}

Get Monitor

path Parameters
slug
required
string (Slug)
rule_id
required
string <uuid> (Rule Id)

Responses

Response samples

Content type
application/json
{
  • "rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60",
  • "rule_name": "string",
  • "destination_id": "f73cdd0c-5b5d-4102-9dde-c2ec04ceba9e",
  • "destination_name": "string",
  • "destination_type": "string",
  • "enabled": true,
  • "status": "firing",
  • "active_scope_count": 0,
  • "firing_scope_count": 0,
  • "last_anomaly_at": "2019-08-24T14:15:22Z",
  • "last_notified_at": "2019-08-24T14:15:22Z",
  • "notify_on_spike": true,
  • "notify_on_drop": true,
  • "min_percent_delta": 0,
  • "min_expected_count": 0,
  • "cooldown_minutes": 0,
  • "muted": true,
  • "muted_until": "2019-08-24T14:15:22Z",
  • "rule_enabled": true,
  • "destination_enabled": true,
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scan_name": "string",
  • "include_project_total": true,
  • "include_event_types": true,
  • "include_events": true,
  • "include_schema_drifts": true,
  • "include_distribution_drifts": true,
  • "include_variable_value_drifts": true,
  • "include_release_regressions": true,
  • "include_metrics": true,
  • "include_source_freshness": true,
  • "include_lifecycle": true,
  • "include_property_drifts": true,
  • "total_deliveries": 0,
  • "last_delivery_at": "2019-08-24T14:15:22Z",
  • "last_delivery_status": "pending",
  • "firing_scopes": [
    ],
  • "scope_readiness": {
    }
}

Mute Monitor

path Parameters
slug
required
string (Slug)
rule_id
required
string <uuid> (Rule Id)
Request Body schema: application/json
required
muted_until
required
string <date-time> (Muted Until)

Responses

Request samples

Content type
application/json
{
  • "muted_until": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60",
  • "rule_name": "string",
  • "destination_id": "f73cdd0c-5b5d-4102-9dde-c2ec04ceba9e",
  • "destination_name": "string",
  • "destination_type": "string",
  • "enabled": true,
  • "status": "firing",
  • "active_scope_count": 0,
  • "firing_scope_count": 0,
  • "last_anomaly_at": "2019-08-24T14:15:22Z",
  • "last_notified_at": "2019-08-24T14:15:22Z",
  • "notify_on_spike": true,
  • "notify_on_drop": true,
  • "min_percent_delta": 0,
  • "min_expected_count": 0,
  • "cooldown_minutes": 0,
  • "muted": true,
  • "muted_until": "2019-08-24T14:15:22Z",
  • "rule_enabled": true,
  • "destination_enabled": true,
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scan_name": "string",
  • "include_project_total": true,
  • "include_event_types": true,
  • "include_events": true,
  • "include_schema_drifts": true,
  • "include_distribution_drifts": true,
  • "include_variable_value_drifts": true,
  • "include_release_regressions": true,
  • "include_metrics": true,
  • "include_source_freshness": true,
  • "include_lifecycle": true,
  • "include_property_drifts": true,
  • "total_deliveries": 0,
  • "last_delivery_at": "2019-08-24T14:15:22Z",
  • "last_delivery_status": "pending",
  • "firing_scopes": [
    ],
  • "scope_readiness": {
    }
}

Unmute Monitor

path Parameters
slug
required
string (Slug)
rule_id
required
string <uuid> (Rule Id)

Responses

Response samples

Content type
application/json
{
  • "rule_id": "728c1541-d6d1-4290-9a53-cdf01dd32d60",
  • "rule_name": "string",
  • "destination_id": "f73cdd0c-5b5d-4102-9dde-c2ec04ceba9e",
  • "destination_name": "string",
  • "destination_type": "string",
  • "enabled": true,
  • "status": "firing",
  • "active_scope_count": 0,
  • "firing_scope_count": 0,
  • "last_anomaly_at": "2019-08-24T14:15:22Z",
  • "last_notified_at": "2019-08-24T14:15:22Z",
  • "notify_on_spike": true,
  • "notify_on_drop": true,
  • "min_percent_delta": 0,
  • "min_expected_count": 0,
  • "cooldown_minutes": 0,
  • "muted": true,
  • "muted_until": "2019-08-24T14:15:22Z",
  • "rule_enabled": true,
  • "destination_enabled": true,
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "scan_name": "string",
  • "include_project_total": true,
  • "include_event_types": true,
  • "include_events": true,
  • "include_schema_drifts": true,
  • "include_distribution_drifts": true,
  • "include_variable_value_drifts": true,
  • "include_release_regressions": true,
  • "include_metrics": true,
  • "include_source_freshness": true,
  • "include_lifecycle": true,
  • "include_property_drifts": true,
  • "total_deliveries": 0,
  • "last_delivery_at": "2019-08-24T14:15:22Z",
  • "last_delivery_status": "pending",
  • "firing_scopes": [
    ],
  • "scope_readiness": {
    }
}

List Alert Inbox

path Parameters
slug
required
string (Slug)
query Parameters
AlertInboxStatus (string) or Status (null) (Status)
Last Fired From (string) or Last Fired From (null) (Last Fired From)
Last Fired To (string) or Last Fired To (null) (Last Fired To)
MetricScopeType (string) or Scope Type (null) (Scope Type)
AnomalyDirection (string) or Direction (null) (Direction)
Scope (string) or Scope (null) (Scope)
offset
integer (Offset) >= 0
Default: 0
limit
integer (Limit) [ 1 .. 200 ]
Default: 50
Cursor (string) or Cursor (null) (Cursor)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0,
  • "status_counts": {
    },
  • "window_truncated_at": "2019-08-24T14:15:22Z",
  • "next_cursor": "string"
}

Apply Alert Inbox Bulk Action

Apply one triage decision to a selection of incidents.

A shortcut for N clicks on the sibling single-incident route, not a new kind of object: the decision is copied into each incident's own state. The service validates every id before mutating anything and commits once, so this either applies to the whole selection or to none of it.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
correlation_group_ids
required
Array of strings <uuid> (Correlation Group Ids) [ 1 .. 200 ] items [ items <uuid > ]
action
required
string (Action)
Enum: "acknowledge" "resolve" "mute" "reopen" "false_positive" "note"
Note (string) or Note (null) (Note)
Muted Until (string) or Muted Until (null) (Muted Until)

Responses

Request samples

Content type
application/json
{
  • "correlation_group_ids": [
    ],
  • "action": "acknowledge",
  • "note": "string",
  • "muted_until": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "groups": [
    ],
  • "batch_id": "4da22c97-b7d5-4e31-8c3a-03870ebc7b20",
  • "overrides_written": 0
}

Get Alert Inbox Group

Resolve one incident by id, ignoring the list's lookback window.

Alert messages deep-link the incident they describe, and the reader opens them late; before this route the link landed on a page of 20 unrelated incidents with no explanation.

path Parameters
slug
required
string (Slug)
correlation_group_id
required
string <uuid> (Correlation Group Id)

Responses

Response samples

Content type
application/json
{
  • "correlation_group_id": "b19a17a6-148a-445e-8ea5-cdb43c47c564",
  • "status": "open",
  • "muted": true,
  • "muted_until": "2019-08-24T14:15:22Z",
  • "note": "string",
  • "false_positive_count": 0,
  • "item_count": 0,
  • "delivery_count": 0,
  • "latest_bucket": "2019-08-24T14:15:22Z",
  • "latest_delivery_at": "2019-08-24T14:15:22Z",
  • "first_delivery_at": "2019-08-24T14:15:22Z",
  • "direction": "spike",
  • "actual_count": 0,
  • "expected_count": 0,
  • "percent_delta": 0,
  • "max_abs_percent_delta": 0,
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "scope_types": [
    ],
  • "scope_names": [
    ],
  • "destination_names": [
    ],
  • "rule_names": [
    ],
  • "rules": [
    ],
  • "scan_names": [
    ],
  • "acted_at": "2019-08-24T14:15:22Z",
  • "acted_by": "50e8e0b1-ff34-4096-b99a-166ff9492477",
  • "acted_by_name": "string",
  • "owners": [
    ]
}

Apply Alert Inbox Action

path Parameters
slug
required
string (Slug)
correlation_group_id
required
string <uuid> (Correlation Group Id)
Request Body schema: application/json
required
action
required
string (Action)
Enum: "acknowledge" "resolve" "mute" "reopen" "false_positive" "note"
Note (string) or Note (null) (Note)
Muted Until (string) or Muted Until (null) (Muted Until)

Responses

Request samples

Content type
application/json
{
  • "action": "acknowledge",
  • "note": "string",
  • "muted_until": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "group": {
    },
  • "overrides_written": 0
}

Notify Alert Inbox Owners

Email the owners of this incident's event type / metric once, now (F07, #260).

Answers with one row per owner tried; a skipped or failed owner is part of the answer, not an error. No owners is an empty list. An owner emailed about this incident in the last 10 minutes is skipped ("notified N minutes ago"); at most 20 owners are contacted per request.

path Parameters
slug
required
string (Slug)
correlation_group_id
required
string <uuid> (Correlation Group Id)

Responses

Response samples

Content type
application/json
{
  • "owners": [
    ]
}

Get Incident Summary

The cached summary and whether it is current. Never calls the LLM.

path Parameters
slug
required
string (Slug)
correlation_group_id
required
string <uuid> (Correlation Group Id)

Responses

Response samples

Content type
application/json
{
  • "correlation_group_id": "b19a17a6-148a-445e-8ea5-cdb43c47c564",
  • "state": "disabled",
  • "disabled_reason": "ai_off",
  • "current_facts_hash": "string",
  • "summary": {
    }
}

Ensure Incident Summary

The summary for the current facts: cached when unchanged, else generated.

Any member may call it, but not a read API key: generating writes a row and spends the provider budget, so a read key only gets the GET.

path Parameters
slug
required
string (Slug)
correlation_group_id
required
string <uuid> (Correlation Group Id)

Responses

Response samples

Content type
application/json
{
  • "correlation_group_id": "b19a17a6-148a-445e-8ea5-cdb43c47c564",
  • "state": "disabled",
  • "disabled_reason": "ai_off",
  • "current_facts_hash": "string",
  • "summary": {
    }
}

Regenerate Incident Summary

Generate the summary again, whatever the cache holds. Editors only.

path Parameters
slug
required
string (Slug)
correlation_group_id
required
string <uuid> (Correlation Group Id)

Responses

Response samples

Content type
application/json
{
  • "correlation_group_id": "b19a17a6-148a-445e-8ea5-cdb43c47c564",
  • "state": "disabled",
  • "disabled_reason": "ai_off",
  • "current_facts_hash": "string",
  • "summary": {
    }
}

data-sources

Warehouse/data-source connections and secrets.

List Data Sources

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Data Source

Request Body schema: application/json
required
name
required
string (Name) [ 1 .. 255 ] characters
db_type
required
string (DBType)
Enum: "clickhouse" "postgres" "bigquery" "synthetic"
host
required
string (Host) [ 1 .. 500 ] characters
port
integer (Port) [ 1 .. 65535 ]
Default: 8123
database_name
required
string (Database Name) [ 1 .. 255 ] characters
username
string (Username) <= 255 characters
Default: ""
password
string (Password)
Default: ""
Timeout Seconds (integer) or Timeout Seconds (null) (Timeout Seconds)
Json Path Discovery (string) or Json Path Discovery (null) (Json Path Discovery)
ClickHouseSettings (object) or PostgresSettings (object) or BigQuerySettings (object) or SyntheticSettings (object) or Connection Settings (null) (Connection Settings)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "db_type": "clickhouse",
  • "host": "string",
  • "port": 8123,
  • "database_name": "string",
  • "username": "",
  • "password": "",
  • "timeout_seconds": 1,
  • "json_path_discovery": "all",
  • "connection_settings": { }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "db_type": "clickhouse",
  • "is_synthetic": true,
  • "host": "string",
  • "port": 0,
  • "database_name": "string",
  • "username": "string",
  • "password_set": true,
  • "timeout_seconds": 0,
  • "json_path_discovery": "all",
  • "connection_settings": {
    },
  • "last_test_at": "2019-08-24T14:15:22Z",
  • "last_test_status": "success",
  • "last_test_message": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "scan_count": 0,
  • "scan_run_count": 0,
  • "scans": [
    ]
}

Test Unsaved Data Source Connection

Test a connection before it is saved.

The create gate (org owner/admin, browser session) and the create body's validation, host format included; nothing is stored and no stored secret is read. Always 200: a refused connection is the answer the caller asked for.

Request Body schema: application/json
required
name
string (Name) <= 255 characters
Default: ""
db_type
required
string (DBType)
Enum: "clickhouse" "postgres" "bigquery" "synthetic"
host
required
string (Host) [ 1 .. 500 ] characters
port
integer (Port) [ 1 .. 65535 ]
Default: 8123
database_name
required
string (Database Name) [ 1 .. 255 ] characters
username
string (Username) <= 255 characters
Default: ""
password
string (Password)
Default: ""
Timeout Seconds (integer) or Timeout Seconds (null) (Timeout Seconds)
Json Path Discovery (string) or Json Path Discovery (null) (Json Path Discovery)
ClickHouseSettings (object) or PostgresSettings (object) or BigQuerySettings (object) or SyntheticSettings (object) or Connection Settings (null) (Connection Settings)

Responses

Request samples

Content type
application/json
{
  • "name": "",
  • "db_type": "clickhouse",
  • "host": "string",
  • "port": 8123,
  • "database_name": "string",
  • "username": "",
  • "password": "",
  • "timeout_seconds": 1,
  • "json_path_discovery": "all",
  • "connection_settings": { }
}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "tested_at": "2019-08-24T14:15:22Z"
}

Get Data Source

path Parameters
ds_id
required
string <uuid> (Ds Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "db_type": "clickhouse",
  • "is_synthetic": true,
  • "host": "string",
  • "port": 0,
  • "database_name": "string",
  • "username": "string",
  • "password_set": true,
  • "timeout_seconds": 0,
  • "json_path_discovery": "all",
  • "connection_settings": {
    },
  • "last_test_at": "2019-08-24T14:15:22Z",
  • "last_test_status": "success",
  • "last_test_message": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "scan_count": 0,
  • "scan_run_count": 0,
  • "scans": [
    ]
}

Update Data Source

path Parameters
ds_id
required
string <uuid> (Ds Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
DBType (string) or null
Host (string) or Host (null) (Host)
Port (integer) or Port (null) (Port)
Database Name (string) or Database Name (null) (Database Name)
Username (string) or Username (null) (Username)
Password (string) or Password (null) (Password)
Timeout Seconds (integer) or Timeout Seconds (null) (Timeout Seconds)
Json Path Discovery (string) or Json Path Discovery (null) (Json Path Discovery)
ClickHouseSettings (object) or PostgresSettings (object) or BigQuerySettings (object) or SyntheticSettings (object) or Connection Settings (null) (Connection Settings)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "db_type": "clickhouse",
  • "host": "string",
  • "port": 1,
  • "database_name": "string",
  • "username": "string",
  • "password": "string",
  • "timeout_seconds": 1,
  • "json_path_discovery": "all",
  • "connection_settings": { }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "db_type": "clickhouse",
  • "is_synthetic": true,
  • "host": "string",
  • "port": 0,
  • "database_name": "string",
  • "username": "string",
  • "password_set": true,
  • "timeout_seconds": 0,
  • "json_path_discovery": "all",
  • "connection_settings": {
    },
  • "last_test_at": "2019-08-24T14:15:22Z",
  • "last_test_status": "success",
  • "last_test_message": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "scan_count": 0,
  • "scan_run_count": 0,
  • "scans": [
    ]
}

Delete Data Source

path Parameters
ds_id
required
string <uuid> (Ds Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Get Data Source Stats

path Parameters
ds_id
required
string <uuid> (Ds Id)
query Parameters
window_hours
integer (Window Hours) [ 1 .. 720 ]
Default: 48

Responses

Response samples

Content type
application/json
{
  • "events_tracked": 0,
  • "volume_window": 0,
  • "window_hours": 0,
  • "throughput": [
    ]
}

Get Data Source Schema

path Parameters
ds_id
required
string <uuid> (Ds Id)

Responses

Response samples

Content type
application/json
{
  • "tables": [
    ]
}

Test Data Source Connection

path Parameters
ds_id
required
string <uuid> (Ds Id)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "string",
  • "tested_at": "2019-08-24T14:15:22Z",
  • "data_source": {
    }
}

event-photos

Photo attachments for events.

List Event Photos

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Upload Event Photo

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
Request Body schema: multipart/form-data
required
file
required
string <application/octet-stream> (File)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "kind": "photo",
  • "original_filename": "string",
  • "content_type": "string",
  • "size_bytes": 0,
  • "storage_backend": "local",
  • "sort_order": 0,
  • "url": "string",
  • "external_url": "string",
  • "uploaded_by_user_id": "9fdcaa70-9955-45b2-9821-39697e7541f8",
  • "created_at": "2019-08-24T14:15:22Z"
}

Reorder Event Photos

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
Request Body schema: application/json
required
photo_ids
required
Array of strings <uuid> (Photo Ids) [ items <uuid > ]

Responses

Request samples

Content type
application/json
{
  • "photo_ids": [
    ]
}

Response samples

Content type
application/json
[
  • {
    }
]

Delete Event Photo

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
photo_id
required
string <uuid> (Photo Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Download Event Photo

Stream the photo bytes through the API.

The serving path for every photo on the local backend, the default, whose files are not reachable from the browser. On GCS a photo's url field is a signed or public URL the browser fetches directly; when that URL cannot be made, for instance with credentials that cannot sign, the url field points here instead.

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
photo_id
required
string <uuid> (Photo Id)

Responses

Response samples

Content type
application/json
null

Attach Figma Spec

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
Request Body schema: application/json
required
url
required
string (Url) [ 1 .. 2000 ] characters
title
string (Title) <= 500 characters
Default: ""

Responses

Request samples

Content type
application/json
{
  • "url": "string",
  • "title": ""
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "kind": "photo",
  • "original_filename": "string",
  • "content_type": "string",
  • "size_bytes": 0,
  • "storage_backend": "local",
  • "sort_order": 0,
  • "url": "string",
  • "external_url": "string",
  • "uploaded_by_user_id": "9fdcaa70-9955-45b2-9821-39697e7541f8",
  • "created_at": "2019-08-24T14:15:22Z"
}

List Photo Comments

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
photo_id
required
string <uuid> (Photo Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Photo Comment

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
photo_id
required
string <uuid> (Photo Id)
Request Body schema: application/json
required
body
required
string (Body) [ 1 .. 4000 ] characters
Parent Id (string) or Parent Id (null) (Parent Id)

Responses

Request samples

Content type
application/json
{
  • "body": "string",
  • "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "photo_id": "50c42bd2-615e-4fec-a325-0e5c4d3d73d3",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef",
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "body": "string",
  • "status": "open",
  • "resolution_note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z",
  • "resolved_at": "2019-08-24T14:15:22Z",
  • "resolved_by": "d0d57369-b08b-4db8-8952-8cdeedd9aebc",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Delete Photo Comment

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
photo_id
required
string <uuid> (Photo Id)
comment_id
required
string <uuid> (Comment Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

search

Hybrid lexical/semantic search over plan content.

Search Project

path Parameters
slug
required
string (Slug)
query Parameters
q
required
string (Q) [ 1 .. 500 ] characters
Array of Types (strings) or Types (null) (Types)
include_archived
boolean (Include Archived)
Default: false
limit
integer (Limit) [ 1 .. 100 ]
Default: 20
semantic
boolean (Semantic)
Default: true

Run the embedding leg as well as the lexical one. Pass false for a keyword-only answer that skips the provider round trip; semantic_used in the response is then always false.

group_variants
boolean (Group Variants)
Default: false

Fold events of one event type whose names differ only in one naming-rule placeholder into their best-ranked member, which then carries variant_group. limit and total count the folded rows.

Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0,
  • "truncated": false,
  • "semantic_used": false
}

Reindex Project Search

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "documents_indexed": 0,
  • "embeddings_scheduled": false
}

ai

AI-assisted descriptions and Q&A.

Ai Status

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "enabled": true
}

Describe Event

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
event_id
required
string <uuid> (Event Id)

Responses

Request samples

Content type
application/json
{
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7"
}

Response samples

Content type
application/json
{
  • "description": "string",
  • "field_suggestions": [
    ]
}

Describe Event Type

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
event_type_id
required
string <uuid> (Event Type Id)

Responses

Request samples

Content type
application/json
{
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83"
}

Response samples

Content type
application/json
{
  • "description": "string",
  • "field_suggestions": [
    ]
}

Ask Plan

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
question
required
string (Question) [ 3 .. 500 ] characters

Responses

Request samples

Content type
application/json
{
  • "question": "string"
}

Response samples

Content type
application/json
{
  • "answer": "string",
  • "sources": [
    ],
  • "semantic_used": true
}

activity

Recent activity feed.

List Workspace Activity

The workspace rail: activity from the projects the caller is a member of.

query Parameters
limit
integer (Limit) [ 1 .. 100 ]
Default: 20

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List Project Activity

One project's rail; a non-member gets "Project not found".

path Parameters
slug
required
string (Slug)
query Parameters
limit
integer (Limit) [ 1 .. 100 ]
Default: 20

Responses

Response samples

Content type
application/json
[
  • {
    }
]

audit

Audit log of mutating actions.

List Project Audit

The project's entries, newest first. A deleted project's rows stay reachable by its last slug while no live project answers to it.

path Parameters
slug
required
string (Slug)
query Parameters
Action (string) or Action (null) (Action)
User Id (string) or User Id (null) (User Id)
User Email (string) or User Email (null) (User Email)
Since (string) or Since (null) (Since)
Until (string) or Until (null) (Until)
limit
integer (Limit) [ 1 .. 200 ]
Default: 50
offset
integer (Offset) >= 0
Default: 0

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

List Project Audit Actions

Every action the log records, grouped for the filter; see audit_actions. A project's entries carry the project group's actions.

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "project": [
    ],
  • "workspace": [
    ]
}

Get Project Audit Entry

One entry with its payload. 404 for an entry of another project.

path Parameters
slug
required
string (Slug)
entry_id
required
string <uuid> (Entry Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "created_at": "2019-08-24T14:15:22Z",
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "user_email": "string",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "project_slug": "string",
  • "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc",
  • "branch_name": "string",
  • "action": "string",
  • "target_type": "string",
  • "target_id": "d3bcdc92-4191-401b-ad0c-42056c6efab9",
  • "target_name": "string",
  • "payload": { }
}

api-keys

Personal API keys for programmatic access.

List Api Keys

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Api Key

Request Body schema: application/json
required
name
required
string (Name) [ 1 .. 100 ] characters
scope
string (ApiKeyScope)
Default: "read"
Enum: "read" "write"
Expires In Days (integer) or Expires In Days (null) (Expires In Days)
Project Slug (string) or Project Slug (null) (Project Slug)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "scope": "read",
  • "expires_in_days": 1,
  • "project_slug": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "key_prefix": "string",
  • "scope": "read",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "expires_at": "2019-08-24T14:15:22Z",
  • "revoked_at": "2019-08-24T14:15:22Z",
  • "last_used_at": "2019-08-24T14:15:22Z",
  • "created_at": "2019-08-24T14:15:22Z",
  • "token": "string"
}

Revoke Api Key

path Parameters
key_id
required
string <uuid> (Key Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

settings

Instance-level application settings.

Get Service Settings

Responses

Response samples

Content type
application/json
{
  • "runtime": {
    },
  • "security": {
    },
  • "storage": {
    },
  • "observability": {
    },
  • "email": {
    },
  • "ai": {
    },
  • "system": {
    },
  • "overridden_fields": [
    ],
  • "sources": {
    }
}

Put Service Settings

Upsert service overrides. Intentionally identical to PATCH: unset fields are left untouched (partial update), not reset. Kept as a stable alias for clients that issue PUT; settings are a sparse override map with no full "replace all" semantics.

Request Body schema: application/json
required
RuntimeSettingsUpdate (object) or null
SecuritySettingsUpdate (object) or null
StorageSettingsUpdate (object) or null
ObservabilitySettingsUpdate (object) or null
EmailSettingsUpdate (object) or null
AiSettingsUpdate (object) or null

Responses

Request samples

Content type
application/json
{
  • "runtime": {
    },
  • "security": {
    },
  • "storage": {
    },
  • "observability": {
    },
  • "email": {
    },
  • "ai": {
    }
}

Response samples

Content type
application/json
{
  • "runtime": {
    },
  • "security": {
    },
  • "storage": {
    },
  • "observability": {
    },
  • "email": {
    },
  • "ai": {
    },
  • "system": {
    },
  • "overridden_fields": [
    ],
  • "sources": {
    }
}

Patch Service Settings

Request Body schema: application/json
required
RuntimeSettingsUpdate (object) or null
SecuritySettingsUpdate (object) or null
StorageSettingsUpdate (object) or null
ObservabilitySettingsUpdate (object) or null
EmailSettingsUpdate (object) or null
AiSettingsUpdate (object) or null

Responses

Request samples

Content type
application/json
{
  • "runtime": {
    },
  • "security": {
    },
  • "storage": {
    },
  • "observability": {
    },
  • "email": {
    },
  • "ai": {
    }
}

Response samples

Content type
application/json
{
  • "runtime": {
    },
  • "security": {
    },
  • "storage": {
    },
  • "observability": {
    },
  • "email": {
    },
  • "ai": {
    },
  • "system": {
    },
  • "overridden_fields": [
    ],
  • "sources": {
    }
}

Get Photo Limits

The photo upload limits, readable by every signed-in user.

The rest of this router is for settings admins; these values are not, because it is an editor's upload they refuse and the browser should say so before the upload rather than after. The caller's organization's limits (F20 PR11), resolved like the rest of the legacy route; the operator's when it resolves none. /orgs/{org}/settings/photo-limits names one.

Responses

Response samples

Content type
application/json
{
  • "photo_max_size_mb": 0,
  • "photo_allowed_mime": [
    ]
}

Get Row Limit Defaults

The instance row caps a scan falls back to, readable by every signed-in user.

Admin-only like the rest of this router would hide the real numbers from the editors who fill in a scan's Limits, so the form hard-coded the shipped defaults instead. Two integers, nothing about the connection.

The caller's organization's caps (F20 PR9), resolved like the rest of the legacy route; /orgs/{org}/settings/row-limits names one explicitly.

Responses

Response samples

Content type
application/json
{
  • "scan_row_limit_default": 0,
  • "metrics_row_limit_default": 0
}

Get Ai Prompt Defaults

The built-in AI system prompts, for each prompt's "Restore default".

Responses

Response samples

Content type
application/json
{
  • "describe_system_prompt": "string",
  • "ask_system_prompt": "string",
  • "alert_explanation_system_prompt": "string"
}

Get Ai Settings

Responses

Response samples

Content type
application/json
{
  • "ai": {
    },
  • "overridden_fields": [
    ],
  • "sources": {
    }
}

Test Ai Settings

Request Body schema: application/json
required
prompt
string (Prompt) [ 1 .. 500 ] characters
Default: "Reply with the word ok if the LLM connection works."

Responses

Request samples

Content type
application/json
{
  • "prompt": "Reply with the word ok if the LLM connection works."
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "message": "string"
}

Test Email Settings

Send one probe message with the saved SMTP settings and report what happened.

Always 200: a relay refusing us is the answer the caller asked for, not a server fault — the same reasoning the alert-destination test states.

Request Body schema: application/json
required
Recipient (string) or Recipient (null) (Recipient)
Any of
string <email> (Recipient)

Responses

Request samples

Content type
application/json
{
  • "recipient": "user@example.com"
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "message": "string"
}

branch-settings

Get Project Branch Settings

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "min_approvals": 0,
  • "block_self_approval": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Update Project Branch Settings

Owner-only: min_approvals/block_self_approval govern what editors may merge, so editors must not be able to loosen the policy on themselves.

This protects the merge POLICY, not the plan: editors can still manage event-type owners and write main directly, so the owner-approval gate is a branch-review convention rather than an access control .

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Min Approvals (integer) or Min Approvals (null) (Min Approvals)
Block Self Approval (boolean) or Block Self Approval (null) (Block Self Approval)

Responses

Request samples

Content type
application/json
{
  • "min_approvals": 100,
  • "block_self_approval": true
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "min_approvals": 0,
  • "block_self_approval": true,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

project-members

List Members

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Add Member

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
user_id
required
string <uuid> (User Id)
role
string (ProjectMemberRole)
Default: "viewer"
Enum: "none" "editor" "viewer"

A user's role inside one project (project_members.role).

There is no per-project owner: an owner or admin of the project's organization (:class:OrganizationRole) sees and manages every project of that organization without a membership row, as project role owner. For everyone else the row is authoritative (services.project_access), and a member without a row gets the organization's default_project_role.

none is "no access": as a row it opts one organization member out of one project (the project is a 404 for them, whatever the organization default); as organizations.default_project_role it means members see only the projects they hold a row in.

Responses

Request samples

Content type
application/json
{
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "role": "none"
}

Response samples

Content type
application/json
{
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "name": "string",
  • "email": "string",
  • "role": "none",
  • "added_at": "2019-08-24T14:15:22Z"
}

Update Member

path Parameters
slug
required
string (Slug)
user_id
required
string <uuid> (User Id)
Request Body schema: application/json
required
role
required
string (ProjectMemberRole)
Enum: "none" "editor" "viewer"

A user's role inside one project (project_members.role).

There is no per-project owner: an owner or admin of the project's organization (:class:OrganizationRole) sees and manages every project of that organization without a membership row, as project role owner. For everyone else the row is authoritative (services.project_access), and a member without a row gets the organization's default_project_role.

none is "no access": as a row it opts one organization member out of one project (the project is a 404 for them, whatever the organization default); as organizations.default_project_role it means members see only the projects they hold a row in.

Responses

Request samples

Content type
application/json
{
  • "role": "none"
}

Response samples

Content type
application/json
{
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "name": "string",
  • "email": "string",
  • "role": "none",
  • "added_at": "2019-08-24T14:15:22Z"
}

Remove Member

path Parameters
slug
required
string (Slug)
user_id
required
string <uuid> (User Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

project-templates

List Project Templates

Responses

Response samples

Content type
application/json
[
  • {
    }
]

tracker-config

Get Project Tracker Config

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "enabled": true,
  • "tracker_type": "string",
  • "base_url": "string",
  • "project_key": "string",
  • "auth_email": "string",
  • "issue_type": "string",
  • "team_id": "",
  • "api_token_set": true,
  • "inherited_fields": [ ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Update Project Tracker Config

Owner-only: the tracker config stores an API token and drives outbound ticket creation, so editors must not be able to point it at their own Jira.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Enabled (boolean) or Enabled (null) (Enabled)
Tracker Type (string) or Tracker Type (null) (Tracker Type)
Base Url (string) or Base Url (null) (Base Url)
Project Key (string) or Project Key (null) (Project Key)
Auth Email (string) or Auth Email (null) (Auth Email)
Api Token (string) or Api Token (null) (Api Token)
Issue Type (string) or Issue Type (null) (Issue Type)
Team Id (string) or Team Id (null) (Team Id)

Responses

Request samples

Content type
application/json
{
  • "enabled": true,
  • "tracker_type": "jira",
  • "base_url": "string",
  • "project_key": "string",
  • "auth_email": "string",
  • "api_token": "string",
  • "issue_type": "string",
  • "team_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "enabled": true,
  • "tracker_type": "string",
  • "base_url": "string",
  • "project_key": "string",
  • "auth_email": "string",
  • "issue_type": "string",
  • "team_id": "",
  • "api_token_set": true,
  • "inherited_fields": [ ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

duplicates

Duplicate Check

Likely duplicates and naming-convention lint for would-be events.

Up to 500 candidates, answered in order. Changes nothing.

path Parameters
slug
required
string (Slug)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Request Body schema: application/json
required
required
Array of objects (Candidates) [ 1 .. 500 ] items
Array ([ 1 .. 500 ] items)
name
string (Name) <= 500 characters
Default: ""
event_type_id
required
string <uuid> (Event Type Id)
Description (string) or Description (null) (Description)
Array of objects (Field Values) <= 500 items
Event Id (string) or Event Id (null) (Event Id)

Responses

Request samples

Content type
application/json
{
  • "candidates": [
    ]
}

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "threshold": 0,
  • "semantic_used": false
}

List Duplicate Clusters

Clusters of existing events that look like one event spelled several ways.

path Parameters
slug
required
string (Slug)
query Parameters
Cursor (string) or Cursor (null) (Cursor)
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "next_cursor": "string",
  • "total": 0,
  • "threshold": 0,
  • "truncated": false
}

Dismiss Duplicate Pair

Mark two events as not duplicates; the pair is never clustered again.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
event_a_id
required
string <uuid> (Event A Id)
event_b_id
required
string <uuid> (Event B Id)

Responses

Request samples

Content type
application/json
{
  • "event_a_id": "4561cbd1-988a-46b1-956a-869d1bb1f565",
  • "event_b_id": "e224ad04-886a-41e9-a8b7-aad4b475b648"
}

Response samples

Content type
application/json
{
  • "event_a_id": "4561cbd1-988a-46b1-956a-869d1bb1f565",
  • "event_b_id": "e224ad04-886a-41e9-a8b7-aad4b475b648",
  • "created": true
}

lifecycle

List Lifecycle Findings

Open findings of the daily sunset watch; ?include_resolved=true adds the closed ones.

path Parameters
slug
required
string (Slug)
query Parameters
include_resolved
boolean (Include Resolved)
Default: false

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Get Event Migration

Successor adoption: the old and the new event's 7-day daily average.

404 when the event names no successor.

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
{
  • "old": {
    },
  • "new": {
    },
  • "ratio": 0
}

health

List Events Health

Health of up to 150 events; ids outside the scored population are omitted.

path Parameters
slug
required
string (Slug)
query Parameters
ids
required
Array of strings <uuid> (Ids) [ 1 .. 150 ] items [ items <uuid > ]

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "computed_at": "2019-08-24T14:15:22Z"
}

List Event Types Health

Per event type: mean score, grade counts, component averages, worst events.

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ]
}

Get Project Health

Plan health: mean score, distribution, worst five and the daily trend.

path Parameters
slug
required
string (Slug)
query Parameters
trend_days
integer (Trend Days) [ 1 .. 365 ]
Default: 30

Responses

Response samples

Content type
application/json
{
  • "score": 0,
  • "grade": "healthy",
  • "scored_events": 0,
  • "healthy_count": 0,
  • "warning_count": 0,
  • "unhealthy_count": 0,
  • "component_averages": [
    ],
  • "worst": [
    ],
  • "trend": [
    ],
  • "previous_score": 0,
  • "computed_at": "2019-08-24T14:15:22Z"
}

Get Event Health

One event's score with its component breakdown. 404 off the main plan.

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)

Responses

Response samples

Content type
application/json
{
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
  • "name": "string",
  • "score": 0,
  • "grade": "healthy",
  • "renormalized": true,
  • "excluded": [
    ],
  • "top_issue": "string",
  • "components": [
    ]
}

event-comments

List Event Comments

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Event Comment

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
Request Body schema: application/json
required
body
required
string (Body) [ 1 .. 4000 ] characters
Parent Id (string) or Parent Id (null) (Parent Id)

Responses

Request samples

Content type
application/json
{
  • "body": "string",
  • "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "photo_id": "50c42bd2-615e-4fec-a325-0e5c4d3d73d3",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef",
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "body": "string",
  • "status": "open",
  • "resolution_note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z",
  • "resolved_at": "2019-08-24T14:15:22Z",
  • "resolved_by": "d0d57369-b08b-4db8-8952-8cdeedd9aebc",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Apply Event Comment Action

Resolve, snooze or reopen one thread.

An /actions sub-resource, not a PATCH on the comment: the body names an intent and the service decides which of the five resolution columns move — the shape every other resolvable thing here already uses.

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
comment_id
required
string <uuid> (Comment Id)
Request Body schema: application/json
required
action
required
string (Action)
Enum: "resolve" "snooze" "reopen"
Note (string) or Note (null) (Note)
Snoozed Until (string) or Snoozed Until (null) (Snoozed Until)

Responses

Request samples

Content type
application/json
{
  • "action": "resolve",
  • "note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "photo_id": "50c42bd2-615e-4fec-a325-0e5c4d3d73d3",
  • "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
  • "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef",
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "body": "string",
  • "status": "open",
  • "resolution_note": "string",
  • "snoozed_until": "2019-08-24T14:15:22Z",
  • "resolved_at": "2019-08-24T14:15:22Z",
  • "resolved_by": "d0d57369-b08b-4db8-8952-8cdeedd9aebc",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Delete Event Comment

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
comment_id
required
string <uuid> (Comment Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

metrics-catalog

List Metric Definitions

path Parameters
slug
required
string (Slug)
query Parameters
Array of Status (strings) or Status (null) (Status)
MetricKind (string) or Kind (null) (Kind)
Search (string) or Search (null) (Search)
Reviewed (boolean) or Reviewed (null) (Reviewed)
Owner Id (string) or Owner Id (null) (Owner Id)
Fact Table Id (string) or Fact Table Id (null) (Fact Table Id)
offset
integer (Offset) >= 0
Default: 0
limit
integer (Limit) [ 1 .. 1000 ]
Default: 200

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0,
  • "active_total": 0
}

Create Metric Definition

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
kind
string (Kind)
Default: "fact"
Value: "fact"
composition
string (MetricComposition)
Default: "single"
Enum: "single" "ratio" "per_distinct_user"

How an event_composition or fact metric combines its series.

event_composition uses single / ratio / per_distinct_user; fact uses single (one operand) and ratio (numerator / denominator operands, each over a — possibly different — FactTable).

interval
required
string (ScanInterval)
Enum: "15m" "1h" "6h" "1d" "1w"
ScanInterval (string) or null
Fact Table Id (string) or Fact Table Id (null) (Fact Table Id)
MetricAggregation (string) or null
Measure Column (string) or Measure Column (null) (Measure Column)
Distinct Column (string) or Distinct Column (null) (Distinct Column)
Row Filter (string) or Row Filter (null) (Row Filter)
row_filters
Array of strings (Row Filters) <= 100 items
Filter Sql (string) or Filter Sql (null) (Filter Sql)
Array of objects (Conditions) <= 100 items
FactOperand (object) or null
FactOperand (object) or null
name
required
string (Name) [ 1 .. 255 ] characters
display_name
required
string (Display Name) [ 1 .. 255 ] characters
description
string (Description)
Default: ""
color
string (Color) ^#[0-9a-fA-F]{6}$
Default: "#6366f1"
Order (integer) or Order (null) (Order)
Unit (string) or Unit (null) (Unit)
status
string (MetricStatus)
Default: "draft"
Enum: "draft" "active" "archived"

Simple catalog lifecycle for metrics (no dev-implementation states).

Owner Id (string) or Owner Id (null) (Owner Id)
reviewed
boolean (Reviewed)
Default: false
breakdown_columns
Array of strings (Breakdown Columns)
Breakdown Values Limit (integer) or Breakdown Values Limit (null) (Breakdown Values Limit)
App Version Column (string) or App Version Column (null) (App Version Column)
Platform Column (string) or Platform Column (null) (Platform Column)
anomaly_detection_enabled
boolean (Anomaly Detection Enabled)
Default: true

Responses

Request samples

Content type
application/json
Example
{
  • "kind": "fact",
  • "composition": "single",
  • "interval": "15m",
  • "replay_chunk_interval": "15m",
  • "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
  • "aggregation": "count",
  • "measure_column": "string",
  • "distinct_column": "string",
  • "row_filter": "string",
  • "row_filters": [
    ],
  • "filter_sql": "string",
  • "conditions": [
    ],
  • "numerator": {
    },
  • "denominator": {
    },
  • "name": "string",
  • "display_name": "string",
  • "description": "",
  • "color": "#6366f1",
  • "order": 0,
  • "unit": "string",
  • "status": "draft",
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": false,
  • "breakdown_columns": [
    ],
  • "breakdown_values_limit": 1,
  • "app_version_column": "string",
  • "platform_column": "string",
  • "anomaly_detection_enabled": true
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0,
  • "unit": "string",
  • "status": "draft",
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": true,
  • "kind": "sql",
  • "aggregation": "count",
  • "composition": "single",
  • "config": { },
  • "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
  • "breakdown_columns": [
    ],
  • "breakdown_values_limit": 0,
  • "app_version_column": "string",
  • "platform_column": "string",
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "interval": "15m",
  • "replay_chunk_interval": "15m",
  • "numerator_event_id": "b7e516c9-befe-4e7c-b6d4-948ebc2b6aa3",
  • "numerator_event_type_id": "2d62d44d-9e47-4eb8-b485-3f840a6cbc15",
  • "denominator_event_id": "8010165e-e206-4e23-86d0-aaabd41a5b8e",
  • "denominator_event_type_id": "f4aa7204-3b19-407f-87ef-aa32ff2312c7",
  • "anomaly_detection_enabled": true,
  • "last_collected_at": "2019-08-24T14:15:22Z",
  • "last_collection_status": "string",
  • "last_collection_error": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Bulk Update Metric Definitions

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
metric_ids
required
Array of strings <uuid> (Metric Ids) non-empty [ items <uuid > ]
MetricStatus (string) or null
Owner Id (string) or Owner Id (null) (Owner Id)
Reviewed (boolean) or Reviewed (null) (Reviewed)
Anomaly Detection Enabled (boolean) or Anomaly Detection Enabled (null) (Anomaly Detection Enabled)

Responses

Request samples

Content type
application/json
{
  • "metric_ids": [
    ],
  • "status": "draft",
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": true,
  • "anomaly_detection_enabled": true
}

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Preview Metric Sql

Stateless dry-run of a sql-kind metric SELECT (editor-gated).

Validates the SQL with the same safety gate the worker uses and executes it against the data source over the last 50 buckets of the requested interval (hard-capped at 200 rows); nothing is persisted. Expected user mistakes — bad SQL, missing time/value columns, warehouse errors — return 200 with error set so the editor can render them inline. A data source this project may not use is a 404, whether the id is unknown or belongs to another project — the same status and sentence the fact-table doors answer.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
data_source_id
required
string <uuid> (Data Source Id)
sql
required
string (Sql) non-empty
time_column
required
string (Time Column) [ 1 .. 255 ] characters
Value Column (string) or Value Column (null) (Value Column)
interval
required
string (ScanInterval)
Enum: "15m" "1h" "6h" "1d" "1w"

Responses

Request samples

Content type
application/json
{
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "sql": "string",
  • "time_column": "string",
  • "value_column": "string",
  • "interval": "15m"
}

Response samples

Content type
application/json
{
  • "columns": [
    ],
  • "points": [
    ],
  • "point_count": 0,
  • "truncated": false,
  • "error": "string"
}

Preview Fact Operand

Stateless dry-run of ONE fact operand's row filter (editor-gated).

The body is the operand a save would send. Its filters are compiled by the worker's own resolver for the fact table's data-source dialect and the resulting query is executed with a 1-row cap over a bounded recent window; nothing is persisted. Expected user mistakes — an unknown named filter, SQL the warehouse rejects, a measure column the filtered query does not project — return 200 with error set so the filter editor can render them inline. An unknown project or fact table is a 404.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
fact_table_id
required
string <uuid> (Fact Table Id)
aggregation
required
string (MetricAggregation)
Enum: "count" "sum" "avg" "min" "max" "count_distinct"

Aggregation applied by a fact metric over a FactTable column.

Measure Column (string) or Measure Column (null) (Measure Column)
Distinct Column (string) or Distinct Column (null) (Distinct Column)
Row Filter (string) or Row Filter (null) (Row Filter)
row_filters
Array of strings (Row Filters) <= 100 items
Filter Sql (string) or Filter Sql (null) (Filter Sql)
Array of objects (Conditions) <= 100 items

Responses

Request samples

Content type
application/json
{
  • "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
  • "aggregation": "count",
  • "measure_column": "string",
  • "distinct_column": "string",
  • "row_filter": "string",
  • "row_filters": [
    ],
  • "filter_sql": "string",
  • "conditions": [
    ]
}

Response samples

Content type
application/json
{
  • "columns": [
    ],
  • "row_count": 0,
  • "error": "string"
}

Preview Metric Series

Stateless dry-run of a fact or event-composition metric's series (editor-gated).

The body is the definition a save would send. A fact metric is aggregated by the collector's own code over its last closed buckets (up to 50, capped at a month of wall clock); an event composition is composed from already-collected event counts on its newest scan grid. Nothing is persisted. Expected mistakes and warehouse errors return 200 with error set; an unknown fact table or data source is a 404, an event outside the project a 422.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
kind
string (Kind)
Default: "fact"
Value: "fact"
composition
string (MetricComposition)
Default: "single"
Enum: "single" "ratio" "per_distinct_user"

How an event_composition or fact metric combines its series.

event_composition uses single / ratio / per_distinct_user; fact uses single (one operand) and ratio (numerator / denominator operands, each over a — possibly different — FactTable).

interval
required
string (ScanInterval)
Enum: "15m" "1h" "6h" "1d" "1w"
ScanInterval (string) or null
Fact Table Id (string) or Fact Table Id (null) (Fact Table Id)
MetricAggregation (string) or null
Measure Column (string) or Measure Column (null) (Measure Column)
Distinct Column (string) or Distinct Column (null) (Distinct Column)
Row Filter (string) or Row Filter (null) (Row Filter)
row_filters
Array of strings (Row Filters) <= 100 items
Filter Sql (string) or Filter Sql (null) (Filter Sql)
Array of objects (Conditions) <= 100 items
FactOperand (object) or null
FactOperand (object) or null

Responses

Request samples

Content type
application/json
Example
{
  • "kind": "fact",
  • "composition": "single",
  • "interval": "15m",
  • "replay_chunk_interval": "15m",
  • "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
  • "aggregation": "count",
  • "measure_column": "string",
  • "distinct_column": "string",
  • "row_filter": "string",
  • "row_filters": [
    ],
  • "filter_sql": "string",
  • "conditions": [
    ],
  • "numerator": {
    },
  • "denominator": {
    }
}

Response samples

Content type
application/json
{
  • "columns": [
    ],
  • "points": [
    ],
  • "point_count": 0,
  • "truncated": false,
  • "error": "string"
}

Reorder Metric Definitions

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
metric_ids
required
Array of strings <uuid> (Metric Ids) non-empty [ items <uuid > ]

Responses

Request samples

Content type
application/json
{
  • "metric_ids": [
    ]
}

Response samples

Content type
application/json
[
  • {
    }
]

Get Metric Definition

path Parameters
slug
required
string (Slug)
metric_id
required
string <uuid> (Metric Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0,
  • "unit": "string",
  • "status": "draft",
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": true,
  • "kind": "sql",
  • "aggregation": "count",
  • "composition": "single",
  • "config": { },
  • "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
  • "breakdown_columns": [
    ],
  • "breakdown_values_limit": 0,
  • "app_version_column": "string",
  • "platform_column": "string",
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "interval": "15m",
  • "replay_chunk_interval": "15m",
  • "numerator_event_id": "b7e516c9-befe-4e7c-b6d4-948ebc2b6aa3",
  • "numerator_event_type_id": "2d62d44d-9e47-4eb8-b485-3f840a6cbc15",
  • "denominator_event_id": "8010165e-e206-4e23-86d0-aaabd41a5b8e",
  • "denominator_event_type_id": "f4aa7204-3b19-407f-87ef-aa32ff2312c7",
  • "anomaly_detection_enabled": true,
  • "last_collected_at": "2019-08-24T14:15:22Z",
  • "last_collection_status": "string",
  • "last_collection_error": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "next_collection_at": "2019-08-24T14:15:22Z",
  • "collection_due": false
}

Update Metric Definition

path Parameters
slug
required
string (Slug)
metric_id
required
string <uuid> (Metric Id)
Request Body schema: application/json
required
Display Name (string) or Display Name (null) (Display Name)
Description (string) or Description (null) (Description)
Color (string) or Color (null) (Color)
Order (integer) or Order (null) (Order)
Unit (string) or Unit (null) (Unit)
MetricStatus (string) or null
Owner Id (string) or Owner Id (null) (Owner Id)
Reviewed (boolean) or Reviewed (null) (Reviewed)
Array of Breakdown Columns (strings) or Breakdown Columns (null) (Breakdown Columns)
Breakdown Values Limit (integer) or Breakdown Values Limit (null) (Breakdown Values Limit)
App Version Column (string) or App Version Column (null) (App Version Column)
Platform Column (string) or Platform Column (null) (Platform Column)
Anomaly Detection Enabled (boolean) or Anomaly Detection Enabled (null) (Anomaly Detection Enabled)
Definition (any) or Definition (null) (Definition)

Responses

Request samples

Content type
application/json
{
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0,
  • "unit": "string",
  • "status": "draft",
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": true,
  • "breakdown_columns": [
    ],
  • "breakdown_values_limit": 1,
  • "app_version_column": "string",
  • "platform_column": "string",
  • "anomaly_detection_enabled": true,
  • "definition": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0,
  • "unit": "string",
  • "status": "draft",
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": true,
  • "kind": "sql",
  • "aggregation": "count",
  • "composition": "single",
  • "config": { },
  • "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
  • "breakdown_columns": [
    ],
  • "breakdown_values_limit": 0,
  • "app_version_column": "string",
  • "platform_column": "string",
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "interval": "15m",
  • "replay_chunk_interval": "15m",
  • "numerator_event_id": "b7e516c9-befe-4e7c-b6d4-948ebc2b6aa3",
  • "numerator_event_type_id": "2d62d44d-9e47-4eb8-b485-3f840a6cbc15",
  • "denominator_event_id": "8010165e-e206-4e23-86d0-aaabd41a5b8e",
  • "denominator_event_type_id": "f4aa7204-3b19-407f-87ef-aa32ff2312c7",
  • "anomaly_detection_enabled": true,
  • "last_collected_at": "2019-08-24T14:15:22Z",
  • "last_collection_status": "string",
  • "last_collection_error": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Delete Metric Definition

path Parameters
slug
required
string (Slug)
metric_id
required
string <uuid> (Metric Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Get Metric Generated Sql

Return a saved fact metric's primary dependency-batch SQL without running it.

Same gate as GET /{metric_id}: anyone who can read the metric. The SQL is compiled from config that read already returns and nothing executes.

path Parameters
slug
required
string (Slug)
metric_id
required
string <uuid> (Metric Id)

Responses

Response samples

Content type
application/json
{
  • "queries": [
    ],
  • "breakdown_queries_omitted": true
}

Get Metric Series

path Parameters
slug
required
string (Slug)
metric_id
required
string <uuid> (Metric Id)
query Parameters
From (string) or From (null) (From)
To (string) or To (null) (To)

Responses

Response samples

Content type
application/json
{
  • "metric_id": "e3216117-28d7-4548-9b5f-7e08a760b2c7",
  • "scope": "metric",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "interval": "15m",
  • "latest_signal": {
    },
  • "sigma_threshold": 0,
  • "data": [
    ],
  • "forecast": [ ]
}

Get Metric Breakdowns

path Parameters
slug
required
string (Slug)
metric_id
required
string <uuid> (Metric Id)
query Parameters
Column (string) or Column (null) (Column)
From (string) or From (null) (From)
To (string) or To (null) (To)

Responses

Response samples

Content type
application/json
{
  • "metric_id": "e3216117-28d7-4548-9b5f-7e08a760b2c7",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "interval": "15m",
  • "columns": [
    ],
  • "selected_column": "string",
  • "series": [
    ]
}

Get Metric Version Series

path Parameters
slug
required
string (Slug)
metric_id
required
string <uuid> (Metric Id)
query Parameters
From (string) or From (null) (From)
To (string) or To (null) (To)

Responses

Response samples

Content type
application/json
{
  • "metric_id": "e3216117-28d7-4548-9b5f-7e08a760b2c7",
  • "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
  • "app_version_column": "string",
  • "interval": "15m",
  • "latest_version": "string",
  • "versions": [
    ],
  • "series": [
    ]
}

Collect Metric Now

Trigger an immediate backfill collection from one metric (editor-gated).

SQL/event-composition metrics dispatch alone. A fact metric refreshes every fact table reachable through its operands and recalculates all active fact metrics using those tables in shared batches (the clicked metric is included even when draft). Returns 202 once queued; warehouse queries run in workers. Unknown metric -> 404.

path Parameters
slug
required
string (Slug)
metric_id
required
string <uuid> (Metric Id)

Responses

Response samples

Content type
application/json
{
  • "metric_id": "e3216117-28d7-4548-9b5f-7e08a760b2c7",
  • "status": "queued",
  • "window_from": "2019-08-24T14:15:22Z",
  • "window_to": "2019-08-24T14:15:22Z",
  • "task_id": "string",
  • "metric_count": 1
}

Move Metric Definition

path Parameters
slug
required
string (Slug)
metric_id
required
string <uuid> (Metric Id)
Request Body schema: application/json
required
direction
required
string (Direction)
Enum: "up" "down"
Array of Visible Metric Ids (strings) or Visible Metric Ids (null) (Visible Metric Ids)

Responses

Request samples

Content type
application/json
{
  • "direction": "up",
  • "visible_metric_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0,
  • "unit": "string",
  • "status": "draft",
  • "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
  • "reviewed": true,
  • "kind": "sql",
  • "aggregation": "count",
  • "composition": "single",
  • "config": { },
  • "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
  • "breakdown_columns": [
    ],
  • "breakdown_values_limit": 0,
  • "app_version_column": "string",
  • "platform_column": "string",
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "interval": "15m",
  • "replay_chunk_interval": "15m",
  • "numerator_event_id": "b7e516c9-befe-4e7c-b6d4-948ebc2b6aa3",
  • "numerator_event_type_id": "2d62d44d-9e47-4eb8-b485-3f840a6cbc15",
  • "denominator_event_id": "8010165e-e206-4e23-86d0-aaabd41a5b8e",
  • "denominator_event_type_id": "f4aa7204-3b19-407f-87ef-aa32ff2312c7",
  • "anomaly_detection_enabled": true,
  • "last_collected_at": "2019-08-24T14:15:22Z",
  • "last_collection_status": "string",
  • "last_collection_error": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

fact-tables

List Fact Tables

path Parameters
slug
required
string (Slug)
query Parameters
Search (string) or Search (null) (Search)
offset
integer (Offset) >= 0
Default: 0
limit
integer (Limit) [ 1 .. 1000 ]
Default: 200

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Create Fact Table

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
name
required
string (Name) [ 1 .. 255 ] characters
display_name
required
string (Display Name) [ 1 .. 255 ] characters
description
string (Description)
Default: ""
color
string (Color) ^#[0-9a-fA-F]{6}$
Default: "#6366f1"
Data Source Id (string) or Data Source Id (null) (Data Source Id)
sql
required
string (Sql) non-empty
timestamp_column
required
string (Timestamp Column) [ 1 .. 255 ] characters
Array of objects (Columns)
identifier_columns
Array of strings (Identifier Columns)
Array of objects (Row Filters) <= 100 items

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "display_name": "string",
  • "description": "",
  • "color": "#6366f1",
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "sql": "string",
  • "timestamp_column": "string",
  • "columns": [
    ],
  • "identifier_columns": [
    ],
  • "row_filters": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0,
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "sql": "string",
  • "timestamp_column": "string",
  • "columns": [
    ],
  • "identifier_columns": [
    ],
  • "row_filters": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Preview Fact Table

Read the column shape of a candidate fact-table SELECT (editor-gated).

Reads the query's columns and identifier candidates; no rows are returned and nothing is persisted. The run is recorded in the audit log.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Data Source Id (string) or Data Source Id (null) (Data Source Id)
sql
required
string (Sql) non-empty
Timestamp Column (string) or Timestamp Column (null) (Timestamp Column)

Responses

Request samples

Content type
application/json
{
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "sql": "string",
  • "timestamp_column": "string"
}

Response samples

Content type
application/json
{
  • "columns": [
    ],
  • "identifier_candidates": [
    ]
}

Get Fact Table

path Parameters
slug
required
string (Slug)
fact_table_id
required
string <uuid> (Fact Table Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0,
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "sql": "string",
  • "timestamp_column": "string",
  • "columns": [
    ],
  • "identifier_columns": [
    ],
  • "row_filters": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Update Fact Table

path Parameters
slug
required
string (Slug)
fact_table_id
required
string <uuid> (Fact Table Id)
Request Body schema: application/json
required
Display Name (string) or Display Name (null) (Display Name)
Description (string) or Description (null) (Description)
Color (string) or Color (null) (Color)
Order (integer) or Order (null) (Order)
Data Source Id (string) or Data Source Id (null) (Data Source Id)
Sql (string) or Sql (null) (Sql)
Timestamp Column (string) or Timestamp Column (null) (Timestamp Column)
Array of Columns (objects) or Columns (null) (Columns)
Array of Identifier Columns (strings) or Identifier Columns (null) (Identifier Columns)
Array of Row Filters (objects) or Row Filters (null) (Row Filters)

Responses

Request samples

Content type
application/json
{
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0,
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "sql": "string",
  • "timestamp_column": "string",
  • "columns": [
    ],
  • "identifier_columns": [
    ],
  • "row_filters": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "name": "string",
  • "display_name": "string",
  • "description": "string",
  • "color": "string",
  • "order": 0,
  • "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
  • "sql": "string",
  • "timestamp_column": "string",
  • "columns": [
    ],
  • "identifier_columns": [
    ],
  • "row_filters": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Delete Fact Table

path Parameters
slug
required
string (Slug)
fact_table_id
required
string <uuid> (Fact Table Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

docs

List Docs

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "project": {
    },
  • "organization": {
    },
  • "project_docs": [
    ],
  • "organization_docs": [
    ],
  • "limits": {
    },
  • "language_defaults": {
    }
}

Read Doc

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

The note's path, e.g. guides/setup.md

Lang (string) or Lang (null) (Lang)

Which language to read: a code such as en for that stored translation, original for the original, or nothing for the project's agent default (the original when that translation is missing or behind it).

Responses

Response samples

Content type
application/json
{
  • "scope": "project",
  • "path": "string",
  • "title": "string",
  • "description": "",
  • "tags": [ ],
  • "audience": "human",
  • "revision": 0,
  • "size_bytes": 0,
  • "updated_at": "2019-08-24T14:15:22Z",
  • "updated_by_name": "string",
  • "visibility": "private",
  • "my_permission": "view",
  • "shared": false,
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "content": "string",
  • "body": "string",
  • "extra_frontmatter": { },
  • "links": [ ],
  • "linked_from": [ ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "created_by_name": "string",
  • "break_glass": false,
  • "lang": "string",
  • "requested_lang": "string",
  • "translation_fallback": "missing",
  • "translation_outdated": false,
  • "translations": [ ],
  • "language_defaults": {
    }
}

Write Doc

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

The note's path, e.g. guides/setup.md

Request Body schema: application/json
required
content
required
string (Content) <= 1048576 characters
Base Revision (integer) or Base Revision (null) (Base Revision)
create_only
boolean (Create Only)
Default: false
message
string (Message) <= 500 characters
Default: ""

Responses

Request samples

Content type
application/json
{
  • "content": "string",
  • "base_revision": 1,
  • "create_only": false,
  • "message": ""
}

Response samples

Content type
application/json
{
  • "scope": "project",
  • "path": "string",
  • "title": "string",
  • "description": "",
  • "tags": [ ],
  • "audience": "human",
  • "revision": 0,
  • "size_bytes": 0,
  • "updated_at": "2019-08-24T14:15:22Z",
  • "updated_by_name": "string",
  • "visibility": "private",
  • "my_permission": "view",
  • "shared": false,
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "content": "string",
  • "body": "string",
  • "extra_frontmatter": { },
  • "links": [ ],
  • "linked_from": [ ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "created_by_name": "string",
  • "break_glass": false,
  • "lang": "string",
  • "requested_lang": "string",
  • "translation_fallback": "missing",
  • "translation_outdated": false,
  • "translations": [ ],
  • "language_defaults": {
    },
  • "created": true,
  • "changed": true,
  • "warnings": [ ]
}

Delete Doc

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

The note's path, e.g. guides/setup.md

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Read Doc Sharing

Who the note is shared with. 404 for a note the caller cannot see.

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

The note's path, e.g. guides/setup.md

Responses

Response samples

Content type
application/json
{
  • "scope": "project",
  • "path": "string",
  • "visibility": "private",
  • "inherited": true,
  • "inherited_from": "string",
  • "shares": [ ],
  • "can_manage": false
}

Update Doc Sharing

Change the note's visibility and shares: its author, or an org owner/admin.

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

The note's path, e.g. guides/setup.md

Request Body schema: application/json
required
visibility
string (Visibility)
Default: "level"
Enum: "private" "restricted" "level"
inherited
boolean (Inherited)
Default: false
Array of objects (Shares) <= 200 items
Default: []

Responses

Request samples

Content type
application/json
{
  • "visibility": "private",
  • "inherited": false,
  • "shares": [ ]
}

Response samples

Content type
application/json
{
  • "scope": "project",
  • "path": "string",
  • "visibility": "private",
  • "inherited": true,
  • "inherited_from": "string",
  • "shares": [ ],
  • "can_manage": false
}

Read Folder Sharing

A folder's setting, inherited by the notes under it that do not override it.

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

A folder prefix.

Responses

Response samples

Content type
application/json
{
  • "scope": "project",
  • "path": "string",
  • "visibility": "private",
  • "inherited": true,
  • "inherited_from": "string",
  • "shares": [ ],
  • "can_manage": false
}

Update Folder Sharing

Set (or, with inherited: true, clear) a folder's visibility and shares.

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

A folder prefix.

Request Body schema: application/json
required
visibility
string (Visibility)
Default: "level"
Enum: "private" "restricted" "level"
inherited
boolean (Inherited)
Default: false
Array of objects (Shares) <= 200 items
Default: []

Responses

Request samples

Content type
application/json
{
  • "visibility": "private",
  • "inherited": false,
  • "shares": [ ]
}

Response samples

Content type
application/json
{
  • "scope": "project",
  • "path": "string",
  • "visibility": "private",
  • "inherited": true,
  • "inherited_from": "string",
  • "shares": [ ],
  • "can_manage": false
}

Delete Doc Folder

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

A folder prefix.

Responses

Response samples

Content type
application/json
{
  • "deleted": [
    ]
}

Move Doc

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
scope
required
string (Scope)
Enum: "project" "organization"
from_path
required
string (From Path) [ 1 .. 1024 ] characters
to_path
required
string (To Path) [ 1 .. 1024 ] characters
folder
boolean (Folder)
Default: false

Responses

Request samples

Content type
application/json
{
  • "scope": "project",
  • "from_path": "string",
  • "to_path": "string",
  • "folder": false
}

Response samples

Content type
application/json
{
  • "moved": [
    ]
}

List Doc Revisions

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

The note's path, e.g. guides/setup.md

Responses

Response samples

Content type
application/json
{
  • "scope": "project",
  • "path": "string",
  • "current_revision": 0,
  • "items": [
    ]
}

Get Doc Revision

path Parameters
slug
required
string (Slug)
revision_id
required
string <uuid> (Revision Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "number": 0,
  • "action": "create",
  • "path": "string",
  • "message": "string",
  • "author_name": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "content_sha256": "string",
  • "size_bytes": 0,
  • "restored_from_number": 0,
  • "content": "string",
  • "diff": "string",
  • "diff_truncated": false
}

Restore Doc Revision

path Parameters
slug
required
string (Slug)
revision_id
required
string <uuid> (Revision Id)
Request Body schema: application/json
required
message
string (Message) <= 500 characters
Default: ""

Responses

Request samples

Content type
application/json
{
  • "message": ""
}

Response samples

Content type
application/json
{
  • "scope": "project",
  • "path": "string",
  • "title": "string",
  • "description": "",
  • "tags": [ ],
  • "audience": "human",
  • "revision": 0,
  • "size_bytes": 0,
  • "updated_at": "2019-08-24T14:15:22Z",
  • "updated_by_name": "string",
  • "visibility": "private",
  • "my_permission": "view",
  • "shared": false,
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "content": "string",
  • "body": "string",
  • "extra_frontmatter": { },
  • "links": [ ],
  • "linked_from": [ ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "created_by_name": "string",
  • "break_glass": false,
  • "lang": "string",
  • "requested_lang": "string",
  • "translation_fallback": "missing",
  • "translation_outdated": false,
  • "translations": [ ],
  • "language_defaults": {
    },
  • "created": true,
  • "changed": true,
  • "warnings": [ ]
}

Search Docs

path Parameters
slug
required
string (Slug)
query Parameters
q
required
string (Q) [ 1 .. 500 ] characters
Scope (string) or Scope (null) (Scope)
limit
integer (Limit) [ 1 .. 50 ]
Default: 20

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0,
  • "truncated": false,
  • "semantic_used": false
}

Export Docs

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

format
string (Format)
Default: "json"
Enum: "json" "zip"

Responses

Response samples

Content type
{
  • "format": "tripl-docs/v1",
  • "scope": "project",
  • "project_slug": "string",
  • "organization_slug": "string",
  • "exported_at": "2019-08-24T14:15:22Z",
  • "files": [
    ]
}

Import Docs

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

mode
string (Mode)
Default: "merge"
Enum: "merge" "mirror"
dry_run
boolean (Dry Run)
Default: false
Request Body schema: application/json
required
format
string (Format)
Default: "tripl-docs/v1"
Value: "tripl-docs/v1"
required
Array of objects (Files) <= 2000 items

Responses

Request samples

Content type
application/json
{
  • "format": "tripl-docs/v1",
  • "files": [
    ]
}

Response samples

Content type
application/json
{
  • "scope": "project",
  • "mode": "merge",
  • "dry_run": true,
  • "created": [ ],
  • "updated": [ ],
  • "unchanged": [ ],
  • "deleted": [ ],
  • "skipped": [ ],
  • "errors": [ ],
  • "translations": [ ],
  • "translations_deleted": [ ]
}

Import Docs Zip

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

mode
string (Mode)
Default: "merge"
Enum: "merge" "mirror"
dry_run
boolean (Dry Run)
Default: false
keep_root
boolean (Keep Root)
Default: false
Request Body schema: multipart/form-data
required
file
required
string <application/octet-stream> (File)

A zip of .md files.

Responses

Response samples

Content type
application/json
{
  • "scope": "project",
  • "mode": "merge",
  • "dry_run": true,
  • "created": [ ],
  • "updated": [ ],
  • "unchanged": [ ],
  • "deleted": [ ],
  • "skipped": [ ],
  • "errors": [ ],
  • "translations": [ ],
  • "translations_deleted": [ ]
}

Translate Doc

Translate the note with the organization's AI model, once; the text is stored.

language is a code or a name ("German", "немецкий"). The run happens in the background: the answer is pending, and the note's translations say when it is ready or failed. A translation someone has edited is only replaced with overwrite (409 translation_edited otherwise).

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
scope
required
string (Scope)
Enum: "project" "organization"
path
required
string (Path) [ 1 .. 1024 ] characters
language
required
string (Language) [ 1 .. 64 ] characters
overwrite
boolean (Overwrite)
Default: false

Responses

Request samples

Content type
application/json
{
  • "scope": "project",
  • "path": "string",
  • "language": "string",
  • "overwrite": false
}

Response samples

Content type
application/json
{
  • "lang": "string",
  • "status": "pending",
  • "revision": 0,
  • "source_revision": 0,
  • "outdated": true,
  • "machine": true,
  • "error": "",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "updated_by_name": "string"
}

Write Doc Translation

Save a translation's text by hand (creates it when the note has none in lang).

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
scope
required
string (Scope)
Enum: "project" "organization"
path
required
string (Path) [ 1 .. 1024 ] characters
lang
required
string (Lang) [ 1 .. 64 ] characters
content
required
string (Content) <= 3145728 characters
Base Revision (integer) or Base Revision (null) (Base Revision)
mark_current
boolean (Mark Current)
Default: false

Responses

Request samples

Content type
application/json
{
  • "scope": "project",
  • "path": "string",
  • "lang": "string",
  • "content": "string",
  • "base_revision": 0,
  • "mark_current": false
}

Response samples

Content type
application/json
{
  • "lang": "string",
  • "status": "pending",
  • "revision": 0,
  • "source_revision": 0,
  • "outdated": true,
  • "machine": true,
  • "error": "",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "updated_by_name": "string"
}

Delete Doc Translation

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

The note's path, e.g. guides/setup.md

lang
required
string (Lang) [ 1 .. 64 ] characters

A translation's language, e.g. en

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

List Doc Translation Revisions

path Parameters
slug
required
string (Slug)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

The note's path, e.g. guides/setup.md

lang
required
string (Lang) [ 1 .. 64 ] characters

A translation's language, e.g. en

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Doc Translation Revision

path Parameters
slug
required
string (Slug)
revision_id
required
string <uuid> (Revision Id)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

The note's path, e.g. guides/setup.md

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "number": 0,
  • "action": "translate",
  • "source_revision": 0,
  • "author_name": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "content": "string"
}

Restore Doc Translation Revision

path Parameters
slug
required
string (Slug)
revision_id
required
string <uuid> (Revision Id)
query Parameters
scope
required
string (Scope)
Enum: "project" "organization"

Whose notes: the project's or its organization's.

path
required
string (Path) [ 1 .. 1024 ] characters

The note's path, e.g. guides/setup.md

Responses

Response samples

Content type
application/json
{
  • "lang": "string",
  • "status": "pending",
  • "revision": 0,
  • "source_revision": 0,
  • "outdated": true,
  • "machine": true,
  • "error": "",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "updated_by_name": "string"
}

Get Doc Languages

The project's default languages: what agents get, and what the app opens for people.

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
{
  • "agent_lang": "string",
  • "human_lang": "string"
}

Update Doc Languages

Set both defaults: a code or a name each, empty or null for the original.

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
Agent Lang (string) or Agent Lang (null) (Agent Lang)
Human Lang (string) or Human Lang (null) (Human Lang)

Responses

Request samples

Content type
application/json
{
  • "agent_lang": "string",
  • "human_lang": "string"
}

Response samples

Content type
application/json
{
  • "agent_lang": "string",
  • "human_lang": "string"
}

planned-events

List Planned Events

path Parameters
slug
required
string (Slug)
query Parameters
ChartAnnotationScopeType (string) or Scope Type (null) (Scope Type)
Scope Ref (string) or Scope Ref (null) (Scope Ref)
Time From (string) or Time From (null) (Time From)
Time To (string) or Time To (null) (Time To)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Planned Event

path Parameters
slug
required
string (Slug)
Request Body schema: application/json
required
label
required
string (Label) [ 1 .. 200 ] characters
Description (string) or Description (null) (Description)
starts_at
required
string <date-time> (Starts At)
ends_at
required
string <date-time> (Ends At)
AnomalyDirection (string) or null
ChartAnnotationScopeType (string) or null
Scope Ref (string) or Scope Ref (null) (Scope Ref)

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "description": "string",
  • "starts_at": "2019-08-24T14:15:22Z",
  • "ends_at": "2019-08-24T14:15:22Z",
  • "direction": "spike",
  • "scope_type": "project_total",
  • "scope_ref": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "label": "string",
  • "description": "string",
  • "starts_at": "2019-08-24T14:15:22Z",
  • "ends_at": "2019-08-24T14:15:22Z",
  • "direction": "spike",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "source": "manual",
  • "created_by_user_id": "209f54c4-4c33-43bc-9c6a-ef4c65ad7473",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "scope_name": "string"
}

List Planned Window Suggestions

Recurring windows the project's expected verdicts point at (#271).

Accepting one is creating its windows as planned events; it then drops out of this list.

path Parameters
slug
required
string (Slug)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Update Planned Event

path Parameters
slug
required
string (Slug)
planned_event_id
required
string <uuid> (Planned Event Id)
Request Body schema: application/json
required
Label (string) or Label (null) (Label)
Description (string) or Description (null) (Description)
Starts At (string) or Starts At (null) (Starts At)
Ends At (string) or Ends At (null) (Ends At)
AnomalyDirection (string) or null
ChartAnnotationScopeType (string) or null
Scope Ref (string) or Scope Ref (null) (Scope Ref)

Responses

Request samples

Content type
application/json
{
  • "label": "string",
  • "description": "string",
  • "starts_at": "2019-08-24T14:15:22Z",
  • "ends_at": "2019-08-24T14:15:22Z",
  • "direction": "spike",
  • "scope_type": "project_total",
  • "scope_ref": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
  • "label": "string",
  • "description": "string",
  • "starts_at": "2019-08-24T14:15:22Z",
  • "ends_at": "2019-08-24T14:15:22Z",
  • "direction": "spike",
  • "scope_type": "project_total",
  • "scope_ref": "string",
  • "source": "manual",
  • "created_by_user_id": "209f54c4-4c33-43bc-9c6a-ef4c65ad7473",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "scope_name": "string"
}

Delete Planned Event

path Parameters
slug
required
string (Slug)
planned_event_id
required
string <uuid> (Planned Event Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

implementation-tickets

List Branch Implementation Tickets

Read-only: tickets are opened by the merge worker, never by a client.

Auth matches the other branch reads — any authenticated project reader, via the router-level get_current_user dependency; no editor gate, because nothing here mutates.

path Parameters
slug
required
string (Slug)
branch_id
required
string <uuid> (Branch Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List Event Implementation Tickets

The tickets that named this event, across every branch that merged.

Shows history; it does not replace the editable meta field. Rows only exist where the Jira integration is enabled and a branch has merged.

path Parameters
slug
required
string (Slug)
event_id
required
string <uuid> (Event Id)
query Parameters
Branch (string) or Branch (null) (Branch)

Plan branch id (UUID) to read and write instead of the main branch.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

notifications

List My Notifications

query Parameters
unread
boolean (Unread)
Default: false
limit
integer (Limit) [ 1 .. 100 ]
Default: 30
Cursor (string) or Cursor (null) (Cursor)

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "next_cursor": "string"
}

My Unread Count

Responses

Response samples

Content type
application/json
{
  • "unread": 0
}

Mark My Notifications Read

Request Body schema: application/json
required
ids
Array of strings <uuid> (Ids) <= 500 items [ items <uuid > ]
all
boolean (All)
Default: false

Responses

Request samples

Content type
application/json
{
  • "ids": [
    ],
  • "all": false
}

Response samples

Content type
application/json
{
  • "updated": 0,
  • "unread": 0
}

Get My Notification Prefs

Responses

Response samples

Content type
application/json
{
  • "email_mode": "off",
  • "mentions_email": true,
  • "email_available": true
}

Update My Notification Prefs

Request Body schema: application/json
required
Email Mode (string) or Email Mode (null) (Email Mode)
Mentions Email (boolean) or Mentions Email (null) (Mentions Email)

Responses

Request samples

Content type
application/json
{
  • "email_mode": "off",
  • "mentions_email": true
}

Response samples

Content type
application/json
{
  • "email_mode": "off",
  • "mentions_email": true,
  • "email_available": true
}

Get My Subscription

path Parameters
slug
required
string (Slug)
entity_type
required
string (Entity Type)
Enum: "event" "event_type" "metric" "branch"
entity_id
required
string <uuid> (Entity Id)

Responses

Response samples

Content type
application/json
{
  • "entity_type": "event",
  • "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
  • "watching": true,
  • "muted": true,
  • "reasons": [
    ]
}

Watch Entity

path Parameters
slug
required
string (Slug)
entity_type
required
string (Entity Type)
Enum: "event" "event_type" "metric" "branch"
entity_id
required
string <uuid> (Entity Id)

Responses

Response samples

Content type
application/json
{
  • "entity_type": "event",
  • "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
  • "watching": true,
  • "muted": true,
  • "reasons": [
    ]
}

Unwatch Entity

path Parameters
slug
required
string (Slug)
entity_type
required
string (Entity Type)
Enum: "event" "event_type" "metric" "branch"
entity_id
required
string <uuid> (Entity Id)

Responses

Response samples

Content type
application/json
{
  • "entity_type": "event",
  • "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
  • "watching": true,
  • "muted": true,
  • "reasons": [
    ]
}

Mute Entity

path Parameters
slug
required
string (Slug)
entity_type
required
string (Entity Type)
Enum: "event" "event_type" "metric" "branch"
entity_id
required
string <uuid> (Entity Id)
Request Body schema: application/json
required
muted
required
boolean (Muted)

Responses

Request samples

Content type
application/json
{
  • "muted": true
}

Response samples

Content type
application/json
{
  • "entity_type": "event",
  • "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
  • "watching": true,
  • "muted": true,
  • "reasons": [
    ]
}

organizations

List Orgs

The organizations the caller belongs to, with their role in each.

An API key belongs to one organization and lists only that one. A suspended organization is listed with its status (F20 PR14). A platform admin's browser session also lists the organizations they have a live read-only step-in to, flagged step_in.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Org

Create an organization; its creator becomes its owner.

Request Body schema: application/json
required
name
required
string (Name) [ 1 .. 255 ] characters
slug
required
string (Slug) [ 1 .. 255 ] characters ^[a-z0-9]+(?:-[a-z0-9]+)*$

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "slug": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "slug": "string",
  • "name": "string",
  • "role": "owner",
  • "status": "active",
  • "is_default": true,
  • "default_project_role": "none",
  • "created_at": "2019-08-24T14:15:22Z",
  • "step_in": false
}

Get Org

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "slug": "string",
  • "name": "string",
  • "role": "owner",
  • "status": "active",
  • "is_default": true,
  • "default_project_role": "none",
  • "created_at": "2019-08-24T14:15:22Z",
  • "step_in": false
}

Delete Org

Start deleting the organization: 202, then a background job purges it.

The body must repeat the slug ({"confirm_slug": "<slug>"}). The default organization cannot be deleted. From this response on the organization answers 404 everywhere.

Request Body schema: application/json
required
confirm_slug
required
string (Confirm Slug) [ 1 .. 255 ] characters

Responses

Request samples

Content type
application/json
{
  • "confirm_slug": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "slug": "string",
  • "name": "string",
  • "role": "owner",
  • "status": "active",
  • "is_default": true,
  • "default_project_role": "none",
  • "created_at": "2019-08-24T14:15:22Z",
  • "step_in": false
}

Update Org

Rename the organization and/or set its default project role.

The slug is permanent: a slug in the body is a 422, and so is a default_project_role of owner. Audited as org.update with the changed fields before and after.

Request Body schema: application/json
required
Name (string) or Name (null) (Name)
ProjectMemberRole (string) or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "default_project_role": "none"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "slug": "string",
  • "name": "string",
  • "role": "owner",
  • "status": "active",
  • "is_default": true,
  • "default_project_role": "none",
  • "created_at": "2019-08-24T14:15:22Z",
  • "step_in": false
}

List Members

query Parameters
limit
integer (Limit) [ 1 .. 1000 ]
Default: 200
offset
integer (Offset) >= 0
Default: 0

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Update Member Role

Change a member's organization role (owner | admin | member).

path Parameters
user_id
required
string <uuid> (User Id)
Request Body schema: application/json
required
role
required
string (OrganizationRole)
Enum: "owner" "admin" "member"

A user's role in one organization (organization_members.role).

The source of truth for organization-level rights (F20 PR4). owner and admin administer the organization and are the implicit owner of every project in it; only an owner can make or unmake another owner. member holds the role of their project_members row in a project, or the organization's default_project_role where they hold none.

Responses

Request samples

Content type
application/json
{
  • "role": "owner"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "email": "string",
  • "name": "string",
  • "role": "owner",
  • "created_at": "2019-08-24T14:15:22Z"
}

Remove Member

Remove a member: their membership, project rows, keys and pending invitations here.

path Parameters
user_id
required
string <uuid> (User Id)

Responses

Response samples

Content type
application/json
{
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "project_memberships_removed": 0,
  • "api_keys_revoked": 0,
  • "invitations_revoked": 0,
  • "group_memberships_removed": 0
}

Transfer Ownership

Make another member an owner and step the caller down to admin.

Request Body schema: application/json
required
user_id
required
string <uuid> (User Id)

Responses

Request samples

Content type
application/json
{
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "email": "string",
  • "name": "string",
  • "role": "owner",
  • "created_at": "2019-08-24T14:15:22Z"
}

Get Org Settings

Responses

Response samples

Content type
application/json
{
  • "limits": {
    },
  • "email": {
    },
  • "ai": {
    },
  • "search": {
    },
  • "storage": {
    },
  • "organization": "string",
  • "scope": "organization",
  • "operator_fallback": "all",
  • "inherited": {
    },
  • "ceilings": {
    },
  • "storage_limits": {
    },
  • "overridden_fields": [
    ],
  • "sources": {
    }
}

Put Org Settings

Identical to PATCH: a sparse override map, unset fields left untouched.

Request Body schema: application/json
required
OrgLimitSettingsUpdate (object) or null
OrgEmailSettingsUpdate (object) or null
OrgAiSettingsUpdate (object) or null
OrgSearchSettingsUpdate (object) or null
OrgStorageSettingsUpdate (object) or null

Responses

Request samples

Content type
application/json
{
  • "limits": {
    },
  • "email": {
    },
  • "ai": {
    },
  • "search": {
    },
  • "storage": {
    }
}

Response samples

Content type
application/json
{
  • "limits": {
    },
  • "email": {
    },
  • "ai": {
    },
  • "search": {
    },
  • "storage": {
    },
  • "organization": "string",
  • "scope": "organization",
  • "operator_fallback": "all",
  • "inherited": {
    },
  • "ceilings": {
    },
  • "storage_limits": {
    },
  • "overridden_fields": [
    ],
  • "sources": {
    }
}

Patch Org Settings

Request Body schema: application/json
required
OrgLimitSettingsUpdate (object) or null
OrgEmailSettingsUpdate (object) or null
OrgAiSettingsUpdate (object) or null
OrgSearchSettingsUpdate (object) or null
OrgStorageSettingsUpdate (object) or null

Responses

Request samples

Content type
application/json
{
  • "limits": {
    },
  • "email": {
    },
  • "ai": {
    },
  • "search": {
    },
  • "storage": {
    }
}

Response samples

Content type
application/json
{
  • "limits": {
    },
  • "email": {
    },
  • "ai": {
    },
  • "search": {
    },
  • "storage": {
    },
  • "organization": "string",
  • "scope": "organization",
  • "operator_fallback": "all",
  • "inherited": {
    },
  • "ceilings": {
    },
  • "storage_limits": {
    },
  • "overridden_fields": [
    ],
  • "sources": {
    }
}

Get Org Row Limits

The organization's effective row caps, readable by every member.

Responses

Response samples

Content type
application/json
{
  • "scan_row_limit_default": 0,
  • "metrics_row_limit_default": 0
}

Get Org Photo Limits

The organization's photo upload limits (F20 PR11), readable by every member.

Responses

Response samples

Content type
application/json
{
  • "photo_max_size_mb": 0,
  • "photo_allowed_mime": [
    ]
}

Test Org Ai Settings

Probe the AI provider THIS organization would use, with its saved values.

Request Body schema: application/json
required
prompt
string (Prompt) [ 1 .. 500 ] characters
Default: "Reply with the word ok if the LLM connection works."

Responses

Request samples

Content type
application/json
{
  • "prompt": "Reply with the word ok if the LLM connection works."
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "message": "string"
}

Test Org Email Settings

Send one probe through THIS organization's relay; always 200.

Request Body schema: application/json
required
Recipient (string) or Recipient (null) (Recipient)
Any of
string <email> (Recipient)

Responses

Request samples

Content type
application/json
{
  • "recipient": "user@example.com"
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "message": "string"
}

Get Org Tracker Defaults

The organization's Jira/Linear defaults (F20 PR12); secrets as *_configured.

Responses

Response samples

Content type
application/json
{
  • "organization": "string",
  • "jira": {
    },
  • "linear": {
    },
  • "sources": {
    }
}

Patch Org Tracker Defaults

Set or clear (null / "") the organization's tracker defaults.

Request Body schema: application/json
required
OrgJiraDefaultsUpdate (object) or null
OrgLinearDefaultsUpdate (object) or null

Responses

Request samples

Content type
application/json
{
  • "jira": {
    },
  • "linear": {
    }
}

Response samples

Content type
application/json
{
  • "organization": "string",
  • "jira": {
    },
  • "linear": {
    },
  • "sources": {
    }
}

List Groups

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Group

Request Body schema: application/json
required
name
required
string (Name) [ 1 .. 255 ] characters
description
string (Description) <= 2000 characters
Default: ""

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": ""
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "description": "string",
  • "member_count": 0,
  • "managed_by_scim": false,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "members": [
    ]
}

Get Group

path Parameters
group_id
required
string <uuid> (Group Id)

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "description": "string",
  • "member_count": 0,
  • "managed_by_scim": false,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "members": [
    ]
}

Update Group

Rename the group and/or change its description.

path Parameters
group_id
required
string <uuid> (Group Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Description (string) or Description (null) (Description)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "description": "string",
  • "member_count": 0,
  • "managed_by_scim": false,
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z",
  • "members": [
    ]
}

Delete Group

path Parameters
group_id
required
string <uuid> (Group Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

Add Group Member

Add a member of the organization to the group.

path Parameters
group_id
required
string <uuid> (Group Id)
Request Body schema: application/json
required
user_id
required
string <uuid> (User Id)

Responses

Request samples

Content type
application/json
{
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}

Response samples

Content type
application/json
{
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "email": "string",
  • "name": "string",
  • "added_at": "2019-08-24T14:15:22Z"
}

Remove Group Member

path Parameters
group_id
required
string <uuid> (Group Id)
user_id
required
string <uuid> (User Id)

Responses

Response samples

Content type
application/json
{
  • "detail": [
    ]
}

platform

Get Platform Settings

Responses

Response samples

Content type
application/json
{
  • "runtime": {
    },
  • "security": {
    },
  • "storage": {
    },
  • "observability": {
    },
  • "email": {
    },
  • "ai": {
    },
  • "system": {
    },
  • "overridden_fields": [
    ],
  • "sources": {
    }
}

Patch Platform Settings

Request Body schema: application/json
required
RuntimeSettingsUpdate (object) or null
SecuritySettingsUpdate (object) or null
StorageSettingsUpdate (object) or null
ObservabilitySettingsUpdate (object) or null
EmailSettingsUpdate (object) or null
AiSettingsUpdate (object) or null

Responses

Request samples

Content type
application/json
{
  • "runtime": {
    },
  • "security": {
    },
  • "storage": {
    },
  • "observability": {
    },
  • "email": {
    },
  • "ai": {
    }
}

Response samples

Content type
application/json
{
  • "runtime": {
    },
  • "security": {
    },
  • "storage": {
    },
  • "observability": {
    },
  • "email": {
    },
  • "ai": {
    },
  • "system": {
    },
  • "overridden_fields": [
    ],
  • "sources": {
    }
}

Test Platform Ai Settings

Probe the operator's AI provider (what organizations inherit).

Request Body schema: application/json
required
prompt
string (Prompt) [ 1 .. 500 ] characters
Default: "Reply with the word ok if the LLM connection works."

Responses

Request samples

Content type
application/json
{
  • "prompt": "Reply with the word ok if the LLM connection works."
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "message": "string"
}

Test Platform Email Settings

Send one probe through the operator's relay: the one account mail uses.

Request Body schema: application/json
required
Recipient (string) or Recipient (null) (Recipient)
Any of
string <email> (Recipient)

Responses

Request samples

Content type
application/json
{
  • "recipient": "user@example.com"
}

Response samples

Content type
application/json
{
  • "ok": true,
  • "message": "string"
}

Get Telemetry

The opt-in usage ping: whether it is sent, where to, and exactly what it last held.

Responses

Response samples

Content type
application/json
{
  • "enabled": true,
  • "reason": "string",
  • "endpoint": "string",
  • "instance_id": "string",
  • "last_attempt_at": "string",
  • "last_delivered": true,
  • "last_payload": { }
}