Addepar Attributes
Attributes are the data model layer in Addepar. They describe entities, positions, and groups with both qualitative metadata (asset class, sector, country) and quantitative measures (time-weighted return, value, yield). Every portfolio query, every report, and every filter operates on attributes. Understanding how attributes work determines whether your integration can read, write, and analyze portfolio data correctly.
How attributes connect the system
Attributes serve three roles simultaneously:
- Descriptive metadata on resources: when you GET an entity, its attributes tell you what it is (asset class, model type, currency, custom classifications).
- Query dimensions in portfolio analytics: when you POST a portfolio query, you specify attributes as columns (what to calculate) and groupings (how to slice the results).
- Filter criteria for scoping: when you filter a portfolio view, you use attributes to include or exclude holdings.
This means the same attribute (e.g., asset_class) appears in three contexts: on the entity resource itself, as a grouping key in portfolio queries, and as a filter parameter in views. The Attributes API is how you discover which attributes exist and which roles they can fill.
Attribute categories
| Category | Naming pattern | Example | When to use |
|---|---|---|---|
| Standard | Lowercase, underscore-separated | asset_class, time_weighted_return | Built-in attributes provided by Addepar (300+). Use for industry-standard classifications and calculations. |
| Custom | _custom_{name}_{id} | _custom_gic_taxonomy_637951 | Firm-defined attributes for proprietary classifications, internal identifiers, or calculations Addepar does not provide natively. |
| External ID | external_id_{type_key} | external_id_salesforce | Cross-system identifiers connecting Addepar entities/groups to records in external systems (CRM, custodian, order management). See External Identifiers. |
The _custom_ prefix and numeric ID suffix on custom attributes are not optional formatting. They are the canonical API field name. Discover the exact field name for any custom attribute in Firm Administration > Attributes > select attribute > API Field Name.
Attribute applicability (usage)
Each attribute declares where it can be used. The Attributes API returns a usage array for each attribute:
| Usage value | Meaning | Where it matters |
|---|---|---|
columns | Can be used as a column in Portfolio Query | Determines what calculations you can request |
groupings | Can be used as a grouping in Portfolio Query | Determines how results can be sliced |
filters | Can be used as a filter criterion | Determines how views and queries can be scoped |
entity_attributes | Can be applied to entities as core resource data | Appears on entity GET responses |
entity_custom_attributes | Can be applied to entities as additional metadata | Appears under the entity's attributes object |
position_custom_attributes | Can be applied to positions | Appears under the position's attributes object |
If you attempt to use an attribute in a context it does not support (e.g., using a position-only attribute as a portfolio query grouping), the API returns 400 Bad Request.
Output types
Attributes carry typed values. The type determines how to read and write the attribute value in API payloads:
| Output type | JSON representation | Example |
|---|---|---|
| Word | String | "Equities" |
| Number | Number | 100 |
| Percentage | Decimal (0.05 = 5%) | 0.05 |
| Date | String in YYYY-MM-DD | "2017-03-30" |
| Yes/No | Boolean | true |
| Currency | String (ISO 4217 code) | "USD" |
| Money Value | Object with currency and value | {"currency": "USD", "value": 167.23} |
Money Value is the only composite type. Both currency and value must be present. Passing one without the other returns a validation error.
Time-varying attributes
Some attributes change over time. An entity's sector allocation might shift from 100% Technology in 2020 to a 50/50 Technology/Large Cap split in 2023. Time-varying attributes model this through dated value arrays.
Each entry in a time-varying attribute has three fields:
| Field | Required | Meaning |
|---|---|---|
date | Yes | The date from which this value applies. null means "applies at all points in time" (the default value). |
value | Yes | The attribute value as of that date. |
weight | Yes | Decimal indicating proportion when multiple values share the same date. Must sum to 1.0 across same-date entries. |
Single value (constant over time):
"asset_class": [
{
"date": null,
"value": "Equity",
"weight": 1.0
}
]
Value that changes on a specific date:
"country": [
{
"date": "2015-01-01",
"value": "USA",
"weight": 1.0
},
{
"date": "2018-01-01",
"value": "Canada",
"weight": 1.0
}
]
Multiple weighted values on the same date (split allocation):
"sector": [
{
"date": "2018-01-01",
"value": "Technology",
"weight": 0.5
},
{
"date": "2018-01-01",
"value": "Large Cap",
"weight": 0.5
}
]
The weight field has real computational impact. In portfolio queries, weighted attributes distribute the position's value proportionally across each category. A position with asset_class split 60/40 between Equity and Fixed Income will report 60% of its value in the Equity group and 40% in Fixed Income.
Writing attributes to resources
Apply attributes using PATCH on the entity or position:
curl -X PATCH "https://{firm}.addepar.com/api/v1/entities/207" \
-H "Authorization: Basic {credentials}" \
-H "Addepar-Firm: 1" \
-H "Content-Type: application/vnd.api+json" \
-d '{
"data": {
"id": "207",
"type": "entities",
"attributes": {
"asset_class": "Equity",
"_custom_gic_taxonomy_637951": [
{"date": null, "value": "Emerging Market", "weight": 1.0}
]
}
}
}'
Standard attributes accept either a flat value (string, number) or a time-varying array. The API infers the format from the attribute's definition. Custom attributes always use the time-varying array format, even for a single constant value.
Permission requirement: Writing attributes requires the "Manage Attributes" permission in addition to standard API Access and entity-level Portfolio Access.
Discovering attributes
Two discovery paths:
Via API: GET /v1/attributes returns all attributes available to your firm with their output_type, usage array, display_name, and category. This endpoint is paginated. Use it to build dynamic attribute pickers or validate field names before writing.
Via application: Firm Administration > Data Configuration > Attributes. Select any attribute to see its API Field Name, output type, and applicability.
The arguments relationship on each attribute defines optional settings (e.g., time_point, adjusted) that modify how the attribute is calculated in portfolio queries. See Arguments for the full argument reference.
Date formatting
Display names for date-type attributes and certain entity fields follow your firm's configured date format (month-day-year or day-month-year). API field values always use YYYY-MM-DD regardless of firm configuration.
Related
- Attributes API - Discover available attributes, their usage, and arguments
- Arguments - Settings that modify attribute calculations in portfolio queries
- Portfolio Query - Use attributes as columns and groupings
- Entities - Apply attributes to entities via PATCH
- Positions - Apply attributes to positions via PATCH
- External Identifiers - Cross-system ID attributes
Updated 13 days ago