{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/signatureapi-com/json-schema/signatureapi-com-event-event-schema.json",
  "title": "Event",
  "description": "An event records a change or action in your account. Each event has a `type` field that determines its category and the shape of its `data` payload. Events fall into four categories: envelope events, recipient events, deliverable events, and sender events. You can receive events through webhooks or retrieve them through the API.",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/signatureapi-com-openapi.yml#/components/schemas/Event.Event",
  "x-schema-role": "model",
  "x-schema-direction": "output",
  "oneOf": [
    {
      "$ref": "#/$defs/Event.EnvelopeCreated"
    },
    {
      "$ref": "#/$defs/Event.EnvelopeStarted"
    },
    {
      "$ref": "#/$defs/Event.EnvelopeCompleted"
    },
    {
      "$ref": "#/$defs/Event.EnvelopeFailed"
    },
    {
      "$ref": "#/$defs/Event.EnvelopeCanceled"
    },
    {
      "$ref": "#/$defs/Event.RecipientReleased"
    },
    {
      "$ref": "#/$defs/Event.RecipientSent"
    },
    {
      "$ref": "#/$defs/Event.RecipientAccessed"
    },
    {
      "$ref": "#/$defs/Event.RecipientIdentityVerificationStarted"
    },
    {
      "$ref": "#/$defs/Event.RecipientIdentityVerified"
    },
    {
      "$ref": "#/$defs/Event.RecipientIdentityRejected"
    },
    {
      "$ref": "#/$defs/Event.RecipientViewed"
    },
    {
      "$ref": "#/$defs/Event.RecipientCompleted"
    },
    {
      "$ref": "#/$defs/Event.RecipientSoftBounced"
    },
    {
      "$ref": "#/$defs/Event.RecipientHardBounced"
    },
    {
      "$ref": "#/$defs/Event.RecipientRejected"
    },
    {
      "$ref": "#/$defs/Event.RecipientFailed"
    },
    {
      "$ref": "#/$defs/Event.RecipientReplaced"
    },
    {
      "$ref": "#/$defs/Event.RecipientResent"
    },
    {
      "$ref": "#/$defs/Event.DeliverableGenerated"
    },
    {
      "$ref": "#/$defs/Event.DeliverableFailed"
    },
    {
      "$ref": "#/$defs/Event.SenderCreated"
    },
    {
      "$ref": "#/$defs/Event.SenderVerified"
    },
    {
      "$ref": "#/$defs/Event.SenderFailed"
    },
    {
      "$ref": "#/$defs/Event.SenderDeleted"
    }
  ],
  "$defs": {
    "Ceremony.IdentityEvidenceReference": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "title": "Identity Evidence Reference",
      "description": "The provider's own handle on the completed verification. Quote this value back to the provider to retrieve the underlying proof.\n\nThis reference never carries personal data. It appears in the `recipient.identity_verified` and `recipient.identity_rejected` events and in the envelope audit log.\n"
    },
    "Ceremony.IdentityVerificationMethod": {
      "x-schema-role": "property",
      "x-schema-direction": "any",
      "type": "string",
      "title": "Identity Verification Method",
      "description": "The identity verification the recipient must complete. Required — there is no automatic selection.\n\n- `document_selfie` -- The recipient photographs a government-issued identity document and takes a selfie for a liveness and face match.\n- `eid` -- The recipient authenticates with a national or government-issued electronic identity scheme.\n- `video_ident` -- The recipient completes a video session with an agent who checks their identity document.\n- `reuse_credential` -- The recipient reuses an identity credential they already hold with the provider, without verifying again.\n",
      "x-enum-descriptions": {
        "document_selfie": "Identity document photo plus a selfie liveness and face match.",
        "eid": "National or government-issued electronic identity scheme.",
        "video_ident": "Live video session with an agent.",
        "reuse_credential": "Reuse of an identity credential the recipient already holds with the provider."
      },
      "enum": [
        "document_selfie",
        "eid",
        "video_ident",
        "reuse_credential"
      ]
    },
    "Ceremony.IdentityVerificationProvider": {
      "x-schema-role": "property",
      "x-schema-direction": "any",
      "type": "string",
      "title": "Identity Verification Provider",
      "description": "The identity verification provider that performs the check. Optional — defaults to `stub`.\n\n- `stub` -- A built-in test provider that simulates the verification without contacting a real identity service.\n",
      "x-enum-descriptions": {
        "stub": "Built-in test provider that simulates the verification."
      },
      "default": "stub",
      "enum": [
        "stub"
      ]
    },
    "Deliverable.FailDetail": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "title": "Deliverable Fail Detail",
      "description": "A human-readable explanation of why the deliverable failed to generate. Only present when the deliverable status is `failed`."
    },
    "Deliverable.Id": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "title": "Deliverable Id",
      "description": "The unique identifier of the deliverable."
    },
    "Deliverable.IncludedDocuments": {
      "x-schema-role": "model",
      "x-schema-direction": "any",
      "title": "Included Documents",
      "type": "array",
      "description": "The keys of the documents to include in the deliverable.\n\nBy default, all documents in the envelope are included. Use this field to create a deliverable with only a subset of documents, for example to generate separate deliverables for different recipients.",
      "items": {
        "$ref": "#/$defs/Document.Key"
      },
      "minItems": 1,
      "maxItems": 10
    },
    "Deliverable.Name": {
      "x-schema-role": "property",
      "x-schema-direction": "any",
      "title": "Deliverable Name",
      "description": "A user-provided name for this deliverable. Use this to identify deliverables when an envelope has more than one.\n\nMust start with a lowercase letter and contain only lowercase letters, numbers, and underscores.",
      "type": [
        "string",
        "null"
      ],
      "pattern": "^[a-z][a-z0-9_]*$",
      "minLength": 1,
      "maxLength": 32
    },
    "Deliverable.Type": {
      "x-schema-role": "property",
      "x-schema-direction": "any",
      "type": "string",
      "title": "Deliverable Type",
      "enum": [
        "simple",
        "standard"
      ],
      "description": "The type of the deliverable.\n\n- `standard` -- Includes signed documents and an audit log with a certificate of completion.\n- `simple` -- Includes signed documents only, without an audit log.\n"
    },
    "Deliverable.Url": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": [
        "string",
        "null"
      ],
      "title": "Deliverable Url",
      "format": "uri",
      "description": "The URL to download the deliverable once it has been generated. If the deliverable has not yet been generated, this will be `null`.\n\n## Pre-signed URLs (Default)\n\nBy default, this is a short-lived, pre-signed URL that requires no further authentication to download.\n\nThe URL expires after 1 hour. If the link has expired, you can generate a new one by retrieving the deliverable again.\n\n## Authenticated URLs\n\nIf you requested authenticated URLs, for example to achieve HIPAA compliance, the URL must be accessed using the API key, in the same way as other requests to this API.\n\nAuthenticated URLs do not expire.\n"
    },
    "Document.Key": {
      "x-schema-role": "property",
      "x-schema-direction": "any",
      "title": "Document Key",
      "description": "A user-provided identifier for this document within the envelope. Must be unique within the envelope. Use the key to reference this document in other parts of the API.\n\nOnly lowercase letters, numbers, and underscores are allowed. Must start with a letter.\n\nIf not provided, a key is generated automatically.",
      "type": "string",
      "pattern": "^[a-z][a-z0-9_]*$",
      "minLength": 1,
      "maxLength": 32
    },
    "Envelope.CancelReason": {
      "x-schema-role": "property",
      "x-schema-direction": "any",
      "type": [
        "string",
        "null"
      ],
      "title": "Envelope Cancel Reason",
      "description": "An optional explanation for why the envelope was canceled. This is for internal use only and is not shown to recipients.\n\nThe reason is included in the `envelope.canceled` webhook event payload, making it available for your records and automated workflows.\n",
      "minLength": 1,
      "maxLength": 2000
    },
    "Envelope.FailDetail": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "title": "Envelope Fail Detail",
      "description": "A human-readable explanation of what caused the envelope to fail. This detail is included in the `envelope.failed` webhook event payload. Failures are very rare and automatically trigger an alert to the SignatureAPI team.\n"
    },
    "Envelope.Id": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "format": "uuid",
      "title": "Envelope Id",
      "description": "The unique identifier of the envelope, in UUID format."
    },
    "Envelope.Metadata": {
      "x-schema-role": "property",
      "x-schema-direction": "any",
      "type": "object",
      "title": "Envelope Metadata",
      "description": "Set of key-value pairs to store additional information about the envelope. Use metadata to attach internal reference IDs, tracking numbers, or other data that connects envelopes to your systems.\n\nMetadata is included in all API responses and webhook payloads (in the `data.envelope_metadata` field), making it useful for correlating events with your records.\n\nUp to 10 keys are allowed. Keys can be up to 32 characters (letters, digits, and underscores). Values can be up to 1,000 characters.\n\nUse metadata only for ordinary business identifiers that are appropriate to store with an envelope.\n",
      "unevaluatedProperties": false,
      "maxProperties": 10,
      "default": {},
      "additionalProperties": {
        "type": "string",
        "minLength": 1,
        "maxLength": 1000
      },
      "propertyNames": {
        "type": "string",
        "pattern": "^[a-zA-Z0-9_]*$",
        "minLength": 1,
        "maxLength": 32
      }
    },
    "Event.DeliverableEventData": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "object",
      "description": "Data payload for deliverable events. Contains the deliverable identifier, the parent envelope identifier, envelope metadata, deliverable type, name, and the list of included documents.",
      "properties": {
        "envelope_id": {
          "$ref": "#/$defs/Envelope.Id"
        },
        "object_type": {
          "allOf": [
            {
              "$ref": "#/$defs/Event.ObjectType"
            },
            {
              "const": "deliverable"
            }
          ]
        },
        "object_id": {
          "$ref": "#/$defs/Deliverable.Id"
        },
        "envelope_metadata": {
          "$ref": "#/$defs/Envelope.Metadata"
        },
        "deliverable_type": {
          "$ref": "#/$defs/Deliverable.Type"
        },
        "deliverable_name": {
          "$ref": "#/$defs/Deliverable.Name"
        },
        "included_documents": {
          "$ref": "#/$defs/Deliverable.IncludedDocuments"
        }
      },
      "required": [
        "envelope_id",
        "object_type",
        "object_id",
        "envelope_metadata",
        "deliverable_type",
        "deliverable_name",
        "included_documents"
      ]
    },
    "Event.DeliverableFailed": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Deliverable Failed Event",
      "description": "Fired when the signed document fails to generate. The `data.detail` field contains the failure reason.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "deliverable.failed"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.DeliverableEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "$ref": "#/$defs/Deliverable.FailDetail"
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.DeliverableGenerated": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Deliverable Generated Event",
      "description": "Fired when the signed document is generated and available for download. The `data.url` field contains a pre-signed, short-lived download link. If the link expires, retrieve a new one through the Get Deliverable endpoint.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "deliverable.generated"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.DeliverableEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "url": {
                      "$ref": "#/$defs/Deliverable.Url"
                    }
                  },
                  "required": [
                    "url"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.EnvelopeCanceled": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Envelope Canceled Event",
      "description": "Fired when the envelope is canceled through the Cancel Envelope endpoint. The envelope status changes to `canceled`. The `data.reason` field contains the cancellation reason, if one was provided.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "envelope.canceled"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.EnvelopeEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "reason": {
                      "$ref": "#/$defs/Envelope.CancelReason"
                    }
                  },
                  "required": [
                    "reason"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.EnvelopeCompleted": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Envelope Completed Event",
      "description": "Fired when all recipients have completed (for example, signed) the envelope. The envelope status changes from `in_progress` to `completed`.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "envelope.completed"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.EnvelopeEventData"
                }
              ]
            }
          }
        }
      ]
    },
    "Event.EnvelopeCreated": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Envelope Created Event",
      "description": "Fired when a new envelope is created. This is the first event in the envelope lifecycle.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "envelope.created"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.EnvelopeEventData"
                }
              ]
            }
          }
        }
      ]
    },
    "Event.EnvelopeEventData": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "object",
      "description": "Data payload for envelope events. Contains the envelope identifier, object type, and any metadata attached to the envelope.",
      "properties": {
        "envelope_id": {
          "$ref": "#/$defs/Envelope.Id"
        },
        "object_type": {
          "allOf": [
            {
              "$ref": "#/$defs/Event.ObjectType"
            },
            {
              "const": "envelope"
            }
          ]
        },
        "object_id": {
          "$ref": "#/$defs/Envelope.Id"
        },
        "envelope_metadata": {
          "$ref": "#/$defs/Envelope.Metadata"
        }
      },
      "required": [
        "envelope_id",
        "object_type",
        "object_id",
        "envelope_metadata"
      ]
    },
    "Event.EnvelopeFailed": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Envelope Failed Event",
      "description": "Fired when the envelope encounters an error. The envelope status changes to `failed`. The `data.detail` field contains the reason for the failure.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "envelope.failed"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.EnvelopeEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "$ref": "#/$defs/Envelope.FailDetail"
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.EnvelopeStarted": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Envelope Started Event",
      "description": "Fired when the envelope finishes processing and is ready to send to recipients. The envelope status changes from `processing` to `in_progress`.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "envelope.started"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.EnvelopeEventData"
                }
              ]
            }
          }
        }
      ]
    },
    "Event.EventBase": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "description": "Base properties shared by all events. Every event includes a unique identifier and a timestamp recording when the event occurred.",
      "type": "object",
      "properties": {
        "id": {
          "$ref": "#/$defs/Event.Id"
        },
        "timestamp": {
          "$ref": "#/$defs/Event.Timestamp"
        }
      },
      "required": [
        "id",
        "timestamp"
      ]
    },
    "Event.Id": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "description": "Unique identifier for the event. Uses the `evt_` prefix."
    },
    "Event.ObjectType": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "description": "The type of object this event refers to. Indicates whether the event relates to an envelope, recipient, deliverable, or sender.",
      "x-enum-descriptions": {
        "envelope": "The event relates to an envelope.",
        "recipient": "The event relates to a recipient.",
        "deliverable": "The event relates to a deliverable (signed document).",
        "sender": "The event relates to a sender."
      },
      "enum": [
        "envelope",
        "recipient",
        "deliverable",
        "sender"
      ]
    },
    "Event.RecipientAccessed": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Accessed Event",
      "description": "Fired when the recipient enters the signing ceremony. Emitted at most once every 60 seconds per IP address and user agent to reduce duplicates. The `data` includes the recipient's IP address, user agent, and session ID.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.accessed"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "ip": {
                      "$ref": "#/$defs/Recipient.IP"
                    },
                    "user_agent": {
                      "$ref": "#/$defs/Recipient.UserAgent"
                    },
                    "session_id": {
                      "$ref": "#/$defs/Recipient.SessionId"
                    }
                  },
                  "required": [
                    "ip",
                    "user_agent",
                    "session_id"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientCompleted": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Completed Event",
      "description": "Fired when the recipient finishes signing. The recipient status changes to `completed`. The `data` includes the session ID.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.completed"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "session_id": {
                      "$ref": "#/$defs/Recipient.SessionId"
                    }
                  }
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientEventData": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "object",
      "description": "Data payload for recipient events. Contains the recipient identifier, the parent envelope identifier, envelope metadata, and recipient details such as type and key.",
      "properties": {
        "envelope_id": {
          "$ref": "#/$defs/Envelope.Id"
        },
        "object_type": {
          "allOf": [
            {
              "$ref": "#/$defs/Event.ObjectType"
            },
            {
              "const": "recipient"
            }
          ]
        },
        "object_id": {
          "$ref": "#/$defs/Recipient.Id"
        },
        "envelope_metadata": {
          "$ref": "#/$defs/Envelope.Metadata"
        },
        "recipient_type": {
          "$ref": "#/$defs/Recipient.Type"
        },
        "recipient_key": {
          "$ref": "#/$defs/Recipient.Key"
        }
      },
      "required": [
        "envelope_id",
        "object_type",
        "object_id",
        "envelope_metadata",
        "recipient_type",
        "recipient_key"
      ]
    },
    "Event.RecipientFailed": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Failed Event",
      "description": "Fired when the recipient encounters a general failure. The `data.detail` field contains the failure reason.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.failed"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "$ref": "#/$defs/Recipient.FailDetail"
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientHardBounced": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Hard Bounced Event",
      "description": "Fired when the email to the recipient permanently bounces. Common causes include an invalid email address. After a hard bounce, you cannot send additional requests to this recipient without using the Replace Recipient endpoint. The `data.detail` field contains the bounce reason.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.hard_bounced"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "$ref": "#/$defs/Recipient.BounceDetail"
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientIdentityRejected": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Identity Rejected Event",
      "description": "Fired when the identity verification provider does not confirm the recipient's identity. The recipient can retry until the attempt cap is reached. The `data` includes the verification `method`, the `provider`, and the `evidence_reference` the provider left behind.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.identity_rejected"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "method": {
                      "$ref": "#/$defs/Ceremony.IdentityVerificationMethod"
                    },
                    "provider": {
                      "$ref": "#/$defs/Ceremony.IdentityVerificationProvider"
                    },
                    "evidence_reference": {
                      "$ref": "#/$defs/Ceremony.IdentityEvidenceReference"
                    }
                  },
                  "required": [
                    "method",
                    "provider"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientIdentityVerificationStarted": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Identity Verification Started Event",
      "description": "Fired when the recipient is sent to the identity verification provider. Nothing is proven yet at this point. The `data` includes the verification `method` and the `provider` handling the check.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.identity_verification_started"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "method": {
                      "$ref": "#/$defs/Ceremony.IdentityVerificationMethod"
                    },
                    "provider": {
                      "$ref": "#/$defs/Ceremony.IdentityVerificationProvider"
                    }
                  },
                  "required": [
                    "method",
                    "provider"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientIdentityVerified": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Identity Verified Event",
      "description": "Fired when the identity verification provider confirms the recipient's identity. The `data` includes the verification `method`, the `provider`, and the `evidence_reference` the provider left behind.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.identity_verified"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "method": {
                      "$ref": "#/$defs/Ceremony.IdentityVerificationMethod"
                    },
                    "provider": {
                      "$ref": "#/$defs/Ceremony.IdentityVerificationProvider"
                    },
                    "evidence_reference": {
                      "$ref": "#/$defs/Ceremony.IdentityEvidenceReference"
                    }
                  },
                  "required": [
                    "method",
                    "provider"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientRejected": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Rejected Event",
      "description": "Fired when the recipient declines the envelope. The `data.reason` field contains the rejection reason if the recipient provided one. The `data` includes the session ID.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.rejected"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "reason": {
                      "$ref": "#/$defs/Recipient.RejectReason"
                    },
                    "session_id": {
                      "$ref": "#/$defs/Recipient.SessionId"
                    }
                  },
                  "required": [
                    "reason",
                    "session_id"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientReleased": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Released Event",
      "description": "Fired when a recipient is ready to receive a signing request. The recipient status changes to `pending`.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.released"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientReplaced": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Replaced Event",
      "description": "Fired when the recipient is replaced with a new recipient through the Replace Recipient endpoint. The `data` includes the new recipient's ID and name.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.replaced"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "new_recipient_id": {
                      "$ref": "#/$defs/Recipient.Id"
                    },
                    "new_recipient_name": {
                      "$ref": "#/$defs/Recipient.Name"
                    }
                  },
                  "required": [
                    "new_recipient_id",
                    "new_recipient_name"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientResent": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Resent Event",
      "description": "Fired when the signing request is resent to the recipient.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.resent"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientSent": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Sent Event",
      "description": "Fired when the signing request email is delivered to the recipient.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.sent"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientSoftBounced": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Soft Bounced Event",
      "description": "Fired when the email to the recipient temporarily bounces. Common causes include a full mailbox or a temporary server issue. The `data.detail` field contains the bounce reason.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.soft_bounced"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "$ref": "#/$defs/Recipient.BounceDetail"
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.RecipientViewed": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Recipient Viewed Event",
      "description": "Fired after the recipient authenticates and views the documents in the signing ceremony. The `data` includes the session ID.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "recipient.viewed"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.RecipientEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "session_id": {
                      "$ref": "#/$defs/Recipient.SessionId"
                    }
                  },
                  "required": [
                    "session_id"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.SenderCreated": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Sender Created Event",
      "description": "Fired when a verification request is initiated for a sender email address.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "sender.created"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.SenderEventData"
                }
              ]
            }
          }
        }
      ]
    },
    "Event.SenderDeleted": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Sender Deleted Event",
      "description": "Fired when a sender is deleted from the account.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "sender.deleted"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.SenderEventData"
                }
              ]
            }
          }
        }
      ]
    },
    "Event.SenderEventData": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "object",
      "description": "Data payload for sender events. Contains the sender identifier, object type, and the sender's email address.",
      "properties": {
        "object_type": {
          "allOf": [
            {
              "$ref": "#/$defs/Event.ObjectType"
            },
            {
              "const": "sender"
            }
          ]
        },
        "object_id": {
          "$ref": "#/$defs/Sender.Id"
        },
        "email": {
          "$ref": "#/$defs/Sender.Email"
        }
      },
      "required": [
        "object_type",
        "object_id",
        "email"
      ]
    },
    "Event.SenderFailed": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Sender Failed Event",
      "description": "Fired when sender verification fails. The `data.detail` field contains the failure reason, such as an undeliverable verification email.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "sender.failed"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.SenderEventData"
                },
                {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "$ref": "#/$defs/Sender.FailDetail"
                    }
                  },
                  "required": [
                    "detail"
                  ]
                }
              ]
            }
          }
        }
      ]
    },
    "Event.SenderVerified": {
      "x-schema-role": "model",
      "x-schema-direction": "output",
      "title": "Sender Verified Event",
      "description": "Fired when the sender completes email verification.",
      "allOf": [
        {
          "$ref": "#/$defs/Event.EventBase"
        },
        {
          "type": "object",
          "required": [
            "type",
            "data"
          ],
          "properties": {
            "type": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.Type"
                },
                {
                  "const": "sender.verified"
                }
              ]
            },
            "data": {
              "allOf": [
                {
                  "$ref": "#/$defs/Event.SenderEventData"
                }
              ]
            }
          }
        }
      ]
    },
    "Event.Timestamp": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "title": "Event Timestamp",
      "description": "When the event occurred, in ISO 8601 format.",
      "type": "string",
      "format": "date-time"
    },
    "Event.Type": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "description": "The type of the event. Determines the category and the shape of the `data` payload. Event types are grouped into four categories: envelope, recipient, deliverable, and sender.",
      "x-enum-descriptions": {
        "envelope.created": "A new envelope was created.",
        "envelope.started": "The envelope finished processing and is ready to send to recipients.",
        "envelope.completed": "All recipients completed (for example, signed) the envelope.",
        "envelope.failed": "The envelope encountered an error and moved to a failed status.",
        "envelope.canceled": "The envelope was canceled through the Cancel Envelope endpoint.",
        "recipient.released": "The recipient is ready to receive a signing request. Status changed to pending.",
        "recipient.sent": "The signing request email was delivered to the recipient.",
        "recipient.accessed": "The recipient entered the signing ceremony.",
        "recipient.identity_verification_started": "The recipient was sent to the identity verification provider.",
        "recipient.identity_verified": "The identity verification provider confirmed the recipient's identity.",
        "recipient.identity_rejected": "The identity verification provider did not confirm the recipient's identity.",
        "recipient.viewed": "The recipient authenticated and viewed the documents.",
        "recipient.completed": "The recipient finished signing. Status changed to completed.",
        "recipient.soft_bounced": "The email to the recipient temporarily bounced (for example, full mailbox).",
        "recipient.hard_bounced": "The email to the recipient permanently bounced (for example, invalid address).",
        "recipient.rejected": "The recipient declined the envelope.",
        "recipient.failed": "The recipient encountered a general failure.",
        "recipient.replaced": "The recipient was replaced with a new recipient.",
        "recipient.resent": "The signing request was resent to the recipient.",
        "deliverable.generated": "The signed document was generated and is available for download.",
        "deliverable.failed": "The signed document failed to generate.",
        "sender.created": "A verification request was initiated for a sender.",
        "sender.verified": "The sender completed email verification.",
        "sender.failed": "The sender verification failed.",
        "sender.deleted": "The sender was deleted."
      },
      "enum": [
        "envelope.created",
        "envelope.started",
        "envelope.completed",
        "envelope.failed",
        "envelope.canceled",
        "recipient.released",
        "recipient.sent",
        "recipient.accessed",
        "recipient.identity_verification_started",
        "recipient.identity_verified",
        "recipient.identity_rejected",
        "recipient.viewed",
        "recipient.completed",
        "recipient.soft_bounced",
        "recipient.hard_bounced",
        "recipient.rejected",
        "recipient.failed",
        "recipient.replaced",
        "recipient.resent",
        "deliverable.generated",
        "deliverable.failed",
        "sender.created",
        "sender.verified",
        "sender.failed",
        "sender.deleted"
      ]
    },
    "Recipient.BounceDetail": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "title": "Recipient Bounce Detail",
      "description": "A human-readable explanation of why the email bounced. Contains information from the remote email server, such as \"Mailbox Full\" or \"User Unknown.\"\n\nPresent when the recipient status is `soft_bounced` or `hard_bounced`.\n"
    },
    "Recipient.FailDetail": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "title": "Recipient Fail Detail",
      "description": "A human-readable explanation of why the recipient failed. For example, the recipient's email may be on a blocklist.\n\nPresent when the recipient status is `failed`.\n"
    },
    "Recipient.IP": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "title": "Recipient IP Address",
      "description": "The IP address of the recipient when they accessed the ceremony. Captured from the recipient's browser session.\n\nAvailable in `recipient.accessed` events.\n"
    },
    "Recipient.Id": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "title": "Recipient Id",
      "description": "The unique identifier of the recipient. Recipient IDs use the `re_` prefix.\n",
      "type": "string"
    },
    "Recipient.Key": {
      "x-schema-role": "property",
      "x-schema-direction": "any",
      "title": "Recipient Key",
      "description": "A user-provided key that identifies a recipient within an envelope. Use the key to reference this recipient when assigning document places.\n\nThe key must start with a lowercase letter and can contain lowercase letters, numbers, and underscores. Maximum 32 characters.\n",
      "type": "string",
      "pattern": "^[a-z][a-z0-9_]*$",
      "minLength": 1,
      "maxLength": 32
    },
    "Recipient.Name": {
      "x-schema-role": "property",
      "x-schema-direction": "any",
      "type": "string",
      "title": "Recipient Name",
      "description": "The full name of the recipient. Appears in invitation emails and is pre-filled for typed signatures.\n",
      "minLength": 1,
      "maxLength": 500
    },
    "Recipient.RejectReason": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "title": "Recipient Reject Reason",
      "description": "An explanation provided by the recipient for rejecting the envelope. The recipient may optionally enter a reason during the ceremony when they decline to sign.\n\nPresent when the recipient status is `rejected`. May be empty if the recipient did not provide a reason.\n",
      "maxLength": 2000
    },
    "Recipient.SessionId": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "title": "Recipient Session ID",
      "description": "A unique identifier for the recipient's ceremony session. Use this to correlate multiple events from the same session, such as `recipient.accessed`, `recipient.viewed`, and `recipient.completed`.\n"
    },
    "Recipient.Type": {
      "x-schema-role": "property",
      "x-schema-direction": "any",
      "title": "Recipient Type",
      "description": "The type of the recipient. Determines what actions the recipient can perform during the ceremony.\n\n| Type | Description |\n|------|-------------|\n| `signer` | Signs documents. Every envelope must have at least one signing recipient. |\n| `qualified_signer` | Signs with a qualified electronic signature through a qualified trust service provider. |\n| `approver` | Reviews and approves documents without signing. |\n| `preparer` | Fills in document fields on behalf of another party. |\n| `automatic_signer` | The signature is applied automatically by the system. |\n",
      "type": "string",
      "enum": [
        "signer",
        "qualified_signer",
        "approver",
        "preparer",
        "automatic_signer"
      ]
    },
    "Recipient.UserAgent": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "title": "Recipient User Agent",
      "description": "The browser user agent string of the recipient when they accessed the ceremony. Identifies the recipient's browser and operating system.\n\nAvailable in `recipient.accessed` events.\n"
    },
    "Sender.Email": {
      "x-schema-role": "property",
      "x-schema-direction": "any",
      "title": "Sender Email",
      "description": "The email address of the sender. SignatureAPI sends signing request emails to recipients on behalf of this address.",
      "type": "string",
      "format": "email",
      "maxLength": 320
    },
    "Sender.FailDetail": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "title": "Sender Fail Detail",
      "description": "A human-readable explanation of why sender verification failed. Possible reasons include a hard or soft bounce of the verification email, or an internal error."
    },
    "Sender.Id": {
      "x-schema-role": "property",
      "x-schema-direction": "output",
      "type": "string",
      "title": "Sender ID",
      "description": "The unique identifier of the sender."
    }
  }
}