You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The **Internal Placeholder Identifier** feature allows institutions to bridge the gap between their local identity management systems and the external eduID ecosystem. It enables "Pre-Provisioning," where an institution can assign roles and rights to a user in their internal systems *before* that user has accepted an invitation or linked their eduID.
3
+
The **Internal Placeholder Identifier** feature allows institutions to bridge
4
+
the gap between their local identity management systems and eduID. It enables
5
+
"Pre-Provisioning," where an institution can assign roles and rights to a user
6
+
in their internal systems *before* that user has accepted an invitation or
7
+
created their eduID.
4
8
5
-
## 1. Functional Overview
9
+
## Functional Overview
6
10
7
-
An institution can associate a local, internal ID (e.g., a staff number or temporary registration ID) with an invitation. When the user accepts the invitation, this identifier is used to synchronize the account with the institution’s downstream systems. Once the connection is established, the system transitions to using the permanent eduID identifier for all future updates.
11
+
An institution can associate a local, internal ID (e.g., a staff number or
12
+
temporary registration ID) with an invitation. When the user accepts the
13
+
invitation, this identifier is used to synchronize the account with the
14
+
institution’s downstream systems. Once the invite is accepted and provisioning
15
+
is done, the system transitions to using the permanent identifier for all
16
+
future updates.
8
17
9
-
---
18
+
## API Specification (`POST /api/external/v1/invitations`)
10
19
11
-
## 2. API Specification (`POST /api/external/v1/invitations`)
12
-
13
-
The Invitation API supports two mutually exclusive methods for specifying recipients. You must use **either** the standard `invites` list **or**the `invitesWithInternalPlaceholderIdentifiers` list.
20
+
The Invitation API supports two mutually exclusive methods for specifying
21
+
recipients. You must use **either** the standard `invites` list **or**
22
+
the `invitesWithInternalPlaceholderIdentifiers` list.
14
23
15
24
### Request Constraints
16
25
17
26
***Mutually Exclusive:** Do not populate both arrays in a single request.
18
-
***Requirement:** At least one email address must be present in one of the two arrays.
19
-
***Labeling:** This field is explicitly named `internalPlaceholderIdentifier` in the API and UI to encourage its use as a transient "stand-in".
27
+
***Requirement:** At least one email address must be present in one of the
28
+
two arrays.
29
+
***Labeling:** This field is explicitly named `internalPlaceholderIdentifier`
30
+
in the API and UI to encourage its use as a transient "stand-in".
20
31
21
32
### Request Body (`InvitationRequest`)
22
33
23
34
| Attribute | Type | Description |
24
35
| --- | --- | --- |
25
36
|`invites`| Array (String) | Standard email list for users without pre-provisioned internal IDs. |
26
37
|`invitesWithInternalPlaceholderIdentifiers`| Array (Object) | List of objects containing `email` and `internalPlaceholderIdentifier`. |
27
-
|`intendedAuthority`| String | Authority level of the inviter (e.g., `"INVITER"`). |
38
+
|`intendedAuthority`| String | Authority level of the inviter (e.g., `"GUEST"`). |
28
39
|`roleIdentifiers`| Array (Int) | List of Role IDs to be granted upon acceptance. |
29
40
30
41
#### Example Payload: Pre-Provisioning Invitation
31
42
32
43
```json
33
44
{
34
-
"intendedAuthority": "INVITER",
35
-
"message": "Welcome. Your account is ready for activation.",
45
+
"intendedAuthority": "GUEST",
36
46
"language": "en",
37
-
"guestRoleIncluded": true,
38
47
"invitesWithInternalPlaceholderIdentifiers": [
39
48
{
40
49
"email": "new_hire@institution.edu",
@@ -48,37 +57,18 @@ The Invitation API supports two mutually exclusive methods for specifying recipi
48
57
49
58
```
50
59
51
-
---
52
-
53
-
## 3. Provisioning & Lifecycle Logic
54
-
55
-
### Phase 1: Initial Provisioning (SCIM POST)
56
-
57
-
When the user accepts the invitation, the system sends a SCIM `POST /v1/Users` message to the institution's provisioning endpoint. The `internalPlaceholderIdentifier` is sent as the `id` in this message.
58
-
59
-
### Phase 2: Identifier Transition
60
-
61
-
The system will use the `id` returned by your SCIM server in the response to that initial POST for all future updates (e.g., role changes or group memberships). This allows the institution to replace the temporary placeholder with a permanent identifier (such as a UUID or eduID URN) for all subsequent SCIM messages.
62
-
63
-
### Phase 3: Logging
64
-
65
-
The system logs the specific moment when the `id` changes from the placeholder to the permanent identifier to maintain a clear audit trail.
66
-
67
-
---
68
-
69
-
## 4. Privacy & Data Governance
60
+
## Provisioning & Lifecycle Logic
70
61
71
-
| Question | Detail |
72
-
| --- | --- |
73
-
|**Is it personally identifiable?**| Yes. Because the institution provides this identifier from its own systems (e.g., a student ID), it is **directly traceable** to a person within that institution. |
74
-
|**Where is it stored?**| It is stored within the invitation metadata and temporarily in the SCIM provisioning layer until the permanent ID replacement occurs. |
75
-
|**Who has access?**| Access is restricted to authorized administrators within the Invite API and the technical logs during the transition phase. |
76
-
|**Is it shared globally?**| No. This is an **institution-specific** identifier. It is used to bridge internal systems and is not known to other applications or institutions within the wider eduID ecosystem. |
62
+
### Initial Provisioning (SCIM POST)
77
63
78
-
---
64
+
When the user accepts the invitation, the system sends a SCIM `POST /v1/Users`
65
+
message to the institution's provisioning endpoint. The
66
+
`internalPlaceholderIdentifier` is sent as the `id` in this message.
79
67
80
-
##5. Summary of Benefits
68
+
### Identifier Transition
81
69
82
-
1.**Combined Processes:** Allows the combination of legacy manual assignments with modern external identities like eduID.
83
-
2.**Internal Abstraction:** When used with the Institution-Information API during authentication, internal systems can continue to use their own identifiers, keeping the external eduID identifier abstracted away from most applications.
84
-
3.**Day-One Readiness:** Users gain access to necessary roles immediately upon their first login.
70
+
The system will use the `id` returned by your SCIM server in the response to
71
+
that initial POST for all future updates (e.g., role changes or group
72
+
memberships). This allows the institution to replace the temporary placeholder
73
+
with a permanent identifier (such as a UUID or eduID URN) for all subsequent
0 commit comments