{
  "openapi": "3.0.3",
  "info": {
    "title": "Digital Credential Lifecycle Events",
    "description": "# Digital Credential related set of available lifecycle events.\n\nThis specification provides details and schemas of events available by the platform to the issuer.\n\n## Event Delivery model\n\nEvents are pushed as opposed to traditional pulling.\nCustomers are expected to expose endpoints to receive events with the following constraints:\n* HTTP POST + JSON content\n* Authentication supported is mTLS and/or oAuth2\n\nThe delivery model is <b>At least once delivery</b> which means that at events will be delivered at least once within reasonable time.\n\nEndpoints are however expected to be <b>idempotent</b> and <b>tolerant reader </b> to support forward compatibility.\n\n## Retry Logic and Retention\n\nAfter forwarding an event to the Issuer, the Event hub implements the following retry logic depending on the HTTP response from the Issuer's Backend:\n* An HTTP 2xx response acknowledges reception of the event. Endpoint must ensure storage or full business processing before acknowledgement. \n* An HTTP 4xx response from Issuer will either retry or abort. This is configurable.\n* An HTTP 5xx response will always retry.\n\nIf the Event hub fails to notify a subscriber endpoint, it will retry calling the subscriber endpoint with a default retry frequency once per second; retries continue for a retry limit of 2 hours.\nIf the subscriber cannot be notified after 2 hours, an alarm is raised requiring manual intervention to resolve.\n\nResolution involves correcting the issue that is preventing events from being sent to the subscriber, and then resending all events going back to the time of initial failure. This may include resending events which were properly sent if the initial failure was intermittent.\nAs the same event may be re-sent multiple times during resolution, the subscriber endpoint’s handling of an event must be idempotent.\n\nResolution must be completed within the retention period, which is 1 day by default, otherwise the events are permanently lost.\n\n## Note\nThe retry frequency is configurable and is intended to prevent retries from overwhelming the Issuer’s subscriber endpoints. The default is 1 retry per second.\n\nThe 2-hour retry limit is enforced by the Event hub and cannot be increased.\n\nThe retention period is configurable and is intended to limit data retention. The default is 1 day.\n\n## Event structure\nAll event are structured in the same manner\n1. Common header\n2. Specific payload depending on the event type\n\n## Subscription model\nThe customer must define a subscriber endpoint each event they want to be notified about.\n\nIDEMIA will register each endpoint with the Event Hub on request to our SRE team.\n"
  },
  "servers": [
    {
      "url": "https://add-event.subscribe.io",
      "description": "Example endpoint to allow subscription for the event"
    }
  ],
  "paths": {
    "/mIDIssued": {
      "post": {
        "summary": "mIDIssued event",
        "operationId": "mIDIssued",
        "x-badges": [
          {
            "name": "SUB",
            "position": "before",
            "color": "purple"
          }
        ],
        "tags": [
          "Lifecycle Events Definition"
        ],
        "description": "The topic on which mIDIssued will be published: `com.idemia.identity.mobileid.lifecycle.mIDIssued`.\n- Producer: **Issuance Service** \n- Consumer: **Issuer** \n  \nReceive information that digital credential issuance has completed successfully. \nThe event may carry additional issuance‑related attributes, such as a transaction identifier, provided via the attributes map.\n",
        "responses": {
          "2xx": {
            "description": "Event delivered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mIDIssuedEvent"
                }
              }
            }
          }
        }
      }
    },
    "/mIDIssuanceFailed": {
      "post": {
        "summary": "mIDIssuanceFailed event",
        "operationId": "mIDIssuanceFailed",
        "x-badges": [
          {
            "name": "SUB",
            "position": "before",
            "color": "purple"
          }
        ],
        "tags": [
          "Lifecycle Events Definition"
        ],
        "description": "The topic on which mIDIssuanceFailed will be published: `com.idemia.identity.mobileid.lifecycle.mIDIssuanceFailed`.\n- Producer: **Issuance Service** \n- Consumer: **Issuer** \n  \nReceive information that the backend was unable to complete the digital credential issuance process.\n",
        "responses": {
          "2xx": {
            "description": "Event delivered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mIDIssuanceFailedEvent"
                }
              }
            }
          }
        }
      }
    },
    "/mIDClaimed": {
      "post": {
        "summary": "mIDClaimed event",
        "operationId": "mIDClaimed",
        "x-badges": [
          {
            "name": "SUB",
            "position": "before",
            "color": "purple"
          }
        ],
        "tags": [
          "Lifecycle Events Definition"
        ],
        "description": "The topic on which mIDClaimed will be published: `com.idemia.identity.mobileid.lifecycle.mIDClaimed`.\n- Producer: **Notification Service (from SDK)** \n- Consumer: **Issuer** \n\nReceive information that a digital credential has been claimed by the mobile device during the registration process.\n",
        "responses": {
          "2xx": {
            "description": "Event delivered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mIDClaimedEvent"
                }
              }
            }
          }
        }
      }
    },
    "/mIDUpdateClaimed": {
      "post": {
        "summary": "mIDUpdateClaimed event",
        "operationId": "mIDUpdateClaimed",
        "x-badges": [
          {
            "name": "SUB",
            "position": "before",
            "color": "purple"
          }
        ],
        "tags": [
          "Lifecycle Events Definition"
        ],
        "description": "`com.idemia.identity.mobileid.lifecycle.mIDUpdateClaimed`\nThe topic on which mIDUpdateClaimed will be published.\n- Producer: **Notification Service (from SDK)** \n- Consumer: **Issuer** \n  \nReceive information that a Digital Credential attribute update has been claimed by the mobile device.\n",
        "responses": {
          "2xx": {
            "description": "Event delivered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mIDUpdateClaimedEvent"
                }
              }
            }
          }
        }
      }
    },
    "/mIDStateUpdated": {
      "post": {
        "summary": "mIDStateUpdated event",
        "operationId": "mIDStateUpdated",
        "x-badges": [
          {
            "name": "SUB",
            "position": "before",
            "color": "purple"
          }
        ],
        "tags": [
          "Lifecycle Events Definition"
        ],
        "description": "`com.idemia.identity.mobileid.lifecycle.mIDStateUpdated`\nThe topic on which mIDStateUpdated will be published.\n- Producer:  **mID Repo** \n- Consumer: **Issuer** \n  \nReceive information about a successful Credential state update.\n",
        "responses": {
          "2xx": {
            "description": "Event delivered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mIDStateUpdatedEvent"
                }
              }
            }
          }
        }
      }
    },
    "/mIDStateUpdateFailed": {
      "post": {
        "summary": "mIDStateUpdateFailed event",
        "operationId": "mIDStateUpdateFailed",
        "x-badges": [
          {
            "name": "SUB",
            "position": "before",
            "color": "purple"
          }
        ],
        "tags": [
          "Lifecycle Events Definition"
        ],
        "description": "`com.idemia.identity.mobileid.lifecycle.mIDStateUpdateFailed`\nThe topic on which mIDStateUpdateFailed will be published.\n- Producer:  **mID Repo** \n- Consumer: **Issuer** \n  \nReceive information that a Credential state update failed and no state change was applied.\n",
        "responses": {
          "2xx": {
            "description": "Event delivered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mIDStateUpdateFailedEvent"
                }
              }
            }
          }
        }
      }
    },
    "/mIDDeviceStatusUpdated": {
      "post": {
        "summary": "mIDDeviceStatusUpdated event",
        "operationId": "mIDDeviceStatusUpdated",
        "x-badges": [
          {
            "name": "SUB",
            "position": "before",
            "color": "purple"
          }
        ],
        "tags": [
          "Lifecycle Events Definition"
        ],
        "description": "`com.idemia.identity.mobileid.lifecycle.mIDDeviceStatusUpdated`\nThe topic on which mIDDeviceStatusUpdated will be published.\n- Producer:  **mID Repo** \n- Consumer: **Issuer** , **Notification Service** \n  \nReceive information about a successful credential instance (DeviceCredential) status change on backend.\n",
        "responses": {
          "2xx": {
            "description": "Event delivered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mIDDeviceStatusUpdatedEvent"
                }
              }
            }
          }
        }
      }
    },
    "/mIDDeviceStatusUpdateFailed": {
      "post": {
        "summary": "mIDDeviceStatusUpdateFailed event",
        "operationId": "mIDDeviceStatusUpdateFailed",
        "x-badges": [
          {
            "name": "SUB",
            "position": "before",
            "color": "purple"
          }
        ],
        "tags": [
          "Lifecycle Events Definition"
        ],
        "description": "`com.idemia.identity.mobileid.lifecycle.mIDDeviceStatusUpdateFailed`\nThe topic on which mIDDeviceStatusUpdateFailed will be published.\n- Producer:  **mID Repo** \n- Consumer: **Issuer** , **Notification Service** \n  \nReceive information that a credential instance (DeviceCredential) status update has failed during backend processing.\n",
        "responses": {
          "2xx": {
            "description": "Event delivered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mIDDeviceStatusUpdateFailedEvent"
                }
              }
            }
          }
        }
      }
    },
    "/mIDRenewalRequired": {
      "post": {
        "summary": "mIDRenewalRequired event",
        "operationId": "mIDRenewalRequired",
        "x-badges": [
          {
            "name": "SUB",
            "position": "before",
            "color": "purple"
          }
        ],
        "tags": [
          "Lifecycle Events Definition"
        ],
        "description": "`com.idemia.identity.mobileid.lifecycle.mIDRenewalRequired`\nThe topic on which mIDRenewalRequired will be published.\n- Producer:  **mID Repo** [mid-renewal-required-event-producer]\n- Consumer: **Issuer** , **Notification Service** \n\nReceive information about Digital Credential requiring renewal (meaning an update) by the backend. \nReasons can be for ATTRIBUTE_UPDATE, MSO_EXPIRATION, or RENDERING_UPDATE.\n",
        "responses": {
          "2xx": {
            "description": "Event delivered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mIDRenewalRequiredEvent"
                }
              }
            }
          }
        }
      }
    },
    "/mIDAttributeUpdateFailed": {
      "post": {
        "summary": "mIDAttributeUpdateFailed event",
        "operationId": "mIDAttributeUpdateFailed",
        "x-badges": [
          {
            "name": "SUB",
            "position": "before",
            "color": "purple"
          }
        ],
        "tags": [
          "Lifecycle Events Definition"
        ],
        "description": "`com.idemia.identity.mobileid.lifecycle.mIDAttributeUpdateFailed`\nThe topic on which mIDAttributeUpdateFailed will be published.\n- Producer:  **mID Repo** \n- Consumer: **Issuer** \n\nReceive information that an attribute update failed and no attribute changes were applied.\n",
        "responses": {
          "2xx": {
            "description": "Event delivered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mIDAttributeUpdateFailedEvent"
                }
              }
            }
          }
        }
      }
    },
    "/MobileSecurityObjectsIssued": {
      "post": {
        "summary": "MobileSecurityObjectsIssued event",
        "operationId": "MobileSecurityObjectsIssued",
        "x-badges": [
          {
            "name": "SUB",
            "position": "before",
            "color": "purple"
          }
        ],
        "tags": [
          "Lifecycle Events Definition"
        ],
        "description": "`com.idemia.identity.mobileid.lifecycle.MobileSecurityObjectsIssued`\nThe topic on which MobileSecurityObjectsIssued will be published.\n- Producer:  **Issuance Service** \n- Consumer: **Issuer**, **MSO Manager** \n\nReceive information that an MSO with public keys has been issued or renewed, with optional references to retrieve audit logs when audit storage is enabled.\n",
        "responses": {
          "2xx": {
            "description": "Event delivered successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MobileSecurityObjectsIssuedEvent"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "mIDIssuedEvent": {
        "type": "object",
        "description": "Wrapper combining GenericEventHeader and event payload",
        "properties": {
          "header": {
            "$ref": "#/components/schemas/GenericEventHeader"
          },
          "payload": {
            "$ref": "#/components/schemas/mIDIssued"
          }
        },
        "required": [
          "header",
          "payload"
        ]
      },
      "mIDIssuanceFailedEvent": {
        "type": "object",
        "description": "Wrapper combining GenericEventHeader and event payload",
        "properties": {
          "header": {
            "$ref": "#/components/schemas/GenericEventHeader"
          },
          "payload": {
            "$ref": "#/components/schemas/mIDIssuanceFailed"
          }
        },
        "required": [
          "header",
          "payload"
        ]
      },
      "mIDClaimedEvent": {
        "type": "object",
        "description": "Wrapper combining GenericEventHeader and event payload",
        "properties": {
          "header": {
            "$ref": "#/components/schemas/GenericEventHeader"
          },
          "payload": {
            "$ref": "#/components/schemas/mIDClaimed"
          }
        },
        "required": [
          "header",
          "payload"
        ]
      },
      "mIDUpdateClaimedEvent": {
        "type": "object",
        "description": "Wrapper combining GenericEventHeader and event payload",
        "properties": {
          "header": {
            "$ref": "#/components/schemas/GenericEventHeader"
          },
          "payload": {
            "$ref": "#/components/schemas/mIDUpdateClaimed"
          }
        },
        "required": [
          "header",
          "payload"
        ]
      },
      "mIDStateUpdatedEvent": {
        "type": "object",
        "description": "Wrapper combining GenericEventHeader and event payload",
        "properties": {
          "header": {
            "$ref": "#/components/schemas/GenericEventHeader"
          },
          "payload": {
            "$ref": "#/components/schemas/mIDStateUpdated"
          }
        },
        "required": [
          "header",
          "payload"
        ]
      },
      "mIDStateUpdateFailedEvent": {
        "type": "object",
        "description": "Wrapper combining GenericEventHeader and event payload",
        "properties": {
          "header": {
            "$ref": "#/components/schemas/GenericEventHeader"
          },
          "payload": {
            "$ref": "#/components/schemas/mIDStateUpdateFailed"
          }
        },
        "required": [
          "header",
          "payload"
        ]
      },
      "mIDDeviceStatusUpdatedEvent": {
        "type": "object",
        "description": "Wrapper combining GenericEventHeader and event payload",
        "properties": {
          "header": {
            "$ref": "#/components/schemas/GenericEventHeader"
          },
          "payload": {
            "$ref": "#/components/schemas/mIDDeviceStatusUpdated"
          }
        },
        "required": [
          "header",
          "payload"
        ]
      },
      "mIDDeviceStatusUpdateFailedEvent": {
        "type": "object",
        "description": "Wrapper combining GenericEventHeader and event payload",
        "properties": {
          "header": {
            "$ref": "#/components/schemas/GenericEventHeader"
          },
          "payload": {
            "$ref": "#/components/schemas/mIDDeviceStatusUpdateFailed"
          }
        },
        "required": [
          "header",
          "payload"
        ]
      },
      "mIDRenewalRequiredEvent": {
        "type": "object",
        "description": "Wrapper combining GenericEventHeader and event payload",
        "properties": {
          "header": {
            "$ref": "#/components/schemas/GenericEventHeader"
          },
          "payload": {
            "$ref": "#/components/schemas/mIDRenewalRequired"
          }
        },
        "required": [
          "header",
          "payload"
        ]
      },
      "mIDAttributeUpdateFailedEvent": {
        "type": "object",
        "description": "Wrapper combining GenericEventHeader and event payload",
        "properties": {
          "header": {
            "$ref": "#/components/schemas/GenericEventHeader"
          },
          "payload": {
            "$ref": "#/components/schemas/mIDAttributeUpdateFailed"
          }
        },
        "required": [
          "header",
          "payload"
        ]
      },
      "MobileSecurityObjectsIssuedEvent": {
        "type": "object",
        "description": "Wrapper combining GenericEventHeader and event payload",
        "properties": {
          "header": {
            "$ref": "#/components/schemas/GenericEventHeader"
          },
          "payload": {
            "$ref": "#/components/schemas/MobileSecurityObjectsIssued"
          }
        },
        "required": [
          "header",
          "payload"
        ]
      },
      
      "GenericEventHeader": {
        "description": "Generic Event Header",
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "description": "Version of the Generic Event. Currently: 1",
            "default": 1
          },
          "eventID": {
            "type": "string",
            "description": "Unique identifier for the event",
            "example": "7775F340-03A2-4FE9-AED5-5BDFF7FDCE59"
          },
          "eventType": {
            "type": "string",
            "description": "Fully qualified Event type",
            "example": "com.idemia.identity.mobileid.lifecycle.mIDIssued"
          },
          "tenantID": {
            "type": "string",
            "description": "Tenant Identifier the event is targeted to",
            "example": "idemia_dc"
          },
          "correlationID": {
            "type": "string",
            "description": "Identifier used to correlate a single transaction across services and systems. For transactions originating from the `did-update` service, if the Issuer's Backend provides either `x-requestId` (API v2) or `x-correlation-id` (API v1) in the request headers, the provided value is propagated and used as the `correlationID` in the resulting event. If neither header is provided, the correlation identifier is generated by the DC Platform.\n",
            "example": "71AA7D2E-8E35-47DE-9A1E-8775DCB9FC39"
          },
          "timestamp": {
            "type": "string",
            "description": "ISO 8601 compliant timestamp of the event",
            "example": "2026-06-20T11:25:02.952Z"
          },
          "origin": {
            "type": "string",
            "description": "Origin of the event; may optionally include the service version.",
            "example": "issuanceService:2.1.100"
          },
          "audience": {
            "type": "string",
            "description": "Optional audience - identified consumers of the event.",
            "example": "status-service"
          },
          "expires": {
            "type": "string",
            "description": "Optional timestamp, when the event expires",
            "example": "2027-06-20T11:25:02.952Z"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional map for additional headers",
            "example": {
              "x-request-id": "aa1526ba-741f-9c0a-96aa-b22cc677101a",
              "x-b3-parentspanid": "b9aa762c225ac59f",
              "x-b3-traceid": "a3724cc7f59018d83363f637f2303ed9",
              "x-b3-spanid": "4dd9fb54bd0af34c",
              "x-b3-sampled": "1",
              "messageId": "950840f3-17b8-4e79-ac88-eb368ff11a09",
              "partition-key": "02b224f2-ec72-4361-9e86-9ae15301c11d",
              "timestamp": "1750418702954"
            }
          }
        },
        "required": [
          "version",
          "eventID",
          "eventType",
          "status",
          "tenantID",
          "correlationID",
          "timestamp",
          "origin"
        ]
      },
      "Warning": {
        "description": "Single warning generated during issuance",
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Code indicating the reason for the warning",
            "example": "MISSING_MANDATORY_ATTRIBUTES"
          },
          "message": {
            "type": "string",
            "description": "Human-readable warning message. If mandatory attributes are missing, it also includes the type of datagroup sent in the request from the mobile app.",
            "example": "Missing mandatory attributes for application/vnd.idemia.simple.18013-5+v3"
          },
          "details": {
            "type": "array",
            "description": "Optional list of maps providing a more detailed description of the warning, e.g. a list of missing attributes with the namespace, where missing attribute is required.",
            "items": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "example": [
              {
                "namespace": "org.iso.18013.5.1.aamva",
                "identifier": "DHS_compliance"
              },
              {
                "namespace": "org.iso.18013.5.1",
                "identifier": "birth_date"
              }
            ]
          }
        },
        "required": [
          "code",
          "message"
        ]
      },
      "mIDIssued": {
        "type": "object",
        "properties": {
          "credentialId": {
            "type": "string",
            "description": "A credentialId identifies the logical Digital Credential issued to a user,  while midUid identifies a device‑specific instance (deviceCredential) of that credential. Identifier used in lifecycle management operations.\n",
            "example": "a7a82462-3f72-4f42-ba8a-73fb6c7269dd"
          },
          "midUid": {
            "type": "string",
            "description": "deviceCredential identifier of the issued Digital Credential instance. This identifier is to be used for further lifecycle management operations",
            "example": "c6c74456-dbe3-4d9b-b68d-0c13a48f048a"
          },
          "attributes": {
            "type": "object",
            "description": "Map for additional attributes containing sensitive data (PII) like: firstName, lastName, picture etc.",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "lastName": "McClane",
              "firstNames": "John, Jackson"
            }
          },
          "insensitiveAttributes": {
            "type": "object",
            "description": "Map for additional attributes containing only insensitive data like: loa, serviceLevel etc.",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "loa": "LOW",
              "serviceLevel": "[LOW, SUBSTANTIAL]",
              "documentType": "DL"
            }
          },
          "username": {
            "type": "string",
            "description": "User login identifier represented by a unique email address. The username is permanently associated with the user and wallet and remains unchanged for the entire lifecycle.\n",
            "example": "example-email@idemia.com"
          },
          "clientType": {
            "type": "string",
            "description": "Client type for the device related to this event.",
            "example": "IDEMIA"
          },
          "deviceType": {
            "type": "string",
            "description": "Type of device, set by client and sent in register request. Default value is Phone",
            "example": "Phone"
          },
          "dataGroupTypes": {
            "type": "array",
            "description": "Data group types",
            "items": {
              "type": "string",
              "example": "[application/vnd.idemia.simple.18013-5+v3]"
            }
          },
          "issuanceType": {
            "type": "string",
            "description": "Type of issuance, possible values: DEVICE_REGISTRATION, CREDENTIAL_PROVISIONING or MSO_PROVISIONING",
            "example": "DEVICE_REGISTRATION"
          },
          "additionalDevices": {
            "type": "array",
            "description": "For issuanceType = DEVICE_REGISTRATION, when registering multiple devices (the request includes additional devices dependent on the primary device), a single mIDIssued event is generated. The additionalDevices array contains info about dependent devices (midUid, type). It remains unset for all other issuance types.",
            "items": {
              "type": "object",
              "properties": {
                "midUid": {
                  "type": "string",
                  "description": "Identifier of a device-specific instance (`deviceCredential`)  of an existing Digital Credential that has been provisioned  on an additional device (for example, a smartwatch).  This `midUid` represents a secondary deviceCredential associated with the same `credentialId`, while the credential instance referenced by the current event is considered the primary one.\n",
                  "example": "c6c74456-dbe3-4d9b-b68d-0c13a48f048a"
                },
                "deviceType": {
                  "type": "string",
                  "description": "Type of the secondary device corresponding to the above midUid, set by the client and provided in the registration request.",
                  "example": "Watch"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Warning"
            }
          }
        },
        "required": [
          "midUid",
          "credentialId",
          "attributes"
        ]
      },
      "ErrorDetails": {
        "description": "Optional error details",
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Optional error type",
            "example": "org.iso.18013.5.1"
          },
          "message": {
            "type": "string",
            "description": "Optional message",
            "example": "signature_usual_mark"
          }
        }
      },
      "Error": {
        "description": "Generic error",
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "description": "Subject of the error",
            "example": "Issuance"
          },
          "reason": {
            "type": "string",
            "description": "Code indicating the reason for the error",
            "example": "MISSING_MANDATORY_ATTRIBUTES"
          },
          "message": {
            "type": "string",
            "description": "Error message in a human-readable format, intended to be recorded in log files.",
            "example": "Missing mandatory attributes for issuance"
          },
          "details": {
            "$ref": "#/components/schemas/ErrorDetails"
          }
        },
        "required": [
          "subject",
          "reason"
        ]
      },
      "mIDIssuanceFailed": {
        "type": "object",
        "properties": {
          "attributes": {
            "type": "object",
            "description": "Map for additional attributes containing sensitive data (PII) like: firstName, lastName, picture etc.",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "lastName": "McClane",
              "firstNames": "John, Jackson"
            }
          },
          "insensitiveAttributes": {
            "type": "object",
            "description": "Map for additional attributes containing only insensitive data like: loa, serviceLevel etc.",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "loa": "LOW",
              "serviceLevel": "[LOW, SUBSTANTIAL]"
            }
          },
          "dataGroupTypes": {
            "type": "array",
            "description": "Data group types",
            "items": {
              "type": "string",
              "example": "application/vnd.idemia.simple.18013-5+v3"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            }
          },
          "clientType": {
            "type": "string",
            "description": "Client type for the device related to this event.",
            "example": "IDEMIA"
          },
          "deviceType": {
            "type": "string",
            "description": "Type of device, set by client and sent in register request. Default value is Phone",
            "example": "Phone"
          },
          "issuanceType": {
            "type": "string",
            "description": "Type of issuance, possible values: DEVICE_REGISTRATION, CREDENTIAL_PROVISIONING or MSO_PROVISIONING",
            "example": "DEVICE_REGISTRATION"
          }
        },
        "required": [
          "attributes",
          "errors"
        ]
      },
      "mIDClaimed": {
        "type": "object",
        "properties": {
          "midUid": {
            "type": "string",
            "description": "Identifier of the claimed Digital Credential instance - deviceCredential",
            "example": "3245DD28-07C9-45D6-9136-E9ECC8603264"
          },
          "deviceId": {
            "type": "string",
            "description": "device Id that claimed the issued deviceCredential",
            "example": "f8677aff-80e2-4e2e-8d71-949196dbb3c4"
          },
          "credentialId": {
            "type": "string",
            "description": "Unique identifier of the issued credential, to be used in lifecycle API.",
            "example": "4664f827-ed61-4b8e-95da-f2186290b495"
          },
          "clientType": {
            "type": "string",
            "description": "Client type for the device related to this event. If not provided, consider clientType as IDEMIA.",
            "example": "IDEMIA"
          },
          "origin": {
            "type": "string",
            "description": "Used to distinguish a device-initiated datagroup update from an issuer-initiated. Possible values are ISSUER, DEVICE. If not provided, consider origin as DEVICE.",
            "example": "DEVICE"
          }
        },
        "required": [
          "midUid",
          "deviceId"
        ]
      },
      "mIDUpdateClaimed": {
        "type": "object",
        "properties": {
          "midUid": {
            "type": "string",
            "description": "Identifier of the deviceCredential affected by change",
            "example": "c6c74456-dbe3-4d9b-b68d-0c13a48f048a"
          },
          "deviceId": {
            "type": "string",
            "description": "UUID of device that was the origin of event",
            "example": "f8677aff-80e2-4e2e-8d71-949196dbb3c4"
          },
          "credentialId": {
            "type": "string",
            "description": "Unique identifier of the Digital Credential, used in the lifecycle API",
            "example": "a7a82462-3f72-4f42-ba8a-73fb6c7269dd"
          },
          "clientType": {
            "type": "string",
            "description": "Client type of the device related to this event. Default value is IDEMIA, including when the field is sent empty. Event producers can override this value.",
            "example": "IDEMIA"
          }
        },
        "required": [
          "midUid",
          "deviceId",
          "clientType"
        ]
      },
      "mIDStateUpdated": {
        "description": "Event an update operation",
        "type": "object",
        "properties": {
          "credentialId": {
            "type": "string",
            "description": "Unique identifier of the Digital Credential, used in the lifecycle API",
            "example": "4664f827-ed61-4b8e-95da-f2186290b495"
          },
          "origin": {
            "type": "string",
            "description": "Used to distinguish a user-initiated unenrollment from an issuer-initiated. Possible values are ISSUER, DEVICE. If not provided, consider origin as DEVICE.",
            "example": "DEVICE",
            "enum": [
              "ISSUER",
              "DEVICE",
              "SUPPORT"
            ]
          },
          "previousState": {
            "type": "string",
            "description": "Previous state of credential",
            "enum": [
              "ACTIVE",
              "REVOKED",
              "SUSPENDED",
              "REINSTATED"
            ],
            "example": "ACTIVE"
          },
          "newState": {
            "type": "string",
            "description": "New state of credential",
            "enum": [
              "ACTIVE",
              "REVOKED",
              "SUSPENDED",
              "REINSTATED"
            ],
            "example": "SUSPENDED"
          },
          "midUid": {
            "type": "string",
            "description": "DeviceCredential identifier. Provided only if it was included by the Issuer in the update request.",
            "example": "3245DD28-07C9-45D6-9136-E9ECC8603264"
          },
          "reasonCodes": {
            "type": "array",
            "description": "Reason codes",
            "items": {
              "type": "string",
              "example": "OTHER_FRAUD_SUSPECTED"
            }
          }
        },
        "required": [
          "credentialId",
          "origin",
          "previousState",
          "newState"
        ]
      },
      "mIDStateUpdateFailed": {
        "type": "object",
        "properties": {
          "credentialId": {
            "type": "string",
            "description": "Unique identifier of the Digital Credential, used in the lifecycle API",
            "example": "4664f827-ed61-4b8e-95da-f2186290b495"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            }
          },
          "midUid": {
            "type": "string",
            "description": "DeviceCredential identifier. Provided only if it was included by the Issuer in the update request.",
            "example": "3245DD28-07C9-45D6-9136-E9ECC8603264"
          },
          "origin": {
            "type": "string",
            "description": "Used to distinguish a user-initiated unenrollment from an issuer-initiated. Possible values are ISSUER, DEVICE. If not provided, consider origin as DEVICE.",
            "example": "DEVICE",
            "enum": [
              "ISSUER",
              "DEVICE",
              "SUPPORT"
            ]
          }
        },
        "required": [
          "credentialId",
          "errors"
        ]
      },
      "mIDDeviceStatusUpdated": {
        "type": "object",
        "properties": {
          "deviceId": {
            "type": "string",
            "description": "device Id that was the origin of event",
            "example": "f8677aff-80e2-4e2e-8d71-949196dbb3c4"
          },
          "credentialId": {
            "type": "string",
            "description": "Unique identifier of the Digital Credential, used in the lifecycle API",
            "example": "a7a82462-3f72-4f42-ba8a-73fb6c7269dd"
          },
          "midUid": {
            "type": "string",
            "description": "Identifier of the deviceCredential affected by change",
            "example": "3245DD28-07C9-45D6-9136-E9ECC8603264"
          },
          "previousState": {
            "type": "string",
            "description": "previous state.",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "RESUMED",
              "UNLINKED"
            ],
            "example": "SUSPENDED"
          },
          "newState": {
            "type": "string",
            "description": "new state",
            "enum": [
              "ACTIVE",
              "SUSPENDED",
              "RESUMED",
              "UNLINKED"
            ]
          },
          "origin": {
            "type": "string",
            "description": "Used to distinguish a user-initiated unenrollment from an issuer-initiated. Possible values are ISSUER, DEVICE. If not provided, consider origin as DEVICE.",
            "example": "DEVICE",
            "enum": [
              "ISSUER",
              "DEVICE",
              "SUPPORT"
            ]
          },
          "clientType": {
            "type": "string",
            "description": "Client type for the device related to this event. If not provided, consider clientType as IDEMIA.",
            "example": "IDEMIA"
          },
          "deviceMetadata": {
            "type": "object",
            "description": "A map for additional device metadata",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "lang": "en",
              "uuid": "f8677aff-80e2-4e2e-8d71-949196dbb3c4",
              "clientType": "IDEMIA"
            }
          },
          "customMessage": {
            "type": "string",
            "maxLength": 512,
            "description": "Optional message that will be provided along with the attribute(s) update notification. Only applies for IDEMIA client types.",
            "example": "Please give us a call at (555)555-5555"
          },
          "reasonCodes": {
            "type": "array",
            "description": "Reason codes",
            "items": {
              "type": "string",
              "example": "OTHER_FRAUD_SUSPECTED"
            }
          },
          "documentType": {
            "type": "string",
            "description": "Document type to be updated. \nIt is used for keeping in Notification Service to allow filter notifications by documentType (request from mobile app)\n",
            "example": "DL"
          }
        },
        "required": [
          "midUid",
          "deviceId",
          "credentialId",
          "previousState",
          "newState"
        ]
      },
      "mIDDeviceStatusUpdateFailed": {
        "type": "object",
        "properties": {
          "midUid": {
            "type": "string",
            "description": "Identifier of the deviceCredential affected by change",
            "example": "3245DD28-07C9-45D6-9136-a3456543"
          },
          "deviceId": {
            "type": "string",
            "description": "device Id that was the origin of event",
            "example": "f8677aff-80e2-4e2e-8d71-949196dbb3c4"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            }
          },
          "credentialId": {
            "type": "string",
            "description": "Unique identifier of the Digital Credential, used in the lifecycle API",
            "example": "a7a82462-3f72-4f42-ba8a-73fb6c7269dd"
          },
          "clientType": {
            "type": "string",
            "description": "Client type for the device related to this event. If not provided, consider clientType as IDEMIA.",
            "example": "IDEMIA"
          },
          "origin": {
            "type": "string",
            "description": "Used to distinguish a user-initiated unenrollment from an issuer-initiated. Possible values are ISSUER, DEVICE. If not provided, consider origin as DEVICE.",
            "example": "DEVICE",
            "enum": [
              "ISSUER",
              "DEVICE",
              "SUPPORT"
            ]
          }
        },
        "required": [
          "midUid",
          "deviceId",
          "errors"
        ]
      },
      "mIDRenewalRequired": {
        "type": "object",
        "properties": {
          "credentialId": {
            "type": "string",
            "description": "Unique identifier of the Digital Credential, used in the lifecycle API",
            "example": "a7a82462-3f72-4f42-ba8a-73fb6c7269dd"
          },
          "midUid": {
            "type": "string",
            "description": "Identifier of the deviceCredential affected by change",
            "example": "c6c74456-dbe3-4d9b-b68d-0c13a48f048a"
          },
          "deviceId": {
            "type": "string",
            "description": "UUID of device that was the origin of event",
            "example": "f8677aff-80e2-4e2e-8d71-949196dbb3c4"
          },
          "reason": {
            "type": "string",
            "enum": [
              "ATTRIBUTE_UPDATE",
              "MSO_EXPIRATION",
              "RENDERING_UPDATE"
            ]
          },
          "clientType": {
            "type": "string",
            "description": "Client type for the device related to this event. If not provided, consider clientType as IDEMIA.",
            "example": "IDEMIA"
          },
          "assertion": {
            "type": "string",
            "description": "Update assertion"
          },
          "deviceMetadata": {
            "type": "object",
            "description": "map for additional device metadata",
            "additionalProperties": {
              "type": "string"
            },
            "example": {
              "lang": "en",
              "uuid": "f8677aff-80e2-4e2e-8d71-949196dbb3c4",
              "clientType": "IDEMIA"
            }
          },
          "updatedAttributes": {
            "type": "object",
            "description": "Map of updated attribute.\n\nThe map key holds the attribute name. The value will hold the update type.\n\nThis field is only present if renewal reason is ``ATTRIBUTE_UPDATE``.\n",
            "additionalProperties": {
              "type": "string",
              "enum": [
                "ADDED",
                "REMOVED",
                "UPDATED"
              ]
            }
          },
          "documentType": {
            "type": "string",
            "description": "Document type to be updated. \nIt is used for keeping in Notification Service to allow filter notifications by documentType (request from mobile app)\n",
            "example": "DL"
          }
        },
        "required": [
          "midUid",
          "deviceId",
          "credentialId",
          "reason"
        ]
      },
      "mIDAttributeUpdateFailed": {
        "type": "object",
        "properties": {
          "credentialId": {
            "type": "string",
            "description": "Unique identifier of the Digital Credential, used in the lifecycle API",
            "example": "a7a82462-3f72-4f42-ba8a-73fb6c7269dd"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "required": [
          "credentialId",
          "errors"
        ]
      },
      "MobileSecurityObjectsIssued": {
        "type": "object",
        "properties": {
          "credentialId": {
            "type": "string",
            "description": "Identifier of credential in UUID format, to be used in lifecycle API",
            "example": "a7a82462-3f72-4f42-ba8a-73fb6c7269dd"
          },
          "midUid": {
            "type": "string",
            "description": "Identifier of the deviceCredential affected by change of MSO",
            "example": "c6c74456-dbe3-4d9b-b68d-0c13a48f048a"
          },
          "clientType": {
            "type": "string",
            "description": "Client type for the device related to this event. Examples of values are IDEMIA, RACCOON, TIGER.",
            "example": "IDEMIA"
          },
          "mobileSecurityObjectsInfoUrl": {
            "type": "string",
            "description": "Pre-signed URL to download Mobile Security Object (MSO) Info including issuerAuth with attributes hashes, MSO Public Keys, statusListBucketId and URL address to MSO Status List. Pre-signed provides temporary access to private S3 objects without requiring users to have AWS credentials or permissions."
          },
          "mobileSecurityObjectsInfoUrlExpiration": {
            "type": "string",
            "description": "ISO 8601 UTC timestamp with expiration date and time of pre-signed URL",
            "example": "2025-01-14T10:55:31.820Z"
          }
        },
        "required": [
          "credentialId",
          "midUid",
          "clientType",
          "mobileSecurityObjectsInfoUrl",
          "mobileSecurityObjectsInfoUrlExpiration"
        ]
      }
    }
  }
 
}