View as Markdown

Operations status

Your tenant's operations in one call: how far the data is released, the open reconciliation breaks and import issues per kind, each bank's last import, and the running and failed jobs. Reads need ingestion:read and the operations module on read in one of your groups (an admin always has it); without it the route answers 403. The jobs behind the counts are listed on this page too.

Every number counts what the matching list shows you: data status, reconciliation breaks, import issues, imports and jobs. A user with a grant on one custody account counts only what those lists show for that grant.

Data model

data_ready_throughdate or null

The oldest data_ready_through over the clients you can see that have one (/v1/data-status). null when nothing is released yet.

open_breaks_by_kindobject

Open reconciliation breaks per kind (/v1/reconciliation-breaks with status open), for example {"quantity_mismatch": 3}. A kind with no open break is left out.

open_import_issues_by_kindobject

Open import issues per kind (/v1/import-issues with status open), in the kinds that list uses. A kind with no open issue is left out.

last_import_at_by_custodianobject

Per custodian_id, the time of its newest import you can see (/v1/imports), as an RFC 3339 timestamp (UTC, with microseconds). A file is counted once, as in the list.

jobsobject

running: the jobs you can see that run now. failed_24h: the jobs you can see that failed in the last 24 hours.


GET/v1/operations/status

Get the operations status

Returns the counts above in one object. It takes no parameters.

Request
GET/v1/operations/status
curl https://api.aleta.ai/v1/operations/status \
  -H "Authorization: Bearer {access_token}"
Response
{
  "data_ready_through": "2026-10-17",
  "open_breaks_by_kind": {
    "quantity_mismatch": 2,
    "value_mismatch": 1
  },
  "open_import_issues_by_kind": {
    "invalid_holding": 4
  },
  "last_import_at_by_custodian": {
    "019dfe9f-1a2b-7c3d-8e4f-5a6b7c8d9e0f": "2026-10-20T05:12:03.000000Z"
  },
  "jobs": {
    "running": 0,
    "failed_24h": 1
  }
}

Jobs

A job is one run of an automation, such as a report sequence or a report you asked for with POST /v1/reports. You see the runs of automations you own or whose client you can see; an admin sees all of them. Aleta's nightly processing is not listed. Reads need platform:read and the operations module on read in one of your groups (an admin always has it).

id, automation_idstring

The job and the automation it ran for. UUIDs.

kind, namestring

The automation's kind (for example report_sequence) and name.

triggerstring

scheduled or manual.

statusstring

queued, running, succeeded, failed, skipped or cancelled.

attemptinteger

The attempt number.

scheduled_for, started_at, finished_at, created_attimestamp or null

RFC 3339 timestamps (UTC, with microseconds). started_at and finished_at are null until the job starts or ends.

duration_msinteger or null

How long the job ran.

errorstring or null

Why the job failed or was cancelled.

cancellableboolean

true while the job is queued.


GET/v1/jobs

List jobs

Returns the jobs you can see, newest first (created_at, then id), as a cursor list. Filter with status (one of the statuses above; another value is a 400) and kind. limit defaults to 100, at most 1000; a cursor that does not decode, or an unknown parameter, is a 400.

Request
GET/v1/jobs
curl "https://api.aleta.ai/v1/jobs?status=failed" \
  -H "Authorization: Bearer {access_token}"

GET/v1/jobs/{id}

Retrieve a job

Returns one job. A job you cannot see, or an id that is not a UUID, is a 404.

Request
GET/v1/jobs/{id}
curl https://api.aleta.ai/v1/jobs/019f95f0-2d40-7b58-8f6e-9a3c1d7e5b03 \
  -H "Authorization: Bearer {access_token}"

POST/v1/jobs/{id}/cancel

Cancel a job

Cancels a queued job, so it never runs, and answers 200 with the job in status cancelled. A job that is cancelled already answers 200 as it is. A running job cannot be stopped, and a job that has ended cannot be cancelled: both are a 409, as is a job that started before the cancel took effect. Needs platform:write; an admin or Aleta cancels any job they see, and an advisor in no group only the jobs of automations they own (403 otherwise). A job you cannot see is a 404. No body. Takes ?dry_run=true and Idempotency-Key; the cancel is logged in the audit trail.

Request
POST/v1/jobs/{id}/cancel
curl -X POST https://api.aleta.ai/v1/jobs/019f95f0-2d40-7b58-8f6e-9a3c1d7e5b03/cancel \
  -H "Authorization: Bearer {access_token}" \
  -H "Idempotency-Key: {idempotency_key}"
  • Data status — the released day per client, lens and account.
  • Reports — a report run is a job.