{- "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
}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.
| 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) |
{- "email": "user@example.com",
- "password": "string",
- "name": "string",
- "org_name": "string",
- "org_slug": "string"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "string",
- "name": "string",
- "role": "owner",
- "is_platform_admin": false,
- "email_verified": false,
- "orgs": [
- {
- "slug": "string",
- "name": "string",
- "role": "owner",
- "status": "active"
}
], - "org": "string",
- "api_key_scope": "read",
- "active_step_ins": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "org_slug": "string",
- "expires_at": "2019-08-24T14:15:22Z"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}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.
| token required | string (Token) |
{- "email": "string",
- "role": "owner",
- "expires_at": "2019-08-24T14:15:22Z"
}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.
| token required | string (Token) |
Password (string) or Password (null) (Password) | |
Name (string) or Name (null) (Name) |
{- "password": "string",
- "name": "string"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "string",
- "name": "string",
- "role": "owner",
- "is_platform_admin": false,
- "email_verified": false,
- "orgs": [
- {
- "slug": "string",
- "name": "string",
- "role": "owner",
- "status": "active"
}
], - "org": "string",
- "api_key_scope": "read",
- "active_step_ins": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "org_slug": "string",
- "expires_at": "2019-08-24T14:15:22Z"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}| email required | string (Email) [ 3 .. 320 ] characters |
| password required | string (Password) [ 8 .. 255 ] characters |
{- "email": "string",
- "password": "stringst"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "string",
- "name": "string",
- "role": "owner",
- "is_platform_admin": false,
- "email_verified": false,
- "orgs": [
- {
- "slug": "string",
- "name": "string",
- "role": "owner",
- "status": "active"
}
], - "org": "string",
- "api_key_scope": "read",
- "active_step_ins": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "org_slug": "string",
- "expires_at": "2019-08-24T14:15:22Z"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}| token required | string (Token) [ 1 .. 512 ] characters |
| new_password required | string (New Password) <= 255 characters |
{- "token": "string",
- "new_password": "string"
}{- "message": "string"
}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).
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.
| token required | string (Token) [ 1 .. 512 ] characters |
{- "token": "string"
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}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.
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "string",
- "name": "string",
- "role": "owner",
- "is_platform_admin": false,
- "email_verified": false,
- "orgs": [
- {
- "slug": "string",
- "name": "string",
- "role": "owner",
- "status": "active"
}
], - "org": "string",
- "api_key_scope": "read",
- "active_step_ins": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "org_slug": "string",
- "expires_at": "2019-08-24T14:15:22Z"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}Google's redirect back: signed in and into the app, or back to sign-in.
Code (string) or Code (null) (Code) | |
State (string) or State (null) (State) | |
Error (string) or Error (null) (Error) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}The provider's redirect back: signed in and into the app, or back to sign-in.
Code (string) or Code (null) (Code) | |
State (string) or State (null) (State) | |
Error (string) or Error (null) (Error) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Outstanding invitations into the organization: the roster of pending access.
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "string",
- "role": "owner",
- "invited_by_user_id": "14555a01-60ac-4fbb-b4da-2c40f2467b11",
- "expires_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "is_expired": true
}
]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.
| email required | string <email> (Email) |
| role | string (OrganizationRole) Default: "member" Enum: "owner" "admin" "member" A user's role in one organization ( The source of truth for organization-level rights (F20 PR4). |
{- "email": "user@example.com",
- "role": "owner"
}{- "invitation": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "string",
- "role": "owner",
- "invited_by_user_id": "14555a01-60ac-4fbb-b4da-2c40f2467b11",
- "expires_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z",
- "is_expired": true
}, - "accept_path": "string",
- "expires_at": "2019-08-24T14:15:22Z"
}Revoke an invitation into the organization; its link stops working immediately.
| invitation_id required | string <uuid> (Invitation Id) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}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.
| limit | integer (Limit) [ 1 .. 1000 ] Default: 200 |
| offset | integer (Offset) >= 0 Default: 0 |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "string",
- "name": "string",
- "role": "owner",
- "created_at": "2019-08-24T14:15:22Z"
}
]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.
| user_id required | string <uuid> (User Id) |
| role required | string (OrganizationRole) Enum: "owner" "admin" "member" A user's role in one organization ( The source of truth for organization-level rights (F20 PR4). |
{- "role": "owner"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "string",
- "name": "string",
- "role": "owner",
- "created_at": "2019-08-24T14:15:22Z"
}[- {
- "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": {
- "event_type_count": 0,
- "event_count": 0,
- "active_event_count": 0,
- "implemented_event_count": 0,
- "review_pending_event_count": 0,
- "archived_event_count": 0,
- "variable_count": 0,
- "scan_count": 0,
- "metric_count": 0,
- "alert_destination_count": 0,
- "alert_rule_count": 0,
- "monitoring_signal_count": 0,
- "open_property_drift_count": 0,
- "firing_monitor_count": 0,
- "open_incident_count": 0,
- "failing_scan_config_count": 0,
- "failing_alert_destination_count": 0,
- "latest_scan_job": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_name": "string",
- "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"
}, - "latest_signal": {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_name": "string",
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "state": "string",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "z_score": 0,
- "direction": "spike"
}
}, - "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"
}
]| 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) |
{- "name": "string",
- "slug": "string",
- "description": "",
- "app_version_keep_releases": 5,
- "timezone": "UTC",
- "template_id": "string"
}{- "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": {
- "event_type_count": 0,
- "event_count": 0,
- "active_event_count": 0,
- "implemented_event_count": 0,
- "review_pending_event_count": 0,
- "archived_event_count": 0,
- "variable_count": 0,
- "scan_count": 0,
- "metric_count": 0,
- "alert_destination_count": 0,
- "alert_rule_count": 0,
- "monitoring_signal_count": 0,
- "open_property_drift_count": 0,
- "firing_monitor_count": 0,
- "open_incident_count": 0,
- "failing_scan_config_count": 0,
- "failing_alert_destination_count": 0,
- "latest_scan_job": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_name": "string",
- "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"
}, - "latest_signal": {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_name": "string",
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "state": "string",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "z_score": 0,
- "direction": "spike"
}
}, - "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"
}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.
{- "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": {
- "event_type_count": 0,
- "event_count": 0,
- "active_event_count": 0,
- "implemented_event_count": 0,
- "review_pending_event_count": 0,
- "archived_event_count": 0,
- "variable_count": 0,
- "scan_count": 0,
- "metric_count": 0,
- "alert_destination_count": 0,
- "alert_rule_count": 0,
- "monitoring_signal_count": 0,
- "open_property_drift_count": 0,
- "firing_monitor_count": 0,
- "open_incident_count": 0,
- "failing_scan_config_count": 0,
- "failing_alert_destination_count": 0,
- "latest_scan_job": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_name": "string",
- "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"
}, - "latest_signal": {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_name": "string",
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "state": "string",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "z_score": 0,
- "direction": "spike"
}
}, - "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"
}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.
{- "cancelled": true,
- "slug": "string",
- "state": "stopped"
}Re-seed a demo in place. Restricted to the demo's creator or an owner.
| slug required | string (Slug) |
{- "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": {
- "event_type_count": 0,
- "event_count": 0,
- "active_event_count": 0,
- "implemented_event_count": 0,
- "review_pending_event_count": 0,
- "archived_event_count": 0,
- "variable_count": 0,
- "scan_count": 0,
- "metric_count": 0,
- "alert_destination_count": 0,
- "alert_rule_count": 0,
- "monitoring_signal_count": 0,
- "open_property_drift_count": 0,
- "firing_monitor_count": 0,
- "open_incident_count": 0,
- "failing_scan_config_count": 0,
- "failing_alert_destination_count": 0,
- "latest_scan_job": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_name": "string",
- "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"
}, - "latest_signal": {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_name": "string",
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "state": "string",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "z_score": 0,
- "direction": "spike"
}
}, - "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"
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "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": {
- "event_type_count": 0,
- "event_count": 0,
- "active_event_count": 0,
- "implemented_event_count": 0,
- "review_pending_event_count": 0,
- "archived_event_count": 0,
- "variable_count": 0,
- "scan_count": 0,
- "metric_count": 0,
- "alert_destination_count": 0,
- "alert_rule_count": 0,
- "monitoring_signal_count": 0,
- "open_property_drift_count": 0,
- "firing_monitor_count": 0,
- "open_incident_count": 0,
- "failing_scan_config_count": 0,
- "failing_alert_destination_count": 0,
- "latest_scan_job": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_name": "string",
- "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"
}, - "latest_signal": {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_name": "string",
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "state": "string",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "z_score": 0,
- "direction": "spike"
}
}, - "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"
}| slug required | string (Slug) |
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 |
{- "name": "string",
- "slug": "string",
- "description": "string",
- "app_version_keep_releases": 1,
- "timezone": "string"
}{- "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": {
- "event_type_count": 0,
- "event_count": 0,
- "active_event_count": 0,
- "implemented_event_count": 0,
- "review_pending_event_count": 0,
- "archived_event_count": 0,
- "variable_count": 0,
- "scan_count": 0,
- "metric_count": 0,
- "alert_destination_count": 0,
- "alert_rule_count": 0,
- "monitoring_signal_count": 0,
- "open_property_drift_count": 0,
- "firing_monitor_count": 0,
- "open_incident_count": 0,
- "failing_scan_config_count": 0,
- "failing_alert_destination_count": 0,
- "latest_scan_job": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_name": "string",
- "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"
}, - "latest_signal": {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_name": "string",
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "state": "string",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "z_score": 0,
- "direction": "spike"
}
}, - "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"
}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.
| slug required | string (Slug) |
Before (string) or Before (null) (Before) | |
After (string) or After (null) (After) | |
| dry_run | boolean (Dry Run) Default: false |
{- "before": "2019-08-24T14:15:22Z",
- "after": "2019-08-24T14:15:22Z",
- "dry_run": false
}{- "metric_anomalies": 0,
- "metric_breakdown_anomalies": 0,
- "metric_baselines": 0
}Owner-only: clear every schema + distribution drift in the project's period.
Destructive and irreversible. dry_run only counts.
| slug required | string (Slug) |
Before (string) or Before (null) (Before) | |
After (string) or After (null) (After) | |
| dry_run | boolean (Dry Run) Default: false |
{- "before": "2019-08-24T14:15:22Z",
- "after": "2019-08-24T14:15:22Z",
- "dry_run": false
}{- "schema_drifts": 0,
- "distribution_drifts": 0
}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.
| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| mode | string (Mode) Default: "delete" Enum: "delete" "exclude" |
| dry_run | boolean (Dry Run) Default: true |
{- "mode": "delete",
- "dry_run": true
}{- "scanned": 0,
- "retirable": 0,
- "retired": 0,
- "kept_referenced": 0,
- "kept_observed": 0,
- "kept_documented": 0,
- "kept_user_edited": 0,
- "kept_excluded": 0
}| slug required | string (Slug) |
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. |
{- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "name": "string",
- "source_name": "string",
- "title": "",
- "description": "string",
- "required_presence_threshold": 0,
- "order": 0,
- "status": "draft",
- "sunset_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "first_seen_at": "2019-08-24T14:15:22Z",
- "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
- "reviewed": false,
- "metric_breakdown_columns": [ ],
- "drift_count": 0,
- "open_question_count": 0,
- "monitored": false,
- "lifecycle_warning": false,
- "tags": [ ],
- "field_values": [ ],
- "meta_values": [ ],
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "total": 0
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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: [] |
{- "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": [ ]
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "event_type": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "display_name": "string",
- "color": "string"
}, - "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": [
- "string"
]
}| slug required | string (Slug) |
| 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. |
{- "items": [
- {
- "identity": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "name": "string",
- "source_name": "string"
}
]
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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: [] |
[- {
- "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": [ ]
}
][- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "event_type": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "display_name": "string",
- "color": "string"
}, - "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"
}
]| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| event_ids required | Array of strings <uuid> (Event Ids) non-empty [ items <uuid > ] |
{- "event_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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) |
{- "event_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "status": "draft",
- "sunset_at": "2019-08-24T14:15:22Z",
- "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
- "reviewed": true
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| event_ids required | Array of strings <uuid> (Event Ids) non-empty [ items <uuid > ] |
{- "event_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "event_type": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "display_name": "string",
- "color": "string"
}, - "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"
}
]| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "event_type": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "display_name": "string",
- "color": "string"
}, - "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"
}| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
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) |
{- "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": [
- "string"
], - "required_presence_threshold": 1,
- "tags": [
- "string"
], - "field_values": [
- {
- "field_definition_id": "56ae8bcc-3ec2-44c3-a99e-07fd08a66513",
- "value": "string"
}
], - "meta_values": [
- {
- "meta_field_definition_id": "b93ee3e8-4680-4ebd-9e21-28662a5f2d1c",
- "value": "string"
}
]
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "event_type": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "display_name": "string",
- "color": "string"
}, - "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": [
- "string"
]
}| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}The event's property list (F23). Edit an entry through
PUT /variables/{variable_id}/event-overrides/{event_id}.
| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "variable_id": "8339bd98-4109-4958-960a-f55d5e3ec302",
- "name": "string",
- "variable_type": "string",
- "json_schema": { },
- "description": "",
- "required": false,
- "values": [
- "string"
], - "effective_values": [ ],
- "presence_rate": 0,
- "suggested_required": true
}
]| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "user_email": "string",
- "author_label": "string",
- "field": "string",
- "old_value": "string",
- "new_value": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
]| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| direction required | string (Direction) Enum: "up" "down" |
Array of Visible Event Ids (strings) or Visible Event Ids (null) (Visible Event Ids) |
{- "direction": "up",
- "visible_event_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "event_type": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "display_name": "string",
- "color": "string"
}, - "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"
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "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"
}
]| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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) |
{- "name": "string",
- "display_name": "string",
- "description": "",
- "color": "#6366f1",
- "order": 0,
- "field_definitions": [
- {
- "name": "string",
- "display_name": "string",
- "field_type": "string",
- "is_required": false,
- "enum_options": [
- "string"
], - "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
}
]
}{- "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"
}| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "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"
}| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
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) |
{- "display_name": "string",
- "description": "string",
- "color": "string",
- "order": 0
}{- "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"
}| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
{- "items": [
- {
- "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"
}
], - "total": 0
}| slug required | string (Slug) |
| drift_id required | string <uuid> (Drift Id) |
| 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. |
{- "action": "accept",
- "note": "string",
- "snoozed_until": "2019-08-24T14:15:22Z",
- "force": false
}{- "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"
}| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
[- {
- "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"
}
]| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
| user_id required | string <uuid> (User Id) |
{- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}{- "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"
}Owners of every live event type in the project; group by event_type_id.
| slug required | string (Slug) |
[- {
- "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"
}
]| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "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": [
- null
], - "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
}
]| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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 |
{- "name": "string",
- "display_name": "string",
- "field_type": "string",
- "is_required": false,
- "enum_options": [
- "string"
], - "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
}{- "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": [
- null
], - "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
}| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
required | Array of objects (Fields) non-empty | ||||||||||||||||||||||||||
Array (non-empty)
| |||||||||||||||||||||||||||
{- "fields": [
- {
- "name": "string",
- "display_name": "string",
- "field_type": "string",
- "is_required": false,
- "enum_options": [
- "string"
], - "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
}
]
}[- {
- "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": [
- null
], - "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
}
]| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| field_ids required | Array of strings <uuid> (Field Ids) [ items <uuid > ] |
{- "field_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}[- {
- "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": [
- null
], - "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
}
]| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
| field_id required | string <uuid> (Field Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
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) |
{- "display_name": "string",
- "field_type": "string",
- "is_required": true,
- "enum_options": [
- "string"
], - "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
}{- "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": [
- null
], - "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
}| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
| field_id required | string <uuid> (Field Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "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": [
- null
], - "default_value": "string",
- "link_template": "string",
- "order": 0,
- "sensitivity": "none"
}
]| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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" |
{- "name": "string",
- "display_name": "string",
- "field_type": "string",
- "is_required": false,
- "allow_multiple": false,
- "enum_options": [
- "string"
], - "default_value": "string",
- "link_template": "string",
- "order": 0,
- "sensitivity": "none"
}{- "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": [
- null
], - "default_value": "string",
- "link_template": "string",
- "order": 0,
- "sensitivity": "none"
}Values and events a delete of this field would clear.
| slug required | string (Slug) |
| meta_field_id required | string <uuid> (Meta Field Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "value_count": 0,
- "event_count": 0
}| slug required | string (Slug) |
| meta_field_id required | string <uuid> (Meta Field Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
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 |
{- "display_name": "string",
- "field_type": "string",
- "is_required": true,
- "allow_multiple": true,
- "enum_options": [
- "string"
], - "default_value": "string",
- "link_template": "string",
- "order": 0,
- "sensitivity": "none"
}{- "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": [
- null
], - "default_value": "string",
- "link_template": "string",
- "order": 0,
- "sensitivity": "none"
}| slug required | string (Slug) |
| meta_field_id required | string <uuid> (Meta Field Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Event properties: typed, documented values referenced by the plan (${name}), with per-event lists and drift.
| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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) |
{- "variable_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "variable_type": "string",
- "description": "string",
- "allowed_values_add": [
- "string"
], - "allowed_values_remove": [
- "string"
]
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| variable_ids required | Array of strings <uuid> (Variable Ids) non-empty [ items <uuid > ] |
{- "variable_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}New, missing-required and type-changed properties a scan saw (F23).
| slug required | string (Slug) |
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 |
{- "items": [
- {
- "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"
}
], - "total": 0
}| slug required | string (Slug) |
| drift_id required | string <uuid> (Drift Id) |
| 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) |
{- "action": "accept",
- "note": "string",
- "snoozed_until": "2019-08-24T14:15:22Z"
}{- "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"
}| slug required | string (Slug) |
Variable Id (string) or Variable Id (null) (Variable Id) | |
Event Id (string) or Event Id (null) (Event Id) |
{- "items": [
- {
- "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"
}
], - "total": 0
}| slug required | string (Slug) |
| drift_id required | string <uuid> (Drift Id) |
| 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) |
{- "action": "accept",
- "scope": "global",
- "note": "string",
- "snoozed_until": "2019-08-24T14:15:22Z"
}{- "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"
}| slug required | string (Slug) |
| 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. |
{- "items": [
- {
- "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": [ ]
}
], - "total": 0
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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. |
{- "name": "string",
- "variable_type": "string",
- "description": "",
- "allowed_values": [
- "string"
], - "bindings": [
- "string"
], - "json_schema": { }
}{- "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": [ ]
}| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "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",
- "field_definition_id": "56ae8bcc-3ec2-44c3-a99e-07fd08a66513",
- "field_name": "string",
- "field_display_name": "string",
- "source_column": "string",
- "value_kind": "low",
- "observed_count": 0,
- "values": [ ],
- "updated_at": "2019-08-24T14:15:22Z"
}
]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.
| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Context Id (string) or Context Id (null) (Context Id) Clear one context row instead of all of them. The id is the | |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "variable_id": "8339bd98-4109-4958-960a-f55d5e3ec302",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_name": "string",
- "values": [
- "string"
], - "required": false
}
]The events whose property list carries this property, with each entry's required flag, override and last measured presence (F23.8).
| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_name": "string",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "status": "string",
- "required": false,
- "values": [
- "string"
], - "effective_values": [ ],
- "presence_rate": 0,
- "required_presence_threshold": 0,
- "suggested_required": true
}
]Add the property to many events' lists, or apply one patch to each entry: the single PUT's semantics, all or nothing (F23.8).
| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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. |
{- "event_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "required": true,
- "values": [
- "string"
]
}{- "created": 0,
- "updated": 0,
- "removed": 0
}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.
| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| event_ids required | Array of strings <uuid> (Event Ids) [ 1 .. 5000 ] items [ items <uuid > ] |
{- "event_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{- "created": 0,
- "updated": 0,
- "removed": 0
}| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
| event_id required | string <uuid> (Event Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
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. |
{- "values": [
- "string"
], - "required": true
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "variable_id": "8339bd98-4109-4958-960a-f55d5e3ec302",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_name": "string",
- "values": [
- "string"
], - "required": false
}| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
| event_id required | string <uuid> (Event Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
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. |
{- "name": "string",
- "variable_type": "string",
- "description": "string",
- "allowed_values": [
- "string"
], - "bindings": [
- "string"
], - "excluded_from_scans": true,
- "json_schema": { }
}{- "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": [ ]
}| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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) |
{- "variable_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "variable_type": "string",
- "description": "string",
- "allowed_values_add": [
- "string"
], - "allowed_values_remove": [
- "string"
]
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| variable_ids required | Array of strings <uuid> (Variable Ids) non-empty [ items <uuid > ] |
{- "variable_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}New, missing-required and type-changed properties a scan saw (F23).
| slug required | string (Slug) |
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 |
{- "items": [
- {
- "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"
}
], - "total": 0
}| slug required | string (Slug) |
| drift_id required | string <uuid> (Drift Id) |
| 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) |
{- "action": "accept",
- "note": "string",
- "snoozed_until": "2019-08-24T14:15:22Z"
}{- "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"
}| slug required | string (Slug) |
Variable Id (string) or Variable Id (null) (Variable Id) | |
Event Id (string) or Event Id (null) (Event Id) |
{- "items": [
- {
- "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"
}
], - "total": 0
}| slug required | string (Slug) |
| drift_id required | string <uuid> (Drift Id) |
| 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) |
{- "action": "accept",
- "scope": "global",
- "note": "string",
- "snoozed_until": "2019-08-24T14:15:22Z"
}{- "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"
}| slug required | string (Slug) |
| 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. |
{- "items": [
- {
- "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": [ ]
}
], - "total": 0
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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. |
{- "name": "string",
- "variable_type": "string",
- "description": "",
- "allowed_values": [
- "string"
], - "bindings": [
- "string"
], - "json_schema": { }
}{- "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": [ ]
}| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "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",
- "field_definition_id": "56ae8bcc-3ec2-44c3-a99e-07fd08a66513",
- "field_name": "string",
- "field_display_name": "string",
- "source_column": "string",
- "value_kind": "low",
- "observed_count": 0,
- "values": [ ],
- "updated_at": "2019-08-24T14:15:22Z"
}
]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.
| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Context Id (string) or Context Id (null) (Context Id) Clear one context row instead of all of them. The id is the | |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "variable_id": "8339bd98-4109-4958-960a-f55d5e3ec302",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_name": "string",
- "values": [
- "string"
], - "required": false
}
]The events whose property list carries this property, with each entry's required flag, override and last measured presence (F23.8).
| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_name": "string",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "status": "string",
- "required": false,
- "values": [
- "string"
], - "effective_values": [ ],
- "presence_rate": 0,
- "required_presence_threshold": 0,
- "suggested_required": true
}
]Add the property to many events' lists, or apply one patch to each entry: the single PUT's semantics, all or nothing (F23.8).
| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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. |
{- "event_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "required": true,
- "values": [
- "string"
]
}{- "created": 0,
- "updated": 0,
- "removed": 0
}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.
| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| event_ids required | Array of strings <uuid> (Event Ids) [ 1 .. 5000 ] items [ items <uuid > ] |
{- "event_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{- "created": 0,
- "updated": 0,
- "removed": 0
}| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
| event_id required | string <uuid> (Event Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
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. |
{- "values": [
- "string"
], - "required": true
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "variable_id": "8339bd98-4109-4958-960a-f55d5e3ec302",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_name": "string",
- "values": [
- "string"
], - "required": false
}| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
| event_id required | string <uuid> (Event Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
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. |
{- "name": "string",
- "variable_type": "string",
- "description": "string",
- "allowed_values": [
- "string"
], - "bindings": [
- "string"
], - "excluded_from_scans": true,
- "json_schema": { }
}{- "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": [ ]
}| slug required | string (Slug) |
| variable_id required | string <uuid> (Variable Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "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"
}
]| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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: "" |
{- "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": ""
}{- "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"
}| slug required | string (Slug) |
| relation_id required | string <uuid> (Relation Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
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) |
{- "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"
}{- "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"
}| slug required | string (Slug) |
| relation_id required | string <uuid> (Relation Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}[- {
- "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": [
- "string"
], - "event_group_rules": [
- {
- "name": "string",
- "condition_logic": "all",
- "conditions": [
- {
- "field": "string",
- "pattern": "string"
}
]
}
], - "setup_preset": "custom",
- "event_name_column": "string",
- "properties_column": "string",
- "json_string_columns": [
- "string"
], - "metric_breakdown_columns": [
- "string"
], - "metric_breakdown_values_limit": 0,
- "distribution_drift_fields": [
- "string"
], - "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": {
- "status": "fresh",
- "lag_seconds": 0,
- "last_event_at": "2019-08-24T14:15:22Z",
- "last_collection_at": "2019-08-24T14:15:22Z",
- "expected_by": "2019-08-24T14:15:22Z"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "monitoring_enabled": true
}
]| slug required | string (Slug) |
| 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) |
{- "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": [
- "string"
], - "event_group_rules": [
- {
- "name": "string",
- "condition_logic": "all",
- "conditions": [
- {
- "field": "string",
- "pattern": "string"
}
]
}
], - "setup_preset": "custom",
- "event_name_column": "string",
- "properties_column": "string",
- "json_string_columns": [
- "string"
], - "metric_breakdown_columns": [
- "string"
], - "metric_breakdown_values_limit": 1,
- "distribution_drift_fields": [
- "string"
], - "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"
}{- "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": [
- "string"
], - "event_group_rules": [
- {
- "name": "string",
- "condition_logic": "all",
- "conditions": [
- {
- "field": "string",
- "pattern": "string"
}
]
}
], - "setup_preset": "custom",
- "event_name_column": "string",
- "properties_column": "string",
- "json_string_columns": [
- "string"
], - "metric_breakdown_columns": [
- "string"
], - "metric_breakdown_values_limit": 0,
- "distribution_drift_fields": [
- "string"
], - "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": {
- "status": "fresh",
- "lag_seconds": 0,
- "last_event_at": "2019-08-24T14:15:22Z",
- "last_collection_at": "2019-08-24T14:15:22Z",
- "expected_by": "2019-08-24T14:15:22Z"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "monitoring_enabled": true
}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.
| slug required | string (Slug) |
{- "window_from": "2019-08-24T14:15:22Z",
- "window_to": "2019-08-24T14:15:22Z",
- "items": [
- {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "latest_job": {
- "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"
}, - "failing_streak": 0,
- "rows_read_24h": 0,
- "warehouse_rows_24h": 0,
- "catalog_combinations_24h": 0
}
]
}Enqueue a preview job; poll GET /preview-jobs/{job_id} for the result.
| slug required | string (Slug) |
| 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) |
{- "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
- "base_query": "string",
- "limit": 10,
- "json_value_paths": [
- "string"
], - "time_column": "string",
- "scan_lookback_hours": 1,
- "include_json_paths": false,
- "event_name_column": "string",
- "properties_column": "string",
- "json_string_columns": [
- "string"
]
}{- "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"
}| slug required | string (Slug) |
| job_id required | string <uuid> (Job Id) |
{- "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"
}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.
| slug required | string (Slug) |
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 |
{- "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": [
- {
- "name": "string",
- "condition_logic": "all",
- "conditions": [
- {
- "field": "string",
- "pattern": "string"
}
]
}
], - "json_value_paths": [
- "string"
], - "setup_preset": "custom",
- "event_name_column": "string",
- "properties_column": "string",
- "json_string_columns": [
- "string"
], - "cardinality_threshold": 100,
- "app_version_column": "string",
- "platform_column": "string",
- "scan_lookback_hours": 1,
- "sample_row_limit": 5000
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "pending",
- "started_at": "2019-08-24T14:15:22Z",
- "completed_at": "2019-08-24T14:15:22Z",
- "result_summary": {
- "window_from": "2019-08-24T14:15:22Z",
- "window_to": "2019-08-24T14:15:22Z",
- "sampled_rows": 0,
- "sample_row_limit": 0,
- "sample_is_complete": true,
- "breakdown_combinations": 0,
- "events": [
- {
- "name": "string",
- "source_name": "string",
- "event_type": "string",
- "approx_row_count": 0,
- "share_of_sample": 0,
- "status": "new",
- "grouped_by_rule": "string",
- "count_confidence": "exact"
}
], - "events_truncated": false,
- "max_events_reached": false,
- "fields": [
- {
- "name": "string",
- "type": "json",
- "status": "new",
- "event_type": "string"
}
], - "templated_columns": [
- {
- "column": "string",
- "distinct_values": 0,
- "threshold": 0
}
], - "reserved_columns": [
- "string"
], - "unmapped_columns": [
- "string"
], - "warnings": [
- "string"
], - "errors": [
- "string"
], - "name_warnings": [
- {
- "code": "combinatorial_explosion",
- "event_type": "string",
- "message": "string",
- "count": 0,
- "slot": 0,
- "slot_label": "string",
- "pattern": "string",
- "samples": [
- "string"
], - "name": "string",
- "duplicate_of": {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "name": "string",
- "score": 0,
- "status": "string"
}
}
]
}, - "error_message": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}| slug required | string (Slug) |
| job_id required | string <uuid> (Job Id) |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "pending",
- "started_at": "2019-08-24T14:15:22Z",
- "completed_at": "2019-08-24T14:15:22Z",
- "result_summary": {
- "window_from": "2019-08-24T14:15:22Z",
- "window_to": "2019-08-24T14:15:22Z",
- "sampled_rows": 0,
- "sample_row_limit": 0,
- "sample_is_complete": true,
- "breakdown_combinations": 0,
- "events": [
- {
- "name": "string",
- "source_name": "string",
- "event_type": "string",
- "approx_row_count": 0,
- "share_of_sample": 0,
- "status": "new",
- "grouped_by_rule": "string",
- "count_confidence": "exact"
}
], - "events_truncated": false,
- "max_events_reached": false,
- "fields": [
- {
- "name": "string",
- "type": "json",
- "status": "new",
- "event_type": "string"
}
], - "templated_columns": [
- {
- "column": "string",
- "distinct_values": 0,
- "threshold": 0
}
], - "reserved_columns": [
- "string"
], - "unmapped_columns": [
- "string"
], - "warnings": [
- "string"
], - "errors": [
- "string"
], - "name_warnings": [
- {
- "code": "combinatorial_explosion",
- "event_type": "string",
- "message": "string",
- "count": 0,
- "slot": 0,
- "slot_label": "string",
- "pattern": "string",
- "samples": [
- "string"
], - "name": "string",
- "duplicate_of": {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "name": "string",
- "score": 0,
- "status": "string"
}
}
]
}, - "error_message": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}| slug required | string (Slug) |
| scan_id required | string <uuid> (Scan Id) |
{- "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": [
- "string"
], - "event_group_rules": [
- {
- "name": "string",
- "condition_logic": "all",
- "conditions": [
- {
- "field": "string",
- "pattern": "string"
}
]
}
], - "setup_preset": "custom",
- "event_name_column": "string",
- "properties_column": "string",
- "json_string_columns": [
- "string"
], - "metric_breakdown_columns": [
- "string"
], - "metric_breakdown_values_limit": 0,
- "distribution_drift_fields": [
- "string"
], - "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": {
- "status": "fresh",
- "lag_seconds": 0,
- "last_event_at": "2019-08-24T14:15:22Z",
- "last_collection_at": "2019-08-24T14:15:22Z",
- "expected_by": "2019-08-24T14:15:22Z"
}, - "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
}| slug required | string (Slug) |
| scan_id required | string <uuid> (Scan Id) |
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) |
{- "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": [
- "string"
], - "event_group_rules": [
- {
- "name": "string",
- "condition_logic": "all",
- "conditions": [
- {
- "field": "string",
- "pattern": "string"
}
]
}
], - "setup_preset": "custom",
- "event_name_column": "string",
- "properties_column": "string",
- "json_string_columns": [
- "string"
], - "metric_breakdown_columns": [
- "string"
], - "metric_breakdown_values_limit": 1,
- "distribution_drift_fields": [
- "string"
], - "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"
}{- "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": [
- "string"
], - "event_group_rules": [
- {
- "name": "string",
- "condition_logic": "all",
- "conditions": [
- {
- "field": "string",
- "pattern": "string"
}
]
}
], - "setup_preset": "custom",
- "event_name_column": "string",
- "properties_column": "string",
- "json_string_columns": [
- "string"
], - "metric_breakdown_columns": [
- "string"
], - "metric_breakdown_values_limit": 0,
- "distribution_drift_fields": [
- "string"
], - "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": {
- "status": "fresh",
- "lag_seconds": 0,
- "last_event_at": "2019-08-24T14:15:22Z",
- "last_collection_at": "2019-08-24T14:15:22Z",
- "expected_by": "2019-08-24T14:15:22Z"
}, - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "monitoring_enabled": true
}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.
| slug required | string (Slug) |
| scan_id required | string <uuid> (Scan Id) |
{- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "platform_column": "string",
- "platforms": [
- "string"
], - "items": [
- {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_name": "string",
- "present_platforms": [
- "string"
]
}
]
}{- "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"
}| slug required | string (Slug) |
| scan_id required | string <uuid> (Scan Id) |
{- "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"
}| slug required | string (Slug) |
| scan_id required | string <uuid> (Scan Id) |
| time_from required | string <date-time> (Time From) |
| time_to required | string <date-time> (Time To) |
{- "time_from": "2019-08-24T14:15:22Z",
- "time_to": "2019-08-24T14:15:22Z"
}{- "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"
}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.
| slug required | string (Slug) |
| scan_id required | string <uuid> (Scan Id) |
| limit | integer (Limit) [ 1 .. 200 ] Default: 50 |
[- {
- "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"
}
]| slug required | string (Slug) |
| scan_id required | string <uuid> (Scan Id) |
| job_id required | string <uuid> (Job Id) |
{- "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"
}| slug required | string (Slug) |
| scan_id required | string <uuid> (Scan Id) |
| job_id required | string <uuid> (Job Id) |
{- "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"
}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.
| slug required | string (Slug) |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
- "freshness": {
- "status": "fresh",
- "lag_seconds": 0,
- "last_event_at": "2019-08-24T14:15:22Z",
- "last_collection_at": "2019-08-24T14:15:22Z",
- "expected_by": "2019-08-24T14:15:22Z"
}
}
]| slug required | string (Slug) |
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. |
{- "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": {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "state": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "stddev": 0,
- "z_score": 0,
- "direction": "spike",
- "relative_effect": 0,
- "scope_name": "string",
- "incident_child": false,
- "unit": "string",
- "detected_at": "2019-08-24T14:15:22Z",
- "incident_id": "2f811c5b-b888-4fb3-aac5-3c6a4b05df32",
- "incident_status": "open",
- "acknowledged_at": "2019-08-24T14:15:22Z",
- "muted": false,
- "muted_until": "2019-08-24T14:15:22Z",
- "expected": false,
- "expected_note": "string",
- "hidden": false,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "incident": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "open"
}, - "anomaly_id": "ad2dfd01-0c70-4540-950a-db06805bc49d",
- "attribution": {
- "delta": 0,
- "columns": [
- {
- "column": "string",
- "explained_share": 0,
- "values": [
- {
- "value": "string",
- "delta": 0,
- "expected": 0,
- "actual": 0,
- "share": 0
}
]
}
], - "release": {
- "version": "string",
- "previous_version": "string",
- "share": 0,
- "reached_at": "2019-08-24T14:15:22Z"
}, - "headline": "string",
- "release_line": "string",
- "computed_at": "2019-08-24T14:15:22Z"
}, - "attribution_status": "ready",
- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string"
}
]
}, - "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": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "count": 0,
- "expected_count": 0,
- "stddev": 0,
- "detector_kind": "string",
- "is_anomaly": false,
- "anomaly_direction": "spike",
- "z_score": 0,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "planned_event_id": "0462e26c-4f95-4e5e-ac89-b7d339fd64c6",
- "baseline_expected": 0,
- "baseline_stddev": 0
}
], - "forecast": [ ]
}| slug required | string (Slug) |
| 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) |
{- "event_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "time_from": "2019-08-24T14:15:22Z",
- "time_to": "2019-08-24T14:15:22Z"
}[- {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "interval": "15m",
- "total_count": 0,
- "data": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "count": 0,
- "expected_count": 0,
- "stddev": 0,
- "detector_kind": "string",
- "is_anomaly": false,
- "anomaly_direction": "spike",
- "z_score": 0,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "planned_event_id": "0462e26c-4f95-4e5e-ac89-b7d339fd64c6",
- "baseline_expected": 0,
- "baseline_stddev": 0
}
]
}
]| slug required | string (Slug) |
| window_hours | integer (Window Hours) [ 1 .. 720 ] Default: 48 |
| limit | integer (Limit) [ 1 .. 100 ] Default: 6 |
[- {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "name": "string",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "total_count": 0,
- "window_total_count": 0
}
]| slug required | string (Slug) |
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id) | |
From (string) or From (null) (From) | |
To (string) or To (null) (To) |
{- "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": {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "state": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "stddev": 0,
- "z_score": 0,
- "direction": "spike",
- "relative_effect": 0,
- "scope_name": "string",
- "incident_child": false,
- "unit": "string",
- "detected_at": "2019-08-24T14:15:22Z",
- "incident_id": "2f811c5b-b888-4fb3-aac5-3c6a4b05df32",
- "incident_status": "open",
- "acknowledged_at": "2019-08-24T14:15:22Z",
- "muted": false,
- "muted_until": "2019-08-24T14:15:22Z",
- "expected": false,
- "expected_note": "string",
- "hidden": false,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "incident": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "open"
}, - "anomaly_id": "ad2dfd01-0c70-4540-950a-db06805bc49d",
- "attribution": {
- "delta": 0,
- "columns": [
- {
- "column": "string",
- "explained_share": 0,
- "values": [
- {
- "value": "string",
- "delta": 0,
- "expected": 0,
- "actual": 0,
- "share": 0
}
]
}
], - "release": {
- "version": "string",
- "previous_version": "string",
- "share": 0,
- "reached_at": "2019-08-24T14:15:22Z"
}, - "headline": "string",
- "release_line": "string",
- "computed_at": "2019-08-24T14:15:22Z"
}, - "attribution_status": "ready",
- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string"
}
]
}, - "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": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "count": 0,
- "expected_count": 0,
- "stddev": 0,
- "detector_kind": "string",
- "is_anomaly": false,
- "anomaly_direction": "spike",
- "z_score": 0,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "planned_event_id": "0462e26c-4f95-4e5e-ac89-b7d339fd64c6",
- "baseline_expected": 0,
- "baseline_stddev": 0
}
], - "forecast": [ ]
}| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
From (string) or From (null) (From) | |
To (string) or To (null) (To) |
{- "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": {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "state": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "stddev": 0,
- "z_score": 0,
- "direction": "spike",
- "relative_effect": 0,
- "scope_name": "string",
- "incident_child": false,
- "unit": "string",
- "detected_at": "2019-08-24T14:15:22Z",
- "incident_id": "2f811c5b-b888-4fb3-aac5-3c6a4b05df32",
- "incident_status": "open",
- "acknowledged_at": "2019-08-24T14:15:22Z",
- "muted": false,
- "muted_until": "2019-08-24T14:15:22Z",
- "expected": false,
- "expected_note": "string",
- "hidden": false,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "incident": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "open"
}, - "anomaly_id": "ad2dfd01-0c70-4540-950a-db06805bc49d",
- "attribution": {
- "delta": 0,
- "columns": [
- {
- "column": "string",
- "explained_share": 0,
- "values": [
- {
- "value": "string",
- "delta": 0,
- "expected": 0,
- "actual": 0,
- "share": 0
}
]
}
], - "release": {
- "version": "string",
- "previous_version": "string",
- "share": 0,
- "reached_at": "2019-08-24T14:15:22Z"
}, - "headline": "string",
- "release_line": "string",
- "computed_at": "2019-08-24T14:15:22Z"
}, - "attribution_status": "ready",
- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string"
}
]
}, - "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": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "count": 0,
- "expected_count": 0,
- "stddev": 0,
- "detector_kind": "string",
- "is_anomaly": false,
- "anomaly_direction": "spike",
- "z_score": 0,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "planned_event_id": "0462e26c-4f95-4e5e-ac89-b7d339fd64c6",
- "baseline_expected": 0,
- "baseline_stddev": 0
}
], - "forecast": [ ]
}| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
Column (string) or Column (null) (Column) | |
From (string) or From (null) (From) | |
To (string) or To (null) (To) |
{- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "interval": "15m",
- "columns": [
- "string"
], - "selected_column": "string",
- "series": [
- {
- "breakdown_value": "string",
- "is_other": false,
- "total_count": 0,
- "data": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "count": 0,
- "expected_count": 0,
- "stddev": 0,
- "detector_kind": "string",
- "is_anomaly": false,
- "anomaly_direction": "spike",
- "z_score": 0,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "planned_event_id": "0462e26c-4f95-4e5e-ac89-b7d339fd64c6",
- "baseline_expected": 0,
- "baseline_stddev": 0
}
], - "parity_anomalies": [ ]
}
]
}| slug required | string (Slug) |
| event_type_id required | string <uuid> (Event Type Id) |
From (string) or From (null) (From) | |
To (string) or To (null) (To) |
{- "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": {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "state": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "stddev": 0,
- "z_score": 0,
- "direction": "spike",
- "relative_effect": 0,
- "scope_name": "string",
- "incident_child": false,
- "unit": "string",
- "detected_at": "2019-08-24T14:15:22Z",
- "incident_id": "2f811c5b-b888-4fb3-aac5-3c6a4b05df32",
- "incident_status": "open",
- "acknowledged_at": "2019-08-24T14:15:22Z",
- "muted": false,
- "muted_until": "2019-08-24T14:15:22Z",
- "expected": false,
- "expected_note": "string",
- "hidden": false,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "incident": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "open"
}, - "anomaly_id": "ad2dfd01-0c70-4540-950a-db06805bc49d",
- "attribution": {
- "delta": 0,
- "columns": [
- {
- "column": "string",
- "explained_share": 0,
- "values": [
- {
- "value": "string",
- "delta": 0,
- "expected": 0,
- "actual": 0,
- "share": 0
}
]
}
], - "release": {
- "version": "string",
- "previous_version": "string",
- "share": 0,
- "reached_at": "2019-08-24T14:15:22Z"
}, - "headline": "string",
- "release_line": "string",
- "computed_at": "2019-08-24T14:15:22Z"
}, - "attribution_status": "ready",
- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string"
}
]
}, - "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": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "count": 0,
- "expected_count": 0,
- "stddev": 0,
- "detector_kind": "string",
- "is_anomaly": false,
- "anomaly_direction": "spike",
- "z_score": 0,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "planned_event_id": "0462e26c-4f95-4e5e-ac89-b7d339fd64c6",
- "baseline_expected": 0,
- "baseline_stddev": 0
}
], - "forecast": [ ]
}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).
| slug required | string (Slug) |
Array of Event Id (strings) or Event Id (null) (Event Id) | |
| expanded | boolean (Expanded) Default: false |
| needs_verdict | boolean (Needs Verdict) Default: false |
[- {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "state": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "stddev": 0,
- "z_score": 0,
- "direction": "spike",
- "relative_effect": 0,
- "scope_name": "string",
- "incident_child": false,
- "unit": "string",
- "detected_at": "2019-08-24T14:15:22Z",
- "incident_id": "2f811c5b-b888-4fb3-aac5-3c6a4b05df32",
- "incident_status": "open",
- "acknowledged_at": "2019-08-24T14:15:22Z",
- "muted": false,
- "muted_until": "2019-08-24T14:15:22Z",
- "expected": false,
- "expected_note": "string",
- "hidden": false,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "incident": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "open"
}, - "anomaly_id": "ad2dfd01-0c70-4540-950a-db06805bc49d",
- "attribution": {
- "delta": 0,
- "columns": [
- {
- "column": "string",
- "explained_share": 0,
- "values": [
- {
- "value": "string",
- "delta": 0,
- "expected": 0,
- "actual": 0,
- "share": 0
}
]
}
], - "release": {
- "version": "string",
- "previous_version": "string",
- "share": 0,
- "reached_at": "2019-08-24T14:15:22Z"
}, - "headline": "string",
- "release_line": "string",
- "computed_at": "2019-08-24T14:15:22Z"
}, - "attribution_status": "ready",
- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string"
}
]
}
]| slug required | string (Slug) |
| event_ids | Array of strings <uuid> (Event Ids) [ items <uuid > ] Default: [] |
{- "event_ids": [ ]
}[- {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "state": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "stddev": 0,
- "z_score": 0,
- "direction": "spike",
- "relative_effect": 0,
- "scope_name": "string",
- "incident_child": false,
- "unit": "string",
- "detected_at": "2019-08-24T14:15:22Z",
- "incident_id": "2f811c5b-b888-4fb3-aac5-3c6a4b05df32",
- "incident_status": "open",
- "acknowledged_at": "2019-08-24T14:15:22Z",
- "muted": false,
- "muted_until": "2019-08-24T14:15:22Z",
- "expected": false,
- "expected_note": "string",
- "hidden": false,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "incident": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "open"
}, - "anomaly_id": "ad2dfd01-0c70-4540-950a-db06805bc49d",
- "attribution": {
- "delta": 0,
- "columns": [
- {
- "column": "string",
- "explained_share": 0,
- "values": [
- {
- "value": "string",
- "delta": 0,
- "expected": 0,
- "actual": 0,
- "share": 0
}
]
}
], - "release": {
- "version": "string",
- "previous_version": "string",
- "share": 0,
- "reached_at": "2019-08-24T14:15:22Z"
}, - "headline": "string",
- "release_line": "string",
- "computed_at": "2019-08-24T14:15:22Z"
}, - "attribution_status": "ready",
- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string"
}
]
}
]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.
| slug required | string (Slug) |
| anomaly_id required | string <uuid> (Anomaly Id) |
{- "anomaly_id": "ad2dfd01-0c70-4540-950a-db06805bc49d",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "attribution_status": "ready",
- "attribution": {
- "delta": 0,
- "columns": [
- {
- "column": "string",
- "explained_share": 0,
- "values": [
- {
- "value": "string",
- "delta": 0,
- "expected": 0,
- "actual": 0,
- "share": 0
}
]
}
], - "release": {
- "version": "string",
- "previous_version": "string",
- "share": 0,
- "reached_at": "2019-08-24T14:15:22Z"
}, - "headline": "string",
- "release_line": "string",
- "computed_at": "2019-08-24T14:15:22Z"
}
}Row sparklines for many open signals in one request. POST for
the same reason as /signals/query: the batch outgrows a query string.
| slug required | string (Slug) |
required | Array of objects (Scopes) <= 500 items | ||||||||
Array (<= 500 items)
| |||||||||
{- "scopes": [
- {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "bucket": "2019-08-24T14:15:22Z"
}
]
}[- {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "bucket": "2019-08-24T14:15:22Z",
- "interval": "15m",
- "data": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "count": 0
}
]
}
]| slug required | string (Slug) |
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) |
{- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "bucket": "2019-08-24T14:15:22Z"
}{- "acknowledged_at": "2019-08-24T14:15:22Z",
- "muted": false,
- "muted_until": "2019-08-24T14:15:22Z",
- "expected": false,
- "expected_note": "string",
- "hidden": false
}| slug required | string (Slug) |
| 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) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Hide every signal on the scope for 24 h, 7 d or until unmuted.
| slug required | string (Slug) |
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" |
{- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "bucket": "2019-08-24T14:15:22Z",
- "duration": "24h"
}{- "acknowledged_at": "2019-08-24T14:15:22Z",
- "muted": false,
- "muted_until": "2019-08-24T14:15:22Z",
- "expected": false,
- "expected_note": "string",
- "hidden": false
}| slug required | string (Slug) |
| 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) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Record a known cause: annotate the signal's bucket and hide the signal.
| slug required | string (Slug) |
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) |
{- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "bucket": "2019-08-24T14:15:22Z",
- "note": "string"
}{- "acknowledged_at": "2019-08-24T14:15:22Z",
- "muted": false,
- "muted_until": "2019-08-24T14:15:22Z",
- "expected": false,
- "expected_note": "string",
- "hidden": false
}| slug required | string (Slug) |
| 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) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}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.
| slug required | string (Slug) |
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) |
{- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "bucket": "2019-08-24T14:15:22Z"
}{- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string",
- "email": "string",
- "status": "pending",
- "error": "string",
- "sent_at": "2019-08-24T14:15:22Z"
}
]
}| slug required | string (Slug) |
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 |
SignalExpectedReason (string) or null | |
Note (string) or Note (null) (Note) |
{- "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"
}{- "acknowledged_at": "2019-08-24T14:15:22Z",
- "muted": false,
- "muted_until": "2019-08-24T14:15:22Z",
- "expected": false,
- "expected_note": "string",
- "hidden": false,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "incident": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "open"
}
}| slug required | string (Slug) |
| 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) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Top-N breakdown rows that "moved" a given anomaly bucket, |z| desc.
| slug required | string (Slug) |
| 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) |
| limit | integer (Limit) [ 1 .. 100 ] Default: 10 |
[- {
- "breakdown_column": "string",
- "breakdown_value": "string",
- "is_other": true,
- "actual_count": 0,
- "expected_count": 0,
- "stddev": 0,
- "z_score": 0,
- "direction": "spike"
}
]7×24 hour-of-day × weekday heatmap of volume and anomaly density.
| slug required | string (Slug) |
| 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) |
From (string) or From (null) (From) | |
To (string) or To (null) (To) |
{- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "cells": [
- {
- "weekday": 0,
- "hour": 0,
- "count": 0,
- "anomaly_count": 0
}
], - "max_count": 0,
- "total_count": 0,
- "interval": "string",
- "hourly_resolution": true
}Per-bucket count timeline for one breakdown_value (drill-down).
| slug required | string (Slug) |
| 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) |
| 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) |
{- "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": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "count": 0
}
]
}| slug required | string (Slug) |
| scan_config_id required | string <uuid> (Scan Config Id) |
| 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) |
{- "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": [
- {
- "version": "string",
- "is_other": false,
- "is_latest": false,
- "is_active": false
}
], - "series": [
- {
- "version": "string",
- "is_other": false,
- "is_latest": false,
- "is_active": false,
- "total_count": 0,
- "data": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "count": 0,
- "expected_count": 0,
- "stddev": 0,
- "detector_kind": "string",
- "is_anomaly": false,
- "anomaly_direction": "spike",
- "z_score": 0,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "planned_event_id": "0462e26c-4f95-4e5e-ac89-b7d339fd64c6",
- "baseline_expected": 0,
- "baseline_stddev": 0
}
]
}
]
}| slug required | string (Slug) |
| scan_config_id required | string <uuid> (Scan Config Id) |
From (string) or From (null) (From) | |
To (string) or To (null) (To) |
{- "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": [
- {
- "version": "string",
- "is_other": false,
- "is_latest": false,
- "is_active": false
}
], - "series": [
- {
- "version": "string",
- "is_other": false,
- "is_latest": false,
- "is_active": false,
- "total_count": 0,
- "data": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "count": 0,
- "expected_count": 0,
- "stddev": 0,
- "detector_kind": "string",
- "is_anomaly": false,
- "anomaly_direction": "spike",
- "z_score": 0,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "planned_event_id": "0462e26c-4f95-4e5e-ac89-b7d339fd64c6",
- "baseline_expected": 0,
- "baseline_stddev": 0
}
]
}
], - "totals": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "count": 0
}
]
}| slug required | string (Slug) |
| scan_config_id required | string <uuid> (Scan Config Id) |
MetricScopeType (string) or Scope Type (null) (Scope Type) |
{- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "app_version_column": "string",
- "latest_version": "string",
- "comparability": [
- {
- "scope_type": "project_total",
- "comparable": true,
- "reason": "comparable",
- "version": "string",
- "previous_version": "string",
- "emerging_share": 0,
- "max_emerging_share": 0
}
], - "items": [
- {
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "kind": "missing",
- "version": "string",
- "previous_version": "string",
- "observed_count": 0,
- "expected_count": 0,
- "ratio": 0,
- "share_prev": 0,
- "share_new": 0,
- "release_share": 0,
- "window_from": "2019-08-24T14:15:22Z",
- "window_to": "2019-08-24T14:15:22Z"
}
]
}| slug required | string (Slug) |
| 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) |
{- "scope": "string",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "fields": [
- "string"
], - "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "field_name": "string",
- "bucket": "2019-08-24T14:15:22Z",
- "psi": 0,
- "band": "stable",
- "baseline_total": 0,
- "current_total": 0,
- "top_movers": [
- {
- "value": "string",
- "baseline_share": 0,
- "current_share": 0,
- "contribution": 0
}
]
}
]
}| slug required | string (Slug) |
ShadowEventStatus (string) or Status (null) (Status) | |
| limit | integer (Limit) [ 1 .. 500 ] Default: 100 |
| offset | integer (Offset) >= 0 Default: 0 |
{- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_config_name": "string",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "event_type_name": "string",
- "event_name": "string",
- "observed_count": 0,
- "first_seen_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "status": "new",
- "accepted_event_id": "3a56afd4-ee40-4247-af75-6068f6a2b721",
- "sample_properties": [
- {
- "property1": "string",
- "property2": "string"
}
]
}
], - "total": 0,
- "new_count": 0
}| slug required | string (Slug) |
| candidate_id required | string <uuid> (Candidate Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
Event Type Id (string) or Event Type Id (null) (Event Type Id) | |
Name (string) or Name (null) (Name) |
{- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "name": "string"
}{- "candidate_id": "2f28f791-f0fd-4155-a356-c24e996beeda",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "status": "new"
}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.
| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| action required | string (Action) Enum: "accept" "dismiss" |
required | Array of objects (Items) [ 1 .. 200 ] items |
{- "action": "accept",
- "items": [
- {
- "candidate_id": "2f28f791-f0fd-4155-a356-c24e996beeda",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "name": "string"
}
]
}{- "results": [
- {
- "candidate_id": "2f28f791-f0fd-4155-a356-c24e996beeda",
- "ok": true,
- "status": "new",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "error": "string",
- "error_status": 0
}
], - "succeeded": 0,
- "failed": 0
}| slug required | string (Slug) |
| days | integer (Days) [ 1 .. 365 ] Default: 30 |
{- "items": [
- {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "name": "string",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "event_type_name": "string",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "total": 0,
- "days": 0
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| 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" |
{- "event_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "status": "draft"
}{- "event_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "status": "draft",
- "archived_count": 0
}| slug required | string (Slug) |
| days | integer (Days) [ 1 .. 180 ] Default: 14 |
Scan Config Id (string) or Scan Config Id (null) (Scan Config Id) |
{- "items": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "total_count": 0,
- "matched_count": 0
}
], - "summary": {
- "total_count": 0,
- "matched_count": 0,
- "coverage_pct": 0
}, - "days": 0
}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.
| slug required | string (Slug) |
| include_diff_counts | boolean (Include Diff Counts) Default: false |
{- "items": [
- {
- "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
}
], - "total": 0
}| slug required | string (Slug) |
| name required | string (Name) <= 255 characters |
| description | string (Description) Default: "" |
{- "name": "string",
- "description": ""
}{- "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
}| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
{- "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": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "approvals": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "approved_at": "2019-08-24T14:15:22Z",
- "stale": true
}
]
}| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
| action required | string (Action) Enum: "submit" "request_changes" "approve" "reopen" "close" |
{- "action": "submit"
}{- "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": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "approvals": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "approved_at": "2019-08-24T14:15:22Z",
- "stale": true
}
]
}| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
| user_id required | string <uuid> (User Id) |
{- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "created_at": "2019-08-24T14:15:22Z"
}| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
[- {
- "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"
}
]| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
| body required | string (Body) |
Parent Id (string) or Parent Id (null) (Parent Id) |
{- "body": "string",
- "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}{- "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"
}| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
{- "entries": [
- {
- "entity_type": "event_type",
- "kind": "added",
- "name": "string",
- "parent": "string",
- "entity_id": "string",
- "changes": [
- "string"
], - "field_changes": [
- {
- "field": "string",
- "before": null,
- "after": null,
- "items": [
- {
- "key": "string",
- "kind": "added",
- "before": null,
- "after": null
}
]
}
], - "before": { },
- "after": { },
- "warnings": [
- "string"
], - "housekeeping": "string"
}
], - "summary": {
- "property1": 0,
- "property2": 0
}, - "behind_base": true,
- "renames": [
- {
- "entity_type": "event_type",
- "parent": "string",
- "removed_name": "string",
- "added_name": "string"
}
]
}| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
| 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) |
{- "entity_type": "event_type",
- "name": "string",
- "parent": "string",
- "field": "string",
- "entity_id": "string"
}{- "entries": [
- {
- "entity_type": "event_type",
- "kind": "added",
- "name": "string",
- "parent": "string",
- "entity_id": "string",
- "changes": [
- "string"
], - "field_changes": [
- {
- "field": "string",
- "before": null,
- "after": null,
- "items": [
- {
- "key": "string",
- "kind": "added",
- "before": null,
- "after": null
}
]
}
], - "before": { },
- "after": { },
- "warnings": [
- "string"
], - "housekeeping": "string"
}
], - "summary": {
- "property1": 0,
- "property2": 0
}, - "behind_base": true,
- "renames": [
- {
- "entity_type": "event_type",
- "parent": "string",
- "removed_name": "string",
- "added_name": "string"
}
]
}| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
{- "entities": [
- {
- "entity_type": "event_type",
- "name": "string",
- "parent": "string",
- "label": "",
- "fields": [
- {
- "field": "string",
- "base": { },
- "ours": { },
- "theirs": { },
- "choice": "ours",
- "dependents": 0
}
]
}
], - "unresolved_count": 0,
- "behind": false,
- "overlap_count": 0,
- "merge_blocked": false,
- "updatable": true
}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.
| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
{- "behind": true,
- "updatable": true,
- "blockers": [
- {
- "kind": "incomplete_base_snapshot",
- "entity_type": "event_type",
- "name": "string",
- "message": "string"
}
], - "base_revision_id": "3ded3faf-b36b-49f9-84eb-022d2acef61c",
- "main_hash": "string",
- "main_changes": [
- {
- "entity_type": "event_type",
- "added": 0,
- "changed": 0,
- "removed": 0,
- "renamed": 0
}
], - "conflicts": {
- "entities": [
- {
- "entity_type": "event_type",
- "name": "string",
- "parent": "string",
- "label": "",
- "fields": [
- {
- "field": "string",
- "base": { },
- "ours": { },
- "theirs": { },
- "choice": "ours",
- "dependents": 0
}
]
}
], - "unresolved_count": 0,
- "behind": false,
- "overlap_count": 0,
- "merge_blocked": false,
- "updatable": true
}
}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.
| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
Expected Main Hash (string) or Expected Main Hash (null) (Expected Main Hash) | |
Array of objects (Resolutions) <= 5000 items |
{- "expected_main_hash": "string",
- "resolutions": [
- {
- "entity_type": "event_type",
- "entity_name": "string",
- "field_name": "string",
- "choice": "ours"
}
]
}{- "updated": true,
- "branch": {
- "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": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "approvals": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "approved_at": "2019-08-24T14:15:22Z",
- "stale": true
}
]
}, - "applied": [
- {
- "entity_type": "event_type",
- "added": 0,
- "changed": 0,
- "removed": 0,
- "renamed": 0
}
], - "previous_base_revision_id": "97b8c6db-2dd9-4a49-801d-d4ed1237ff5e",
- "base_revision_id": "3ded3faf-b36b-49f9-84eb-022d2acef61c"
}| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
| 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" |
{- "entity_type": "event_type",
- "entity_name": "string",
- "field_name": "string",
- "choice": "ours"
}{- "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"
}| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
| resolution_id required | string <uuid> (Resolution Id) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
{- "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": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "approvals": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "approved_at": "2019-08-24T14:15:22Z",
- "stale": true
}
]
}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.
| slug required | string (Slug) |
| entity required | string (Entity) <= 64 characters The entity to explain, as ' |
| 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. |
{- "entity": {
- "kind": "event",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "exists": true
}, - "upstream": [
- {
- "kind": "event",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "relation": "string",
- "certainty": "direct",
- "url_hint": "string",
- "depth": 1
}
], - "downstream": [
- {
- "kind": "event",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "relation": "string",
- "certainty": "direct",
- "url_hint": "string",
- "depth": 1
}
], - "counts_by_kind": {
- "property1": 0,
- "property2": 0
}, - "possible_counts_by_kind": {
- "property1": 0,
- "property2": 0
}
}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).
| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
required | Array of objects (Changes) [ 1 .. 200 ] items |
| depth | integer (Depth) Default: 1 Enum: 1 2 |
{- "changes": [
- {
- "kind": "event",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "change": "delete"
}
], - "depth": 1
}{- "items": [
- {
- "change": {
- "kind": "event",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "change": "delete"
}, - "entity": {
- "kind": "event",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "exists": true
}, - "name": "string",
- "affected": [
- {
- "kind": "event",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "relation": "string",
- "certainty": "direct",
- "url_hint": "string",
- "depth": 1
}
], - "summary": "string"
}
]
}The downstream objects a working branch's changes touch, from its diff.
| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
{- "items": [
- {
- "change": {
- "kind": "event",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "change": "delete"
}, - "entity": {
- "kind": "event",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "exists": true
}, - "name": "string",
- "affected": [
- {
- "kind": "event",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "relation": "string",
- "certainty": "direct",
- "url_hint": "string",
- "depth": 1
}
], - "summary": "string"
}
]
}| slug required | string (Slug) |
| summary | string (Summary) <= 2000 characters Default: "" |
{- "summary": ""
}{- "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": {
- "property1": 0,
- "property2": 0
}, - "payload": { }
}| slug required | string (Slug) |
| offset | integer (Offset) >= 0 Default: 0 |
| limit | integer (Limit) [ 1 .. 200 ] Default: 50 |
{- "items": [
- {
- "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": {
- "property1": 0,
- "property2": 0
}
}
], - "total": 0
}| slug required | string (Slug) |
| revision_id required | string <uuid> (Revision Id) |
{- "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": {
- "property1": 0,
- "property2": 0
}, - "payload": { }
}| slug required | string (Slug) |
| revision_id required | string <uuid> (Revision Id) |
| compare_to required | string <uuid> (Compare To) |
{- "revision_id": "f8f7f022-982b-4bef-ba7d-4bb808fdbe2a",
- "compare_to": "846220e4-43c3-4942-997b-fe1dae7730fc",
- "entries": [
- {
- "entity_type": "event_type",
- "kind": "added",
- "name": "string",
- "parent": "string",
- "entity_id": "string",
- "changes": [
- "string"
], - "field_changes": [
- {
- "field": "string",
- "before": null,
- "after": null,
- "items": [
- {
- "key": "string",
- "kind": "added",
- "before": null,
- "after": null
}
]
}
], - "before": { },
- "after": { },
- "warnings": [
- "string"
], - "housekeeping": "string"
}
], - "summary": {
- "property1": 0,
- "property2": 0
}
}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.
| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
required | Array of objects (Items) <= 5000 items |
| strict | boolean (Strict) Default: false |
{- "items": [
- {
- "ref": "string",
- "event_type": "string",
- "name": "string",
- "fields": {
- "property1": "string",
- "property2": "string"
}, - "properties": { },
- "complete": false
}
], - "strict": false
}{- "items": [
- {
- "ref": "string",
- "status": "ok",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "identity": "string",
- "findings": [
- {
- "code": "unknown_event_type",
- "severity": "error",
- "field": "string",
- "message": "string",
- "rule": "string"
}
]
}
], - "summary": {
- "ok": 0,
- "warnings": 0,
- "errors": 0
}
}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.
| slug required | string (Slug) |
| format | string (Format) Default: "jsonschema" Enum: "jsonschema" "codegen_model"
|
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "revision": "b587a570-d9a5-40c2-87da-edba28b3005f",
- "branch": "string",
- "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc",
- "plan_hash": "string",
- "format": "jsonschema",
- "schemas": {
- "property1": { },
- "property2": { }
}
}| slug required | string (Slug) |
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) |
[- {
- "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"
}
]| slug required | string (Slug) |
| 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.
|
Url (string) or Url (null) (Url) |
{- "bucket": "2019-08-24T14:15:22Z",
- "label": "string",
- "description": "string",
- "color": "#ef4444",
- "scope_type": "project_total",
- "scope_ref": "string",
- "source": "manual",
- "url": "string"
}{- "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"
}{- "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"
}| slug required | string (Slug) |
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) |
{- "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"
}{- "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"
}{- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scan_config_name": "string",
- "scope_type": "string",
- "scope_ref": "string",
- "scope_name": "string",
- "sigma_threshold": 0,
- "min_expected_count": 0,
- "false_positive_count": 0,
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
], - "total": 0
}Undo one false-positive ratchet: the scope returns to the project setting.
| slug required | string (Slug) |
| override_id required | string <uuid> (Override Id) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}[- {
- "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": [
- {
- "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": [
- {
- "field": "event_type",
- "operator": "eq",
- "values": [
- "string"
], - "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
], - "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"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
]| slug required | string (Slug) |
| 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) |
{- "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"
}{- "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": [
- {
- "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": [
- {
- "field": "event_type",
- "operator": "eq",
- "values": [
- "string"
], - "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
], - "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"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}{- "monitors": [
- {
- "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"
}
], - "firing_count": 0,
- "warning_count": 0,
- "healthy_count": 0,
- "total": 0,
- "scope_readiness": {
- "variable_value_drift": true,
- "distribution_drift": true
}
}| slug required | string (Slug) |
| destination_id required | string <uuid> (Destination Id) |
{- "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": [
- {
- "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": [
- {
- "field": "event_type",
- "operator": "eq",
- "values": [
- "string"
], - "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
], - "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"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}| slug required | string (Slug) |
| destination_id required | string <uuid> (Destination Id) |
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) |
{- "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"
}{- "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": [
- {
- "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": [
- {
- "field": "event_type",
- "operator": "eq",
- "values": [
- "string"
], - "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
], - "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"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}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.
| slug required | string (Slug) |
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) |
{- "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"
}{- "ok": true,
- "error": "string",
- "sent_at": "2019-08-24T14:15:22Z",
- "error_kind": "config",
- "http_status": 0
}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.
| slug required | string (Slug) |
| destination_id required | string <uuid> (Destination Id) |
{- "ok": true,
- "error": "string",
- "sent_at": "2019-08-24T14:15:22Z",
- "error_kind": "config",
- "http_status": 0
}| slug required | string (Slug) |
| destination_id required | string <uuid> (Destination Id) |
| 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) |
{- "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": [
- {
- "field": "event_type",
- "operator": "eq",
- "values": [
- "string"
]
}
]
}{- "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": [
- {
- "field": "event_type",
- "operator": "eq",
- "values": [
- "string"
], - "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
], - "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"
}| slug required | string (Slug) |
| destination_id required | string <uuid> (Destination Id) |
| rule_id required | string <uuid> (Rule Id) |
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) |
{- "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": [
- {
- "field": "event_type",
- "operator": "eq",
- "values": [
- "string"
]
}
]
}{- "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": [
- {
- "field": "event_type",
- "operator": "eq",
- "values": [
- "string"
], - "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
], - "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"
}| slug required | string (Slug) |
| destination_id required | string <uuid> (Destination Id) |
| rule_id required | string <uuid> (Rule Id) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
| destination_id required | string <uuid> (Destination Id) |
| rule_id required | string <uuid> (Rule Id) |
| 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) |
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) |
{- "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": [
- {
- "field": "event_type",
- "operator": "eq",
- "values": [
- "string"
]
}
]
}{- "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": [
- {
- "anomaly_id": "ad2dfd01-0c70-4540-950a-db06805bc49d",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "drift_field": "string",
- "drift_type": "new_field",
- "sample_value": "string",
- "bucket": "2019-08-24T14:15:22Z",
- "window_from": "2019-08-24T14:15:22Z",
- "direction": "spike",
- "actual_count": 0,
- "expected_count": 0,
- "absolute_delta": 0,
- "percent_delta": 0,
- "rendered_item": "string"
}
], - "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"
}| slug required | string (Slug) |
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) |
{- "items": [
- {
- "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"
}
], - "total": 0,
- "next_cursor": "string"
}| slug required | string (Slug) |
| delivery_id required | string <uuid> (Delivery Id) |
{- "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": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "delivery_id": "9892f438-d31c-4ff2-bc84-146525b292ff",
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "bucket": "2019-08-24T14:15:22Z",
- "direction": "spike",
- "actual_count": 0,
- "expected_count": 0,
- "absolute_delta": 0,
- "percent_delta": 0,
- "details_path": "string",
- "monitoring_path": "string",
- "drift_field": "string",
- "drift_type": "new_field",
- "sample_value": "string",
- "correlation_group_id": "b19a17a6-148a-445e-8ea5-cdb43c47c564"
}
], - "owner_notifications": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string",
- "email": "string",
- "status": "pending",
- "error": "string",
- "sent_at": "2019-08-24T14:15:22Z"
}
]
}| slug required | string (Slug) |
| delivery_id required | string <uuid> (Delivery Id) |
{- "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": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "delivery_id": "9892f438-d31c-4ff2-bc84-146525b292ff",
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "bucket": "2019-08-24T14:15:22Z",
- "direction": "spike",
- "actual_count": 0,
- "expected_count": 0,
- "absolute_delta": 0,
- "percent_delta": 0,
- "details_path": "string",
- "monitoring_path": "string",
- "drift_field": "string",
- "drift_type": "new_field",
- "sample_value": "string",
- "correlation_group_id": "b19a17a6-148a-445e-8ea5-cdb43c47c564"
}
], - "owner_notifications": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string",
- "email": "string",
- "status": "pending",
- "error": "string",
- "sent_at": "2019-08-24T14:15:22Z"
}
]
}| slug required | string (Slug) |
| rule_id required | string <uuid> (Rule Id) |
{- "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": [
- {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "direction": "spike",
- "last_anomaly_bucket": "2019-08-24T14:15:22Z",
- "last_notified_at": "2019-08-24T14:15:22Z"
}
], - "scope_readiness": {
- "variable_value_drift": true,
- "distribution_drift": true
}
}| slug required | string (Slug) |
| rule_id required | string <uuid> (Rule Id) |
| muted_until required | string <date-time> (Muted Until) |
{- "muted_until": "2019-08-24T14:15:22Z"
}{- "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": [
- {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "direction": "spike",
- "last_anomaly_bucket": "2019-08-24T14:15:22Z",
- "last_notified_at": "2019-08-24T14:15:22Z"
}
], - "scope_readiness": {
- "variable_value_drift": true,
- "distribution_drift": true
}
}| slug required | string (Slug) |
| rule_id required | string <uuid> (Rule Id) |
{- "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": [
- {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "direction": "spike",
- "last_anomaly_bucket": "2019-08-24T14:15:22Z",
- "last_notified_at": "2019-08-24T14:15:22Z"
}
], - "scope_readiness": {
- "variable_value_drift": true,
- "distribution_drift": true
}
}| slug required | string (Slug) |
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) |
{- "items": [
- {
- "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": [
- "project_total"
], - "scope_names": [
- "string"
], - "destination_names": [
- "string"
], - "rule_names": [
- "string"
], - "rules": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "scan_names": [
- "string"
], - "acted_at": "2019-08-24T14:15:22Z",
- "acted_by": "50e8e0b1-ff34-4096-b99a-166ff9492477",
- "acted_by_name": "string",
- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string"
}
]
}
], - "total": 0,
- "status_counts": {
- "open": 0,
- "acknowledged": 0,
- "muted": 0,
- "resolved": 0,
- "false_positive": 0
}, - "window_truncated_at": "2019-08-24T14:15:22Z",
- "next_cursor": "string"
}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.
| slug required | string (Slug) |
| 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) |
{- "correlation_group_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "action": "acknowledge",
- "note": "string",
- "muted_until": "2019-08-24T14:15:22Z"
}{- "groups": [
- {
- "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": [
- "project_total"
], - "scope_names": [
- "string"
], - "destination_names": [
- "string"
], - "rule_names": [
- "string"
], - "rules": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "scan_names": [
- "string"
], - "acted_at": "2019-08-24T14:15:22Z",
- "acted_by": "50e8e0b1-ff34-4096-b99a-166ff9492477",
- "acted_by_name": "string",
- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string"
}
]
}
], - "batch_id": "4da22c97-b7d5-4e31-8c3a-03870ebc7b20",
- "overrides_written": 0
}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.
| slug required | string (Slug) |
| correlation_group_id required | string <uuid> (Correlation Group Id) |
{- "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": [
- "project_total"
], - "scope_names": [
- "string"
], - "destination_names": [
- "string"
], - "rule_names": [
- "string"
], - "rules": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "scan_names": [
- "string"
], - "acted_at": "2019-08-24T14:15:22Z",
- "acted_by": "50e8e0b1-ff34-4096-b99a-166ff9492477",
- "acted_by_name": "string",
- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string"
}
]
}| slug required | string (Slug) |
| correlation_group_id required | string <uuid> (Correlation Group Id) |
| 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) |
{- "action": "acknowledge",
- "note": "string",
- "muted_until": "2019-08-24T14:15:22Z"
}{- "group": {
- "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": [
- "project_total"
], - "scope_names": [
- "string"
], - "destination_names": [
- "string"
], - "rule_names": [
- "string"
], - "rules": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "scan_names": [
- "string"
], - "acted_at": "2019-08-24T14:15:22Z",
- "acted_by": "50e8e0b1-ff34-4096-b99a-166ff9492477",
- "acted_by_name": "string",
- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string"
}
]
}, - "overrides_written": 0
}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.
| slug required | string (Slug) |
| correlation_group_id required | string <uuid> (Correlation Group Id) |
{- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string",
- "email": "string",
- "status": "pending",
- "error": "string",
- "sent_at": "2019-08-24T14:15:22Z"
}
]
}The cached summary and whether it is current. Never calls the LLM.
| slug required | string (Slug) |
| correlation_group_id required | string <uuid> (Correlation Group Id) |
{- "correlation_group_id": "b19a17a6-148a-445e-8ea5-cdb43c47c564",
- "state": "disabled",
- "disabled_reason": "ai_off",
- "current_facts_hash": "string",
- "summary": {
- "sentences": [
- {
- "text": "string",
- "role": "what_broke",
- "fact_ids": [
- 0
], - "generated": true
}
], - "facts": [
- {
- "id": 0,
- "kind": "incident",
- "text": "string",
- "href": "string"
}
], - "cause_known": true,
- "facts_hash": "string",
- "generated_at": "2019-08-24T14:15:22Z"
}
}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.
| slug required | string (Slug) |
| correlation_group_id required | string <uuid> (Correlation Group Id) |
{- "correlation_group_id": "b19a17a6-148a-445e-8ea5-cdb43c47c564",
- "state": "disabled",
- "disabled_reason": "ai_off",
- "current_facts_hash": "string",
- "summary": {
- "sentences": [
- {
- "text": "string",
- "role": "what_broke",
- "fact_ids": [
- 0
], - "generated": true
}
], - "facts": [
- {
- "id": 0,
- "kind": "incident",
- "text": "string",
- "href": "string"
}
], - "cause_known": true,
- "facts_hash": "string",
- "generated_at": "2019-08-24T14:15:22Z"
}
}Generate the summary again, whatever the cache holds. Editors only.
| slug required | string (Slug) |
| correlation_group_id required | string <uuid> (Correlation Group Id) |
{- "correlation_group_id": "b19a17a6-148a-445e-8ea5-cdb43c47c564",
- "state": "disabled",
- "disabled_reason": "ai_off",
- "current_facts_hash": "string",
- "summary": {
- "sentences": [
- {
- "text": "string",
- "role": "what_broke",
- "fact_ids": [
- 0
], - "generated": true
}
], - "facts": [
- {
- "id": 0,
- "kind": "incident",
- "text": "string",
- "href": "string"
}
], - "cause_known": true,
- "facts_hash": "string",
- "generated_at": "2019-08-24T14:15:22Z"
}
}[- {
- "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": {
- "location": "string",
- "maximum_bytes_billed": 0,
- "dataset_allowlist": [
- "string"
], - "sslmode": "disable",
- "sslrootcert": "string",
- "sslcert": "string",
- "search_path": "string",
- "sslkey_set": false
}, - "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": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "project_slug": "string",
- "project_name": "string"
}
]
}
]| 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) |
{- "name": "string",
- "db_type": "clickhouse",
- "host": "string",
- "port": 8123,
- "database_name": "string",
- "username": "",
- "password": "",
- "timeout_seconds": 1,
- "json_path_discovery": "all",
- "connection_settings": { }
}{- "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": {
- "location": "string",
- "maximum_bytes_billed": 0,
- "dataset_allowlist": [
- "string"
], - "sslmode": "disable",
- "sslrootcert": "string",
- "sslcert": "string",
- "search_path": "string",
- "sslkey_set": false
}, - "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": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "project_slug": "string",
- "project_name": "string"
}
]
}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.
| 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) |
{- "name": "",
- "db_type": "clickhouse",
- "host": "string",
- "port": 8123,
- "database_name": "string",
- "username": "",
- "password": "",
- "timeout_seconds": 1,
- "json_path_discovery": "all",
- "connection_settings": { }
}{- "success": true,
- "message": "string",
- "tested_at": "2019-08-24T14:15:22Z"
}{- "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": {
- "location": "string",
- "maximum_bytes_billed": 0,
- "dataset_allowlist": [
- "string"
], - "sslmode": "disable",
- "sslrootcert": "string",
- "sslcert": "string",
- "search_path": "string",
- "sslkey_set": false
}, - "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": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "project_slug": "string",
- "project_name": "string"
}
]
}| ds_id required | string <uuid> (Ds Id) |
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) |
{- "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": { }
}{- "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": {
- "location": "string",
- "maximum_bytes_billed": 0,
- "dataset_allowlist": [
- "string"
], - "sslmode": "disable",
- "sslrootcert": "string",
- "sslcert": "string",
- "search_path": "string",
- "sslkey_set": false
}, - "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": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "project_slug": "string",
- "project_name": "string"
}
]
}| ds_id required | string <uuid> (Ds Id) |
| window_hours | integer (Window Hours) [ 1 .. 720 ] Default: 48 |
{- "events_tracked": 0,
- "volume_window": 0,
- "window_hours": 0,
- "throughput": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "count": 0
}
]
}{- "success": true,
- "message": "string",
- "tested_at": "2019-08-24T14:15:22Z",
- "data_source": {
- "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": {
- "location": "string",
- "maximum_bytes_billed": 0,
- "dataset_allowlist": [
- "string"
], - "sslmode": "disable",
- "sslrootcert": "string",
- "sslcert": "string",
- "search_path": "string",
- "sslkey_set": false
}, - "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": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "project_slug": "string",
- "project_name": "string"
}
]
}
}| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
[- {
- "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"
}
]| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
| file required | string <application/octet-stream> (File) |
{- "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"
}| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
| photo_ids required | Array of strings <uuid> (Photo Ids) [ items <uuid > ] |
{- "photo_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}[- {
- "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"
}
]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.
| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
| photo_id required | string <uuid> (Photo Id) |
null| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
| url required | string (Url) [ 1 .. 2000 ] characters |
| title | string (Title) <= 500 characters Default: "" |
{- "url": "string",
- "title": ""
}{- "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"
}| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
| photo_id required | string <uuid> (Photo Id) |
[- {
- "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"
}
]| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
| photo_id required | string <uuid> (Photo Id) |
| body required | string (Body) [ 1 .. 4000 ] characters |
Parent Id (string) or Parent Id (null) (Parent Id) |
{- "body": "string",
- "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}{- "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"
}| 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) |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
| 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; |
| 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 |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "entity_type": "event",
- "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
- "parent_event_id": "244d15ba-4793-4516-8d39-3fb250c8abf5",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "name": "string",
- "implemented": true,
- "variable_values": [ ],
- "title": "string",
- "subtitle": "",
- "description": "",
- "snippet": "",
- "route_path": "string",
- "score": 0,
- "confidence": 0,
- "highlights": [ ],
- "semantic_used": false,
- "variant_group": {
- "key": "string",
- "pattern": "string",
- "placeholder": "string",
- "count": 2,
- "variants": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "title": "string",
- "value": "string",
- "route_path": "string",
- "score": 0,
- "confidence": 0
}
]
}
}
], - "total": 0,
- "truncated": false,
- "semantic_used": false
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "documents_indexed": 0,
- "embeddings_scheduled": false
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| event_id required | string <uuid> (Event Id) |
{- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7"
}{- "description": "string",
- "field_suggestions": [
- {
- "field_name": "string",
- "description": "string"
}
]
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| event_type_id required | string <uuid> (Event Type Id) |
{- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83"
}{- "description": "string",
- "field_suggestions": [
- {
- "field_name": "string",
- "description": "string"
}
]
}| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
| question required | string (Question) [ 3 .. 500 ] characters |
{- "question": "string"
}{- "answer": "string",
- "sources": [
- {
- "title": "string",
- "entity_type": "string",
- "route_path": "string"
}
], - "semantic_used": true
}The workspace rail: activity from the projects the caller is a member of.
| limit | integer (Limit) [ 1 .. 100 ] Default: 20 |
[- {
- "id": "string",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "project_slug": "string",
- "project_name": "string",
- "type": "anomaly",
- "severity": "high",
- "title": "string",
- "detail": "string",
- "occurred_at": "2019-08-24T14:15:22Z",
- "target_path": "string"
}
]One project's rail; a non-member gets "Project not found".
| slug required | string (Slug) |
| limit | integer (Limit) [ 1 .. 100 ] Default: 20 |
[- {
- "id": "string",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "project_slug": "string",
- "project_name": "string",
- "type": "anomaly",
- "severity": "high",
- "title": "string",
- "detail": "string",
- "occurred_at": "2019-08-24T14:15:22Z",
- "target_path": "string"
}
]The project's entries, newest first. A deleted project's rows stay reachable by its last slug while no live project answers to it.
| slug required | string (Slug) |
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 |
{- "items": [
- {
- "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"
}
], - "total": 0
}Every action the log records, grouped for the filter; see audit_actions.
A project's entries carry the project group's actions.
| slug required | string (Slug) |
{- "project": [
- {
- "label": "string",
- "actions": [
- "string"
]
}
], - "workspace": [
- {
- "label": "string",
- "actions": [
- "string"
]
}
]
}One entry with its payload. 404 for an entry of another project.
| slug required | string (Slug) |
| entry_id required | string <uuid> (Entry Id) |
{- "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": { }
}[- {
- "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"
}
]| 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) |
{- "name": "string",
- "scope": "read",
- "expires_in_days": 1,
- "project_slug": "string"
}{- "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"
}{- "runtime": {
- "app_base_url": "string",
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0
}, - "security": {
- "cors_allow_origins": "string",
- "session_cookie_name": "string",
- "session_ttl_hours": 0,
- "session_cookie_secure": true,
- "security_headers_enabled": true,
- "hsts_enabled": true,
- "hsts_max_age_seconds": 0,
- "content_security_policy": "string",
- "rate_limit_enabled": true,
- "rate_limit_login_per_minute": 0,
- "rate_limit_register_per_hour": 0,
- "rate_limit_trust_forwarded_for": true,
- "registration_mode": "open"
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_local_dir": "string",
- "photo_max_size_mb": 0,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_path": "string",
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 0
}, - "observability": {
- "request_id_header": "string",
- "log_level": "string",
- "log_json": true,
- "prometheus_metrics_enabled": true,
- "otel_exporter_otlp_endpoint": "string",
- "otel_service_name": "string"
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 0,
- "smtp_username": "string",
- "smtp_password_configured": true,
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key_configured": true,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string",
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_api_key_configured": true,
- "search_embedding_dimensions": 0,
- "search_embedding_base_url": "string"
}, - "system": {
- "debug": true,
- "database_url_configured": true,
- "sync_database_url_configured": true,
- "rabbitmq_url_configured": true,
- "redis_url_configured": true,
- "encryption_key_configured": true,
- "openai_api_key_configured": true,
- "alembic_revision": "string",
- "alembic_head_revision": "string",
- "alembic_up_to_date": true
}, - "overridden_fields": [
- "string"
], - "sources": {
- "property1": "env",
- "property2": "env"
}
}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.
RuntimeSettingsUpdate (object) or null | |
SecuritySettingsUpdate (object) or null | |
StorageSettingsUpdate (object) or null | |
ObservabilitySettingsUpdate (object) or null | |
EmailSettingsUpdate (object) or null | |
AiSettingsUpdate (object) or null |
{- "runtime": {
- "app_base_url": "string",
- "scan_row_limit_default": 1,
- "metrics_row_limit_default": 1
}, - "security": {
- "cors_allow_origins": "string",
- "session_cookie_name": "string",
- "session_ttl_hours": 1,
- "session_cookie_secure": true,
- "security_headers_enabled": true,
- "hsts_enabled": true,
- "hsts_max_age_seconds": 0,
- "content_security_policy": "string",
- "rate_limit_enabled": true,
- "rate_limit_login_per_minute": 0,
- "rate_limit_register_per_hour": 0,
- "rate_limit_trust_forwarded_for": true,
- "registration_mode": "open"
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_local_dir": "string",
- "photo_max_size_mb": 1,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_path": "string",
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 1
}, - "observability": {
- "request_id_header": "string",
- "log_level": "CRITICAL",
- "log_json": true,
- "prometheus_metrics_enabled": true,
- "otel_exporter_otlp_endpoint": "string",
- "otel_service_name": "string"
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 1,
- "smtp_username": "string",
- "smtp_password": "string",
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key": "string",
- "ai_timeout_seconds": 1,
- "ai_max_output_tokens": 1,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string",
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_api_key": "string"
}
}{- "runtime": {
- "app_base_url": "string",
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0
}, - "security": {
- "cors_allow_origins": "string",
- "session_cookie_name": "string",
- "session_ttl_hours": 0,
- "session_cookie_secure": true,
- "security_headers_enabled": true,
- "hsts_enabled": true,
- "hsts_max_age_seconds": 0,
- "content_security_policy": "string",
- "rate_limit_enabled": true,
- "rate_limit_login_per_minute": 0,
- "rate_limit_register_per_hour": 0,
- "rate_limit_trust_forwarded_for": true,
- "registration_mode": "open"
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_local_dir": "string",
- "photo_max_size_mb": 0,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_path": "string",
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 0
}, - "observability": {
- "request_id_header": "string",
- "log_level": "string",
- "log_json": true,
- "prometheus_metrics_enabled": true,
- "otel_exporter_otlp_endpoint": "string",
- "otel_service_name": "string"
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 0,
- "smtp_username": "string",
- "smtp_password_configured": true,
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key_configured": true,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string",
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_api_key_configured": true,
- "search_embedding_dimensions": 0,
- "search_embedding_base_url": "string"
}, - "system": {
- "debug": true,
- "database_url_configured": true,
- "sync_database_url_configured": true,
- "rabbitmq_url_configured": true,
- "redis_url_configured": true,
- "encryption_key_configured": true,
- "openai_api_key_configured": true,
- "alembic_revision": "string",
- "alembic_head_revision": "string",
- "alembic_up_to_date": true
}, - "overridden_fields": [
- "string"
], - "sources": {
- "property1": "env",
- "property2": "env"
}
}RuntimeSettingsUpdate (object) or null | |
SecuritySettingsUpdate (object) or null | |
StorageSettingsUpdate (object) or null | |
ObservabilitySettingsUpdate (object) or null | |
EmailSettingsUpdate (object) or null | |
AiSettingsUpdate (object) or null |
{- "runtime": {
- "app_base_url": "string",
- "scan_row_limit_default": 1,
- "metrics_row_limit_default": 1
}, - "security": {
- "cors_allow_origins": "string",
- "session_cookie_name": "string",
- "session_ttl_hours": 1,
- "session_cookie_secure": true,
- "security_headers_enabled": true,
- "hsts_enabled": true,
- "hsts_max_age_seconds": 0,
- "content_security_policy": "string",
- "rate_limit_enabled": true,
- "rate_limit_login_per_minute": 0,
- "rate_limit_register_per_hour": 0,
- "rate_limit_trust_forwarded_for": true,
- "registration_mode": "open"
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_local_dir": "string",
- "photo_max_size_mb": 1,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_path": "string",
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 1
}, - "observability": {
- "request_id_header": "string",
- "log_level": "CRITICAL",
- "log_json": true,
- "prometheus_metrics_enabled": true,
- "otel_exporter_otlp_endpoint": "string",
- "otel_service_name": "string"
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 1,
- "smtp_username": "string",
- "smtp_password": "string",
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key": "string",
- "ai_timeout_seconds": 1,
- "ai_max_output_tokens": 1,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string",
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_api_key": "string"
}
}{- "runtime": {
- "app_base_url": "string",
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0
}, - "security": {
- "cors_allow_origins": "string",
- "session_cookie_name": "string",
- "session_ttl_hours": 0,
- "session_cookie_secure": true,
- "security_headers_enabled": true,
- "hsts_enabled": true,
- "hsts_max_age_seconds": 0,
- "content_security_policy": "string",
- "rate_limit_enabled": true,
- "rate_limit_login_per_minute": 0,
- "rate_limit_register_per_hour": 0,
- "rate_limit_trust_forwarded_for": true,
- "registration_mode": "open"
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_local_dir": "string",
- "photo_max_size_mb": 0,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_path": "string",
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 0
}, - "observability": {
- "request_id_header": "string",
- "log_level": "string",
- "log_json": true,
- "prometheus_metrics_enabled": true,
- "otel_exporter_otlp_endpoint": "string",
- "otel_service_name": "string"
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 0,
- "smtp_username": "string",
- "smtp_password_configured": true,
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key_configured": true,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string",
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_api_key_configured": true,
- "search_embedding_dimensions": 0,
- "search_embedding_base_url": "string"
}, - "system": {
- "debug": true,
- "database_url_configured": true,
- "sync_database_url_configured": true,
- "rabbitmq_url_configured": true,
- "redis_url_configured": true,
- "encryption_key_configured": true,
- "openai_api_key_configured": true,
- "alembic_revision": "string",
- "alembic_head_revision": "string",
- "alembic_up_to_date": true
}, - "overridden_fields": [
- "string"
], - "sources": {
- "property1": "env",
- "property2": "env"
}
}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.
{- "photo_max_size_mb": 0,
- "photo_allowed_mime": [
- "string"
]
}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.
{- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0
}{- "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key_configured": true,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string",
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_api_key_configured": true,
- "search_embedding_dimensions": 0,
- "search_embedding_base_url": "string"
}, - "overridden_fields": [
- "string"
], - "sources": {
- "property1": "env",
- "property2": "env"
}
}| prompt | string (Prompt) [ 1 .. 500 ] characters Default: "Reply with the word ok if the LLM connection works." |
{- "prompt": "Reply with the word ok if the LLM connection works."
}{- "ok": true,
- "message": "string"
}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.
Recipient (string) or Recipient (null) (Recipient) | |
Any of string <email> (Recipient) | |
{- "recipient": "user@example.com"
}{- "ok": true,
- "message": "string"
}{- "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"
}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
.
| slug required | string (Slug) |
Min Approvals (integer) or Min Approvals (null) (Min Approvals) | |
Block Self Approval (boolean) or Block Self Approval (null) (Block Self Approval) |
{- "min_approvals": 100,
- "block_self_approval": true
}{- "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"
}| slug required | string (Slug) |
| user_id required | string <uuid> (User Id) |
| role | string (ProjectMemberRole) Default: "viewer" Enum: "none" "editor" "viewer" A user's role inside one project ( There is no per-project
|
{- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "role": "none"
}{- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string",
- "email": "string",
- "role": "none",
- "added_at": "2019-08-24T14:15:22Z"
}| slug required | string (Slug) |
| user_id required | string <uuid> (User Id) |
| role required | string (ProjectMemberRole) Enum: "none" "editor" "viewer" A user's role inside one project ( There is no per-project
|
{- "role": "none"
}{- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string",
- "email": "string",
- "role": "none",
- "added_at": "2019-08-24T14:15:22Z"
}[- {
- "id": "string",
- "version": 0,
- "name": "string",
- "description": "string",
- "branch_name": "string",
- "counts": {
- "event_types": 0,
- "fields": 0,
- "events": 0,
- "variables": 0,
- "metric_suggestions": 0,
- "alert_suggestions": 0
}, - "event_type_names": [
- "string"
], - "metric_suggestions": [
- {
- "name": "string",
- "display_name": "string",
- "description": "string",
- "kind": "event_composition",
- "composition": "single",
- "numerator_event": "string",
- "denominator_event": "string",
- "needs": "scan"
}
], - "alert_suggestions": [
- {
- "name": "string",
- "description": "string",
- "needs": "alert_destination"
}
]
}
]{- "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"
}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.
| slug required | string (Slug) |
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) |
{- "enabled": true,
- "tracker_type": "jira",
- "base_url": "string",
- "project_key": "string",
- "auth_email": "string",
- "api_token": "string",
- "issue_type": "string",
- "team_id": "string"
}{- "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"
}Likely duplicates and naming-convention lint for would-be events.
Up to 500 candidates, answered in order. Changes nothing.
| slug required | string (Slug) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
required | Array of objects (Candidates) [ 1 .. 500 ] items | ||||||||||
Array ([ 1 .. 500 ] items)
| |||||||||||
{- "candidates": [
- {
- "name": "",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "description": "string",
- "field_values": [
- {
- "field_definition_id": "56ae8bcc-3ec2-44c3-a99e-07fd08a66513",
- "value": "string"
}
], - "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7"
}
]
}{- "items": [
- {
- "name": "string",
- "duplicates": [
- {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "name": "string",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "status": "string",
- "score": 0,
- "reasons": [
- "string"
]
}
], - "lint": [
- {
- "code": "case",
- "message": "string",
- "suggestion": "string"
}
], - "suggestion": "string",
- "lint_applicable": true,
- "convention": {
- "case": "snake",
- "space_style": "title",
- "separator": "string",
- "verb_position": "first",
- "prefix": "string",
- "confidence": 0,
- "sample_size": 0
}
}
], - "threshold": 0,
- "semantic_used": false
}Clusters of existing events that look like one event spelled several ways.
| slug required | string (Slug) |
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. |
{- "items": [
- {
- "events": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "status": "string",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "volume_7d": 0
}
], - "score": 0
}
], - "next_cursor": "string",
- "total": 0,
- "threshold": 0,
- "truncated": false
}Mark two events as not duplicates; the pair is never clustered again.
| slug required | string (Slug) |
| event_a_id required | string <uuid> (Event A Id) |
| event_b_id required | string <uuid> (Event B Id) |
{- "event_a_id": "4561cbd1-988a-46b1-956a-869d1bb1f565",
- "event_b_id": "e224ad04-886a-41e9-a8b7-aad4b475b648"
}{- "event_a_id": "4561cbd1-988a-46b1-956a-869d1bb1f565",
- "event_b_id": "e224ad04-886a-41e9-a8b7-aad4b475b648",
- "created": true
}Open findings of the daily sunset watch; ?include_resolved=true adds the closed ones.
| slug required | string (Slug) |
| include_resolved | boolean (Include Resolved) Default: false |
{- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_name": "string",
- "kind": "sunset_overdue",
- "related_event_id": "89818c5e-4a97-4bd9-9cb2-e81d1b39b154",
- "related_event_name": "string",
- "first_seen_at": "2019-08-24T14:15:22Z",
- "last_seen_at": "2019-08-24T14:15:22Z",
- "resolved_at": "2019-08-24T14:15:22Z",
- "volume_24h": 0,
- "successor_volume_7d": 0
}
], - "total": 0
}Successor adoption: the old and the new event's 7-day daily average.
404 when the event names no successor.
| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
{- "old": {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "name": "string",
- "daily_avg_7d": 0
}, - "new": {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "name": "string",
- "daily_avg_7d": 0
}, - "ratio": 0
}Health of up to 150 events; ids outside the scored population are omitted.
| slug required | string (Slug) |
| ids required | Array of strings <uuid> (Ids) [ 1 .. 150 ] items [ items <uuid > ] |
{- "items": [
- {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "name": "string",
- "score": 0,
- "grade": "healthy",
- "renormalized": true,
- "excluded": [
- "implemented_seen"
], - "top_issue": "string",
- "components": [
- {
- "key": "implemented_seen",
- "label": "string",
- "weight": 0,
- "applies": true,
- "excluded_reason": "string",
- "value": 0,
- "effective_weight": 0,
- "points": 0,
- "detail": "string",
- "counts": {
- "property1": 0,
- "property2": 0
}
}
]
}
], - "computed_at": "2019-08-24T14:15:22Z"
}Per event type: mean score, grade counts, component averages, worst events.
| slug required | string (Slug) |
{- "items": [
- {
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "score": 0,
- "grade": "healthy",
- "scored_events": 0,
- "healthy_count": 0,
- "warning_count": 0,
- "unhealthy_count": 0,
- "component_averages": [
- {
- "key": "implemented_seen",
- "value": 0,
- "applies_count": 0
}
], - "worst": [
- {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "name": "string",
- "score": 0,
- "grade": "healthy",
- "top_issue": "string"
}
]
}
]
}Plan health: mean score, distribution, worst five and the daily trend.
| slug required | string (Slug) |
| trend_days | integer (Trend Days) [ 1 .. 365 ] Default: 30 |
{- "score": 0,
- "grade": "healthy",
- "scored_events": 0,
- "healthy_count": 0,
- "warning_count": 0,
- "unhealthy_count": 0,
- "component_averages": [
- {
- "key": "implemented_seen",
- "value": 0,
- "applies_count": 0
}
], - "worst": [
- {
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "name": "string",
- "score": 0,
- "grade": "healthy",
- "top_issue": "string"
}
], - "trend": [
- {
- "day": "2019-08-24",
- "score": 0,
- "scored_events": 0
}
], - "previous_score": 0,
- "computed_at": "2019-08-24T14:15:22Z"
}One event's score with its component breakdown. 404 off the main plan.
| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
{- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "name": "string",
- "score": 0,
- "grade": "healthy",
- "renormalized": true,
- "excluded": [
- "implemented_seen"
], - "top_issue": "string",
- "components": [
- {
- "key": "implemented_seen",
- "label": "string",
- "weight": 0,
- "applies": true,
- "excluded_reason": "string",
- "value": 0,
- "effective_weight": 0,
- "points": 0,
- "detail": "string",
- "counts": {
- "property1": 0,
- "property2": 0
}
}
]
}| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
[- {
- "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"
}
]| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
| body required | string (Body) [ 1 .. 4000 ] characters |
Parent Id (string) or Parent Id (null) (Parent Id) |
{- "body": "string",
- "parent_id": "1c6ca187-e61f-4301-8dcb-0e9749e89eef"
}{- "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"
}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.
| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
| comment_id required | string <uuid> (Comment Id) |
| action required | string (Action) Enum: "resolve" "snooze" "reopen" |
Note (string) or Note (null) (Note) | |
Snoozed Until (string) or Snoozed Until (null) (Snoozed Until) |
{- "action": "resolve",
- "note": "string",
- "snoozed_until": "2019-08-24T14:15:22Z"
}{- "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"
}| slug required | string (Slug) |
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 |
{- "items": [
- {
- "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",
- "interval": "15m",
- "anomaly_detection_enabled": true,
- "last_collected_at": "2019-08-24T14:15:22Z",
- "last_collection_status": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "latest_value": 0,
- "latest_bucket": "2019-08-24T14:15:22Z",
- "latest_signal": {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "state": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "stddev": 0,
- "z_score": 0,
- "direction": "spike",
- "relative_effect": 0,
- "scope_name": "string",
- "incident_child": false,
- "unit": "string",
- "detected_at": "2019-08-24T14:15:22Z",
- "incident_id": "2f811c5b-b888-4fb3-aac5-3c6a4b05df32",
- "incident_status": "open",
- "acknowledged_at": "2019-08-24T14:15:22Z",
- "muted": false,
- "muted_until": "2019-08-24T14:15:22Z",
- "expected": false,
- "expected_note": "string",
- "hidden": false,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "incident": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "open"
}, - "anomaly_id": "ad2dfd01-0c70-4540-950a-db06805bc49d",
- "attribution": {
- "delta": 0,
- "columns": [
- {
- "column": "string",
- "explained_share": 0,
- "values": [
- {
- "value": "string",
- "delta": 0,
- "expected": 0,
- "actual": 0,
- "share": 0
}
]
}
], - "release": {
- "version": "string",
- "previous_version": "string",
- "share": 0,
- "reached_at": "2019-08-24T14:15:22Z"
}, - "headline": "string",
- "release_line": "string",
- "computed_at": "2019-08-24T14:15:22Z"
}, - "attribution_status": "ready",
- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string"
}
]
}, - "spark": [ ]
}
], - "total": 0,
- "active_total": 0
}| slug required | string (Slug) |
| kind | string (Kind) Default: "fact" Value: "fact" |
| composition | string (MetricComposition) Default: "single" Enum: "single" "ratio" "per_distinct_user" How an
|
| 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 |
{- "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": [
- "string"
], - "filter_sql": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "eq",
- "value": "string"
}
], - "numerator": {
- "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
- "aggregation": "count",
- "measure_column": "string",
- "distinct_column": "string",
- "row_filter": "string",
- "row_filters": [
- "string"
], - "filter_sql": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "eq",
- "value": "string"
}
]
}, - "denominator": {
- "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
- "aggregation": "count",
- "measure_column": "string",
- "distinct_column": "string",
- "row_filter": "string",
- "row_filters": [
- "string"
], - "filter_sql": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "eq",
- "value": "string"
}
]
}, - "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": [
- "string"
], - "breakdown_values_limit": 1,
- "app_version_column": "string",
- "platform_column": "string",
- "anomaly_detection_enabled": true
}{- "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": [
- "string"
], - "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"
}| slug required | string (Slug) |
| 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) |
{- "metric_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "status": "draft",
- "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
- "reviewed": true,
- "anomaly_detection_enabled": true
}{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}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.
| slug required | string (Slug) |
| 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" |
{- "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
- "sql": "string",
- "time_column": "string",
- "value_column": "string",
- "interval": "15m"
}{- "columns": [
- "string"
], - "points": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "value": 0
}
], - "point_count": 0,
- "truncated": false,
- "error": "string"
}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.
| slug required | string (Slug) |
| 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 |
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 |
{- "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
- "aggregation": "count",
- "measure_column": "string",
- "distinct_column": "string",
- "row_filter": "string",
- "row_filters": [
- "string"
], - "filter_sql": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "eq",
- "value": "string"
}
]
}{- "columns": [
- "string"
], - "row_count": 0,
- "error": "string"
}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.
| slug required | string (Slug) |
| kind | string (Kind) Default: "fact" Value: "fact" |
| composition | string (MetricComposition) Default: "single" Enum: "single" "ratio" "per_distinct_user" How an
|
| 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 |
{- "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": [
- "string"
], - "filter_sql": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "eq",
- "value": "string"
}
], - "numerator": {
- "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
- "aggregation": "count",
- "measure_column": "string",
- "distinct_column": "string",
- "row_filter": "string",
- "row_filters": [
- "string"
], - "filter_sql": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "eq",
- "value": "string"
}
]
}, - "denominator": {
- "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
- "aggregation": "count",
- "measure_column": "string",
- "distinct_column": "string",
- "row_filter": "string",
- "row_filters": [
- "string"
], - "filter_sql": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "eq",
- "value": "string"
}
]
}
}{- "columns": [
- "string"
], - "points": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "value": 0
}
], - "point_count": 0,
- "truncated": false,
- "error": "string"
}| slug required | string (Slug) |
| metric_ids required | Array of strings <uuid> (Metric Ids) non-empty [ items <uuid > ] |
{- "metric_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}[- {
- "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": [
- "string"
], - "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"
}
]| slug required | string (Slug) |
| metric_id required | string <uuid> (Metric Id) |
{- "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": [
- "string"
], - "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
}| slug required | string (Slug) |
| metric_id required | string <uuid> (Metric Id) |
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) |
{- "display_name": "string",
- "description": "string",
- "color": "string",
- "order": 0,
- "unit": "string",
- "status": "draft",
- "owner_id": "8826ee2e-7933-4665-aef2-2393f84a0d05",
- "reviewed": true,
- "breakdown_columns": [
- "string"
], - "breakdown_values_limit": 1,
- "app_version_column": "string",
- "platform_column": "string",
- "anomaly_detection_enabled": true,
- "definition": {
- "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": [
- "string"
], - "filter_sql": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "eq",
- "value": "string"
}
], - "numerator": {
- "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
- "aggregation": "count",
- "measure_column": "string",
- "distinct_column": "string",
- "row_filter": "string",
- "row_filters": [
- "string"
], - "filter_sql": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "eq",
- "value": "string"
}
]
}, - "denominator": {
- "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
- "aggregation": "count",
- "measure_column": "string",
- "distinct_column": "string",
- "row_filter": "string",
- "row_filters": [
- "string"
], - "filter_sql": "string",
- "conditions": [
- {
- "column": "string",
- "operator": "eq",
- "value": "string"
}
]
}
}
}{- "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": [
- "string"
], - "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"
}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.
| slug required | string (Slug) |
| metric_id required | string <uuid> (Metric Id) |
{- "queries": [
- {
- "role": "primary",
- "label": "string",
- "fact_table_id": "aa244fd0-16b6-42fe-82eb-98caad9349d4",
- "fact_table_name": "string",
- "interval": "string",
- "window_from": "2019-08-24T14:15:22Z",
- "window_to": "2019-08-24T14:15:22Z",
- "metric_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "sql": "string"
}
], - "breakdown_queries_omitted": true
}| slug required | string (Slug) |
| metric_id required | string <uuid> (Metric Id) |
From (string) or From (null) (From) | |
To (string) or To (null) (To) |
{- "metric_id": "e3216117-28d7-4548-9b5f-7e08a760b2c7",
- "scope": "metric",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "interval": "15m",
- "latest_signal": {
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "scope_type": "project_total",
- "scope_ref": "string",
- "state": "string",
- "event_id": "a7a26ff2-e851-45b6-9634-d595f45458b7",
- "event_type_id": "a4ec4c3c-a3de-4a8a-983f-1791e72cea83",
- "bucket": "2019-08-24T14:15:22Z",
- "actual_count": 0,
- "expected_count": 0,
- "stddev": 0,
- "z_score": 0,
- "direction": "spike",
- "relative_effect": 0,
- "scope_name": "string",
- "incident_child": false,
- "unit": "string",
- "detected_at": "2019-08-24T14:15:22Z",
- "incident_id": "2f811c5b-b888-4fb3-aac5-3c6a4b05df32",
- "incident_status": "open",
- "acknowledged_at": "2019-08-24T14:15:22Z",
- "muted": false,
- "muted_until": "2019-08-24T14:15:22Z",
- "expected": false,
- "expected_note": "string",
- "hidden": false,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "incident": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "open"
}, - "anomaly_id": "ad2dfd01-0c70-4540-950a-db06805bc49d",
- "attribution": {
- "delta": 0,
- "columns": [
- {
- "column": "string",
- "explained_share": 0,
- "values": [
- {
- "value": "string",
- "delta": 0,
- "expected": 0,
- "actual": 0,
- "share": 0
}
]
}
], - "release": {
- "version": "string",
- "previous_version": "string",
- "share": 0,
- "reached_at": "2019-08-24T14:15:22Z"
}, - "headline": "string",
- "release_line": "string",
- "computed_at": "2019-08-24T14:15:22Z"
}, - "attribution_status": "ready",
- "owners": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "name": "string"
}
]
}, - "sigma_threshold": 0,
- "data": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "value": 0,
- "expected_count": 0,
- "stddev": 0,
- "is_anomaly": false,
- "anomaly_direction": "spike",
- "z_score": 0,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "planned_event_id": "0462e26c-4f95-4e5e-ac89-b7d339fd64c6"
}
], - "forecast": [ ]
}| slug required | string (Slug) |
| metric_id required | string <uuid> (Metric Id) |
Column (string) or Column (null) (Column) | |
From (string) or From (null) (From) | |
To (string) or To (null) (To) |
{- "metric_id": "e3216117-28d7-4548-9b5f-7e08a760b2c7",
- "scan_config_id": "73831784-3bab-4614-8856-92f95dec4914",
- "interval": "15m",
- "columns": [
- "string"
], - "selected_column": "string",
- "series": [
- {
- "breakdown_value": "string",
- "is_other": false,
- "total_value": 0,
- "data": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "value": 0,
- "expected_count": 0,
- "stddev": 0,
- "is_anomaly": false,
- "anomaly_direction": "spike",
- "z_score": 0,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "planned_event_id": "0462e26c-4f95-4e5e-ac89-b7d339fd64c6"
}
]
}
]
}| slug required | string (Slug) |
| metric_id required | string <uuid> (Metric Id) |
From (string) or From (null) (From) | |
To (string) or To (null) (To) |
{- "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": [
- {
- "version": "string",
- "is_other": false,
- "is_latest": false,
- "is_active": false
}
], - "series": [
- {
- "version": "string",
- "is_other": false,
- "is_latest": false,
- "is_active": false,
- "total_value": 0,
- "data": [
- {
- "bucket": "2019-08-24T14:15:22Z",
- "value": 0,
- "expected_count": 0,
- "stddev": 0,
- "is_anomaly": false,
- "anomaly_direction": "spike",
- "z_score": 0,
- "verdict": {
- "verdict": "expected",
- "expected_reason": "campaign",
- "note": "string",
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "source": "signal"
}, - "planned_event_id": "0462e26c-4f95-4e5e-ac89-b7d339fd64c6"
}
]
}
]
}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.
| slug required | string (Slug) |
| metric_id required | string <uuid> (Metric Id) |
{- "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
}| slug required | string (Slug) |
| metric_id required | string <uuid> (Metric Id) |
| direction required | string (Direction) Enum: "up" "down" |
Array of Visible Metric Ids (strings) or Visible Metric Ids (null) (Visible Metric Ids) |
{- "direction": "up",
- "visible_metric_ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}{- "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": [
- "string"
], - "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"
}| slug required | string (Slug) |
Search (string) or Search (null) (Search) | |
| offset | integer (Offset) >= 0 Default: 0 |
| limit | integer (Limit) [ 1 .. 1000 ] Default: 200 |
{- "items": [
- {
- "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",
- "timestamp_column": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "metric_count": 0,
- "column_count": 0,
- "identifier_count": 0
}
], - "total": 0
}| slug required | string (Slug) |
| 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 |
{- "name": "string",
- "display_name": "string",
- "description": "",
- "color": "#6366f1",
- "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
- "sql": "string",
- "timestamp_column": "string",
- "columns": [
- {
- "name": "string",
- "type": "string",
- "native_type": "string"
}
], - "identifier_columns": [
- "string"
], - "row_filters": [
- {
- "name": "string",
- "sql": "string"
}
]
}{- "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": [
- {
- "name": "string",
- "type": "string",
- "native_type": "string"
}
], - "identifier_columns": [
- "string"
], - "row_filters": [
- {
- "name": "string",
- "sql": "string"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}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.
| slug required | string (Slug) |
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) |
{- "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
- "sql": "string",
- "timestamp_column": "string"
}{- "columns": [
- {
- "name": "string",
- "type": "string",
- "native_type": "string"
}
], - "identifier_candidates": [
- "string"
]
}| slug required | string (Slug) |
| fact_table_id required | string <uuid> (Fact Table Id) |
{- "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": [
- {
- "name": "string",
- "type": "string",
- "native_type": "string"
}
], - "identifier_columns": [
- "string"
], - "row_filters": [
- {
- "name": "string",
- "sql": "string"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}| slug required | string (Slug) |
| fact_table_id required | string <uuid> (Fact Table Id) |
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) |
{- "display_name": "string",
- "description": "string",
- "color": "string",
- "order": 0,
- "data_source_id": "0e1e9a56-7994-41e2-9003-96f8ebac19a2",
- "sql": "string",
- "timestamp_column": "string",
- "columns": [
- {
- "name": "string",
- "type": "string",
- "native_type": "string"
}
], - "identifier_columns": [
- "string"
], - "row_filters": [
- {
- "name": "string",
- "sql": "string"
}
]
}{- "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": [
- {
- "name": "string",
- "type": "string",
- "native_type": "string"
}
], - "identifier_columns": [
- "string"
], - "row_filters": [
- {
- "name": "string",
- "sql": "string"
}
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}{- "project": {
- "slug": "string",
- "name": "string"
}, - "organization": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "slug": "string",
- "name": "string"
}, - "project_docs": [
- {
- "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
}
], - "organization_docs": [
- {
- "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
}
], - "limits": {
- "max_file_bytes": 0,
- "max_files_per_scope": 0,
- "max_bundle_files": 0,
- "max_bundle_bytes": 0
}, - "language_defaults": {
- "agent_lang": "string",
- "human_lang": "string"
}
}| slug required | string (Slug) |
| 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 |
{- "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": {
- "agent_lang": "string",
- "human_lang": "string"
}
}| slug required | string (Slug) |
| 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 |
| 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: "" |
{- "content": "string",
- "base_revision": 1,
- "create_only": false,
- "message": ""
}{- "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": {
- "agent_lang": "string",
- "human_lang": "string"
}, - "created": true,
- "changed": true,
- "warnings": [ ]
}| slug required | string (Slug) |
| 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 |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}Who the note is shared with. 404 for a note the caller cannot see.
| slug required | string (Slug) |
| 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 |
{- "scope": "project",
- "path": "string",
- "visibility": "private",
- "inherited": true,
- "inherited_from": "string",
- "shares": [ ],
- "can_manage": false
}Change the note's visibility and shares: its author, or an org owner/admin.
| slug required | string (Slug) |
| 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 |
| visibility | string (Visibility) Default: "level" Enum: "private" "restricted" "level" |
| inherited | boolean (Inherited) Default: false |
Array of objects (Shares) <= 200 items Default: [] |
{- "visibility": "private",
- "inherited": false,
- "shares": [ ]
}{- "scope": "project",
- "path": "string",
- "visibility": "private",
- "inherited": true,
- "inherited_from": "string",
- "shares": [ ],
- "can_manage": false
}A folder's setting, inherited by the notes under it that do not override it.
| slug required | string (Slug) |
| 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. |
{- "scope": "project",
- "path": "string",
- "visibility": "private",
- "inherited": true,
- "inherited_from": "string",
- "shares": [ ],
- "can_manage": false
}Set (or, with inherited: true, clear) a folder's visibility and shares.
| slug required | string (Slug) |
| 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. |
| visibility | string (Visibility) Default: "level" Enum: "private" "restricted" "level" |
| inherited | boolean (Inherited) Default: false |
Array of objects (Shares) <= 200 items Default: [] |
{- "visibility": "private",
- "inherited": false,
- "shares": [ ]
}{- "scope": "project",
- "path": "string",
- "visibility": "private",
- "inherited": true,
- "inherited_from": "string",
- "shares": [ ],
- "can_manage": false
}| slug required | string (Slug) |
| 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. |
{- "deleted": [
- "string"
]
}| slug required | string (Slug) |
| 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 |
{- "scope": "project",
- "from_path": "string",
- "to_path": "string",
- "folder": false
}{- "moved": [
- {
- "from_path": "string",
- "to_path": "string"
}
]
}| slug required | string (Slug) |
| 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 |
{- "scope": "project",
- "path": "string",
- "current_revision": 0,
- "items": [
- {
- "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
}
]
}| slug required | string (Slug) |
| revision_id required | string <uuid> (Revision Id) |
{- "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
}| slug required | string (Slug) |
| revision_id required | string <uuid> (Revision Id) |
| message | string (Message) <= 500 characters Default: "" |
{- "message": ""
}{- "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": {
- "agent_lang": "string",
- "human_lang": "string"
}, - "created": true,
- "changed": true,
- "warnings": [ ]
}| slug required | string (Slug) |
| q required | string (Q) [ 1 .. 500 ] characters |
Scope (string) or Scope (null) (Scope) | |
| limit | integer (Limit) [ 1 .. 50 ] Default: 20 |
{- "items": [
- {
- "scope": "project",
- "path": "string",
- "title": "string",
- "description": "",
- "tags": [ ],
- "audience": "human",
- "snippet": "",
- "score": 0,
- "confidence": 0
}
], - "total": 0,
- "truncated": false,
- "semantic_used": false
}Notes linking to kind:name that the caller can see.
name is the entity's name, or its id for doc (the note's "Linked
from"), alert_rule and user.
| slug required | string (Slug) |
| kind required | string (Kind) Enum: "event" "event_type" "field" "doc" "variable" "metric" "alert_rule" "branch" "scan" "data_source" "user" |
| name required | string (Name) [ 1 .. 500 ] characters |
Qualifier (string) or Qualifier (null) (Qualifier) |
{- "kind": "event",
- "name": "string",
- "qualifier": "string",
- "items": [
- {
- "scope": "project",
- "path": "string",
- "title": "string",
- "description": "",
- "audience": "human",
- "link_raw": "string"
}
]
}Resolve references as the caller reads them (a note they cannot see is unavailable).
| slug required | string (Slug) |
| ref required | Array of strings (Ref) <= 200 items kind:target (repeatable). kind is event, event-type, field, doc, variable, metric, alert-rule, branch, scan, data-source or user; doc, alert-rule and user take an id. |
[- {
- "kind": "event",
- "target": "string",
- "qualifier": "string",
- "raw": "string",
- "status": "resolved",
- "route_path": "string",
- "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
- "candidates": 0,
- "label": "string",
- "detail": "string",
- "reason": "not_found",
- "suggestions": [ ]
}
]The note editor's link and @mention picker.
Candidates the caller may link to: notes they can see, members of the
project's organization, and the project's plan entities, alert rules,
branches, scans and data sources. insert is the reference text to put
in the note. Rate-limited per user (doc_link_suggestions_rate_limiter).
| slug required | string (Slug) |
| q | string (Q) <= 200 characters Default: "" |
Kind (string) or Kind (null) (Kind) Only this kind; the editor passes it once '[[kind:' is typed. | |
| limit | integer (Limit) [ 1 .. 50 ] Default: 10 |
{- "items": [
- {
- "kind": "event",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "label": "string",
- "detail": "",
- "insert": "string"
}
]
}| slug required | string (Slug) |
| scope required | string (Scope) Enum: "project" "organization" Whose notes: the project's or its organization's. |
| format | string (Format) Default: "json" Enum: "json" "zip" |
{- "format": "tripl-docs/v1",
- "scope": "project",
- "project_slug": "string",
- "organization_slug": "string",
- "exported_at": "2019-08-24T14:15:22Z",
- "files": [
- {
- "path": "string",
- "content": "string",
- "sha256": "string",
- "translation_of": "string",
- "lang": "string"
}
]
}| slug required | string (Slug) |
| 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 |
| format | string (Format) Default: "tripl-docs/v1" Value: "tripl-docs/v1" |
required | Array of objects (Files) <= 2000 items |
{- "format": "tripl-docs/v1",
- "files": [
- {
- "path": "string",
- "content": "string",
- "sha256": "string",
- "translation_of": "string",
- "lang": "string"
}
]
}{- "scope": "project",
- "mode": "merge",
- "dry_run": true,
- "created": [ ],
- "updated": [ ],
- "unchanged": [ ],
- "deleted": [ ],
- "skipped": [ ],
- "errors": [ ],
- "translations": [ ],
- "translations_deleted": [ ]
}| slug required | string (Slug) |
| 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 |
| file required | string <application/octet-stream> (File) A zip of .md files. |
{- "scope": "project",
- "mode": "merge",
- "dry_run": true,
- "created": [ ],
- "updated": [ ],
- "unchanged": [ ],
- "deleted": [ ],
- "skipped": [ ],
- "errors": [ ],
- "translations": [ ],
- "translations_deleted": [ ]
}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).
| slug required | string (Slug) |
| 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 |
{- "scope": "project",
- "path": "string",
- "language": "string",
- "overwrite": false
}{- "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"
}Save a translation's text by hand (creates it when the note has none in lang).
| slug required | string (Slug) |
| 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 |
{- "scope": "project",
- "path": "string",
- "lang": "string",
- "content": "string",
- "base_revision": 0,
- "mark_current": false
}{- "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"
}| slug required | string (Slug) |
| 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 |
{- "detail": [
- {
- "loc": [
- "string"
], - "msg": "string",
- "type": "string",
- "input": null,
- "ctx": { }
}
]
}| slug required | string (Slug) |
| 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 |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "number": 0,
- "action": "translate",
- "source_revision": 0,
- "author_name": "string",
- "created_at": "2019-08-24T14:15:22Z"
}
]| slug required | string (Slug) |
| revision_id required | string <uuid> (Revision Id) |
| 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 |
{- "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"
}| slug required | string (Slug) |
| revision_id required | string <uuid> (Revision Id) |
| 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",
- "status": "pending",
- "revision": 0,
- "source_revision": 0,
- "outdated": true,
- "machine": true,
- "error": "",
- "updated_at": "2019-08-24T14:15:22Z",
- "updated_by_name": "string"
}Set both defaults: a code or a name each, empty or null for the original.
| slug required | string (Slug) |
Agent Lang (string) or Agent Lang (null) (Agent Lang) | |
Human Lang (string) or Human Lang (null) (Human Lang) |
{- "agent_lang": "string",
- "human_lang": "string"
}{- "agent_lang": "string",
- "human_lang": "string"
}| slug required | string (Slug) |
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) |
[- {
- "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"
}
]| slug required | string (Slug) |
| 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) |
{- "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"
}{- "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"
}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.
| slug required | string (Slug) |
[- {
- "scope_type": "project_total",
- "scope_ref": "string",
- "scope_name": "string",
- "weekday": 0,
- "hour": 0,
- "direction": "spike",
- "verdict_count": 0,
- "last_bucket": "2019-08-24T14:15:22Z",
- "note": "string",
- "windows": [
- {
- "starts_at": "2019-08-24T14:15:22Z",
- "ends_at": "2019-08-24T14:15:22Z"
}
]
}
]| slug required | string (Slug) |
| planned_event_id required | string <uuid> (Planned Event Id) |
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) |
{- "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"
}{- "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"
}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.
| slug required | string (Slug) |
| branch_id required | string <uuid> (Branch Id) |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc",
- "tracker_type": "string",
- "external_id": "string",
- "external_key": "string",
- "external_url": "string",
- "status": "string",
- "summary": "string",
- "event_ids": [
- "string"
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "closed_at": "2019-08-24T14:15:22Z"
}
]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.
| slug required | string (Slug) |
| event_id required | string <uuid> (Event Id) |
Branch (string) or Branch (null) (Branch) Plan branch id (UUID) to read and write instead of the main branch. |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "branch_id": "7a4e8e99-89f2-4a0f-b66c-fc595dda2dbc",
- "tracker_type": "string",
- "external_id": "string",
- "external_key": "string",
- "external_url": "string",
- "status": "string",
- "summary": "string",
- "event_ids": [
- "string"
], - "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z",
- "closed_at": "2019-08-24T14:15:22Z"
}
]| unread | boolean (Unread) Default: false |
| limit | integer (Limit) [ 1 .. 100 ] Default: 30 |
Cursor (string) or Cursor (null) (Cursor) |
{- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "project_id": "405d8375-3514-403b-8c43-83ae74cfe0e9",
- "project_slug": "string",
- "project_name": "string",
- "kind": "comment",
- "entity_type": "event",
- "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
- "title": "string",
- "body": "string",
- "url": "string",
- "actor": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string",
- "email": "string"
}, - "read_at": "2019-08-24T14:15:22Z",
- "created_at": "2019-08-24T14:15:22Z"
}
], - "next_cursor": "string"
}| ids | Array of strings <uuid> (Ids) <= 500 items [ items <uuid > ] |
| all | boolean (All) Default: false |
{- "ids": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "all": false
}{- "updated": 0,
- "unread": 0
}Email Mode (string) or Email Mode (null) (Email Mode) | |
Mentions Email (boolean) or Mentions Email (null) (Mentions Email) |
{- "email_mode": "off",
- "mentions_email": true
}{- "email_mode": "off",
- "mentions_email": true,
- "email_available": true
}| slug required | string (Slug) |
| entity_type required | string (Entity Type) Enum: "event" "event_type" "metric" "branch" |
| entity_id required | string <uuid> (Entity Id) |
{- "entity_type": "event",
- "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
- "watching": true,
- "muted": true,
- "reasons": [
- "author"
]
}| slug required | string (Slug) |
| entity_type required | string (Entity Type) Enum: "event" "event_type" "metric" "branch" |
| entity_id required | string <uuid> (Entity Id) |
{- "entity_type": "event",
- "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
- "watching": true,
- "muted": true,
- "reasons": [
- "author"
]
}| slug required | string (Slug) |
| entity_type required | string (Entity Type) Enum: "event" "event_type" "metric" "branch" |
| entity_id required | string <uuid> (Entity Id) |
{- "entity_type": "event",
- "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
- "watching": true,
- "muted": true,
- "reasons": [
- "author"
]
}| slug required | string (Slug) |
| entity_type required | string (Entity Type) Enum: "event" "event_type" "metric" "branch" |
| entity_id required | string <uuid> (Entity Id) |
| muted required | boolean (Muted) |
{- "muted": true
}{- "entity_type": "event",
- "entity_id": "8161163a-f227-466f-bc01-090a01e80165",
- "watching": true,
- "muted": true,
- "reasons": [
- "author"
]
}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.
[- {
- "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
}
]Create an organization; its creator becomes its owner.
| name required | string (Name) [ 1 .. 255 ] characters |
| slug required | string (Slug) [ 1 .. 255 ] characters ^[a-z0-9]+(?:-[a-z0-9]+)*$ |
{- "name": "string",
- "slug": "string"
}{- "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
}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.
| confirm_slug required | string (Confirm Slug) [ 1 .. 255 ] characters |
{- "confirm_slug": "string"
}{- "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
}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.
Name (string) or Name (null) (Name) | |
ProjectMemberRole (string) or null |
{- "name": "string",
- "default_project_role": "none"
}{- "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
}| limit | integer (Limit) [ 1 .. 1000 ] Default: 200 |
| offset | integer (Offset) >= 0 Default: 0 |
[- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "string",
- "name": "string",
- "role": "owner",
- "created_at": "2019-08-24T14:15:22Z"
}
]Change a member's organization role (owner | admin | member).
| user_id required | string <uuid> (User Id) |
| role required | string (OrganizationRole) Enum: "owner" "admin" "member" A user's role in one organization ( The source of truth for organization-level rights (F20 PR4). |
{- "role": "owner"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "string",
- "name": "string",
- "role": "owner",
- "created_at": "2019-08-24T14:15:22Z"
}Remove a member: their membership, project rows, keys and pending invitations here.
| user_id required | string <uuid> (User Id) |
{- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "project_memberships_removed": 0,
- "api_keys_revoked": 0,
- "invitations_revoked": 0,
- "group_memberships_removed": 0
}Make another member an owner and step the caller down to admin.
| user_id required | string <uuid> (User Id) |
{- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "string",
- "name": "string",
- "role": "owner",
- "created_at": "2019-08-24T14:15:22Z"
}{- "limits": {
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 0,
- "smtp_username": "string",
- "smtp_password_configured": true,
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key_configured": true,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string"
}, - "search": {
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_base_url": "string",
- "search_embedding_api_key_configured": true,
- "search_embedding_dimensions": 0
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_max_size_mb": 0,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_configured": true,
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 0
}, - "organization": "string",
- "scope": "organization",
- "operator_fallback": "all",
- "inherited": {
- "limits": {
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 0,
- "smtp_username": "string",
- "smtp_password_configured": true,
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key_configured": true,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string"
}, - "search": {
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_base_url": "string",
- "search_embedding_api_key_configured": true,
- "search_embedding_dimensions": 0
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_max_size_mb": 0,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_configured": true,
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 0
}
}, - "ceilings": {
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "photo_max_size_mb": 0
}, - "storage_limits": {
- "operator_allowed_mime": [
- "string"
], - "local_backend_allowed": true
}, - "overridden_fields": [
- "string"
], - "sources": {
- "property1": "env",
- "property2": "env"
}
}Identical to PATCH: a sparse override map, unset fields left untouched.
OrgLimitSettingsUpdate (object) or null | |
OrgEmailSettingsUpdate (object) or null | |
OrgAiSettingsUpdate (object) or null | |
OrgSearchSettingsUpdate (object) or null | |
OrgStorageSettingsUpdate (object) or null |
{- "limits": {
- "scan_row_limit_default": 1,
- "metrics_row_limit_default": 1
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 1,
- "smtp_username": "string",
- "smtp_password": "string",
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key": "string",
- "ai_timeout_seconds": 1,
- "ai_max_output_tokens": 1,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string"
}, - "search": {
- "search_embeddings_enabled": true,
- "search_embedding_provider": "openai",
- "search_embedding_model": "string",
- "search_embedding_base_url": "string",
- "search_embedding_api_key": "string"
}, - "storage": {
- "photo_storage_backend": "local",
- "photo_max_size_mb": 1,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_json": "string",
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 60
}
}{- "limits": {
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 0,
- "smtp_username": "string",
- "smtp_password_configured": true,
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key_configured": true,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string"
}, - "search": {
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_base_url": "string",
- "search_embedding_api_key_configured": true,
- "search_embedding_dimensions": 0
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_max_size_mb": 0,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_configured": true,
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 0
}, - "organization": "string",
- "scope": "organization",
- "operator_fallback": "all",
- "inherited": {
- "limits": {
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 0,
- "smtp_username": "string",
- "smtp_password_configured": true,
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key_configured": true,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string"
}, - "search": {
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_base_url": "string",
- "search_embedding_api_key_configured": true,
- "search_embedding_dimensions": 0
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_max_size_mb": 0,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_configured": true,
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 0
}
}, - "ceilings": {
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "photo_max_size_mb": 0
}, - "storage_limits": {
- "operator_allowed_mime": [
- "string"
], - "local_backend_allowed": true
}, - "overridden_fields": [
- "string"
], - "sources": {
- "property1": "env",
- "property2": "env"
}
}OrgLimitSettingsUpdate (object) or null | |
OrgEmailSettingsUpdate (object) or null | |
OrgAiSettingsUpdate (object) or null | |
OrgSearchSettingsUpdate (object) or null | |
OrgStorageSettingsUpdate (object) or null |
{- "limits": {
- "scan_row_limit_default": 1,
- "metrics_row_limit_default": 1
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 1,
- "smtp_username": "string",
- "smtp_password": "string",
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key": "string",
- "ai_timeout_seconds": 1,
- "ai_max_output_tokens": 1,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string"
}, - "search": {
- "search_embeddings_enabled": true,
- "search_embedding_provider": "openai",
- "search_embedding_model": "string",
- "search_embedding_base_url": "string",
- "search_embedding_api_key": "string"
}, - "storage": {
- "photo_storage_backend": "local",
- "photo_max_size_mb": 1,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_json": "string",
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 60
}
}{- "limits": {
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 0,
- "smtp_username": "string",
- "smtp_password_configured": true,
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key_configured": true,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string"
}, - "search": {
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_base_url": "string",
- "search_embedding_api_key_configured": true,
- "search_embedding_dimensions": 0
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_max_size_mb": 0,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_configured": true,
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 0
}, - "organization": "string",
- "scope": "organization",
- "operator_fallback": "all",
- "inherited": {
- "limits": {
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 0,
- "smtp_username": "string",
- "smtp_password_configured": true,
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key_configured": true,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string"
}, - "search": {
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_base_url": "string",
- "search_embedding_api_key_configured": true,
- "search_embedding_dimensions": 0
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_max_size_mb": 0,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_configured": true,
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 0
}
}, - "ceilings": {
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "photo_max_size_mb": 0
}, - "storage_limits": {
- "operator_allowed_mime": [
- "string"
], - "local_backend_allowed": true
}, - "overridden_fields": [
- "string"
], - "sources": {
- "property1": "env",
- "property2": "env"
}
}Probe the AI provider THIS organization would use, with its saved values.
| prompt | string (Prompt) [ 1 .. 500 ] characters Default: "Reply with the word ok if the LLM connection works." |
{- "prompt": "Reply with the word ok if the LLM connection works."
}{- "ok": true,
- "message": "string"
}Send one probe through THIS organization's relay; always 200.
Recipient (string) or Recipient (null) (Recipient) | |
Any of string <email> (Recipient) | |
{- "recipient": "user@example.com"
}{- "ok": true,
- "message": "string"
}The organization's Jira/Linear defaults (F20 PR12); secrets as *_configured.
{- "organization": "string",
- "jira": {
- "base_url": "string",
- "auth_email": "string",
- "api_token_configured": true,
- "project_key": "string"
}, - "linear": {
- "api_key_configured": true,
- "team_id": "string"
}, - "sources": {
- "property1": "org",
- "property2": "org"
}
}Set or clear (null / "") the organization's tracker defaults.
OrgJiraDefaultsUpdate (object) or null | |
OrgLinearDefaultsUpdate (object) or null |
{- "jira": {
- "base_url": "string",
- "auth_email": "string",
- "api_token": "string",
- "project_key": "string"
}, - "linear": {
- "api_key": "string",
- "team_id": "string"
}
}{- "organization": "string",
- "jira": {
- "base_url": "string",
- "auth_email": "string",
- "api_token_configured": true,
- "project_key": "string"
}, - "linear": {
- "api_key_configured": true,
- "team_id": "string"
}, - "sources": {
- "property1": "org",
- "property2": "org"
}
}| name required | string (Name) [ 1 .. 255 ] characters |
| description | string (Description) <= 2000 characters Default: "" |
{- "name": "string",
- "description": ""
}{- "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": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "email": "string",
- "name": "string",
- "added_at": "2019-08-24T14:15:22Z"
}
]
}{- "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": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "email": "string",
- "name": "string",
- "added_at": "2019-08-24T14:15:22Z"
}
]
}Rename the group and/or change its description.
| group_id required | string <uuid> (Group Id) |
Name (string) or Name (null) (Name) | |
Description (string) or Description (null) (Description) |
{- "name": "string",
- "description": "string"
}{- "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": [
- {
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "email": "string",
- "name": "string",
- "added_at": "2019-08-24T14:15:22Z"
}
]
}Add a member of the organization to the group.
| group_id required | string <uuid> (Group Id) |
| user_id required | string <uuid> (User Id) |
{- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5"
}{- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "email": "string",
- "name": "string",
- "added_at": "2019-08-24T14:15:22Z"
}{- "runtime": {
- "app_base_url": "string",
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0
}, - "security": {
- "cors_allow_origins": "string",
- "session_cookie_name": "string",
- "session_ttl_hours": 0,
- "session_cookie_secure": true,
- "security_headers_enabled": true,
- "hsts_enabled": true,
- "hsts_max_age_seconds": 0,
- "content_security_policy": "string",
- "rate_limit_enabled": true,
- "rate_limit_login_per_minute": 0,
- "rate_limit_register_per_hour": 0,
- "rate_limit_trust_forwarded_for": true,
- "registration_mode": "open"
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_local_dir": "string",
- "photo_max_size_mb": 0,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_path": "string",
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 0
}, - "observability": {
- "request_id_header": "string",
- "log_level": "string",
- "log_json": true,
- "prometheus_metrics_enabled": true,
- "otel_exporter_otlp_endpoint": "string",
- "otel_service_name": "string"
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 0,
- "smtp_username": "string",
- "smtp_password_configured": true,
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key_configured": true,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string",
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_api_key_configured": true,
- "search_embedding_dimensions": 0,
- "search_embedding_base_url": "string"
}, - "system": {
- "debug": true,
- "database_url_configured": true,
- "sync_database_url_configured": true,
- "rabbitmq_url_configured": true,
- "redis_url_configured": true,
- "encryption_key_configured": true,
- "openai_api_key_configured": true,
- "alembic_revision": "string",
- "alembic_head_revision": "string",
- "alembic_up_to_date": true
}, - "overridden_fields": [
- "string"
], - "sources": {
- "property1": "env",
- "property2": "env"
}
}RuntimeSettingsUpdate (object) or null | |
SecuritySettingsUpdate (object) or null | |
StorageSettingsUpdate (object) or null | |
ObservabilitySettingsUpdate (object) or null | |
EmailSettingsUpdate (object) or null | |
AiSettingsUpdate (object) or null |
{- "runtime": {
- "app_base_url": "string",
- "scan_row_limit_default": 1,
- "metrics_row_limit_default": 1
}, - "security": {
- "cors_allow_origins": "string",
- "session_cookie_name": "string",
- "session_ttl_hours": 1,
- "session_cookie_secure": true,
- "security_headers_enabled": true,
- "hsts_enabled": true,
- "hsts_max_age_seconds": 0,
- "content_security_policy": "string",
- "rate_limit_enabled": true,
- "rate_limit_login_per_minute": 0,
- "rate_limit_register_per_hour": 0,
- "rate_limit_trust_forwarded_for": true,
- "registration_mode": "open"
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_local_dir": "string",
- "photo_max_size_mb": 1,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_path": "string",
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 1
}, - "observability": {
- "request_id_header": "string",
- "log_level": "CRITICAL",
- "log_json": true,
- "prometheus_metrics_enabled": true,
- "otel_exporter_otlp_endpoint": "string",
- "otel_service_name": "string"
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 1,
- "smtp_username": "string",
- "smtp_password": "string",
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key": "string",
- "ai_timeout_seconds": 1,
- "ai_max_output_tokens": 1,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string",
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_api_key": "string"
}
}{- "runtime": {
- "app_base_url": "string",
- "scan_row_limit_default": 0,
- "metrics_row_limit_default": 0
}, - "security": {
- "cors_allow_origins": "string",
- "session_cookie_name": "string",
- "session_ttl_hours": 0,
- "session_cookie_secure": true,
- "security_headers_enabled": true,
- "hsts_enabled": true,
- "hsts_max_age_seconds": 0,
- "content_security_policy": "string",
- "rate_limit_enabled": true,
- "rate_limit_login_per_minute": 0,
- "rate_limit_register_per_hour": 0,
- "rate_limit_trust_forwarded_for": true,
- "registration_mode": "open"
}, - "storage": {
- "photo_storage_backend": "string",
- "photo_local_dir": "string",
- "photo_max_size_mb": 0,
- "photo_allowed_mime": "string",
- "gcs_photo_bucket": "string",
- "gcs_photo_credentials_path": "string",
- "gcs_photo_public": true,
- "gcs_photo_signed_url_ttl_seconds": 0
}, - "observability": {
- "request_id_header": "string",
- "log_level": "string",
- "log_json": true,
- "prometheus_metrics_enabled": true,
- "otel_exporter_otlp_endpoint": "string",
- "otel_service_name": "string"
}, - "email": {
- "smtp_host": "string",
- "smtp_port": 0,
- "smtp_username": "string",
- "smtp_password_configured": true,
- "smtp_security": "none",
- "smtp_from_address": "string"
}, - "ai": {
- "ai_enabled": true,
- "ai_base_url": "string",
- "ai_model": "string",
- "ai_api_key_configured": true,
- "ai_timeout_seconds": 0,
- "ai_max_output_tokens": 0,
- "describe_system_prompt": "string",
- "ask_system_prompt": "string",
- "alert_explanation_system_prompt": "string",
- "search_embeddings_enabled": true,
- "search_embedding_provider": "string",
- "search_embedding_model": "string",
- "search_embedding_api_key_configured": true,
- "search_embedding_dimensions": 0,
- "search_embedding_base_url": "string"
}, - "system": {
- "debug": true,
- "database_url_configured": true,
- "sync_database_url_configured": true,
- "rabbitmq_url_configured": true,
- "redis_url_configured": true,
- "encryption_key_configured": true,
- "openai_api_key_configured": true,
- "alembic_revision": "string",
- "alembic_head_revision": "string",
- "alembic_up_to_date": true
}, - "overridden_fields": [
- "string"
], - "sources": {
- "property1": "env",
- "property2": "env"
}
}Probe the operator's AI provider (what organizations inherit).
| prompt | string (Prompt) [ 1 .. 500 ] characters Default: "Reply with the word ok if the LLM connection works." |
{- "prompt": "Reply with the word ok if the LLM connection works."
}{- "ok": true,
- "message": "string"
}Send one probe through the operator's relay: the one account mail uses.
Recipient (string) or Recipient (null) (Recipient) | |
Any of string <email> (Recipient) | |
{- "recipient": "user@example.com"
}{- "ok": true,
- "message": "string"
}The opt-in usage ping: whether it is sent, where to, and exactly what it last held.
{- "enabled": true,
- "reason": "string",
- "endpoint": "string",
- "instance_id": "string",
- "last_attempt_at": "string",
- "last_delivered": true,
- "last_payload": { }
}