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.
List reporting entities
Returns every reporting entity configured for the client.
Request
curl https://platform.aleta.io/api/v2/clients/{client_id}/reporting-entities \
-H "Authorization: Bearer {access_token}"
Retrieve a reporting entity
Single-record lookup.
Request
curl https://platform.aleta.io/api/v2/reporting-entities/{id} \
-H "Authorization: Bearer {access_token}"
Create a reporting entity
Adds a reporting entity under the client. The only required attribute is name.
Request
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" }
}
}'
Update a reporting entity
Patches the display name.
Request
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 a reporting entity
Removes the reporting entity. Allowed only when no portfolios reference it and no users still have read access.
Request
curl -X DELETE https://platform.aleta.io/api/v2/reporting-entities/{id} \
-H "Authorization: Bearer {access_token}"
List portfolios
Returns every portfolio inside the reporting entity.
Request
curl https://platform.aleta.io/api/v2/reporting-entities/{id}/portfolios \
-H "Authorization: Bearer {access_token}"
Retrieve a portfolio
Single-portfolio lookup.
Request
curl https://platform.aleta.io/api/v2/portfolios/{id} \
-H "Authorization: Bearer {access_token}"
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
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}" }] }
}
}
}'
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
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 a portfolio
Removes the portfolio. Underlying accounts and depositories are unaffected.
Request
curl -X DELETE https://platform.aleta.io/api/v2/portfolios/{id} \
-H "Authorization: Bearer {access_token}"
Related
- 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.