Observability API¶
REST endpoints for reading Observability listings and measurements, and for toggling Volume Tracking and Freshness Tracking on containers.
- Base URL:
https://<your-deployment>/api - Authentication: Bearer token in the
Authorizationheader. See Personal Access Tokens for how to obtain one.
Complete API Reference
The full interactive OpenAPI schema is served at /api/docs and stays in sync with your deployment. Use this page for the Observability-specific endpoints, and /api/docs for the complete, current reference.
Permissions
- Listing endpoints require a signed-in workspace user with at least a Member role. Team-permission gating on the underlying datastore still applies to the returned rows.
- Modifying checks (thresholds, Maximum Age) requires the Author team permission on the datastore.
- Toggling Volume or Freshness Tracking requires the Editor team permission on the datastore of every container in the request.
Endpoints at a glance¶
| Method | Endpoint | Purpose |
|---|---|---|
GET |
/observability |
List Measures cards (Volumetric + Freshness per container) with filters, sort, timeframe, and report date. |
GET |
/quality-checks/measurements |
List Metric checks with their most recent measurements. |
PATCH |
/containers/volumetric-tracking |
Bulk update Volume Tracking and Freshness Tracking flags on containers. |
PUT |
/quality-checks/{id} |
Update thresholds, Maximum Age, or other properties on a specific check. |
List Measures¶
Endpoint: GET /observability
Permission: Any authenticated workspace user. Datastore-level team permissions gate the returned rows.
Returns a paginated list of container-observability rows for the Measures tab. Each row includes the container identity, its active anomaly count, its active-check summary, and its recent daily measurements.
Common query parameters:
| Parameter | Type | Description |
|---|---|---|
datastore |
integer | Filter to a single datastore. |
container |
integer | Filter to a single container. |
search |
string | Match container name or identifier. |
tag |
string[] | Filter by one or more tag names. |
rule_type |
string | volumetric or freshness. |
report_date |
date | Anchor the timeframe to end on this date (YYYY-MM-DD). Send it on every request. When omitted, the window can end on an earlier day instead of today. |
timeframe |
string | week, month, quarter, or year. |
filters |
string (JSON) |
Narrows the list by one or more filters, written as a JSON object. See Filtering Lists. |
sort_name |
string | asc or desc. |
sort_container_type |
string | asc or desc. |
sort_created |
string | asc or desc. |
sort_observability_active_anomalies |
string | asc or desc. |
sort_observability_active_checks |
string | asc or desc. |
sort_last_scanned |
string | asc or desc. |
List Measures rows for a datastore, sorted by anomalies
Filtering Lists¶
GET /api/observability and GET /api/quality-checks/measurements accept a filters parameter: a JSON object with one entry per filter, saying how that filter's values should match.
curl -G "https://your-instance.qualytics.io/api/observability" \
--data-urlencode 'filters={"tag":{"not_in":["PII"]}}' \
-H "Authorization: Bearer YOUR_TOKEN"
This returns the tables and files that aren't tagged PII.
| Key | Returns |
|---|---|
in |
The items that match at least one of the values. |
not_in |
The items that match none of the values. |
all_of |
The items that match every value, on filters an item can have several of, such as tags. |
empty |
The items with no value (true) or at least one (false), on filters an item can lack. |
- Different filters combine with AND, and so do keys on the same filter.
emptycan't be combined with other keys on the same filter.- A filter sent both as its own parameter and inside
filtersreturns a422. Put all of that filter's conditions infilters. in,not_inandall_ofeach take between 1 and 20 values.- A filter or key the endpoint doesn't accept returns a
422that names it. The API docs list what each endpoint accepts.
List Metric measurements¶
Endpoint: GET /quality-checks/measurements
Permission: Any authenticated workspace user. Datastore-level team permissions gate the returned rows.
Returns Metric checks with their most recent measurements (up to the last 11 per check).
Common query parameters:
| Parameter | Type | Description |
|---|---|---|
id |
integer[] | Filter to a specific check id. |
template |
integer[] | Filter to checks derived from a specific template. |
datastore |
integer | Filter to a single datastore. |
container |
integer | Filter to a single container. |
field |
string[] | Filter by one or more field identifiers. |
tag |
string[] | Filter by one or more tag names. |
search |
string | Match description or identifier. |
filters |
string (JSON) |
Narrows the list by one or more filters, written as a JSON object. See Filtering Lists. |
sort_id |
string | asc or desc. |
sort_favorite |
string | asc or desc. |
sort_created |
string | asc or desc. |
sort_active_anomalies |
string | asc or desc. |
List Metric checks for a container, newest first
Toggle Volume / Freshness Tracking¶
Endpoint: PATCH /containers/volumetric-tracking
Permission: Editor team permission on the datastore of every container in the request. The whole request is rejected when any container is missing or the caller lacks Editor on it, and nothing changes.
Bulk-updates the Volume Tracking and Freshness Tracking flags on one or more containers. This is the endpoint the Observability Settings modal calls.
The request body is a JSON array with one object per container. Each object takes these fields:
| Field | Type | Required | Description |
|---|---|---|---|
id |
integer | Yes | Id of the container to update. |
volumetric_tracking_enabled |
boolean | Yes | Toggle Volume Tracking. |
freshness_tracking_enabled |
boolean | Yes | Toggle Freshness Tracking. |
automate_volumetric_checks |
boolean | No | Toggle Create AI Volumetric checks. |
automate_freshness_checks |
boolean | No | Toggle Create AI Freshness checks. |
Turning tracking off cascades: the matching automation flag is also cleared server-side.
Enable Volume + Freshness tracking on multiple containers
curl -X PATCH 'https://<your-deployment>/api/containers/volumetric-tracking' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '[
{
"id": 123,
"volumetric_tracking_enabled": true,
"freshness_tracking_enabled": true,
"automate_volumetric_checks": true,
"automate_freshness_checks": false
},
{
"id": 124,
"volumetric_tracking_enabled": true,
"freshness_tracking_enabled": true,
"automate_volumetric_checks": true,
"automate_freshness_checks": false
}
]'
Update thresholds or Maximum Age¶
Endpoint: PUT /quality-checks/{id}
Permission: Author team permission on the datastore (Editor on the datastore always allowed).
The inline Edit Threshold and Edit Maximum Age actions on the Observability chart both call this endpoint. The PUT endpoint requires description and the full properties object, which replaces the stored one. Include every property the check uses, not only the one you change. Metric checks also need fields.
- For Volumetric and Metric threshold edits, set
properties.minandproperties.max. Copy the other properties, such ascomparisonandwindow_size, from the existing check (read it withGET /api/quality-checks/{id}). The comparison cannot change once the check has been asserted, and a differentwindow_sizewould also change the measurement period. - For Freshness Maximum Age edits, set
properties.value(milliseconds).
Update Volumetric thresholds
curl -X PUT 'https://<your-deployment>/api/quality-checks/6789' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"description": "Daily row count stays between 25,000 and 70,000",
"properties": {
"comparison": "Absolute Value",
"window_size": 1,
"min": 25000,
"max": 70000
}
}'
Update Maximum Age to 3 hours
Error responses¶
| Status | Meaning |
|---|---|
| 400 | Malformed request payload, invalid sort direction, or invalid enum value on rule_type / timeframe. |
| 401 | Missing or expired bearer token. |
| 403 | Authenticated but the requesting user lacks the required team permission on the datastore. |
| 404 | Referenced datastore, container, or check does not exist or is not visible to the requesting user. |
| 422 | Body validation failure (for example, description missing, min greater than max, or unsupported unit value). |