Profile attributes¶
Profile attributes define the shape of data that can be stored on a profile for your organization. They control attribute names, types, mutability, and how values are resolved when two profiles are merged.
Together, the set of profile attributes defined for your organization makes up the profile attribute schema.
Scopes¶
Profile attributes are organised into three scopes:
| Scope | Description |
|---|---|
identity_attributes |
Attributes sourced from the identity system (e.g. email, phone, name from Asgardeo claims) |
traits |
Behavioural or preference data managed by the application (e.g. language, segments) |
application_data |
Per-application attributes, scoped by application identifier |
Attribute fields¶
| Field | Required | Description |
|---|---|---|
attribute_name |
yes | Dot-notation path including scope prefix |
display_name |
no | Human-readable label |
value_type |
yes | One of the supported data types (see below) |
merge_strategy |
yes | How to resolve the value when two profiles are merged |
mutability |
yes | Read/write behaviour (see below) |
multi_valued |
no | If true, the attribute holds an array of the declared type |
canonical_values |
no | Enumerated allowed values (for string attributes) |
sub_attributes |
no | Child attributes when value_type is complex |
application_identifier |
no | Scopes the attribute to a specific application (for application_data) |
Supported value types¶
| Type | Description |
|---|---|
string |
Plain text |
integer |
Whole number |
decimal |
Floating-point number |
boolean |
true / false |
date |
Calendar date |
date_time |
Date and time |
epoch |
Unix timestamp (milliseconds) |
complex |
Nested object, define child fields in sub_attributes |
Mutability¶
Mutability controls whether an attribute value can be changed once set.
| Value | Meaning |
|---|---|
readWrite |
Can be freely read and updated |
readOnly |
System-managed, cannot be updated by applications (e.g. meta.created_at) |
writeOnly |
Can be written but not read back |
immutable |
Must be set at creation, cannot be changed (e.g. profile_id) |
writeOnce |
Can be empty initially; once set, cannot be updated (e.g. user_id) |
Merge strategies¶
When two profiles are unified, the merge strategy for each attribute decides which value wins.
| Strategy | Behaviour |
|---|---|
overwrite |
The incoming profile's value replaces the existing one |
combine |
Both values are combined into an array (requires multi_valued: true) |
Core attributes¶
These attributes are built into every profile and cannot be modified:
| Attribute | Type | Mutability |
|---|---|---|
profile_id |
string |
immutable |
user_id |
string |
writeOnce |
meta.created_at |
date_time |
readOnly |
meta.updated_at |
date_time |
readOnly |
meta.location |
string |
readOnly |
Staying in sync with Asgardeo¶
identity_attributes mirror the claim dialects in Asgardeo. When a claim is added, updated, or deleted, the service automatically reconciles its local attribute set so the two stay aligned, no manual action is needed.