UserAddedevent type
A user was added to a tenant. Creates the Stakeholder node; downstream RoleAssigned events attach RACI edges to specific objects.
Full spec
{
"name": "UserAdded",
"description": "A user was added to a tenant. Creates the Stakeholder node; downstream RoleAssigned events attach RACI edges to specific objects.",
"current_version": 1,
"actor_type_allowed": [
"human",
"system"
],
"object_type": "Stakeholder",
"payload_versions": {
"v1": {
"type": "object",
"additionalProperties": false,
"required": [
"stakeholder_id",
"tenant_id",
"user_type",
"tenant_role",
"email_hash",
"added_by"
],
"properties": {
"stakeholder_id": {
"type": "string",
"format": "uuid"
},
"tenant_id": {
"type": "string",
"format": "uuid"
},
"user_type": {
"type": "string",
"enum": [
"bootminds_staff",
"client_admin",
"client_stakeholder",
"client_executive"
]
},
"tenant_role": {
"type": "string",
"enum": [
"admin",
"programme_lead",
"stakeholder",
"executive_viewer"
]
},
"email_hash": {
"type": "string",
"minLength": 1,
"description": "Salted hash of the user's email; the raw email lives in the shared metadata DB, not in tenant events, for cross-tenant identity portability."
},
"display_name": {
"type": "string"
},
"added_by": {
"type": "string",
"format": "uuid"
},
"invite_method": {
"type": "string",
"enum": [
"magic_link",
"idp_federation",
"manual"
]
}
}
}
},
"projections_consuming": [
"stakeholders_view",
"audit_log"
],
"canonicalizer_module": "event-canonicalizers/user_added.ts"
}