View as Markdown

Reporting entities

Reporting entities are how a client wants to see their wealth, as opposed to how it's legally structured. A family trust may legally hold a dozen accounts across five custodians, but the family looks at it as three buckets — liquid, alternatives, operating businesses. That projection is a reporting entity, and it's the level holdings, transactions, and performance are computed against. Inside each reporting entity, portfolios subdivide the bucket further by grouping accounts and depositories under a named label.

Why a separate structure?

Legal structure exists for tax reasons, succession reasons, and historical reasons — none of which map cleanly to how a family reviews their quarterly returns. Rather than force the reporting view onto the legal tree (and break it every time a new vehicle is set up), Aleta keeps them separate and lets clients compose portfolios freely across the legal tree.

Every endpoint in the Data group (transactions, performance, limits) operates against reporting entities.

Data model

Reporting entity

JSON:API resource type: reporting-entity.

  • Name
    id
    Type
    string
    Description

    Stable identifier, scoped to the parent client.

  • Name
    name
    Type
    string
    Description

    Display label shown in dashboards and reports.

Relationships

  • Name
    client
    Type
    client
    Description

    The client this reporting entity belongs to.

  • Name
    portfolios
    Type
    array of portfolio
    Description

    Sub-buckets that subdivide the reporting entity.

Portfolio

JSON:API resource type: portfolio. A portfolio is a named container inside a reporting entity that groups specific accounts and depositories — typically one per asset class or strategy.

  • Name
    id
    Type
    string
    Description

    Stable identifier.

  • Name
    name
    Type
    string
    Description

    Display label. Examples: "Liquid — Equities," "Private Markets — 2024 vintage," "Operating businesses."

Relationships

  • Name
    reportingEntity
    Type
    reporting-entity
    Description

    The reporting entity this portfolio subdivides.

  • Name
    accounts
    Type
    array of account
    Description

    Accounts that roll up into this portfolio. An account can belong to multiple portfolios.

  • Name
    depositories
    Type
    array of depository
    Description

    Depositories whose holdings roll up into this portfolio.


GET/api/v2/clients/{id}/reporting-entities

List reporting entities

Returns every reporting entity configured for the client.

Request

GET/api/v2/clients/{id}/reporting-entities
curl https://platform.aleta.io/api/v2/clients/{client_id}/reporting-entities \
  -H "Authorization: Bearer {access_token}"

GET/api/v2/reporting-entities/{id}

Retrieve a reporting entity

Single-record lookup.

Request

GET/api/v2/reporting-entities/{id}
curl https://platform.aleta.io/api/v2/reporting-entities/{id} \
  -H "Authorization: Bearer {access_token}"

POST/api/v2/clients/{id}/reporting-entities

Create a reporting entity

Adds a reporting entity under the client. The only required attribute is name.

Request

POST/api/v2/clients/{id}/reporting-entities
curl -X POST https://platform.aleta.io/api/v2/clients/{client_id}/reporting-entities \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/vnd.api+json" \
  -d '{
    "data": {
      "type": "reporting-entity",
      "attributes": { "name": "Liquid wealth" }
    }
  }'

PATCH/api/v2/reporting-entities/{id}

Update a reporting entity

Patches the display name.

Request

PATCH/api/v2/reporting-entities/{id}
curl -X PATCH https://platform.aleta.io/api/v2/reporting-entities/{id} \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/vnd.api+json" \
  -d '{
    "data": {
      "type": "reporting-entity",
      "id": "{id}",
      "attributes": { "name": "Liquid wealth (renamed)" }
    }
  }'

DELETE/api/v2/reporting-entities/{id}

Delete a reporting entity

Removes the reporting entity. Allowed only when no portfolios reference it and no users still have read access.

Request

DELETE/api/v2/reporting-entities/{id}
curl -X DELETE https://platform.aleta.io/api/v2/reporting-entities/{id} \
  -H "Authorization: Bearer {access_token}"

GET/api/v2/reporting-entities/{id}/portfolios

List portfolios

Returns every portfolio inside the reporting entity.

Request

GET/api/v2/reporting-entities/{id}/portfolios
curl https://platform.aleta.io/api/v2/reporting-entities/{id}/portfolios \
  -H "Authorization: Bearer {access_token}"

GET/api/v2/portfolios/{id}

Retrieve a portfolio

Single-portfolio lookup.

Request

GET/api/v2/portfolios/{id}
curl https://platform.aleta.io/api/v2/portfolios/{id} \
  -H "Authorization: Bearer {access_token}"

POST/api/v2/reporting-entities/{id}/portfolios

Create a portfolio

Adds a portfolio under the reporting entity. Pass the accounts and depositories you want to include in the relationship arrays at creation, or leave them empty and add them with a PATCH later.

Request

POST/api/v2/reporting-entities/{id}/portfolios
curl -X POST https://platform.aleta.io/api/v2/reporting-entities/{id}/portfolios \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/vnd.api+json" \
  -d '{
    "data": {
      "type": "portfolio",
      "attributes": { "name": "Liquid — Equities" },
      "relationships": {
        "accounts": { "data": [{ "type": "account", "id": "{account_id}" }] },
        "depositories": { "data": [{ "type": "depository", "id": "{depository_id}" }] }
      }
    }
  }'

PATCH/api/v2/portfolios/{id}

Update a portfolio

Patches the name and replaces the membership of accounts and depositories. Replacing relationship arrays fully overrides the previous set — pass the entire desired list.

Request

PATCH/api/v2/portfolios/{id}
curl -X PATCH https://platform.aleta.io/api/v2/portfolios/{id} \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/vnd.api+json" \
  -d '{
    "data": {
      "type": "portfolio",
      "id": "{id}",
      "relationships": {
        "accounts": {
          "data": [
            { "type": "account", "id": "{a1}" },
            { "type": "account", "id": "{a2}" }
          ]
        }
      }
    }
  }'

DELETE/api/v2/portfolios/{id}

Delete a portfolio

Removes the portfolio. Underlying accounts and depositories are unaffected.

Request

DELETE/api/v2/portfolios/{id}
curl -X DELETE https://platform.aleta.io/api/v2/portfolios/{id} \
  -H "Authorization: Bearer {access_token}"
  • Legal entities — the underlying ownership layer that reporting entities project over.
  • Performance — time-weighted returns per reporting entity.
  • Limits — investment-policy compliance evaluated against reporting entities.