Skip to content

Commit 44778e5

Browse files
committed
Add Customer Data Service documentation for Asgardeo
1 parent cdb13a2 commit 44778e5

23 files changed

Lines changed: 423 additions & 4 deletions

.github/workflows/preview-docs.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,11 @@ jobs:
140140
echo "| Lifetime | $DURATION_MINUTES min |"
141141
echo ""
142142
echo "The link goes dead when this job ends."
143-
echo ""
144-
echo "> :warning: Please double-check the URL before clicking. The preview runs on a one-time public tunnel — confirm the link in this summary matches the one in any PR comment, and make sure it points to \`trycloudflare.com\`."
145143
} >> "$GITHUB_STEP_SUMMARY"
146144
147145
if [ -n "$PR_NUMBER" ]; then
148-
BODY=$(printf '**Docs preview:** %s\n\nProduct: `%s` · Ref: `%s` · Live for %s min.\n\n> :warning: Please double-check the URL before clicking. Confirm it matches the link in the [workflow run summary](%s/actions/runs/%s) and that it points to `trycloudflare.com`.\n\n_Triggered by @%s via the Preview Docs workflow._' \
149-
"$URL" "$PRODUCT" "$RESOLVED_REF" "$DURATION_MINUTES" "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" "$GITHUB_RUN_ID" "$GITHUB_ACTOR")
146+
BODY=$(printf '**Docs preview:** %s\n\nProduct: `%s` · Ref: `%s` · Live for %s min.\n\n_Triggered by @%s via the Preview Docs workflow._' \
147+
"$URL" "$PRODUCT" "$RESOLVED_REF" "$DURATION_MINUTES" "$GITHUB_ACTOR")
150148
gh pr comment "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --body "$BODY" || \
151149
echo "::warning::Failed to post PR comment (continuing anyway)."
152150
fi
316 KB
Loading
158 KB
Loading
169 KB
Loading
171 KB
Loading
859 KB
Loading
438 KB
Loading
483 KB
Loading
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# Profile attributes
2+
3+
**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.
4+
5+
Together, the set of profile attributes defined for your organization makes up the **profile attribute schema**.
6+
7+
---
8+
9+
## Scopes
10+
11+
Profile attributes are organised into three scopes:
12+
13+
| Scope | Description |
14+
|---|---|
15+
| `identity_attributes` | Attributes sourced from the identity system (e.g. email, phone, name from {{ product_name }} claims) |
16+
| `traits` | Behavioural or preference data managed by the application (e.g. language, segments) |
17+
| `application_data` | Per-application attributes, scoped by application identifier |
18+
19+
---
20+
21+
## Attribute fields
22+
23+
| Field | Required | Description |
24+
|---|---|---|
25+
| `attribute_name` | yes | Dot-notation path including scope prefix |
26+
| `display_name` | no | Human-readable label |
27+
| `value_type` | yes | One of the supported data types (see below) |
28+
| `merge_strategy` | yes | How to resolve the value when two profiles are merged |
29+
| `mutability` | yes | Read/write behaviour (see below) |
30+
| `multi_valued` | no | If `true`, the attribute holds an array of the declared type |
31+
| `canonical_values` | no | Enumerated allowed values (for string attributes) |
32+
| `sub_attributes` | no | Child attributes when `value_type` is `complex` |
33+
| `application_identifier` | no | Scopes the attribute to a specific application (for `application_data`) |
34+
35+
---
36+
37+
## Supported value types
38+
39+
| Type | Description |
40+
|---|---|
41+
| `string` | Plain text |
42+
| `integer` | Whole number |
43+
| `decimal` | Floating-point number |
44+
| `boolean` | `true` / `false` |
45+
| `date` | Calendar date |
46+
| `date_time` | Date and time |
47+
| `epoch` | Unix timestamp (milliseconds) |
48+
| `complex` | Nested object, define child fields in `sub_attributes` |
49+
50+
---
51+
52+
## Mutability
53+
54+
Mutability controls whether an attribute value can be changed once set.
55+
56+
| Value | Meaning |
57+
|---|---|
58+
| `readWrite` | Can be freely read and updated |
59+
| `readOnly` | System-managed, cannot be updated by applications (e.g. `meta.created_at`) |
60+
| `writeOnly` | Can be written but not read back |
61+
| `immutable` | Must be set at creation, cannot be changed (e.g. `profile_id`) |
62+
| `writeOnce` | Can be empty initially; once set, cannot be updated (e.g. `user_id`) |
63+
64+
---
65+
66+
## Merge strategies
67+
68+
When two profiles are unified, the merge strategy for each attribute decides which value wins.
69+
70+
| Strategy | Behaviour |
71+
|---|---|
72+
| `overwrite` | The incoming profile's value replaces the existing one |
73+
| `combine` | Both values are combined into an array (requires `multi_valued: true`) |
74+
75+
---
76+
77+
## Core attributes
78+
79+
These attributes are built into every profile and cannot be modified:
80+
81+
| Attribute | Type | Mutability |
82+
|---|---|---|
83+
| `profile_id` | `string` | `immutable` |
84+
| `user_id` | `string` | `writeOnce` |
85+
| `meta.created_at` | `date_time` | `readOnly` |
86+
| `meta.updated_at` | `date_time` | `readOnly` |
87+
| `meta.location` | `string` | `readOnly` |
88+
89+
---
90+
91+
## Staying in sync with {{ product_name }}
92+
93+
`identity_attributes` mirror the claim dialects in {{ product_name }}. 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.
94+
95+
---
96+
97+
## Related
98+
99+
- [Manage profile attributes]({{base_path}}/guides/customer-data/guides/manage-profile-attributes)
100+
- [Unification rules]({{base_path}}/guides/customer-data/concepts/unification-rules)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{% include "../../../../../includes/guides/customer-data/concepts/profiles.md" %}

0 commit comments

Comments
 (0)