API reference / Operations by tag
data-locker
Data locker: scheduled Parquet exports, partitions, backfills and BI connectors.
15 operations. Base URL https://api.metrixed.com/v1; see authentication, errors and pagination.
Operations
| Method | Path | Summary |
|---|---|---|
| GET | /connectors | List BI connectors (BigQuery, Snowflake) |
| POST | /connectors | Create a connector; config + credentials must pass the offline dry-run |
| GET | /connectors/{id} | Get connector |
| PATCH | /connectors/{id} | Update connector (credentials optional: omitted keeps the stored secret) |
| DELETE | /connectors/{id} | Delete connector and its sealed credentials |
| POST | /connectors/{id}/run | Queue a load of locker partitions the connector has not loaded yet |
| GET | /connectors/{id}/runs | Connector run history |
| POST | /connectors/{id}/test | Credentials dry-run (offline checks); live=true also queues an authentication probe |
| POST | /data-locker/backfill | Queue a backfill of a dataset over a date range (max 366 days; one in flight per dataset) |
| GET | /data-locker/backfills | Backfill history and progress |
| GET | /data-locker/config | Data locker storage + schedule config (secret write-only) |
| PUT | /data-locker/config | Update locker config; omitted fields keep their value, secret_key is required the first time |
| GET | /data-locker/manifest | Manifest of one dataset (files, row counts, schema + evolution version) |
| GET | /data-locker/partitions | Partition ledger (filters: dataset, status, from, to) |
| GET | /data-locker/status | Per-dataset partition counts, rows, bytes, failures and backfill states |
GET /connectors
List BI connectors (BigQuery, Snowflake)
Operation getConnectors. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json DataConnectorList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/connectors?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{
"kind": "bigquery",
"name": ""
}
],
"page": {}
}
POST /connectors
Create a connector; config + credentials must pass the offline dry-run
Operation postConnectors. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): DataConnector
| Field | Type | Flags | Description |
|---|---|---|---|
id | string | read-only | |
kind | enum: bigquery, snowflake | required | |
name | string | required | |
config | object (free-form) | bigquery: project, dataset, location, table_prefix | snowflake: account, user, role, warehouse, database, schema, stage, storage_integration, table_prefix | |
credentials | string | BigQuery: service-account JSON. Snowflake: password or PEM private key. Write-only; sealed at rest. | |
has_credentials | boolean | read-only | |
datasets | array of enum: clicks, conversions, events, postback_logs, postback_in_logs, agg_hourly | ||
status | enum: active, paused | ||
last_run_at | string (date-time) | read-only | |
last_status | string | read-only | |
last_error | string | read-only | |
loaded_through | string (date-time) | read-only | |
version | integer | read-only | |
created_at | string (date-time) | read-only | |
updated_at | string (date-time) | read-only |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json DataConnector |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/connectors' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"kind":"bigquery","name":""}'
Example 201 response:
{
"kind": "bigquery",
"name": ""
}
GET /connectors/{id}
Get connector
Operation getConnectorsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json DataConnector |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/connectors/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"kind": "bigquery",
"name": ""
}
PATCH /connectors/{id}
Update connector (credentials optional: omitted keeps the stored secret)
Operation patchConnectorsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): DataConnector
| Field | Type | Flags | Description |
|---|---|---|---|
id | string | read-only | |
kind | enum: bigquery, snowflake | required | |
name | string | required | |
config | object (free-form) | bigquery: project, dataset, location, table_prefix | snowflake: account, user, role, warehouse, database, schema, stage, storage_integration, table_prefix | |
credentials | string | BigQuery: service-account JSON. Snowflake: password or PEM private key. Write-only; sealed at rest. | |
has_credentials | boolean | read-only | |
datasets | array of enum: clicks, conversions, events, postback_logs, postback_in_logs, agg_hourly | ||
status | enum: active, paused | ||
last_run_at | string (date-time) | read-only | |
last_status | string | read-only | |
last_error | string | read-only | |
loaded_through | string (date-time) | read-only | |
version | integer | read-only | |
created_at | string (date-time) | read-only | |
updated_at | string (date-time) | read-only |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json DataConnector |
| default | error | application/json Error |
curl -X PATCH 'https://api.metrixed.com/v1/connectors/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"kind":"bigquery","name":""}'
Example 200 response:
{
"kind": "bigquery",
"name": ""
}
DELETE /connectors/{id}
Delete connector and its sealed credentials
Operation deleteConnectorsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/connectors/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
POST /connectors/{id}/run
Queue a load of locker partitions the connector has not loaded yet
Operation postConnectorsIdRun. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 202 | ok | application/json DataConnectorRun |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/connectors/<id>/run' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 202 response:
{
"id": "",
"connector_id": "",
"kind": "load",
"status": "queued"
}
GET /connectors/{id}/runs
Connector run history
Operation getConnectorsIdRuns. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | |
page | query | integer | no | |
page_size | query | integer | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json DataConnectorRunList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/connectors/<id>/runs?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
POST /connectors/{id}/test
Credentials dry-run (offline checks); live=true also queues an authentication probe
Operation postConnectorsIdTest. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): DataConnectorTestRequest
| Field | Type | Flags | Description |
|---|---|---|---|
live | boolean | also queue a real authentication probe executed by the worker |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json DataConnectorTestResult |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/connectors/<id>/test' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"live":false}'
Example 200 response:
{
"report": {},
"run": {}
}
POST /data-locker/backfill
Queue a backfill of a dataset over a date range (max 366 days; one in flight per dataset)
Operation postDataLockerBackfill. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): DataLockerBackfillRequest
| Field | Type | Flags | Description |
|---|---|---|---|
dataset | enum: clicks, conversions, events, postback_logs, postback_in_logs, agg_hourly | required | |
from | string | required | RFC3339 or YYYY-MM-DD (UTC) |
to | string | required | |
grain | enum: hour, day |
| Status | Description | Body |
|---|---|---|
| 202 | ok | application/json DataLockerBackfill |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/data-locker/backfill' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"dataset":"clicks","from":"","to":""}'
Example 202 response:
{
"id": "",
"dataset": "",
"from_ts": "1970-01-01T00:00:00.000Z",
"to_ts": "1970-01-01T00:00:00.000Z"
}
GET /data-locker/backfills
Backfill history and progress
Operation getDataLockerBackfills. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json DataLockerBackfillList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/data-locker/backfills?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
GET /data-locker/config
Data locker storage + schedule config (secret write-only)
Operation getDataLockerConfig. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json DataLockerConfig |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/data-locker/config' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"enabled": false,
"provider": "s3",
"endpoint": "",
"region": ""
}
PUT /data-locker/config
Update locker config; omitted fields keep their value, secret_key is required the first time
Operation putDataLockerConfig. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): DataLockerConfig
| Field | Type | Flags | Description |
|---|---|---|---|
enabled | boolean | ||
provider | enum: s3, gcs, minio | ||
endpoint | string | host[:port]; GCS uses storage.googleapis.com (S3 interop, HMAC keys) | |
region | string | ||
bucket | string | ||
prefix | string | default: tenant id | |
use_ssl | boolean | ||
path_style | boolean | ||
access_key | string | ||
secret_key | string | write-only; sealed at rest | |
secret_set | boolean | read-only | |
datasets | array of enum: clicks, conversions, events, postback_logs, postback_in_logs, agg_hourly | ||
grains | object (free-form) | dataset -> hour|day override | |
retention_days | integer | 0 = keep forever | |
lag_minutes | integer | ||
configured | boolean | read-only | |
last_run_at | string (date-time) | read-only | |
last_error | string | read-only | |
available_datasets | array of object (free-form) | read-only |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json DataLockerConfig |
| default | error | application/json Error |
curl -X PUT 'https://api.metrixed.com/v1/data-locker/config' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"enabled":false,"provider":"s3","endpoint":"","region":""}'
Example 200 response:
{
"enabled": false,
"provider": "s3",
"endpoint": "",
"region": ""
}
GET /data-locker/manifest
Manifest of one dataset (files, row counts, schema + evolution version)
Operation getDataLockerManifest. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
dataset | query | enum: clicks, conversions, events, postback_logs, postback_in_logs, agg_hourly | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json DataLockerManifest |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/data-locker/manifest' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"manifest": {},
"manifest_key": "",
"bucket": ""
}
GET /data-locker/partitions
Partition ledger (filters: dataset, status, from, to)
Operation getDataLockerPartitions. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
dataset | query | string | no | |
status | query | string | no | |
from | query | string | no | |
to | query | string | no | |
page | query | integer | no | |
page_size | query | integer | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json DataLockerPartitionList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/data-locker/partitions?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
GET /data-locker/status
Per-dataset partition counts, rows, bytes, failures and backfill states
Operation getDataLockerStatus. Auth: API key (Bearer) or session cookie.
curl 'https://api.metrixed.com/v1/data-locker/status' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}