View as Markdown

Errors

Every v1 error is a problem document (RFC 7807, application/problem+json). Its type is this page with the error's code as the anchor, for example https://docs.aleta.ai/developers/api/v1/errors#in_use.


The problem document

JSON
{
  "type": "https://docs.aleta.ai/developers/api/v1/errors#in_use",
  "title": "Conflict",
  "status": 409,
  "code": "in_use",
  "detail": "Cash account 6b1d2f0a-3c4e-4f5a-8b7c-9d0e1f2a3b4c is used by transactions.",
  "next_action": {
    "next": "end_date",
    "method": "PATCH",
    "path": "/v1/cash-accounts/6b1d2f0a-3c4e-4f5a-8b7c-9d0e1f2a3b4c",
    "field": "valid_to"
  }
}

Match on code, never on detail: detail is for people and its wording can change. title is the HTTP reason phrase of status. Some codes add fields: next_action names the call to make instead (in_use, already_exists, aleta_owned, period_locked and most 409 codes; null when there is no other step), and period_locked adds locked, the accounts that are locked. A 429 and a 503 carry Retry-After. v2 and v3 keep their own error format.

Codes

codestatuswhen
bad_request400The request is malformed: a field is missing, has the wrong type or is out of range. detail names the field. Most lists also refuse a query parameter they do not know. A read of one row, a route that takes no query parameters (for example GET /v1/currencies, GET /v1/roles, GET /v1/users/me), and the lists GET /v1/invites, GET /v1/access-grants, GET /v1/price-hierarchies, GET /v1/exchange-rate-hierarchies and GET /v1/basic-data-hierarchies ignore unknown query parameters.
unauthorized401No bearer token, or the token is expired or not valid for v1.
forbidden403The key may not make this call, or may not read or write this row. When there is a way out, detail names it.
not_licensed403The data licence does not cover the series and you have no points of your own. See the data licence.
aleta_owned403The row is shared data owned by Aleta (owner: aleta), which only Aleta changes. Add your own row instead; next_action names the route when there is one.
not_found404No such path, or no such row for your tenant or for a client you see. A retired route answers the same.
conflict409The write conflicts with the stored state, for example a unique value another row already has. detail says which.
already_exists409A row with the same natural key exists. next_action names the call that changes it, when you may.
in_use409The resource has had an effect on figures, so it is not deleted. next_action names the call to make instead (archive, end_date, offboard, reverse, anonymize, pause, delete or ask_aleta).
legacy_managed409The row comes from the legacy platform, which still runs your data. It is read-only in v1 until your move to v1 is done.
period_locked409The write is dated on or before the closing date of an entity whose account it touches. locked lists the accounts; next_action points to the period lock.
rate_limited429Too many calls in a minute, or the key's daily write quota is spent. Retry-After gives the seconds to wait.
internal500An error on Aleta's side. Retry later; if it repeats, tell Aleta the time and the path.
not_implemented501The route exists but does not take this call.
bad_gateway502A service v1 forwards to did not answer. Retry later.
tenant_overloaded503Your tenant has too many calls running at once. Retry after Retry-After.
analytics_unavailable503Your figures are not ready to read yet. Retry after Retry-After.
service_unavailable503The service is briefly unavailable. Retry after Retry-After.

Codes of one rule

These codes name the rule a request or the stored state broke. The resource's page says when each is sent.

codestatuswhen
confirmation_required400A tenant closure without confirmed_by, or with a user who is not active Aleta staff.
invalid_rule400A lens rule's ref is not an id.
lens_needs_client400A lens at the top without client_id.
lens_needs_parent400show_as_portfolio on a lens at the top.
lens_needs_rules400A lens moves under a parent that does not hold its accounts, without rules.
lens_parent_client400A lens under a lens of another client.
ownership_cycle400An ownership would make an entity own itself.
ownership_over_100400An ownership would take the economic shares in an entity past 100 %.
reason_required400A tenant closure without reason.
too_many_rules400A lens with more rules than it takes.
admin_in_no_group409An admin added to a group: an admin sees everything and is in no group.
already_closed409The client, or the import issue, is already closed.
already_configured409The client already has a risk-rate config.
already_ended409The risk-rate config has already ended.
already_live409The client is live; its onboarding status can no longer change.
already_member409The user is already in the group.
already_open409The reconciliation break is open; only a resolved or waived break is reopened.
authority_closed409Files, consent, link or activate on a revoked or cancelled custodian authority.
checks_failed409A publish run's checks failed; send force with a reason to release anyway.
concurrent_change409Another write changed the custodian authority meanwhile. Retry.
consent_conflict409An all consent while a specific authority exists for the same entity and custodian.
consent_overlap409A specific consent of a number another authority already covers.
consent_required409A link before consent on a custodian authority that is not active.
duplicate_account409Another open cash or custody account at the custodian has the same number.
external_reference_taken409Another party has this external_reference_id.
flow_outdated409A custodian authority opened on an outdated auth flow.
invalid_status409Consent on a custodian authority that is not waiting for files or consent.
later_version409A later lot method version exists; switch from a date after it.
lens_cycle409A lens under itself or one of its sub-lenses.
locked409The client's structure lens, which is locked.
mixed_cluster409Linked cash and custody accounts released or run in different ways.
module_not_enabled409The tenant does not have the module.
name_taken409A group with that name exists.
no_currency409The write needs the asset's currency and the asset has none. next_action names the asset's PATCH.
not_available_yet409The transaction type is not available on your tenant.
not_consented409A link of a number the specific consent does not cover.
not_datable409A risk-rate config that cannot be dated.
not_retryable409The import issue cannot be taken in again; discard it.
nothing_staged409A release of a publish run with nothing staged.
ownership_overlap409The owner already owns the entity in that period.
owns_outside_client409A client closes while an entity under it owns an entity outside it.
read_only409Aleta's standard report definitions are read-only; copy one with copy_from.
release_unavailable409Releasing this kind of publish run by hand is not available.
reprocessing_unavailable409v1 cannot take this import issue in again; discard it.
revision_mismatch409The report definition changed since expected_revision; read it again.
revoke_in_progress409Aleta is finishing a revoke of the custodian authority.
standard_group409A standard group cannot be archived or renamed.
starts_after_close409A client closes before something under it starts.
unreadable_config409The client has a risk-rate config v1 cannot read; it is not overwritten.
currency_required422primary_currency: null: an entity always has one.
dated_versions_unavailable422Dated benchmark components are not available for your tenant.
effective_from_currency_only422effective_from on an entity change that is not a currency change.
effective_from_in_future422effective_from is after the last day v1 can apply.
effective_from_outside_config422effective_from is outside the risk-rate config's period.
effective_from_outside_versions422effective_from is outside the benchmark's versions.
empty_patch422A PATCH with no field to change.
file_too_large422The report file is too large to download through the API.
no_holding422The import issue carries no dated holding to store; discard it.
no_structure_access422The user sees none of the lens's accounts; give access first.
outside_entity_currency422The entity has no primary currency on that day.
unknown_holding_target422The holding names a custody account or asset your tenant does not have; discard the issue.
valid_to_in_future422valid_to is after the last day v1 can apply.