Account Deleted Payload
Payload emitted when an identity account is deleted - the Support Console admin delete (SOFTC-7245). A tombstone, not a snapshot: there is no facet left to converge onto, so it carries what identifies the account plus who removed it and why. Consumed by push-notification-service's device-token Lambda, which deletes the account's device tokens and needs only accountId. v1.1.0 adds version, deletedAt, deletedBy, reason and monolithOwned, and widens accountType to TEXECOM_USER; all additions are optional, so a v1.0.0 payload is still valid (SOFTC-7251).
| $id | https://schemas.texecom-prod.com/v2/events/payload/service/identity/account/deleted/v1.1.0.json |
| $schema | http://json-schema.org/draft-07/schema |
Properties
accountId
| Description |
UUID of the account that was deleted (identity.accounts.account_id). |
| Type | String |
| Required |
Yes |
| Format |
uuid |
email
| Description |
Email address of the account at the time of deletion (identity.accounts.email). Case-insensitive, not unique across accounts. Once deleted, the same email may register again as a new account with a new accountId. |
| Type | String |
| Required |
No |
| Format |
email |
accountType
| Description |
Type of the account at the time of deletion (identity.accounts.account_type). TEXECOM_USER: Texecom admins can delete staff accounts. |
| Type | String |
| Required |
No |
| Enum |
- END_USER
- INSTALLER_USER
- TEXECOM_USER
|
version
| Description |
The accounts row version committed with the delete, incremented in SQL - one past the last identity.account.updated, so a consumer ordering by version sees the tombstone last. |
| Type | Integer |
| Required |
No |
| Minimum |
1 |
deletedAt
| Description |
When the account was deleted (identity.accounts.deleted_at). |
| Type | String |
| Required |
No |
| Format |
date-time |
deletedBy
| Description |
accountId of the Texecom admin who deleted the account (identity.accounts.deleted_by). |
| Type | String |
| Required |
No |
| Format |
uuid |
reason
| Description |
Free-text reason the admin gave for the delete. Required by the API; 1-500 characters. |
| Type | String |
| Required |
No |
| Min Length |
1 |
| Max Length |
500 |
monolithOwned
| Description |
True when the account was a legacy installer the monolith owns (develop and test only). identity-service dropped its own shadow of that person; the monolith still has them and their next login re-creates a fresh shadow. NOT a request to delete anything in the monolith: the Legacy Bridge must not converge this event onto it. |
| Type | Boolean |
| Required |
No |
Schema
{
"$id": "https://schemas.texecom-prod.com/v2/events/payload/service/identity/account/deleted/v1.1.0.json",
"$schema": "http://json-schema.org/draft-07/schema",
"title": "Account Deleted Payload",
"description": "Payload emitted when an identity account is deleted - the Support Console admin delete (SOFTC-7245). A tombstone, not a snapshot: there is no facet left to converge onto, so it carries what identifies the account plus who removed it and why. Consumed by push-notification-service's device-token Lambda, which deletes the account's device tokens and needs only accountId. v1.1.0 adds version, deletedAt, deletedBy, reason and monolithOwned, and widens accountType to TEXECOM_USER; all additions are optional, so a v1.0.0 payload is still valid (SOFTC-7251).",
"type": "object",
"properties": {
"accountId": {
"description": "UUID of the account that was deleted (identity.accounts.account_id).",
"type": "string",
"format": "uuid"
},
"email": {
"description": "Email address of the account at the time of deletion (identity.accounts.email). Case-insensitive, not unique across accounts. Once deleted, the same email may register again as a new account with a new accountId.",
"type": "string",
"format": "email"
},
"accountType": {
"description": "Type of the account at the time of deletion (identity.accounts.account_type). TEXECOM_USER: Texecom admins can delete staff accounts.",
"type": "string",
"enum": [
"END_USER",
"INSTALLER_USER",
"TEXECOM_USER"
]
},
"version": {
"description": "The accounts row version committed with the delete, incremented in SQL - one past the last identity.account.updated, so a consumer ordering by version sees the tombstone last.",
"type": "integer",
"minimum": 1
},
"deletedAt": {
"description": "When the account was deleted (identity.accounts.deleted_at).",
"type": "string",
"format": "date-time"
},
"deletedBy": {
"description": "accountId of the Texecom admin who deleted the account (identity.accounts.deleted_by).",
"type": "string",
"format": "uuid"
},
"reason": {
"description": "Free-text reason the admin gave for the delete. Required by the API; 1-500 characters.",
"type": "string",
"minLength": 1,
"maxLength": 500
},
"monolithOwned": {
"description": "True when the account was a legacy installer the monolith owns (develop and test only). identity-service dropped its own shadow of that person; the monolith still has them and their next login re-creates a fresh shadow. NOT a request to delete anything in the monolith: the Legacy Bridge must not converge this event onto it.",
"type": "boolean"
}
},
"required": [
"accountId"
],
"additionalProperties": false
}