openapi: 3.1.1
info:
  title: Signable API
  description: >
    The Signable API provides secure and efficient access to Signable's
    electronic signature platform. With this RESTful API, you can send documents
    for signature, manage templates, track envelope status, and automate your
    document workflows from within your own applications.
  version: 1.0.0
  contact:
    name: Signable
    email: help@signable.co.uk
  termsOfService: https://www.signable.co.uk/terms-conditions/
  license:
    name: Proprietary
    url: https://www.signable.co.uk/terms-conditions/
servers:
  - url: https://api.signable.co.uk/v1
    description: Production server
security:
  - basicAuth: []
tags:
  - name: Partners
    description: Manage partner integrations.
  - name: Envelopes
    description: Send, track, and manage documents for e-signature.
  - name: Templates
    description: Create and reuse predefined document templates.
  - name: Contacts
    description: Manage contact details for signers and stakeholders.
  - name: Users
    description: Control user accounts and roles.
  - name: Branding
    description: Customize visual and branding settings for emails.
  - name: Settings
    description: Configure account-wide preferences and defaults.
  - name: Webhooks
    description: Receive real-time notifications about document events.
webhooks:
  send-envelope:
    post:
      summary: Envelope sent
      description: >
        This webhook is triggered after an envelope has been successfully
        processed and sent. It delivers information about the envelope, the
        recipient, any additional metadata, and a download URL.
      operationId: receiveSendEnvelopeWebhook
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                envelope_fingerprint:
                  type: string
                  description: A string representing the envelope that was sent
                  example: 584ea8b41b0d4c17a96b967433b211e6
                envelope_documents:
                  type: string
                  description: A JSON string representing the documents within the envelope
                  example: >-
                    [{"document_title":"Untitled
                    document","document_fingerprint":"584ea8b41b0d4c17a96b967433b211e6","document_pdf":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061","document_download":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061"}]
                envelope_download:
                  type: string
                  format: uri
                  description: A URL to download the envelope contents
                  example: >-
                    https://api.signableapi.com/shareable/envelope?t=03cbb315-4f68-400d-a5cc-c2884996d061
                contact_id:
                  type: integer
                  description: The ID of the contact the envelope was sent to
                  example: 14029945
                contact_name:
                  type: string
                  description: The name of the contact the envelope was sent to
                  example: Abby Smith
                contact_email:
                  type: string
                  format: email
                  description: The email address of the contact the envelope was sent to
                  example: abby@signable.co.uk
                action:
                  type: string
                  description: The action taken. Defaults to `send-envelope`.
                  example: send-envelope
                action_date:
                  type: string
                  format: date-time
                  description: The UTC timestamp of when the action occurred
                  example: '2025-06-20T15:50:10+00:00'
                envelope_meta:
                  type: string
                  description: >-
                    A JSON string of any meta information added when sending the
                    envelope
                  example: ''
                envelope_signing_embed:
                  type: string
                  description: An iframe URL for embedded signing, if enabled
                  example: >-
                    <iframe
                    src="https://sign.signable.app/#2KnUUnVQTxtkpV8rmWqem9qXpvaTU2hYLHHyQD7WtdQ"
                    width="100%" height="95%" frameborder="0" style="border: 0;
                    overflow: hidden"></iframe>
              required:
                - envelope_fingerprint
                - envelope_documents
                - envelope_download
                - contact_id
                - contact_name
                - contact_email
                - action
                - action_date
            example:
              envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
              envelope_documents: >-
                [{"document_title":"Untitled
                document","document_fingerprint":"584ea8b41b0d4c17a96b967433b211e6","document_pdf":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061","document_download":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061"}]
              envelope_download: >-
                https://api.signableapi.com/shareable/envelope?t=03cbb315-4f68-400d-a5cc-c2884996d061
              envelope_signing_embed: >-
                <iframe
                src="https://sign.signable.app/#2KnUUnVQTxtkpV8rmWqem9qXpvaTU2hYLHHyQD7WtdQ"
                width="100%" height="95%" frameborder="0" style="border: 0;
                overflow: hidden"></iframe>
              contact_id: 14029945
              contact_name: Abby Smith
              contact_email: abby@signable.co.uk
              action: send-envelope
              action_date: '2025-06-20T15:50:10+00:00'
              envelope_meta: ''
      responses:
        '200':
          description: Acknowledge receipt
  signed-envelope:
    post:
      summary: Envelope signed
      description: >
        This webhook is triggered when a recipient completes signing an
        envelope. It includes detailed information about the envelope, signer,
        documents, custom fields, and signature fingerprint.
      operationId: receiveSignedEnvelopeWebhook
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                envelope_fingerprint:
                  type: string
                  description: A string of the signed envelope
                  example: 584ea8b41b0d4c17a96b967433b211e6
                envelope_documents:
                  type: string
                  description: JSON string of the documents within the envelope
                  example: >-
                    [{"document_title":"Make
                    Tests","document_fingerprint":"584ea8b41b0d4c17a96b967433b211e6","document_pdf":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061","document_download":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061"}]
                envelope_fields:
                  type: string
                  description: JSON string of completed fields in the envelope
                  example: >-
                    [{"field_id":458946901,"field_name":"Untitled","field_type":"text","field_value":"1st
                    Aug"},{"field_id":458946905,"field_name":"Untitled","field_type":"text","field_value":"hiousfdjp"}]
                envelope_download:
                  type: string
                  format: uri
                  description: URL to download the full signed envelope
                  example: >-
                    https://api.signableapi.com/shareable/envelope?t=03cbb315-4f68-400d-a5cc-c2884996d061
                contact_id:
                  type: integer
                  description: ID of the signer
                  example: 7418454
                contact_name:
                  type: string
                  description: Name of the signer
                  example: Abby
                contact_email:
                  type: string
                  format: email
                  description: Email address of the signer
                  example: abby@signable.co.uk
                company_id:
                  type: integer
                  description: ID of the sub-account (company) the envelope belongs to
                  example: 64034
                user_id:
                  type: integer
                  description: Internal user ID associated with the signing action
                  example: 267199
                signature_fingerprint:
                  type: string
                  description: Unique fingerprint identifying the signature event
                  example: 584ea8b41b0d4c17a96b967433b211e6
                client_ip:
                  type: string
                  format: ipv4
                  description: IP address of the device used to sign
                  example: 65.179.58.205
                envelope_meta:
                  type: string
                  description: >-
                    A JSON string of any additional metadata attached to the
                    envelope
                  example: ''
                action:
                  type: string
                  description: The action taken. Defaults to `signed-envelope`.
                  example: signed-envelope
                action_date:
                  type: string
                  format: date-time
                  description: UTC timestamp of when the signing occurred
                  example: '2025-08-01T14:37:47+00:00'
              required:
                - envelope_fingerprint
                - envelope_documents
                - envelope_fields
                - envelope_download
                - contact_id
                - contact_name
                - contact_email
                - action
                - action_date
                - signature_fingerprint
                - user_id
                - client_ip
                - company_id
            example:
              envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
              envelope_documents: >-
                [{"document_title":"Make
                Tests","document_fingerprint":"584ea8b41b0d4c17a96b967433b211e6","document_pdf":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061","document_download":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061"}]
              envelope_fields: >-
                [{"field_id":458946901,"field_name":"Untitled","field_type":"text","field_value":"1st
                Aug"}]
              envelope_download: >-
                https://api.signableapi.com/shareable/envelope?t=03cbb315-4f68-400d-a5cc-c2884996d061
              contact_id: 7418454
              contact_name: Abby
              contact_email: abby@signable.co.uk
              company_id: 64034
              user_id: 267199
              signature_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
              client_ip: 87.177.50.205
              envelope_meta: ''
              action: signed-envelope
              action_date: '2025-08-01T14:37:47+00:00'
      responses:
        '200':
          description: Acknowledge receipt
  cancelled-envelope:
    post:
      summary: Envelope cancelled
      description: >
        This webhook is triggered when an envelope is cancelled before
        completion. It includes the envelope fingerprint, user details, and any
        metadata associated with the envelope.
      operationId: receiveCancelledEnvelopeWebhook
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                envelope_fingerprint:
                  type: string
                  description: A string representing the cancelled envelope
                  example: 584ea8b41b0d4c17a96b967433b211e6
                envelope_title:
                  type: string
                  description: The title of the cancelled envelope
                  example: tagstest - Copy
                action:
                  type: string
                  description: The action taken. Defaults to `cancelled-envelope`.
                  example: cancelled-envelope
                action_date:
                  type: string
                  format: date-time
                  description: The UTC timestamp of when the envelope was cancelled
                  example: '2025-08-06T12:59:03+00:00'
                envelope_meta:
                  type: string
                  description: >-
                    A JSON string of any meta information associated with the
                    envelope
                  example: ''
                company_id:
                  type: integer
                  description: The ID of the company linked to the envelope
                  example: 64034
                user_id:
                  type: integer
                  description: The ID of the user who cancelled the envelope
                  example: 267199
                client_ip:
                  type: string
                  format: ipv4
                  description: >-
                    The IP address of the user or system that triggered the
                    cancellation
                  example: 203.0.113.42
              required:
                - envelope_fingerprint
                - envelope_title
                - action
                - action_date
                - company_id
                - user_id
                - client_ip
            example:
              envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
              envelope_title: tagstest - Copy
              action: cancelled-envelope
              action_date: '2025-08-06T12:59:03+00:00'
              envelope_meta: ''
              company_id: 64034
              user_id: 267199
              client_ip: 203.0.113.42
      responses:
        '200':
          description: Acknowledge receipt
  signed-envelope-complete:
    post:
      summary: Envelope signed & complete
      description: >
        This webhook is triggered when all required parties have completed
        signing an envelope. It includes the envelope fingerprint, documents,
        any captured field data, and a download link.
      operationId: receiveSignedEnvelopeCompleteWebhook
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                envelope_fingerprint:
                  type: string
                  description: A string representing the signed envelope
                  example: 584ea8b41b0d4c17a96b967433b211e6
                envelope_documents:
                  type: string
                  description: >-
                    A JSON string representing the signed documents within the
                    envelope
                  example: >-
                    [{"document_title":"Word
                    Doc","document_fingerprint":"584ea8b41b0d4c17a96b967433b211e6","document_pdf":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061","document_download":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061"}]
                envelope_download:
                  type: string
                  format: uri
                  description: A URL to download the completed envelope
                  example: >-
                    https://api.signableapi.com/shareable/envelope?t=03cbb315-4f68-400d-a5cc-c2884996d061
                envelope_fields:
                  type: string
                  description: A JSON string of captured field values within the envelope
                  example: >-
                    [{"field_id":460133805,"field_name":"Untitled","field_type":"text","field_value":"Test"}]
                envelope_meta:
                  type: string
                  description: >-
                    A JSON string of any meta information associated with the
                    envelope
                  example: ''
                action:
                  type: string
                  description: The action taken. Defaults to `signed-envelope-complete`.
                  example: signed-envelope-complete
                action_date:
                  type: string
                  format: date-time
                  description: The UTC timestamp of when the envelope was fully signed
                  example: '2025-08-07T10:14:33+00:00'
                company_id:
                  type: integer
                  description: The ID of the company associated with the envelope
                  example: 64034
                user_id:
                  type: integer
                  description: The ID of the user who sent or owns the envelope
                  example: 267199
                client_ip:
                  type: string
                  format: ipv4
                  description: The IP address of the client that triggered the completion
                  example: 203.0.113.17
              required:
                - envelope_fingerprint
                - envelope_documents
                - envelope_download
                - envelope_fields
                - action
                - action_date
                - company_id
                - user_id
                - client_ip
            example:
              envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
              envelope_documents: >-
                [{"document_title":"Word
                Doc","document_fingerprint":"584ea8b41b0d4c17a96b967433b211e6","document_pdf":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061","document_download":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061"}]
              envelope_download: >-
                https://api.signableapi.com/shareable/envelope?t=03cbb315-4f68-400d-a5cc-c2884996d061
              envelope_fields: >-
                [{"field_id":460133805,"field_name":"Untitled","field_type":"text","field_value":"Test"}]
              envelope_meta: ''
              action: signed-envelope-complete
              action_date: '2025-08-07T10:14:33+00:00'
              company_id: 64034
              user_id: 267199
              client_ip: 203.0.113.17
      responses:
        '200':
          description: Acknowledge receipt
  rejected-envelope:
    post:
      summary: Envelope rejected
      description: >
        This webhook is triggered when a recipient rejects an envelope. It
        includes details about the envelope, the rejecting contact, and relevant
        metadata.
      operationId: receiveRejectedEnvelopeWebhook
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                action:
                  type: string
                  description: The action taken. Defaults to `rejected-envelope`.
                  example: rejected-envelope
                action_date:
                  type: string
                  format: date-time
                  description: The UTC timestamp of when the action occurred
                  example: '2025-08-07T11:10:39+00:00'
                envelope_fingerprint:
                  type: string
                  description: A string representing the rejected envelope
                  example: 584ea8b41b0d4c17a96b967433b211e6
                document_id:
                  type: integer
                  description: The ID of the document that was rejected
                  example: 0
                document_title:
                  type: string
                  description: The title of the rejected document
                  example: Word Doc
                contact_id:
                  type: integer
                  description: The ID of the contact who rejected the envelope
                  example: 7418454
                contact_name:
                  type: string
                  description: The name of the contact who rejected the envelope
                  example: Abby
                contact_email:
                  type: string
                  format: email
                  description: The email address of the contact who rejected the envelope
                  example: abby@signable.co.uk
                signature_fingerprint:
                  type: string
                  description: >-
                    A fingerprint identifying the signature session that
                    triggered the rejection
                  example: 584ea8b41b0d4c17a96b967433b211e6
                envelope_meta:
                  type: string
                  description: A JSON string of any meta information added to the envelope
                  example: ''
                client_ip:
                  type: string
                  format: ipv4
                  description: The IP address from which the rejection was submitted
                  example: 203.0.113.42
              required:
                - action
                - action_date
                - envelope_fingerprint
                - document_id
                - document_title
                - contact_id
                - contact_name
                - contact_email
                - signature_fingerprint
                - client_ip
      responses:
        '200':
          description: Acknowledge receipt
  opened-envelope:
    post:
      summary: Envelope opened
      description: >
        This webhook is triggered when a recipient opens an envelope. It
        includes basic information about the envelope, the recipient, and
        associated documents.
      operationId: receiveOpenedEnvelopeWebhook
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                action:
                  type: string
                  description: The action taken. Defaults to `opened-envelope`.
                  example: opened-envelope
                action_date:
                  type: string
                  format: date-time
                  description: The UTC timestamp of when the envelope was opened
                  example: '2025-08-07T10:14:26+00:00'
                company_id:
                  type: integer
                  description: The ID of the company that owns the envelope
                  example: 64034
                contact_id:
                  type: integer
                  description: The ID of the contact who opened the envelope
                  example: 7418454
                contact_name:
                  type: string
                  description: The name of the contact who opened the envelope
                  example: Abby
                contact_email:
                  type: string
                  format: email
                  description: The email address of the contact who opened the envelope
                  example: abby@signable.co.uk
                envelope_fingerprint:
                  type: string
                  description: A string identifying the opened envelope
                  example: 584ea8b41b0d4c17a96b967433b211e6
                envelope_documents:
                  type: string
                  description: A stringified JSON array of documents in the envelope
                  example: >-
                    [{"document_title":"Blank Word
                    Doc","document_fingerprint":"584ea8b41b0d4c17a96b967433b211e6","document_pdf":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061","document_download":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061"}]
                envelope_download:
                  type: string
                  format: uri
                  description: A download link for the entire envelope
                  example: >-
                    https://api.signableapi.com/shareable/envelope?t=03cbb315-4f68-400d-a5cc-c2884996d061
                envelope_meta:
                  type: string
                  description: A JSON string of any meta information added to the envelope
                  example: ''
                user_id:
                  type: integer
                  description: The ID of the user associated with this event
                  example: 267199
                client_ip:
                  type: string
                  format: ipv4
                  description: The IP address from which the envelope was opened
                  example: 203.0.113.106
              required:
                - action
                - action_date
                - company_id
                - contact_id
                - contact_name
                - contact_email
                - envelope_fingerprint
                - envelope_documents
                - envelope_download
                - user_id
                - client_ip
      responses:
        '200':
          description: Acknowledge receipt
  bounced-envelope:
    post:
      summary: Envelope email bounced
      description: |
        Triggered when an email to a signer fails to deliver.
      operationId: receiveBouncedEnvelopeWebhook
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                action:
                  type: string
                  description: The action taken. Defaults to `bounced-envelope`.
                  example: bounced-envelope
                action_date:
                  type: string
                  format: date-time
                  description: The UTC timestamp of when the email bounced
                  example: '2025-08-07T11:33:03+00:00'
                company_id:
                  type: integer
                  description: The ID of the company that owns the envelope
                  example: 64034
                envelope_bounce_email:
                  type: string
                  format: email
                  description: The email address that bounced
                  example: abby@singable.co.uk
                envelope_bounce_reason:
                  type: string
                  description: The reason the email failed to deliver
                  example: >-
                    unable to get mx info: failed to get IPs from PTR record:
                    lookup <nil>: unrecognized address
                envelope_bounce_url:
                  type: string
                  format: uri
                  description: A link to view the bounce details
                  example: >-
                    https://app.signable.co.uk/envelope/bounce/584ea8b41b0d4c17a96b967433b211e6/584ea8b41b0d4c17a96b967433b211e6
                envelope_fingerprint:
                  type: string
                  description: A string identifying the bounced envelope
                  example: 584ea8b41b0d4c17a96b967433b211e6
                envelope_meta:
                  type: string
                  description: A JSON string of any meta information added to the envelope
                  example: '{"envelope_title":"Word Doc.docx"}'
                client_ip:
                  type: string
                  format: ipv4
                  description: The IP address from which the bounce originated
                  example: 198.51.100.36
              required:
                - action
                - action_date
                - company_id
                - envelope_bounce_email
                - envelope_bounce_reason
                - envelope_bounce_url
                - envelope_fingerprint
                - client_ip
      responses:
        '200':
          description: Acknowledge receipt
  verify-envelope-widget:
    post:
      summary: Widget completed (Awaiting verification)
      description: >
        This webhook is triggered when a recipient signs an envelope via the
        widget, but has not yet verified. It includes contact and document
        details.
      operationId: receiveVerifyEnvelopeWidgetWebhook
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                action:
                  type: string
                  description: The action taken. Defaults to `verify-envelope-widget`.
                  example: verify-envelope-widget
                action_date:
                  type: string
                  format: date-time
                  description: The UTC timestamp of when the envelope was signed
                  example: '2025-08-07T11:32:54+00:00'
                company_id:
                  type: integer
                  description: The ID of the company that owns the envelope
                  example: 64034
                contact_id:
                  type: integer
                  description: The ID of the contact who signed the envelope
                  example: 8117397
                contact_name:
                  type: string
                  description: The name of the contact who signed the envelope
                  example: Abby
                contact_email:
                  type: string
                  format: email
                  description: The email address of the contact who signed the envelope
                  example: abby@signable.co.uk
                envelope_fingerprint:
                  type: string
                  description: A string identifying the signed envelope
                  example: 584ea8b41b0d4c17a96b967433b211e6
                envelope_documents:
                  type: string
                  description: A stringified JSON array of documents in the envelope
                  example: >-
                    [{"document_fingerprint":"584ea8b41b0d4c17a96b967433b211e6","document_title":"Word
                    Doc","document_download":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061"}]
                envelope_meta:
                  type: string
                  description: A JSON string of any meta information added to the envelope
                  example: '{"envelope_title":"Word Doc"}'
                user_id:
                  type: integer
                  description: The ID of the user associated with this event
                  example: 0
                client_ip:
                  type: string
                  format: ipv4
                  description: The IP address from which the envelope was signed
                  example: 203.0.113.123
              required:
                - action
                - action_date
                - company_id
                - contact_id
                - contact_name
                - contact_email
                - envelope_fingerprint
                - envelope_documents
                - user_id
                - client_ip
      responses:
        '200':
          description: Acknowledge receipt
  verified-envelope-widget:
    post:
      summary: Widget signature verified
      description: >
        This webhook is triggered when a recipient verifies their signed
        envelope through the verification email.  It includes details about the
        contact, documents, and verification.
      operationId: receiveVerifiedEnvelopeWidgetWebhook
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                action:
                  type: string
                  description: The action taken. Defaults to `verified-envelope-widget`.
                  example: verified-envelope-widget
                action_date:
                  type: string
                  format: date-time
                  description: The UTC timestamp of when the envelope was verified
                  example: '2025-08-07T12:10:48+00:00'
                company_id:
                  type: integer
                  description: The ID of the company that owns the envelope
                  example: 64034
                contact_id:
                  type: integer
                  description: The ID of the contact who verified the envelope
                  example: 8117397
                contact_name:
                  type: string
                  description: The name of the contact who verified the envelope
                  example: Abby
                contact_email:
                  type: string
                  format: email
                  description: The email address of the contact who verified the envelope
                  example: abby@signable.co.uk
                envelope_fingerprint:
                  type: string
                  description: A string identifying the verified envelope
                  example: 584ea8b41b0d4c17a96b967433b211e6
                envelope_documents:
                  type: string
                  description: A stringified JSON array of documents in the envelope
                  example: >-
                    [{"document_title":"Word
                    Doc","document_fingerprint":"584ea8b41b0d4c17a96b967433b211e6","document_pdf":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061","document_download":"https://api.signableapi.com/shareable/document?t=03cbb315-4f68-400d-a5cc-c2884996d061"}]
                envelope_download:
                  type: string
                  format: uri
                  description: A download link for the entire envelope
                  example: >-
                    https://api.signableapi.com/shareable/envelope?t=03cbb315-4f68-400d-a5cc-c2884996d061
                envelope_fields:
                  type: string
                  description: >-
                    A stringified JSON array of fields completed during
                    verification
                  example: >-
                    [{"field_id":460176431,"field_name":"Untitled","field_type":"text","field_value":"Abby"}]
                envelope_meta:
                  type: string
                  description: A JSON string of any meta information added to the envelope
                  example: '{"envelope_title":"Word Doc"}'
                signature_fingerprint:
                  type: string
                  description: A string identifying the verification applied
                  example: 584ea8b41b0d4c17a96b967433b211e6
                client_ip:
                  type: string
                  format: ipv4
                  description: The IP address from which the envelope was verified
                  example: 203.0.113.124
              required:
                - action
                - action_date
                - company_id
                - contact_id
                - contact_name
                - contact_email
                - envelope_fingerprint
                - envelope_documents
                - envelope_download
                - signature_fingerprint
                - client_ip
      responses:
        '200':
          description: Acknowledge receipt
  add-template:
    post:
      summary: Template added
      description: >
        This webhook is triggered when a new template is added to the account.
        It includes basic information about the template, including its title
        and fingerprint.
      operationId: receiveAddTemplateWebhook
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                action:
                  type: string
                  description: The action taken. Defaults to `add-template`.
                  example: add-template
                action_date:
                  type: string
                  format: date-time
                  description: The UTC timestamp of when the template was added
                  example: '2025-08-07T12:36:56+00:00'
                company_id:
                  type: integer
                  description: The ID of the company that added the template
                  example: 64034
                template_fingerprint:
                  type: string
                  description: A string identifying the newly added template
                  example: 584ea8b41b0d4c17a96b967433b211e6
                template_title:
                  type: string
                  description: The title of the added template
                  example: Signable Contract
                template_page_total:
                  type: integer
                  description: The number of pages in the template
                  example: 5
                template_pages:
                  type: array
                  description: An array of page metadata (if available)
                  items:
                    type: object
                template_thumbnails:
                  type: array
                  description: An array of thumbnail URLs (if available)
                  items:
                    type: string
                    format: uri
                client_ip:
                  type: string
                  format: ipv4
                  description: The IP address from which the template was added
                  example: 203.0.113.150
              required:
                - action
                - action_date
                - company_id
                - template_fingerprint
                - template_title
                - template_page_total
                - template_pages
                - template_thumbnails
                - client_ip
      responses:
        '200':
          description: Acknowledge receipt
  add-contact:
    post:
      summary: Contact added
      description: >
        This webhook is triggered when a new contact is added to the account. It
        includes basic information about the contact and the company that added
        them.
      operationId: receiveAddContactWebhook
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                action:
                  type: string
                  description: The action taken. Defaults to `add-contact`.
                  example: add-contact
                action_date:
                  type: string
                  format: date-time
                  description: The UTC timestamp of when the contact was added
                  example: '2025-08-07T12:41:52+00:00'
                company_id:
                  type: integer
                  description: The ID of the company that added the contact
                  example: 64034
                contact_id:
                  type: integer
                  description: The ID of the newly added contact
                  example: 17499057
                contact_name:
                  type: string
                  description: The name of the contact
                  example: Abby
                contact_email:
                  type: string
                  format: email
                  description: The email address of the contact
                  example: abby@signable.co.uk
                client_ip:
                  type: string
                  format: ipv4
                  description: The IP address from which the contact was added
                  example: 203.0.113.150
              required:
                - action
                - action_date
                - company_id
                - contact_id
                - contact_name
                - contact_email
                - client_ip
      responses:
        '200':
          description: Acknowledge receipt
  add-user:
    post:
      summary: User added
      description: >
        This webhook is triggered when a new user is added to the account.  It
        includes identifying information about the user and their assigned role.
      operationId: receiveAddUserWebhook
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                action:
                  type: string
                  description: The action taken. Defaults to `add-user`.
                  example: add-user
                action_date:
                  type: string
                  format: date-time
                  description: The UTC timestamp of when the user was added
                  example: '2025-08-07T13:03:39+00:00'
                company_id:
                  type: integer
                  description: The ID of the company the user was added to
                  example: 215769
                user_id:
                  type: integer
                  description: The ID of the new user
                  example: 840786
                user_name:
                  type: string
                  description: The name of the new user
                  example: Abby
                user_email:
                  type: string
                  format: email
                  description: The email address of the new user
                  example: abby@signable.co.uk
                role:
                  type: string
                  description: The assigned role of the new user
                  example: user
                client_ip:
                  type: string
                  format: ipv4
                  description: The IP address from which the user was added
                  example: 203.0.113.150
              required:
                - action
                - action_date
                - company_id
                - user_id
                - user_name
                - user_email
                - role
                - client_ip
      responses:
        '200':
          description: Acknowledge receipt
paths:
  /companies:
    get:
      summary: List sub-accounts
      description: >
        Returns a paginated list of sub-accounts associated with the Partner
        account.


        This endpoint is only available to Signable Partners.
      operationId: getCompanies
      x-contract-group: partner
      tags:
        - Partners
      parameters:
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/LimitParam'
      responses:
        '200':
          description: Successful response containing a list of sub-accounts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyListResponse'
              examples:
                success:
                  $ref: '#/components/examples/CompanyListResponseExample'
    post:
      summary: Create a sub-account
      description: |
        Creates a new sub-account under the Partner account.

        This endpoint is only available to Signable Partners.
      operationId: createCompany
      x-contract-skip: true
      tags:
        - Partners
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyCreateRequest'
            examples:
              success:
                $ref: '#/components/examples/CompanyCreateRequestExample'
      responses:
        '200':
          description: Sub-account successfully created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyCreateResponse'
              examples:
                success:
                  $ref: '#/components/examples/CompanyCreateResponseExample'
  /companies/{company_id}:
    get:
      summary: Get a sub-account
      description: >
        Returns details about a specific sub-account associated with the Partner
        account.


        This endpoint is only available to Signable Partners.
      operationId: getCompany
      x-contract-group: partner
      tags:
        - Partners
      parameters:
        - name: company_id
          in: path
          required: true
          description: Unique identifier of the sub-account.
          schema:
            type: string
            example: '196735'
      responses:
        '200':
          description: Details of the requested sub-account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyGetResponse'
              examples:
                success:
                  $ref: '#/components/examples/CompanyGetResponseExample'
    put:
      summary: Update a sub-account
      description: >
        Updates details of a specific sub-account associated with the
        authenticated Partner account.


        This endpoint is only available to Signable Partners.
      operationId: updateCompany
      x-contract-skip: true
      tags:
        - Partners
      parameters:
        - name: company_id
          in: path
          required: true
          description: Unique identifier of the sub-account to update.
          schema:
            type: string
            example: '214821'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyUpdateRequest'
            examples:
              success:
                $ref: '#/components/examples/CompanyUpdateRequestExample'
      responses:
        '200':
          description: Sub-account updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyUpdateResponse'
              examples:
                success:
                  $ref: '#/components/examples/CompanyUpdateResponseExample'
    delete:
      summary: Delete a sub-account
      description: >
        Permanently deletes a sub-account (company) from the Partner account.


        This operation is irreversible and can only be performed by Signable
        Partners.
      operationId: deleteCompany
      x-contract-skip: true
      tags:
        - Partners
      parameters:
        - name: company_id
          in: path
          required: true
          description: Unique identifier of the sub-account to delete.
          schema:
            type: string
            example: '214821'
      responses:
        '200':
          description: Sub-account deleted successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyDeleteResponse'
              examples:
                success:
                  $ref: '#/components/examples/CompanyDeleteResponseExample'
  /usage:
    get:
      summary: View usage for all sub-accounts
      description: >
        Retrieves usage data for all sub-accounts under a Partner account,
        including current and previous period comparisons.


        This endpoint is only available to Signable Partners.
      operationId: getCompaniesUsage
      x-contract-group: partner
      tags:
        - Partners
      parameters:
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/LimitParam'
      responses:
        '200':
          description: Usage data successfully returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerUsageResponse'
              examples:
                success:
                  $ref: '#/components/examples/PartnerUsageResponseExample'
  /envelopes:
    get:
      summary: List envelopes
      description: >
        Returns a paginated list of envelopes. You can filter by status or
        search by title using optional query parameters.
      operationId: listEnvelopes
      x-contract-group: public
      tags:
        - Envelopes
      parameters:
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/LimitParam'
        - in: query
          name: status
          schema:
            type: string
            enum:
              - processing
              - failed
              - draft
              - sent
              - signed
              - cancelled
              - expired
              - rejected
              - verify
          description: >-
            Filter by a single envelope status. [See Envelope status values for
            more info →](../../envelope-status)
        - in: query
          name: q
          schema:
            type: string
          description: >
            Case-insensitive keyword filter on the envelope title. Matches
            partial words. Null values return unfiltered results.
      responses:
        '200':
          description: A paginated list of envelopes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeListResponse'
              examples:
                envelopeList:
                  $ref: '#/components/examples/EnvelopeListResponseExample'
    post:
      summary: Send an envelope
      description: >
        Creates and queues a new envelope for sending, using one of the
        following methods for attaching documents:


        **Option 1 – Upload or link a document directly in the request body**


        **Option 2 – Reference a single Signable template**


        **Option 3 – Reference multiple Signable templates**


        ⚠️ **Note:** Only one document input method can be used per request.
      operationId: sendEnvelope
      x-contract-skip: true
      tags:
        - Envelopes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/EnvelopeSendDocRequest'
                - $ref: '#/components/schemas/EnvelopeSendTemplateRequest'
                - $ref: '#/components/schemas/EnvelopeSendTemplateMultipleRequest'
            examples:
              with_document:
                $ref: '#/components/examples/EnvelopeSendDocRequestExample'
              with_template:
                $ref: '#/components/examples/EnvelopeSendTemplateRequestExample'
              with_template_multiple:
                $ref: >-
                  #/components/examples/EnvelopeSendTemplateMultipleRequestExample
      responses:
        '202':
          description: Envelope successfully created and queued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeSendResponse'
              examples:
                with_document:
                  $ref: '#/components/examples/EnvelopeSendDocResponseExample'
                with_template:
                  $ref: '#/components/examples/EnvelopeSendTemplateResponseExample'
                with_template_multiple:
                  $ref: >-
                    #/components/examples/EnvelopeSendTemplateMultipleResponseExample
  /envelopes/{envelope_fingerprint}:
    get:
      summary: Get envelope details
      description: >
        Returns the full details of a specific envelope, including document
        data, party information, field data, and envelope history.
      operationId: getEnvelope
      x-contract-group: public
      tags:
        - Envelopes
      parameters:
        - name: envelope_fingerprint
          in: path
          required: true
          description: Unique identifier of the envelope.
          schema:
            type: string
      responses:
        '200':
          description: Details of the requested envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeDetailResponse'
              examples:
                envelopeDetails:
                  $ref: '#/components/examples/EnvelopeGetResponseExample'
    delete:
      summary: Delete an envelope
      description: >
        Deletes an envelope. Only available for envelopes in `draft`, `signed`,
        `expired` or `cancelled` status. No notification email is sent to
        signers when an envelope is deleted.
      operationId: deleteEnvelope
      x-contract-skip: true
      tags:
        - Envelopes
      parameters:
        - name: envelope_fingerprint
          in: path
          required: true
          description: The unique identifier of the envelope.
          schema:
            type: string
      responses:
        '200':
          description: Envelope successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeDeleteResponse'
              examples:
                success:
                  $ref: '#/components/examples/EnvelopeDeleteResponseExample'
  /envelopes/{envelope_fingerprint}/remind:
    put:
      summary: Send envelope reminder
      description: >
        Sends a reminder email to all outstanding signing parties for the
        specified envelope. If automatic reminders are enabled, this also resets
        the countdown timer for the next scheduled reminder.
      operationId: remindEnvelope
      x-contract-skip: true
      tags:
        - Envelopes
      parameters:
        - name: envelope_fingerprint
          in: path
          required: true
          description: The unique identifier of the envelope to remind signers for.
          schema:
            type: string
      responses:
        '200':
          description: Reminder successfully triggered
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeRemindResponse'
              examples:
                success:
                  $ref: '#/components/examples/EnvelopeRemindResponseExample'
  /envelopes/{envelope_fingerprint}/cancel:
    put:
      summary: Cancel an envelope
      description: >
        Cancels a `sent` envelope. A cancellation email will be sent to all
        signing parties, and the envelope will no longer be available for
        signing.
      operationId: cancelEnvelope
      x-contract-skip: true
      tags:
        - Envelopes
      parameters:
        - name: envelope_fingerprint
          in: path
          required: true
          description: The unique identifier of the envelope to cancel.
          schema:
            type: string
      responses:
        '200':
          description: Envelope successfully cancelled
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeCancelResponse'
              examples:
                success:
                  $ref: '#/components/examples/EnvelopeCancelResponseExample'
  /envelopes/{envelope_fingerprint}/expire:
    put:
      summary: Expire an envelope
      description: >
        Expires a `sent` envelope, preventing any further signing interaction.
        No notification email is sent to signers when an envelope expires.
      operationId: expireEnvelope
      x-contract-skip: true
      tags:
        - Envelopes
      parameters:
        - name: envelope_fingerprint
          in: path
          required: true
          description: The unique identifier of the envelope.
          schema:
            type: string
      responses:
        '200':
          description: Envelope successfully expired
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnvelopeExpireResponse'
              examples:
                success:
                  $ref: '#/components/examples/EnvelopeExpireResponseExample'
  /templates:
    get:
      summary: List templates
      description: |
        Retrieves a paginated list of all templates available in your account.
      operationId: listTemplates
      x-contract-group: public
      tags:
        - Templates
      parameters:
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/LimitParam'
      responses:
        '200':
          description: Templates list returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplatesListResponse'
              examples:
                default:
                  $ref: '#/components/examples/TemplatesListResponseExample'
  /templates/{template_fingerprint}:
    get:
      summary: Get template
      description: Retrieves metadata and configuration for a single template.
      operationId: getTemplate
      x-contract-group: public
      tags:
        - Templates
      parameters:
        - name: template_fingerprint
          in: path
          required: true
          description: The unique fingerprint of the template
          schema:
            type: string
            example: b786a173554cc06371248caf0b250704
      responses:
        '200':
          description: Template details returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplateGetResponse'
              examples:
                default:
                  $ref: '#/components/examples/TemplateGetResponseExample'
    delete:
      summary: Delete a template
      description: Deletes a template by its fingerprint.
      operationId: deleteTemplate
      x-contract-skip: true
      tags:
        - Templates
      parameters:
        - name: template_fingerprint
          in: path
          required: true
          description: The unique fingerprint of the template to delete
          schema:
            type: string
            example: e0b3a9cbd4a6ff2cb57cfca161a39309
      responses:
        '200':
          description: Template deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplateDeleteResponse'
              examples:
                default:
                  $ref: '#/components/examples/TemplateDeleteResponseExample'
  /contacts:
    get:
      summary: List contacts
      description: >
        Retrieves a paginated list of all contacts. Use `offset` and `limit`
        query parameters to control pagination.
      operationId: listContacts
      x-contract-group: public
      tags:
        - Contacts
      parameters:
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/LimitParam'
      responses:
        '200':
          description: Contact list returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactsListResponse'
              examples:
                default:
                  $ref: '#/components/examples/ContactsListResponseExample'
    post:
      summary: Create a contact
      description: Adds a new contact to your contact list.
      operationId: createContact
      x-contract-skip: true
      tags:
        - Contacts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactCreateRequest'
            examples:
              default:
                $ref: '#/components/examples/ContactCreateRequestExample'
      responses:
        '200':
          description: Contact created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactCreateResponse'
              examples:
                default:
                  $ref: '#/components/examples/ContactCreateResponseExample'
  /contacts/{contact_id}:
    get:
      summary: Get a contact
      description: Retrieves details of a single contact by `contact_id`.
      operationId: getContact
      x-contract-group: public
      tags:
        - Contacts
      parameters:
        - name: contact_id
          in: path
          required: true
          description: The unique ID of the contact
          schema:
            type: integer
            example: 17224150
      responses:
        '200':
          description: Contact details returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactGetResponse'
              examples:
                default:
                  $ref: '#/components/examples/ContactGetResponseExample'
    put:
      summary: Update a contact
      description: Updates a contact's name or email address.
      operationId: updateContact
      x-contract-skip: true
      tags:
        - Contacts
      parameters:
        - name: contact_id
          in: path
          required: true
          schema:
            type: integer
            example: 17224150
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactUpdateRequest'
            examples:
              default:
                $ref: '#/components/examples/ContactUpdateRequestExample'
      responses:
        '200':
          description: Contact updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactUpdateResponse'
              examples:
                default:
                  $ref: '#/components/examples/ContactUpdateResponseExample'
    delete:
      summary: Delete a contact
      description: Deletes a contact by their `contact_id`.
      operationId: deleteContact
      x-contract-skip: true
      tags:
        - Contacts
      parameters:
        - name: contact_id
          in: path
          required: true
          schema:
            type: integer
            example: 17224150
      responses:
        '200':
          description: Contact deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactDeleteResponse'
              examples:
                default:
                  $ref: '#/components/examples/ContactDeleteResponseExample'
  /contacts/{contact_id}/envelopes:
    get:
      summary: List envelopes for a contact
      description: >
        Returns a paginated list of all envelopes that the contact is a
        recipient of. Each envelope includes basic metadata such as its current
        status, timestamps, and optional signed PDF link.
      operationId: listContactEnvelopes
      x-contract-group: public
      tags:
        - Contacts
      parameters:
        - name: contact_id
          in: path
          required: true
          description: The unique ID of the contact
          schema:
            type: integer
            example: 17225983
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/LimitParam'
      responses:
        '200':
          description: List of envelopes the contact is associated with
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactEnvelopesListResponse'
              examples:
                default:
                  $ref: '#/components/examples/ContactEnvelopesListResponseExample'
  /users:
    get:
      summary: List users
      description: >
        Retrieves a paginated list of all users in your account. You can control
        pagination using the `offset` and `limit` query parameters.
      operationId: listUsers
      x-contract-group: public
      tags:
        - Users
      parameters:
        - $ref: '#/components/parameters/OffsetParam'
        - $ref: '#/components/parameters/LimitParam'
      responses:
        '200':
          description: Users list returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersListResponse'
              examples:
                default:
                  $ref: '#/components/examples/UsersListResponseExample'
    post:
      summary: Create a user
      description: >
        Adds a new user to your account. You must provide the user’s name, email
        address, and their role ID.
      operationId: createUser
      x-contract-skip: true
      tags:
        - Users
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserCreateRequest'
            examples:
              default:
                $ref: '#/components/examples/UserCreateRequestExample'
      responses:
        '200':
          description: User created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserCreateResponse'
              examples:
                default:
                  $ref: '#/components/examples/UserCreateResponseExample'
  /users/{user_id}:
    get:
      summary: Get a user
      description: >
        Retrieves the details of a single user by their unique `user_id`. The
        response includes the user's name, email, role, and timestamps.
      operationId: getUser
      x-contract-group: public
      tags:
        - Users
      parameters:
        - name: user_id
          in: path
          required: true
          description: The unique ID of the user to retrieve
          schema:
            type: integer
            example: 836499
      responses:
        '200':
          description: User details returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserGetResponse'
              examples:
                default:
                  $ref: '#/components/examples/UserGetResponseExample'
    put:
      summary: Update a user
      description: >
        Updates an existing user by their `user_id`. You can change their name,
        email address, or assigned role.
      operationId: updateUser
      x-contract-skip: true
      tags:
        - Users
      parameters:
        - name: user_id
          in: path
          required: true
          description: The unique ID of the user to update
          schema:
            type: integer
            example: 837154
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserUpdateRequest'
            examples:
              default:
                $ref: '#/components/examples/UserUpdateRequestExample'
      responses:
        '200':
          description: User updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserUpdateResponse'
              examples:
                default:
                  $ref: '#/components/examples/UserUpdateResponseExample'
    delete:
      summary: Delete a user
      description: >
        Removes a user from your account using their `user_id`. The response
        confirms the deletion and includes the user's basic details.
      operationId: deleteUser
      x-contract-skip: true
      tags:
        - Users
      parameters:
        - name: user_id
          in: path
          required: true
          description: The unique ID of the user to delete
          schema:
            type: integer
            example: 837154
      responses:
        '200':
          description: User deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserDeleteResponse'
              examples:
                default:
                  $ref: '#/components/examples/UserDeleteResponseExample'
  /branding:
    get:
      summary: Get branding settings
      description: >
        Returns your company's current branding settings, including any uploaded
        logo and primary colour. These settings control how Signable emails and
        signing pages appear to your signers.
      operationId: getBranding
      x-contract-group: public
      tags:
        - Branding
      responses:
        '200':
          description: Branding settings returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandingResponse'
              examples:
                default:
                  $ref: '#/components/examples/BrandingResponseExample'
    put:
      summary: Update branding settings
      description: >
        Update your account's branding settings. This includes the logo and the
        primary colour used on emails and signing pages.
      operationId: updateBranding
      x-contract-skip: true
      tags:
        - Branding
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrandingPutRequest'
            examples:
              default:
                $ref: '#/components/examples/BrandingPutRequestExample'
      responses:
        '200':
          description: Branding updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandingPutResponse'
              examples:
                default:
                  $ref: '#/components/examples/BrandingPutResponseExample'
  /branding/emails:
    get:
      summary: List branding emails
      operationId: getBrandingEmails
      x-contract-group: public
      tags:
        - Branding
      responses:
        '200':
          description: A list of branding email templates
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandingEmailsResponse'
              examples:
                success:
                  $ref: '#/components/examples/BrandingEmailsResponseExample'
  /branding/emails/{branding_email_type}:
    put:
      summary: Update a branding email
      description: >
        You can include variables like `{company name}` and `{contract title}`
        in your email body to personalise content. [See the full list of
        supported variables →](../email-variables.md)
      operationId: updateBrandingEmail
      x-contract-skip: true
      tags:
        - Branding
      parameters:
        - name: branding_email_type
          in: path
          required: true
          description: The type of branding email to update
          schema:
            type: string
            enum:
              - email-cancelled
              - email-rejected
              - email-reminder
              - email-reminder-password
              - email-send
              - email-send-password
              - email-signed
              - email-widget-verify
            example: email-cancelled
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BrandingEmailPutRequest'
            examples:
              default:
                $ref: '#/components/examples/BrandingEmailPutRequestExample'
      responses:
        '200':
          description: Branding email successfully updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BrandingEmailPutResponse'
              examples:
                default:
                  $ref: '#/components/examples/BrandingEmailPutResponseExample'
  /settings:
    get:
      summary: Get company settings
      description: >
        Your Signable account settings control how documents are delivered,
        signed, and managed across your team.

        This section of the API lets you retrieve and update your company's
        signing preferences, email notification rules, signature formats, and
        more—giving you full control over how your documents behave.

        Settings can be accessed via the API or in the Signable web app under
        Company Settings >
        [Preferences](https://signable.app/company-settings/preferences).
      operationId: listSettings
      x-contract-group: public
      tags:
        - Settings
      responses:
        '200':
          description: Company settings returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SettingsResponse'
              examples:
                default:
                  $ref: '#/components/examples/SettingsResponseExample'
    put:
      summary: Update company settings
      operationId: updateSettings
      x-contract-skip: true
      tags:
        - Settings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSettingsRequest'
            examples:
              default:
                $ref: '#/components/examples/SettingsPutRequestExample'
      responses:
        '200':
          description: Settings updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateSettingsResponse'
              examples:
                updated:
                  $ref: '#/components/examples/SettingsPutResponseExample'
  /webhooks:
    get:
      summary: List webhooks
      description: >
        Retrieves a paginated list of all webhooks currently registered to
        receive event notifications. Supports offset and limit for pagination.
        Webhooks include metadata about creation, update, and suspension state.
      operationId: listWebhooks
      x-contract-group: public
      tags:
        - Webhooks
      parameters:
        - name: offset
          in: query
          required: false
          description: Pagination offset
          schema:
            type: integer
            example: 0
        - name: limit
          in: query
          required: false
          description: Number of webhooks to return
          schema:
            type: integer
            example: 10
      responses:
        '200':
          description: Successfully returned a list of webhooks
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookListResponse'
              examples:
                default:
                  $ref: '#/components/examples/WebhookListResponseExample'
    post:
      summary: Create a webhook
      description: >
        Registers a new webhook that will be triggered when a specific event
        occurs. You must provide a valid `webhook_url` and a supported
        `webhook_type`. The created webhook will immediately be eligible to
        receive matching notifications.
      operationId: createWebhook
      x-contract-skip: true
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookRequest'
            examples:
              default:
                $ref: '#/components/examples/WebhookRequestExample'
      responses:
        '200':
          description: Webhook successfully created
          headers:
            Location:
              description: The URL of the newly created webhook resource
              schema:
                type: string
                format: uri
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookPostResponse'
              examples:
                createdWebhook:
                  $ref: '#/components/examples/WebhookPostResponseExample'
  /webhooks/{webhook_id}:
    get:
      summary: Get a webhook
      description: >
        Retrieves details of a specific webhook by its unique `webhook_id`. The
        response includes the current status and metadata of the webhook.
      operationId: getWebhook
      x-contract-group: public
      tags:
        - Webhooks
      parameters:
        - name: webhook_id
          in: path
          required: true
          description: The ID of the webhook to retrieve
          schema:
            type: integer
            example: 152691
      responses:
        '200':
          description: Webhook details returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookGetResponse'
              examples:
                default:
                  $ref: '#/components/examples/WebhookGetResponseExample'
    put:
      summary: Update a webhook
      description: >
        Updates the webhook identified by `webhook_id`. You may change
        the`webhook_url` and/or the `webhook_type`.
      operationId: updateWebhook
      x-contract-skip: true
      tags:
        - Webhooks
      parameters:
        - name: webhook_id
          in: path
          required: true
          description: The ID of the webhook to update
          schema:
            type: integer
            example: 152691
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookRequest'
            examples:
              default:
                $ref: '#/components/examples/WebhookRequestExample'
      responses:
        '200':
          description: Webhook updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookPutResponse'
              examples:
                updated:
                  $ref: '#/components/examples/WebhookPutResponseExample'
    delete:
      summary: Delete a webhook
      description: >
        Deletes the webhook identified by `webhook_id`. Once removed, the
        webhook will no longer receive event notifications.
      operationId: deleteWebhook
      x-contract-skip: true
      tags:
        - Webhooks
      parameters:
        - name: webhook_id
          in: path
          required: true
          description: The ID of the webhook to delete
          schema:
            type: integer
            example: 152691
      responses:
        '200':
          description: Webhook successfully deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookDeleteResponse'
              examples:
                deleted:
                  $ref: '#/components/examples/WebhookDeleteResponseExample'
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >
        Authenticate using HTTP Basic Authentication. Use your API key as the
        username and the password can be anything. For ease of use we recommend
        "x".
  parameters:
    OffsetParam:
      name: offset
      in: query
      required: false
      description: The index of the first envelope to retrieve.
      schema:
        type: integer
        example: 0
        default: 0
    LimitParam:
      name: limit
      in: query
      required: false
      description: >
        The maximum number of envelopes to return. If more than `50` is
        requested, `10` will be returned instead.
      schema:
        type: integer
        minimum: 1
        maximum: 50
        default: 10
  schemas:
    Company:
      type: object
      description: Represents an individual sub-account created under a Partner account.
      required:
        - company_id
        - company_name
        - company_email
        - company_api_key
        - company_created
      properties:
        company_id:
          type: string
          example: '196735'
          description: Unique identifier for the sub-account.
        company_name:
          type: string
          example: ExampleSubAccount_1
          description: The display name of the sub-account.
        company_email:
          type: string
          format: email
          example: abby+1@signable.co.uk
          description: The registered email address associated with the sub-account.
        company_api_key:
          type: string
          example: 9c66b129752046***********
          description: The API key used to authenticate as this sub-account.
        company_created:
          type: string
          format: date-time
          example: 2024-09-03T09:03:12+0000
          description: The date and time when the sub-account was created.
    CompanyListResponse:
      type: object
      description: >-
        Represents a paginated list of sub-accounts associated with a Partner
        account.
      required:
        - http
        - offset
        - limit
        - total_companies
        - companies
      properties:
        http:
          type: integer
          example: 200
          description: HTTP status code indicating the result of the API request.
        offset:
          type: integer
          example: 0
          description: >-
            The number of items skipped before starting to collect the result
            set.
        limit:
          type: integer
          example: 10
          description: The maximum number of sub-accounts returned in the current response.
        total_companies:
          type: string
          example: '2'
          description: >-
            The total number of sub-accounts available to the authenticated
            Partner.
        companies:
          type: array
          description: A list of sub-accounts returned in the current response.
          items:
            $ref: '#/components/schemas/Company'
    CompanyCreateRequest:
      type: object
      required:
        - company_name
        - user_name
        - user_email
      properties:
        company_name:
          type: string
          example: Example Inc
          description: The name of the new sub-account.
        user_name:
          type: string
          example: Abby Signs
          description: The full name of the initial user for the sub-account.
        user_email:
          type: string
          format: email
          example: abby@example.com
          description: The email address of the user to be created within the sub-account.
    CompanyCreateResponse:
      type: object
      required:
        - http
        - message
        - href
        - company_id
        - company_name
        - company_email
        - api_key
        - user_id
        - user_name
        - user_email
        - user_href
        - company_added
      properties:
        http:
          type: integer
          example: 200
          description: HTTP status code indicating the result of the request.
        message:
          type: string
          example: Example Inc has been added as a company
          description: A confirmation message.
        href:
          type: string
          format: uri
          example: https://api.signable.co.uk/v1/companies/214821
          description: URL to the newly created sub-account resource.
        company_id:
          type: string
          example: '214821'
          description: Unique identifier of the newly created sub-account.
        company_name:
          type: string
          example: Example Inc
          description: Name of the newly created sub-account.
        company_email:
          type: string
          format: email
          example: abby@example.com
          description: Registered email address for the sub-account.
        api_key:
          type: string
          example: 9c66b129752046***********
          description: API key associated with the sub-account.
        user_id:
          type: string
          example: '838931'
          description: ID of the user created within the sub-account.
        user_name:
          type: string
          example: Abby Signs
          description: Full name of the user created in the sub-account.
        user_email:
          type: string
          format: email
          example: abby@example.com
          description: Email address of the created user.
        user_href:
          type: string
          format: uri
          example: https://api.signable.co.uk/v1/users/838931
          description: URL to the created user resource.
        company_added:
          type: string
          format: date-time
          example: 2025-07-21T08:16:51+0000
          description: Timestamp when the sub-account was created.
    CompanyUsage:
      type: object
      description: >-
        Represents document usage for a sub-account in a specific month and
        year.
      properties:
        month:
          type: string
          example: July
          description: The calendar month this usage relates to.
        year:
          type: string
          example: '2025'
          description: The year this usage relates to.
        sent:
          type: string
          example: '1'
          description: The number of documents sent during the specified month.
    CompanyGetResponse:
      allOf:
        - type: object
          required:
            - http
          properties:
            http:
              type: integer
              description: HTTP status code of the response.
              example: 200
        - $ref: '#/components/schemas/Company'
        - type: object
          required:
            - company_usage
          properties:
            company_usage:
              type: array
              description: Monthly usage summary for the sub-account.
              items:
                $ref: '#/components/schemas/CompanyUsage'
    CompanyUpdateRequest:
      type: object
      description: Payload to update a sub-account. At least one property must be provided.
      properties:
        company_name:
          type: string
          example: Apple Tree Ltd
          description: New name of the sub-account.
        company_email:
          type: string
          format: email
          example: abby@appletree.com
          description: New email address of the sub-account.
      anyOf:
        - required:
            - company_name
        - required:
            - company_email
    CompanyUpdateResponse:
      type: object
      required:
        - http
        - message
        - href
        - company_id
        - company_name
        - company_email
        - company_updated
      properties:
        http:
          type: integer
          example: 200
          description: HTTP status code indicating the result of the request.
        message:
          type: string
          example: Apple Tree Ltd has been updated.
          description: Confirmation message indicating the update was successful.
        href:
          type: string
          format: uri
          example: https://api.signable.co.uk/v1/company/214821
          description: URL to the updated sub-account resource.
        company_id:
          type: integer
          example: 214821
          description: Unique identifier of the updated sub-account.
        company_name:
          type: string
          example: Apple Tree Ltd
          description: Updated name of the sub-account.
        company_email:
          type: string
          format: email
          example: abby@appletree.com
          description: Updated email address of the sub-account.
        company_updated:
          type: string
          format: date-time
          example: 2025-07-21T08:30:27+0000
          description: Timestamp of when the sub-account was last updated.
    CompanyDeleteResponse:
      type: object
      required:
        - http
        - message
        - company_id
        - company_name
        - company_email
      properties:
        http:
          type: integer
          example: 200
          description: HTTP status code indicating the result of the request.
        message:
          type: string
          example: Apple Tree Ltd has been removed.
          description: >-
            Confirmation message indicating that the sub-account has been
            deleted.
        company_id:
          type: string
          example: '214821'
          description: Identifier of the deleted sub-account.
        company_name:
          type: string
          example: Apple Tree Ltd
          description: Name of the deleted sub-account.
        company_email:
          type: string
          format: email
          example: abby@appletree.com
          description: Email address of the deleted sub-account.
    PartnerUsageSummary:
      type: object
      required:
        - company_id
        - company_name
        - current_usage
        - previous_usage
        - company_created
      properties:
        company_id:
          type: string
          example: '196735'
          description: Unique identifier of the sub-account.
        company_name:
          type: string
          example: ExampleSubAccount_1
          description: Name of the sub-account.
        current_usage:
          type: string
          example: '1'
          description: Number of documents sent in the current reporting period.
        previous_usage:
          type: string
          example: '6'
          description: Number of documents sent in the previous reporting period.
        company_created:
          type: string
          format: date-time
          example: 2024-09-03T09:03:12+0000
          description: Timestamp when the sub-account was created.
    PartnerUsageResponse:
      type: object
      required:
        - http
        - offset
        - limit
        - total_companies
        - current_start_date
        - current_end_date
        - previous_start_date
        - previous_end_date
        - companies
      properties:
        http:
          type: integer
          example: 200
          description: HTTP status code of the response.
        offset:
          type: integer
          example: 0
          description: Number of sub-accounts skipped before the returned result set.
        limit:
          type: integer
          example: 10
          description: Maximum number of sub-accounts returned in the response.
        total_companies:
          type: string
          example: '2'
          description: Total number of sub-accounts available.
        current_start_date:
          type: string
          format: date-time
          example: 2024-12-01T00:00:00+0000
          description: Start of the current reporting period.
        current_end_date:
          type: string
          format: date-time
          example: 2025-01-01T00:00:00+0000
          description: End of the current reporting period.
        previous_start_date:
          type: string
          format: date-time
          example: 2024-11-01T00:00:00+0000
          description: Start of the previous reporting period.
        previous_end_date:
          type: string
          format: date-time
          example: 2024-12-01T00:00:00+0000
          description: End of the previous reporting period.
        companies:
          type: array
          description: List of usage stats per sub-account.
          items:
            $ref: '#/components/schemas/PartnerUsageSummary'
    EnvelopeUnsignedSummary:
      type: object
      required:
        - envelope_fingerprint
        - envelope_title
        - envelope_status
        - envelope_redirect_url
        - envelope_created
        - envelope_sent
        - envelope_processed
        - envelope_all_at_once_enabled
        - envelope_requires_otp
      properties:
        envelope_fingerprint:
          type: string
          description: Unique identifier for the envelope.
          example: 584ea8b41b0d4c17a96b967433b211e6
        envelope_title:
          type: string
          description: The title of the envelope.
          example: Another Test
        envelope_status:
          type: string
          description: >-
            Current status of the envelope. [See Envelope status values for more
            info →](../../envelope-status)
          enum:
            - processing
            - failed
            - draft
            - sent
            - signed
            - cancelled
            - expired
            - rejected
            - verify
          example: draft
        envelope_redirect_url:
          type:
            - string
            - 'null'
          description: >-
            Redirect URL after signing. If no redirect is set, this may be null
            or an empty string "".
          example: https://www.example.com
        envelope_created:
          type: string
          format: date-time
          description: Timestamp when the envelope was created (ISO 8601).
          example: 2025-07-07T11:30:27+0000
        envelope_sent:
          type:
            - string
            - 'null'
          format: date-time
          description: Timestamp when the envelope was sent. Null if not yet sent.
          example: null
        envelope_processed:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Timestamp when the envelope was processed. Null if not yet
            processed.
          example: null
        envelope_all_at_once_enabled:
          type: boolean
          description: >
            If true, the envelope is sent to all parties at the same time. If
            false, the envelope is sent to parties one at a time, starting with
            the first.

            For more info on "One at a time" signing sequence, see [Setting the
            signing
            sequence](https://help.signable.app/article/191-setting-the-signing-sequence)
          example: true
        envelope_requires_otp:
          type: boolean
          description: >
            Whether a one-time-password (OTP) verification is enabled for this
            envelope.

            For more info on OTPs, see [Enabling Two-Factor Authentication for
            Signers](https://help.signable.app/article/208-adding-a-one-time-password-to-an-envelope)
          example: false
    EnvelopePartyBase:
      type: object
      required:
        - party_id
        - party_title
        - party_mobile_last4
        - party_password
      properties:
        party_id:
          type: string
          description: Unique identifier for the party in the envelope.
          example: '45631119'
        party_title:
          type: string
          description: Label for the party, typically their name.
          example: Abby Signable
        party_mobile_last4:
          type:
            - string
            - 'null'
          description: Last 4 digits of the party’s mobile number (if OTP is enabled).
          example: null
        party_password:
          type:
            - string
            - 'null'
          description: Password assigned for accessing the envelope, if applicable.
          example: Test123
    EnvelopeParty:
      allOf:
        - $ref: '#/components/schemas/EnvelopePartyBase'
    EnvelopeSignedPdfLink:
      type:
        - string
        - 'null'
      format: uri
      description: Direct download link to the signed PDF (if the envelope is signed).
      example: >-
        https://api.signableapi.com/shareable/envelope?t=71afe41f-b99f-42e7-9a06-7f4070df010f
    EnvelopeSignedSummary:
      allOf:
        - $ref: '#/components/schemas/EnvelopeUnsignedSummary'
        - type: object
          required:
            - envelope_parties
          properties:
            envelope_parties:
              type: array
              items:
                $ref: '#/components/schemas/EnvelopeParty'
            envelope_signed_pdf:
              $ref: '#/components/schemas/EnvelopeSignedPdfLink'
    EnvelopeListResponse:
      type: object
      required:
        - http
        - offset
        - limit
        - total_envelopes
        - envelopes
      properties:
        http:
          type: integer
          description: HTTP status code of the response.
          example: 200
        offset:
          type: integer
          description: The index of the first envelope in the result set.
          example: 0
        limit:
          type: integer
          description: The number of envelopes returned in this response.
          example: 10
        total_envelopes:
          type: string
          description: The total number of envelopes matching the query.
          example: '3'
        envelopes:
          type: array
          items:
            $ref: '#/components/schemas/EnvelopeSignedSummary'
    EnvelopeSendPartyDoc:
      type: object
      required:
        - party_name
        - party_email
        - party_role
      properties:
        party_name:
          type: string
          description: Full name of the party.
          example: Abby Signers
        party_email:
          type: string
          format: email
          description: Email address of the party.
          example: abby@signable.co.uk
        party_role:
          type: string
          description: >
            Role tag corresponding to tags in the document, or 'copy' for
            non-signing parties. Signer tags **must** start with the string
            `signer`.
          example: signer1
        party_message:
          type: string
          description: Optional message included in the email sent to the party.
          example: Please sign as soon as you can.
        party_mobile:
          type: string
          description: >-
            Mobile number in E.164 format (required for signers if
            `envelope_requires_otp` is true).
          example: '+447510417059'
        party_password:
          type: string
          description: >-
            Custom password for accessing the envelope (used only if
            `envelope_password_protect` is true).
          example: secret123
    EnvelopeSendDocument:
      oneOf:
        - type: object
          required:
            - document_title
            - document_url
          properties:
            document_title:
              type: string
              description: Title of the document for internal use and audit trail.
              example: Test Agreement
            document_url:
              type: string
              format: uri
              description: URL to the hosted document (PDF, Word, or Excel).
              example: https://yellow-della-30.tiiny.site/Tenancy-Contract-2025-v2.pdf
        - type: object
          required:
            - document_title
            - document_file_content
            - document_file_name
          properties:
            document_title:
              type: string
              description: Title of the document for internal use and audit trail.
              example: Test Agreement
            document_file_content:
              type: string
              format: byte
              description: Base64-encoded file content.
              example: JVBERi0xLjQKJdPr6...Zgo2MDE3MwolJUVPRgo=
            document_file_name:
              type: string
              description: >-
                Filename with extension, only `.pdf`, `.docx` or `.xlsx` are
                accepted.
              example: contract.pdf
    EnvelopeSendDocRequest:
      type: object
      required:
        - envelope_title
        - envelope_parties
        - envelope_documents
      properties:
        envelope_title:
          type: string
          description: Title of the envelope.
          example: Ashbrook Road 10/06/25
        user_id:
          type: integer
          description: >
            ID of the user sending the envelope. If omitted, it won’t be linked
            to a user and email notifications will be sent to the company email
            address.
          example: 838180
        envelope_redirect_url:
          type: string
          format: uri
          description: >
            Where to redirect the signer after completion. Defaults to
            Signable’s confirmation page if not provided.
          example: https://www.example.com
        envelope_all_at_once_enabled:
          type: boolean
          description: >
            If true, sends to all parties at once. If false, sends sequentially
            (one-at-a-time).
          example: false
        envelope_requires_otp:
          type: boolean
          description: >
            Enables one-time-password (OTP) signing for all signers. Requires
            `party_mobile` and disallows `envelope_password_protect`.
          example: true
        envelope_password_protect:
          type: boolean
          description: >
            Enables password protection. System generates a password or use
            `party_password` per party.
          example: false
        envelope_auto_expire_hours:
          type: integer
          minimum: 12
          description: Number of hours before the envelope expires automatically.
          example: 144
        envelope_auto_remind_hours:
          type: integer
          minimum: 12
          description: Frequency in hours for automatic reminder emails to signers.
          example: 72
        envelope_meta:
          type: object
          description: Custom metadata stored alongside the envelope.
          additionalProperties: true
          example:
            internal_id: ABC123
            VIP: false
        envelope_parties:
          type: array
          description: >
            List of parties involved in the envelope.

            Each party can be a signer or a copy recipient.

            If `envelope_all_at_once_enabled` is set to `false`, signers will be
            notified sequentially based on the order they appear in this array.

            Copy recipients (with role `copy`) are notified only after all
            signers have completed their actions.
          items:
            $ref: '#/components/schemas/EnvelopeSendPartyDoc'
        envelope_documents:
          type: array
          description: >-
            List of documents to be sent in the envelope. Each record must
            either include a URL to the file, or a combination of base64-encoded
            content and filename.
          items:
            $ref: '#/components/schemas/EnvelopeSendDocument'
    EnvelopeSendPartyTemplate:
      type: object
      required:
        - party_name
        - party_email
        - party_role
        - party_id
      properties:
        party_name:
          type: string
          example: Alex Mitchell
        party_email:
          type: string
          format: email
          example: abby+alex@signable.co.uk
        party_id:
          type: string
          description: ID of the party as defined in the template.
          example: '20748256'
        party_role:
          type: string
          enum:
            - signer
            - copy
          description: Role in the document.
          example: signer
        party_message:
          type: string
          description: Optional message included in the email sent to the party.
          example: Hello Alex, Please review and sign.
        party_mobile:
          type: string
          description: >-
            Mobile number in E.164 format (required for signers if
            `envelope_requires_otp` is true).
          example: '+447510417059'
        party_password:
          type: string
          description: >-
            Custom password for accessing the envelope (used only if
            `envelope_password_protect` is true).
          example: secret123
    EnvelopeSendTemplate:
      type: object
      required:
        - document_title
        - document_template_fingerprint
      properties:
        document_title:
          type: string
          example: TC 2025 v2
        document_template_fingerprint:
          type: string
          description: Unique identifier of the Signable template to use.
          example: 28f9add86f25028df2eee9adee866aba
        document_merge_fields:
          type: array
          description: Values to populate merge fields within the template.
          items:
            type: object
            required:
              - field_id
              - field_value
            properties:
              field_id:
                type: string
                description: ID of the merge field as defined in the template.
                example: '454958773'
              field_value:
                type: string
                description: Text value to populate the merge field in the envelope.
                example: Note that breakables are not included in rent cost
    EnvelopeSendTemplateRequest:
      type: object
      required:
        - envelope_title
        - envelope_parties
        - envelope_documents
      properties:
        envelope_title:
          type: string
          description: Title of the envelope.
          example: Melbourne Road 23/06/25
        user_id:
          type: integer
          description: >
            ID of the user sending the envelope. If omitted, it won’t be linked
            to a user and email notifications will be sent to the company email
            address.
          example: 819622
        envelope_redirect_url:
          type: string
          format: uri
          description: >
            Where to redirect the signer after completion. Defaults to
            Signable’s confirmation page if not provided.
          example: https://www.example.com
        envelope_all_at_once_enabled:
          type: boolean
          description: >
            If true, sends to all parties at once. If false, sends sequentially
            (one-at-a-time).
          example: true
        envelope_requires_otp:
          type: boolean
          description: >
            Enables one-time-password (OTP) signing for all signers. Requires
            `party_mobile` and disallows `envelope_password_protect`.
          example: true
        envelope_password_protect:
          type: boolean
          description: >
            Enables password protection. System generates a password or use
            `party_password` per party.
          example: false
        envelope_auto_expire_hours:
          type: integer
          description: Number of hours until the envelope expires.
          example: 144
        envelope_auto_remind_hours:
          type: integer
          description: Frequency in hours to send signer reminders.
          example: 72
        envelope_meta:
          type: object
          description: Custom metadata stored alongside the envelope.
          additionalProperties: true
          example:
            internal_id: ABC123
            VIP: false
        envelope_parties:
          type: array
          description: >
            List of parties involved in the envelope. Each party can be a signer
            or a copy recipient. If `envelope_all_at_once_enabled` is set to
            `false`, signers will be notified sequentially based on the order
            they appear in this array. Copy recipients (with role `copy`) are
            notified only after all signers have completed their actions.
          items:
            $ref: '#/components/schemas/EnvelopeSendPartyTemplate'
        envelope_documents:
          type: array
          items:
            $ref: '#/components/schemas/EnvelopeSendTemplate'
    EnvelopeSendPartyTemplateMultipleDocuments:
      type: object
      required:
        - party_id
        - document_template_fingerprint
      properties:
        party_id:
          type: string
          description: >
            The unique ID of the party as defined in the associated Signable
            template. This is used to map the envelope party to their role in a
            specific document.
          example: '20748256'
        document_template_fingerprint:
          type: string
          description: >
            The fingerprint of the document template the party should be
            assigned to. This allows fine-grained control over which parties are
            included in which documents when sending from a multi-document
            template.
          example: 28f9add86f25028df2eee9adee866aba
    EnvelopeSendPartyTemplateMultiple:
      type: object
      required:
        - party_name
        - party_email
        - party_role
        - party_documents
      properties:
        party_name:
          type: string
          example: Alex Mitchell
        party_email:
          type: string
          format: email
          example: abby+alex@signable.co.uk
        party_documents:
          type: array
          description: >-
            A list of documents that this party is assigned to within the
            envelope.
          items:
            $ref: '#/components/schemas/EnvelopeSendPartyTemplateMultipleDocuments'
        party_role:
          type: string
          enum:
            - signer
            - copy
          description: Role in the document.
          example: signer
        party_message:
          type: string
          description: Optional message included in the email sent to the party.
          example: Hello Alex, Please review and sign.
        party_mobile:
          type: string
          description: >-
            Mobile number in E.164 format (required for signers if
            `envelope_requires_otp` is true).
          example: '+447510417059'
        party_password:
          type: string
          description: >-
            Custom password for accessing the envelope (used only if
            `envelope_password_protect` is true).
          example: secret123
    EnvelopeSendTemplateMultipleRequest:
      type: object
      required:
        - envelope_title
        - envelope_parties
        - envelope_documents
      properties:
        envelope_title:
          type: string
          description: Title of the envelope.
          example: Barnsley Road 21/04/25
        user_id:
          type: integer
          description: >
            ID of the user sending the envelope. If omitted, it won’t be linked
            to a user and email notifications will be sent to the company email
            address.
          example: 819622
        envelope_redirect_url:
          type: string
          format: uri
          description: >
            Where to redirect the signer after completion. Defaults to
            Signable’s confirmation page if not provided.
          example: https://www.example.com
        envelope_all_at_once_enabled:
          type: boolean
          description: >
            If true, sends to all parties at once. If false, sends sequentially
            (one-at-a-time).
          example: true
        envelope_requires_otp:
          type: boolean
          description: >
            Enables one-time-password (OTP) signing for all signers. Requires
            `party_mobile` and disallows `envelope_password_protect`.
          example: true
        envelope_password_protect:
          type: boolean
          description: >
            Enables password protection. System generates a password or use
            `party_password` per party.
          example: false
        envelope_auto_expire_hours:
          type: integer
          description: Number of hours until the envelope expires.
          example: 144
        envelope_auto_remind_hours:
          type: integer
          description: Frequency in hours to send signer reminders.
          example: 72
        envelope_meta:
          type: object
          description: Custom metadata stored alongside the envelope.
          additionalProperties: true
          example:
            internal_id: ABC123
            VIP: false
        envelope_parties:
          type: array
          description: >
            List of parties involved in the envelope. Each party can be a signer
            or a copy recipient. If `envelope_all_at_once_enabled` is set to
            `false`, signers will be notified sequentially based on the order
            they appear in this array. Copy recipients (with role `copy`) are
            notified only after all signers have completed their actions.
          items:
            $ref: '#/components/schemas/EnvelopeSendPartyTemplateMultiple'
        envelope_documents:
          type: array
          items:
            $ref: '#/components/schemas/EnvelopeSendTemplate'
    EnvelopeSendResponse:
      type: object
      required:
        - http
        - message
        - href
        - envelope_title
        - envelope_fingerprint
        - envelope_queued
        - envelope_parties
      properties:
        http:
          type: integer
          description: HTTP status code indicating success.
          example: 202
        message:
          type: string
          description: A human-readable message confirming the envelope is queued.
          example: >-
            Your envelope with title Ashbrook Road 10/06/25 will be processed
            and sent out.
        href:
          type: string
          format: uri
          description: URL to retrieve envelope details.
          example: >-
            https://api.signable.co.uk/v1/envelopes/584ea8b41b0d4c17a96b967433b211e6
        envelope_title:
          type: string
          description: Title of the envelope that was submitted.
          example: Ashbrook Road 10/06/25
        envelope_fingerprint:
          type: string
          description: Unique identifier (hash) for the envelope.
          example: 584ea8b41b0d4c17a96b967433b211e6
        envelope_signing_embed:
          type: string
          description: >
            An embeddable HTML `<iframe>` snippet that renders the signing page
            within your application.

            This field is **only returned if embed signing has been enabled on
            your account** by the Signable Support team.

            To request access, please [contact
            us](https://www.signable.co.uk/contact).


            ⚠️ **Notes**

            - This field is only available when sending envelopes using
            templates (single or multiple).

            - This field is only returned in the POST response, it will not be
            returned in GET `/envelopes/{envelope_fingerprint}`.
          example: >
            <iframe
            src="https://sign.signable.app/#yXqPrm7HVOaiQUNM4NZI34BocfDWB69lf68lHq90R0s"
            width="100%" height="95%" frameborder="0" style="border: 0;
            overflow: hidden"></iframe>
        envelope_password_protect:
          type: boolean
          description: Indicates if password protection was enabled on the envelope.
          example: false
        envelope_requires_otp:
          type: boolean
          description: Indicates if one-time-password verification was enabled.
          example: true
        envelope_redirect_url:
          type: string
          format: uri
          description: URL the signer will be redirected to after completing the envelope.
          example: https://www.example.com
        envelope_queued:
          type: string
          format: date-time
          description: Timestamp when the envelope was successfully queued.
          example: 2025-07-16T09:58:21+0000
        envelope_all_at_once_enabled:
          type: boolean
          description: >-
            Whether the envelope was sent to all parties simultaneously (`true`)
            or sequentially (`false`).
          example: false
        envelope_parties:
          type: array
          description: >-
            List of parties associated with the envelope, including signer and
            copy recipients.
          items:
            type: object
            properties:
              party_id:
                type: string
                description: Unique identifier for the party.
                example: '45831671'
              party_title:
                type: string
                description: Name of the party.
                example: Alex Mitchell
              party_mobile_last4:
                type:
                  - string
                  - 'null'
                description: >-
                  Last 4 digits of the party’s mobile number (if OTP is
                  enabled).
                example: '7059'
              party_password:
                type:
                  - string
                  - 'null'
                description: Password for party access if password protection was enabled.
                example: null
    EnvelopeDetailParty:
      allOf:
        - $ref: '#/components/schemas/EnvelopePartyBase'
        - type: object
          required:
            - contact_id
            - contact_email
            - party_status
            - party_signature_type
            - party_role
          properties:
            contact_id:
              type: string
              description: ID of the contact linked to the party.
              example: '17225983'
            contact_email:
              type: string
              description: Email address of the party.
              example: abby@signable.co.uk
            party_status:
              type: string
              enum:
                - pending
                - in progress
                - signed
              description: Status of the party's signing progress.
              example: in progress
            party_signature_type:
              type: string
              description: >-
                Indicates how the party will sign the envelope. Only `remote`
                value is supported.
              const: remote
              example: remote
            party_role:
              type: string
              enum:
                - signer
                - copy
              description: >-
                Role of the party, they are either a signer or they are copied
                into the document with read-only permission.
              example: signer
    EnvelopeField:
      type: object
      required:
        - field_id
        - field_title
        - field_type
        - field_value
        - party_id
      properties:
        field_id:
          type: string
          description: Unique identifier for the field.
          example: '452902787'
        field_title:
          type: string
          description: The label or title of the field.
          example: First Name
        field_type:
          type: string
          enum:
            - text
            - date
            - checkbox
            - upload
            - dropdown
          description: Type of the field. Signature fields are not returned.
          example: text
        field_value:
          type: string
          description: Value filled in the field. May be empty.
          example: Abby Sackson
        party_id:
          type: string
          description: ID of the party this field is assigned to.
          example: '45631119'
        field_merge:
          type:
            - string
            - 'null'
          description: Merge field label used to pre-fill values.
          example: Sender Name
    EnvelopeDocument:
      type: object
      required:
        - document_fingerprint
        - document_title
        - document_page_total
        - document_pdf_url
        - document_thumbnails
        - document_pages
        - document_fields
      properties:
        document_fingerprint:
          type: string
          description: Unique identifier for the document.
          example: 8ab4248168761318178b5c747c643a27
        document_title:
          type: string
          description: Title of the document.
          example: Sample Tenancy Contract
        document_page_total:
          type: string
          description: Total number of pages in the document.
          example: '2'
        document_pdf_url:
          type: string
          format: uri
          description: Direct download link to the original PDF.
          example: >-
            https://docs.signable.co.uk/original/8ab4248168761318178b5c747c643a27.pdf
        document_thumbnails:
          type: array
          description: List of thumbnail image URLs for the document pages.
          items:
            type: string
            format: uri
          example:
            - >-
              https://docs.signable.co.uk/small/8ab4248168761318178b5c747c643a27-0.jpg
            - >-
              https://docs.signable.co.uk/small/8ab4248168761318178b5c747c643a27-1.jpg
        document_pages:
          type: array
          description: List of full-size image URLs for the document pages.
          items:
            type: string
            format: uri
          example:
            - >-
              https://docs.signable.co.uk/large/8ab4248168761318178b5c747c643a27-0.jpg
            - >-
              https://docs.signable.co.uk/large/8ab4248168761318178b5c747c643a27-1.jpg
        document_fields:
          type: array
          description: List of fields assigned to parties in the document.
          items:
            $ref: '#/components/schemas/EnvelopeField'
    EnvelopeHistoryEvent:
      type: object
      required:
        - history_detail
        - history_ip
        - history_user_agent
        - history_date
      properties:
        history_detail:
          type: string
          description: Description of the event that occurred.
          example: Sent the envelope to Abby Signable (abby@signable.co.uk) for signing
        history_ip:
          type: string
          description: IP address from where the action was triggered.
          example: 147.147.97.34
        history_user_agent:
          type: string
          description: Browser or device info from where the event occurred.
          example: >-
            Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
            like Gecko) Chrome/137.0.0.0 Safari/537.36
        history_date:
          type: string
          format: date-time
          description: Date and time when the event occurred.
          example: 2025-07-08T15:02:48+0000
    EnvelopeDetailResponse:
      allOf:
        - $ref: '#/components/schemas/EnvelopeUnsignedSummary'
        - type: object
          required:
            - http
            - envelope_parties
            - envelope_documents
            - envelope_history
          properties:
            http:
              type: integer
              description: HTTP status code of the response.
              example: 200
            envelope_parties:
              type: array
              items:
                $ref: '#/components/schemas/EnvelopeDetailParty'
            envelope_documents:
              type: array
              items:
                $ref: '#/components/schemas/EnvelopeDocument'
            envelope_signed_pdf:
              $ref: '#/components/schemas/EnvelopeSignedPdfLink'
            envelope_history:
              type: array
              items:
                $ref: '#/components/schemas/EnvelopeHistoryEvent'
            envelope_meta:
              type: object
              description: >
                Optional metadata to associate with the envelope. These
                key-value pairs are stored by Signable and returned in the
                response and all envelope related webhooks. Useful for attaching
                internal IDs, status flags, tags, or any contextual information
                relevant to your system.
              additionalProperties: true
              example:
                internal_id: ABC123
                VIP: false
    EnvelopeDeleteResponse:
      type: object
      required:
        - http
        - message
        - envelope_fingerprint
        - envelope_title
        - envelope_status
      properties:
        http:
          type: integer
          example: 200
          description: HTTP status code of the response.
        message:
          type: string
          example: The envelope has been deleted
          description: Human-readable confirmation message.
        envelope_fingerprint:
          type: string
          example: 584ea8b41b0d4c17a96b967433b211e6
          description: Unique identifier for the deleted envelope.
        envelope_title:
          type: string
          example: Industrial Contract
          description: Title of the envelope at the time of deletion.
        envelope_status:
          type: string
          const: deleted
          description: The new status of the envelope after deletion.
          example: deleted
    EnvelopeRemindResponse:
      type: object
      required:
        - http
        - message
        - envelope_fingerprint
        - envelope_title
        - envelope_all_at_once_enabled
      properties:
        http:
          type: integer
          example: 200
          description: HTTP status code of the response.
        message:
          type: string
          example: The signing parties for this envelope have been reminded.
          description: Human-readable status message.
        envelope_fingerprint:
          type: string
          example: 584ea8b41b0d4c17a96b967433b211e6
          description: Unique fingerprint of the envelope.
        envelope_title:
          type: string
          example: 17 John Street Tenancy Contract - 25th Jun 2025
          description: The title of the envelope at the time of the reminder.
        envelope_all_at_once_enabled:
          type: boolean
          example: true
          description: Indicates if the envelope is configured for all-at-once signing.
    EnvelopeCancelResponse:
      type: object
      required:
        - http
        - message
        - envelope_fingerprint
        - envelope_title
        - envelope_status
        - envelope_processed
      properties:
        http:
          type: integer
          example: 200
          description: HTTP status code of the response.
        message:
          type: string
          example: The envelope has been cancelled
          description: Human-readable confirmation message.
        envelope_fingerprint:
          type: string
          example: 584ea8b41b0d4c17a96b967433b211e6
          description: Unique identifier for the cancelled envelope.
        envelope_title:
          type: string
          example: Contract Settlement
          description: Title of the envelope at the time of cancellation.
        envelope_status:
          type: string
          const: cancelled
          description: The new status of the envelope after cancellation.
          example: cancelled
        envelope_processed:
          type: string
          format: date-time
          example: 2025-07-14T13:34:34+0000
          description: Timestamp when the cancellation was processed.
    EnvelopeExpireResponse:
      type: object
      required:
        - http
        - message
        - envelope_fingerprint
        - envelope_title
        - envelope_status
      properties:
        http:
          type: integer
          example: 200
          description: HTTP status code of the response.
        message:
          type: string
          example: The envelope has been deleted
          description: Human-readable confirmation message.
        envelope_fingerprint:
          type: string
          example: 584ea8b41b0d4c17a96b967433b211e6
          description: Unique identifier for the expired envelope.
        envelope_title:
          type: string
          example: Test Envelope
          description: Title of the envelope at the time of deletion.
        envelope_status:
          type: string
          const: deleted
          description: The new status of the envelope after deletion.
          example: deleted
    MergeField:
      type: object
      properties:
        field_id:
          type: string
          description: Internal field identifier.
          example: '450927743'
        field_merge:
          type: string
          description: >
            A short label for the merge field, shown to the sender during the
            "Add fields & preview" step when preparing an envelope for sending.
          example: Name of Sender
        field_type:
          type: string
          description: >-
            This will always be `text`, due to merge functionality only being
            available for text field type.
          const: text
          example: text
    TemplateParty:
      type: object
      properties:
        party_id:
          type: string
          example: '20459705'
        party_name:
          type: string
          example: Party
        party_merge_fields:
          type: array
          description: >
            Template fields that can optionally be pre-filled with text by the
            sender to personalise the document before sending.


            - If a merge field is filled in during sending, it will appear as
            read-only for the signer.

            - If left empty, the signer associated with the party ID in this
            object will be able to complete the field themselves.
          items:
            $ref: '#/components/schemas/MergeField'
    TemplateSummary:
      type: object
      properties:
        template_id:
          type: string
          description: Internal identifier.
          example: '53690003'
        template_fingerprint:
          type: string
          description: The unique ID used to identify this template.
          example: b786a173554cc06371248caf0b250704
        template_title:
          type: string
          description: The name of the template.
          example: Sample Contract
        template_page_total:
          type: string
          description: The total number of pages in the template.
          example: '1'
        template_in_progress:
          type: string
          description: >-
            The number of envelopes currently in progress that use this
            template.
          example: '3'
        template_parties_total:
          type: string
          description: The number of signing parties included in the template.
          example: '1'
        template_widget_url:
          type: string
          format: uri
          description: The direct URL to the hosted signing widget for this template.
          example: https://sign.signable.app/#/widget/VG7Tsd3y6X
        template_widget_embed:
          type: string
          description: A script snippet for embedding the signing widget into a webpage.
          example: >-
            <iframe src='https://sign.signable.app/#/widget/VG7Tsd3y6X'
            frameborder='0' style='border:0;width:100%;height:100vh;'
            scrolling='yes'></iframe>
        template_pdf_url:
          type: string
          format: uri
          description: >-
            A direct link to download the original uploaded PDF used in the
            template.
          example: >-
            https://docs.signable.co.uk/original/b786a173554cc06371248caf0b250704.pdf
        template_thumbnails:
          type: array
          items:
            type: string
            format: uri
          description: An array of URLs to thumbnail images for each page of the template.
        template_pages:
          type: array
          items:
            type: string
            format: uri
          description: An array of URLs to full-size images of each page in the template.
        template_uploaded:
          type: string
          format: date-time
          description: The date and time the template was uploaded (in ISO 8601 format).
          example: 2025-07-01T08:40:38+0000
        template_parties:
          type: array
          items:
            $ref: '#/components/schemas/TemplateParty'
          description: >-
            A list of the parties assigned to the template, including the merge
            fields linked to each party.
    TemplatesListResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        offset:
          type: integer
          example: 0
        limit:
          type: integer
          example: 10
        total_templates:
          type: string
          example: '1'
        templates:
          type: array
          items:
            $ref: '#/components/schemas/TemplateSummary'
    TemplateGetResponse:
      allOf:
        - type: object
          properties:
            http:
              type: integer
              example: 200
        - $ref: '#/components/schemas/TemplateSummary'
    TemplateDeleteResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        message:
          type: string
          example: Sample Tenancy Contract has been removed from your template list.
        template_id:
          type: string
          example: '53890528'
        tempate_fingerprint:
          type: string
          example: e0b3a9cbd4a6ff2cb57cfca161a39309
        tempate_title:
          type: string
          example: Sample Tenancy Contract
    Contact:
      type: object
      properties:
        contact_id:
          type: string
          example: '17224073'
        contact_name:
          type: string
          example: Buffy The Vampire Slayer
        contact_email:
          type: string
          format: email
          example: buffy@sunnydale.com
        contact_outstanding_documents:
          type: string
          example: '0'
        contact_created:
          type: string
          format: date-time
          example: 2025-07-07T09:54:08+0000
    ContactsListResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        offset:
          type: integer
          example: 0
        limit:
          type: integer
          example: 50
        total_contacts:
          type: string
          example: '3'
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/Contact'
    ContactCreateRequest:
      type: object
      required:
        - contact_name
        - contact_email
      properties:
        contact_name:
          type: string
          example: Hanz Zimmer
        contact_email:
          type: string
          format: email
          example: hanz.zimmer@music.com
    ContactCreateResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        message:
          type: string
          example: Hanz Zimmer has been added to your contact list.
        href:
          type: string
          format: uri
          example: https://api.signable.co.uk/v1/contacts/17224150
        contact_id:
          type: string
          example: '17224150'
        contact_name:
          type: string
          example: Hanz Zimmer
        contact_email:
          type: string
          format: email
          example: hanz.zimmer@music.com
        contact_created:
          type: string
          format: date-time
          example: 2025-07-07T09:57:39+0000
    ContactGetResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        contact_id:
          type: integer
          example: 17224150
        contact_name:
          type: string
          example: Hanz Zimmer
        contact_email:
          type: string
          format: email
          example: hanz.zimmer@music.com
        contact_outstanding_documents:
          type: string
          example: '0'
        contact_created:
          type: string
          format: date-time
          example: 2025-07-07T09:57:39+0000
    ContactUpdateRequest:
      type: object
      required:
        - contact_name
        - contact_email
      properties:
        contact_name:
          type: string
          example: Nemo
        contact_email:
          type: string
          format: email
          example: nemo@coralreef.com
    ContactUpdateResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        message:
          type: string
          example: Nemo has been updated in your contact list.
        href:
          type: string
          format: uri
          example: https://api.signable.co.uk/v1/contacts/17224150
        contact_id:
          type: integer
          example: 17224150
        contact_name:
          type: string
          example: Nemo
        contact_email:
          type: string
          format: email
          example: nemo@coralreef.com
        contact_updated:
          type: string
          format: date-time
          example: 2025-07-07T09:59:25+0000
    ContactDeleteResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        message:
          type: string
          example: Nemo has been removed from your contact list.
        contact_id:
          type: integer
          example: 17224150
        contact_name:
          type: string
          example: Nemo
        contact_email:
          type: string
          format: email
          example: nemo@coralreef.com
    ContactEnvelopeSummary:
      type: object
      properties:
        envelope_fingerprint:
          type: string
          example: 584ea8b41b0d4c17a96b967433b211e6
        envelope_title:
          type: string
          example: Another Test
        envelope_status:
          type: string
          description: >-
            Current status of the envelope. [See Envelope status values for more
            info →](../../envelope-status)
          enum:
            - processing
            - failed
            - draft
            - sent
            - signed
            - cancelled
            - expired
            - rejected
            - verify
          example: draft
        envelope_created:
          type: string
          format: date-time
          example: 2025-07-07T11:30:27+0000
        envelope_sent:
          type:
            - string
            - 'null'
          format: date-time
          example: null
        envelope_processed:
          type:
            - string
            - 'null'
          format: date-time
          example: null
        envelope_signed_pdf:
          type:
            - string
            - 'null'
          format: uri
          example: >-
            https://api.signableapi.com/shareable/envelope?t=403cebcc-60ec-4cc2-b7d6-753fb7d5c662
    ContactEnvelopesListResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        offset:
          type: integer
          example: 0
        limit:
          type: integer
          example: 10
        total_envelopes:
          type: string
          example: '3'
        envelopes:
          type: array
          items:
            $ref: '#/components/schemas/ContactEnvelopeSummary'
    User:
      type: object
      properties:
        user_id:
          type: string
          example: '836499'
        role_id:
          type: string
          example: '3'
        user_name:
          type: string
          example: Abby Loves Signable
        user_email:
          type: string
          format: email
          example: abby+010725@signable.co.uk
        user_added:
          type: string
          format: date-time
          example: 2025-07-01T08:40:38+0000
        user_last_updated:
          type: string
          format: date-time
          example: 2025-07-07T07:57:54+0000
    UsersListResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        offset:
          type: integer
          example: 0
        limit:
          type: integer
          example: 50
        total_users:
          type: string
          description: Total number of users (returned as a string)
          example: '2'
        users:
          type: array
          items:
            $ref: '#/components/schemas/User'
    UserCreateRequest:
      type: object
      required:
        - user_name
        - user_email
        - role_id
      properties:
        user_name:
          type: string
          example: Abby Example
        user_email:
          type: string
          format: email
          example: abby+example@wearedom.com
        role_id:
          type: string
          enum:
            - '1'
            - '2'
            - '3'
          description: |
            Role assigned to the user:
            - "1" = User
            - "2" = Admin
            - "3" = Super-Admin
          example: '2'
    UserCreateResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        message:
          type: string
          example: Abby Example has been added to your user list.
        href:
          type: string
          format: uri
          example: https://api.signable.co.uk/v1/users/837146
        user_id:
          type: string
          example: '837146'
        role_id:
          type: string
          enum:
            - '1'
            - '2'
            - '3'
          description: |
            Role assigned to the user:
            - "1" = User
            - "2" = Admin
            - "3" = Super-Admin
          example: '1'
        user_name:
          type: string
          example: Abby Example
        user_email:
          type: string
          format: email
          example: abby+example@wearedom.com
        user_added:
          type: string
          format: date-time
          example: 2025-07-07T08:06:49+0000
    UserGetResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        user_id:
          type: integer
          example: 836499
        role_id:
          type: string
          enum:
            - '1'
            - '2'
            - '3'
          description: |
            Role assigned to the user:
            - "1" = User
            - "2" = Admin
            - "3" = Super-Admin
          example: '3'
        user_name:
          type: string
          example: Abby Loves Signable
        user_email:
          type: string
          format: email
          example: abby+010725@signable.co.uk
        user_added:
          type: string
          format: date-time
          example: 2025-07-01T08:40:38+0000
        user_last_updated:
          type: string
          format: date-time
          example: 2025-07-07T07:57:54+0000
    UserUpdateRequest:
      type: object
      required:
        - user_name
        - user_email
        - role_id
      properties:
        user_name:
          type: string
          example: Abby Smith
        user_email:
          type: string
          format: email
          example: abby+jackson@signable.co.uk
        role_id:
          type: string
          enum:
            - '1'
            - '2'
            - '3'
          description: |
            Role assigned to the user:
            - "1" = User
            - "2" = Admin
            - "3" = Super-Admin
          example: '1'
    UserUpdateResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        message:
          type: string
          example: Abby Smith has been updated in your user list.
        href:
          type: string
          format: uri
          example: https://api.signable.co.uk/v1/users/837154
        user_id:
          type: integer
          example: 837154
        role_id:
          type: string
          enum:
            - '1'
            - '2'
            - '3'
          example: '1'
        user_name:
          type: string
          example: Abby Smith
        user_email:
          type: string
          format: email
          example: abby+jackson@signable.co.uk
        user_updated:
          type: string
          format: date-time
          example: 2025-07-07T08:38:54+0000
    UserDeleteResponse:
      type: object
      properties:
        http:
          type: integer
          example: 200
        message:
          type: string
          example: Abby Smith has been removed from your user list.
        user_id:
          type: integer
          example: 837154
        role_id:
          type: string
          enum:
            - '1'
            - '2'
            - '3'
          description: |
            Role previously assigned to the deleted user:
            - "1" = User
            - "2" = Admin
            - "3" = Super-Admin
          example: '1'
        user_email:
          type: string
          format: email
          example: abby+jackson@signable.co.uk
        user_name:
          type: string
          example: Abby Smith
    BrandingResponse:
      type: object
      required:
        - http
        - branding_logo
        - branding_colour
      properties:
        http:
          type: integer
          description: HTTP status code
          example: 200
        branding_logo:
          type:
            - string
            - 'null'
          format: uri
          description: >
            A public URL to your uploaded logo (shown on emails and signing
            pages). Returns `null` if no logo is uploaded.
          example: https://www.signable.co.uk/signable.png
        branding_colour:
          type:
            - string
            - 'null'
          description: |
            The primary hex colour used for branding emails and signing pages.
            Returns `null` if no branding colour is set.
          example: '#0095E6'
    BrandingPutRequest:
      type: object
      properties:
        branding_logo_url:
          type:
            - string
            - 'null'
          format: uri
          description: >
            A public URL to your logo. This will be shown on emails and the
            signing page. Set to `null` to remove the current logo.
          example: https://upload.wikimedia.org/wikipedia/commons/7/70/Example.png
        branding_colour:
          type: string
          pattern: ^#[0-9A-Fa-f]{6}$
          description: >
            The hex colour code (e.g. `#0095E6`) used for branded emails and
            signing pages.
          example: '#558caa'
      required:
        - branding_logo_url
        - branding_colour
    BrandingPutResponse:
      type: object
      required:
        - http
        - message
        - branding_logo
        - branding_colour
      properties:
        http:
          type: integer
          description: HTTP status code
          example: 200
        message:
          type: string
          description: A success message confirming the update
          example: Branding options have been updated.
        branding_logo:
          type:
            - string
            - 'null'
          format: uri
          description: >
            The final logo URL now active for your account. Will be `null` if
            none is set.
          example: https://assets.signable.co.uk/company-logo/213690-1751360856.png
        branding_colour:
          type: string
          description: >
            The hex code now being used for branding emails and signing pages.
            Will be `null` if none is set.
          example: '#558CAA'
    BrandingEmail:
      type: object
      required:
        - branding_email_type
        - branding_email_subject
        - branding_email_content
        - branding_email_content_plain
        - branding_email_updated
      properties:
        branding_email_type:
          type: string
          description: Type of the branding email template
          enum:
            - email-cancelled
            - email-rejected
            - email-reminder
            - email-reminder-password
            - email-send
            - email-send-password
            - email-signed
            - email-widget-verify
          example: email-cancelled
        branding_email_subject:
          type: string
          description: Subject line with variables
          example: '{company name} has cancelled a document'
        branding_email_content:
          type: string
          description: HTML version of the email template
          example: <body style=...>...</body>
        branding_email_content_plain:
          type: string
          description: Plain text version of the email
          example: '{company name} has cancelled the {contract title} document.'
        branding_email_updated:
          type: string
          format: date-time
          description: Last updated timestamp (ISO 8601)
          example: 2025-07-01T08:40:38+0000
    BrandingEmailsResponse:
      type: object
      required:
        - http
        - branding_emails
      properties:
        http:
          type: integer
          example: 200
        branding_emails:
          type: array
          items:
            $ref: '#/components/schemas/BrandingEmail'
    BrandingEmailPutRequest:
      type: object
      description: Request to update branding email attributes.
      properties:
        branding_email_subject:
          type: string
          description: The subject line for the email
          example: '{company name} has cancelled a test document'
        branding_email_content:
          type: string
          description: The HTML content of the email
          example: <body style='font-family:Arial;'>...</body>
        branding_email_content_plain:
          type: string
          description: The plain text content of the email
          example: Your document from {company name} has been cancelled.
    BrandingEmailPutResponse:
      type: object
      required:
        - http
        - message
        - branding_email_type
        - branding_email_subject
        - branding_email_content
        - branding_email_content_plain
        - branding_email_updated
      properties:
        http:
          type: integer
          example: 200
        message:
          type: string
          example: email-cancelled email has been updated.
        branding_email_type:
          type: string
          enum:
            - email-cancelled
            - email-rejected
            - email-reminder
            - email-reminder-password
            - email-send
            - email-send-password
            - email-signed
            - email-widget-verify
          example: null
        branding_email_subject:
          type: string
          example: '{company name} has cancelled a test document'
        branding_email_content:
          type: string
          description: HTML version of the updated email
          example: |
            <body style="font-family:Arial,Helvetica,sans-serif;">
            ...
            </body>
        branding_email_content_plain:
          type: string
          description: Plain text version of the updated email
          example: |
            A document previously sent...
        branding_email_updated:
          type: string
          format: date-time
          example: 2025-07-02T11:44:32+0000
    SettingsFields:
      type: object
      description: Common company settings shared across settings GET and PUT operations.
      properties:
        setting_signature_more_info:
          type: boolean
          description: >
            If enabled, the signature will display the signer name and timestamp
            under each signature block on the generated Envelope PDF.
          example: true
        setting_signature_format_default:
          type: string
          description: >
            Which signature format is offered by default. Accepted values:
            `drawn`, `typed`, or `upload`.
          example: typed
        setting_signature_format_accepted:
          type: string
          description: >
            Comma-separated list of signature formats your account accepts.
            Valid values: `drawn`, `typed`, `upload`.
          example: typed,drawn,upload
        setting_email_pdf_attach:
          type: boolean
          description: >
            If enabled, a PDF copy of the envelope will be attached to emails
            sent to recipients. If disabled, recipients must instead use a link
            in the email to view and download the envelope.
          example: true
        setting_email_pdf_attach_sender:
          type: boolean
          description: >
            If enabled, a PDF copy of the signed envelope will be attached to
            the sign-complete notification email sent to your company email
            address. If disabled, the envelope must be downloaded from the app.
          example: true
        setting_email_envelope_open:
          type: boolean
          description: >
            If enabled, an email notification will be sent when someone opens
            the envelope.
          example: true
        setting_email_main_email:
          type: boolean
          description: >
            If enabled, notifications (signed, rejected, cancelled) are sent to
            your company’s main email address.
          example: true
        setting_email_return_address_user:
          type: boolean
          description: >
            If enabled, the "Return Email" will be set to the user who sent the
            envelope, rather than the main company email. If disabled, the
            "Return Email" will be set to your main company email address.
            Regardless of this property, emails will always be sent from
            document@signable.co.uk.
          example: true
        setting_signing_consumer_regulations_act:
          type: boolean
          description: >
            Enables [Consumer Contract Regulations 2013
            compliance](http://www.legislation.gov.uk/uksi/2013/3134/pdfs/uksi_20133134_en.pdf)
            for your account. Only set this to 'Yes' if you believe that you
            need this enabled. This setting will change some of the terminology
            on the signing page to become compliant with this Act.
          example: false
        setting_signing_tooltips:
          type: boolean
          deprecated: true
          description: >
            If enabled, tooltip hints will be shown when a signer attempts to
            sign a document.
          example: false
        setting_signing_questions:
          type: boolean
          description: >
            If enabled, signers can send you questions or comments directly from
            the signing page.
          example: true
        setting_pdf_audit_trail_hide:
          type: boolean
          description: >
            If enabled, all party email addresses and mobile numbers will be
            hidden on the signing page and PDF certificate audit trail.
          example: true
        setting_all_at_once_default:
          type: boolean
          description: >
            If enabled, envelopes are sent to all parties simultaneously by
            default (all-at-once signing). If disabled, envelopes are sent to
            the first party only (one-at-a-time signing). Default is `true`.
          example: true
    SettingsResponse:
      allOf:
        - type: object
          properties:
            http:
              type: integer
              example: 200
        - $ref: '#/components/schemas/SettingsFields'
    UpdateSettingsRequest:
      allOf:
        - $ref: '#/components/schemas/SettingsFields'
    UpdateSettingsResponse:
      allOf:
        - type: object
          properties:
            http:
              type: integer
              example: 200
            message:
              type: string
              example: Signable Ltd settings have been updated.
            href:
              type: string
              format: uri
              example: https://api.signable.co.uk/v1/companies/32275
            company_id:
              type: string
              example: '32275'
            company_name:
              type: string
              example: Signable Ltd
        - $ref: '#/components/schemas/SettingsFields'
    WebhookListItem:
      type: object
      required:
        - webhook_id
        - webhook_url
        - webhook_type
        - webhook_created
        - webhook_updated
        - webhook_suspended
      properties:
        webhook_id:
          type: string
          description: Unique identifier of the webhook
          example: '132223'
        webhook_url:
          type: string
          format: uri
          description: The URL to which webhook events are sent
          example: https://example.com
        webhook_type:
          type: string
          description: The type of event the webhook listens for
          enum:
            - send-envelope
            - signed-envelope
            - cancelled-envelope
            - rejected-envelope
            - bounced-envelope
            - add-user
            - add-contact
            - opened-envelope
            - add-template
            - all
            - signed-envelope-complete
            - verify-envelope-widget
            - signed-envelope-widget
            - send-envelope-failed
          example: send-envelope
        webhook_created:
          type: string
          format: date-time
          description: Timestamp when the webhook was created
          example: 2025-06-23T17:15:01+0000
        webhook_updated:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: When the webhook was last updated
          example: null
        webhook_suspended:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: When the webhook was suspended (or null if active)
          example: null
    WebhookListResponse:
      type: object
      required:
        - http
        - offset
        - limit
        - total_webhooks
        - webhooks
      properties:
        http:
          type: integer
          example: 200
        offset:
          type: integer
          example: 10
        limit:
          type: integer
          example: 10
        total_webhooks:
          type: string
          example: '44'
        next:
          type: string
          format: uri
          example: https://api.signable.co.uk/v1/webhooks?offset=10&limit=10
        webhooks:
          type: array
          items:
            $ref: '#/components/schemas/WebhookListItem'
    WebhookRequest:
      type: object
      required:
        - webhook_url
        - webhook_type
      properties:
        webhook_url:
          type: string
          format: uri
          description: The callback URL where webhook events will be sent.
          example: https://example.com
        webhook_type:
          type: string
          description: |
            The event type to subscribe to.
          enum:
            - send-envelope
            - signed-envelope
            - cancelled-envelope
            - rejected-envelope
            - bounced-envelope
            - add-user
            - add-contact
            - opened-envelope
            - add-template
            - all
            - signed-envelope-complete
            - verify-envelope-widget
            - signed-envelope-widget
            - send-envelope-failed
          example: send-envelope
    WebhookPostResponse:
      type: object
      required:
        - http
        - message
        - href
        - webhook_id
        - webhook_url
        - webhook_type
        - webhook_created
      properties:
        http:
          type: integer
          description: HTTP status code
          example: 200
        message:
          type: string
          description: Confirmation message about the webhook creation
          example: The webhook (https://example.com) has been created
        href:
          type: string
          format: uri
          description: API resource URL for the newly created webhook
          example: https://api.signable.co.uk/v1/webhooks/152691
        webhook_id:
          type: string
          description: Unique identifier for the created webhook
          example: '152691'
        webhook_url:
          type: string
          format: uri
          description: The callback URL registered for the webhook
          example: https://example.com
        webhook_type:
          type: string
          description: The event type the webhook is subscribed to
          enum:
            - send-envelope
            - signed-envelope
            - cancelled-envelope
            - rejected-envelope
            - bounced-envelope
            - add-user
            - add-contact
            - opened-envelope
            - add-template
            - all
            - signed-envelope-complete
            - verify-envelope-widget
            - signed-envelope-widget
            - send-envelope-failed
          example: all
        webhook_created:
          type: string
          format: date-time
          description: The timestamp when the webhook was created
          example: 2025-06-23T17:15:01+0000
    WebhookGetResponse:
      type: object
      required:
        - http
        - webhook_id
        - webhook_url
        - webhook_type
        - webhook_created
        - webhook_updated
        - webhook_suspended
      properties:
        http:
          type: integer
          description: HTTP status code
          example: 200
        webhook_id:
          type: integer
          description: Unique identifier of the webhook
          example: 152691
        webhook_url:
          type: string
          format: uri
          description: The URL to which webhook events are sent
          example: https://example.com
        webhook_type:
          type: string
          description: Type of event the webhook listens for
          enum:
            - send-envelope
            - signed-envelope
            - cancelled-envelope
            - rejected-envelope
            - bounced-envelope
            - add-user
            - add-contact
            - opened-envelope
            - add-template
            - all
            - signed-envelope-complete
            - verify-envelope-widget
            - signed-envelope-widget
            - send-envelope-failed
          example: all
        webhook_created:
          type: string
          format: date-time
          description: Timestamp when the webhook was created
          example: 2025-06-23T17:15:01+0000
        webhook_updated:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: Timestamp when the webhook was last updated
          example: null
        webhook_suspended:
          anyOf:
            - type: boolean
            - type: 'null'
          description: Whether the webhook is currently suspended
          example: null
    WebhookPutResponse:
      type: object
      required:
        - http
        - message
        - href
        - webhook_id
        - webhook_url
        - webhook_type
        - webhook_updated
      properties:
        http:
          type: integer
          example: 200
        message:
          type: string
          example: The webhook with ID 152691 has been updated
        href:
          type: string
          format: uri
          example: https://api.signable.co.uk/v1/webhooks/152691
        webhook_id:
          type: integer
          example: 152691
        webhook_url:
          type: string
          format: uri
          example: https://abby-example.com
        webhook_type:
          type: string
          enum:
            - send-envelope
            - signed-envelope
            - cancelled-envelope
            - rejected-envelope
            - bounced-envelope
            - add-user
            - add-contact
            - opened-envelope
            - add-template
            - all
            - signed-envelope-complete
            - verify-envelope-widget
            - signed-envelope-widget
            - send-envelope-failed
          example: all
        webhook_updated:
          type: string
          format: date-time
          example: 2025-06-24T09:32:55+0000
    WebhookDeleteResponse:
      type: object
      required:
        - http
        - message
        - webhook_id
        - webhook_url
        - webhook_type
      properties:
        http:
          type: integer
          description: HTTP status code
          example: 200
        message:
          type: string
          description: Descriptive message confirming the webhook was removed
          example: >-
            The webhook (https://abby-example.com) has been removed from your
            account.
        webhook_id:
          type: integer
          description: Unique identifier of the deleted webhook
          example: 152691
        webhook_url:
          type: string
          format: uri
          description: The URL of the deleted webhook
          example: https://abby-example.com
        webhook_type:
          type: string
          description: Type of event the deleted webhook was subscribed to
          enum:
            - send-envelope
            - signed-envelope
            - cancelled-envelope
            - rejected-envelope
            - bounced-envelope
            - add-user
            - add-contact
            - opened-envelope
            - add-template
            - all
            - signed-envelope-complete
            - verify-envelope-widget
            - signed-envelope-widget
            - send-envelope-failed
          example: all
  examples:
    CompanyListResponseExample:
      summary: An example paginated list of sub-accounts.
      value:
        http: 200
        offset: 0
        limit: 10
        total_companies: '2'
        companies:
          - company_id: '196735'
            company_name: ExampleSubAccount_1
            company_email: abby+1@signable.co.uk
            company_api_key: 9c66b129752046***********
            company_created: 2024-09-03T09:03:12+0000
          - company_id: '196737'
            company_name: ExampleSubAccount_2
            company_email: abby+2@signable.co.uk
            company_api_key: 1v64g56ds98577***********
            company_created: 2024-09-03T09:08:49+0000
    CompanyCreateRequestExample:
      summary: Example create sub-account request
      value:
        company_name: Example Inc
        user_name: Abby Signs
        user_email: abby@example.com
    CompanyCreateResponseExample:
      summary: Example response for successfully creating a sub-account
      value:
        http: 200
        message: Example Inc has been added as a company
        href: https://api.signable.co.uk/v1/companies/214821
        company_id: '214821'
        company_name: Example Inc
        company_email: abby@example.com
        api_key: 9c66b129752046***********
        user_id: '838931'
        user_name: Abby Signs
        user_email: abby@example.com
        user_href: https://api.signable.co.uk/v1/users/838931
        company_added: 2025-07-21T08:16:51+0000
    CompanyGetResponseExample:
      summary: An example paginated list of a single sub-account.
      value:
        http: 200
        company_id: 196735
        company_name: ExampleSubAccount_1
        company_email: abby+1@signable.co.uk
        company_api_key: 9c66b129752046***********
        company_created: 2024-09-03T09:03:12+0000
        company_usage:
          - month: July
            year: '2025'
            sent: '1'
    CompanyUpdateRequestExample:
      summary: Example update sub-account request
      value:
        company_name: Apple Tree Ltd
        company_email: abby@appletree.com
    CompanyUpdateResponseExample:
      summary: Example response for updating a sub-account
      value:
        http: 200
        message: Apple Tree Ltd has been updated.
        href: https://api.signable.co.uk/v1/company/214821
        company_id: 214821
        company_name: Apple Tree Ltd
        company_email: abby@appletree.com
        company_updated: 2025-07-21T08:30:27+0000
    CompanyDeleteResponseExample:
      summary: Example response for successful deletion
      value:
        http: 200
        message: Apple Tree Ltd has been removed.
        company_id: 214821
        company_name: Apple Tree Ltd
        company_email: abby@appletree.com
    PartnerUsageResponseExample:
      summary: Example usage data across 2 sub-accounts
      value:
        http: 200
        offset: 0
        limit: 10
        total_companies: '2'
        current_start_date: 2025-07-01T00:00:00+0000
        current_end_date: 2025-08-01T00:00:00+0000
        previous_start_date: 2025-06-01T00:00:00+0000
        previous_end_date: 2025-07-01T00:00:00+0000
        companies:
          - company_id: '196735'
            company_name: ExampleSubAccount_1
            current_usage: '1'
            previous_usage: '0'
            company_created: 2024-09-03T09:03:12+0000
          - company_id: '196737'
            company_name: ExampleSubAccount_2
            current_usage: '6'
            previous_usage: '15'
            company_created: 2024-09-03T09:08:49+0000
    EnvelopeListResponseExample:
      summary: An example paginated list of envelopes
      value:
        http: 200
        offset: 0
        limit: 10
        total_envelopes: '3'
        envelopes:
          - envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
            envelope_title: Another Test
            envelope_status: draft
            envelope_redirect_url: ''
            envelope_created: 2025-07-07T11:30:27+0000
            envelope_sent: null
            envelope_processed: null
            envelope_all_at_once_enabled: true
            envelope_requires_otp: false
            envelope_parties:
              - party_id: '45583378'
                party_title: Abby Test
                party_mobile_last4: null
                party_password: null
          - envelope_fingerprint: 84b6334b5e5249a78e7ae3f4bba33068
            envelope_title: 2nd Test
            envelope_status: signed
            envelope_redirect_url: ''
            envelope_created: 2025-07-07T11:27:44+0000
            envelope_sent: 2025-07-07T11:29:31+0000
            envelope_processed: 2025-07-07T11:30:09+0000
            envelope_all_at_once_enabled: true
            envelope_requires_otp: false
            envelope_parties:
              - party_id: '45583236'
                party_title: Abby Test
                party_mobile_last4: null
                party_password: null
            envelope_signed_pdf: >-
              https://api.signableapi.com/shareable/envelope?t=03cbb315-4f68-400d-a5cc-c2884996d061
          - envelope_fingerprint: 2a965d809ca943fb98ca71d3c7c98af5
            envelope_title: Test Envelope
            envelope_status: signed
            envelope_redirect_url: ''
            envelope_created: 2025-07-07T10:30:02+0000
            envelope_sent: 2025-07-07T11:26:20+0000
            envelope_processed: 2025-07-07T11:27:20+0000
            envelope_all_at_once_enabled: true
            envelope_requires_otp: false
            envelope_parties:
              - party_id: '45583038'
                party_title: Jane Doe
                party_mobile_last4: null
                party_password: null
            envelope_signed_pdf: >-
              https://api.signableapi.com/shareable/envelope?t=1ea41464-40ae-4638-b004-5ca1c8143318
    EnvelopeSendDocRequestExample:
      summary: Example send envelope (using document) request
      value:
        envelope_title: Singer Road 23/06/25
        user_id: 838180
        envelope_redirect_url: https://www.example.com
        envelope_all_at_once_enabled: false
        envelope_requires_otp: true
        envelope_password_protect: false
        envelope_auto_expire_hours: 144
        envelope_auto_remind_hours: 72
        envelope_meta:
          internal_id: ABC123
          VIP: false
        envelope_parties:
          - party_name: Alex Mitchell
            party_email: abby+alex@signable.co.uk
            party_role: signer2
            party_message: Hello Alex, Please review and sign
            party_mobile: '+447510417059'
          - party_name: Abby Signers
            party_email: abby@signable.co.uk
            party_role: signer1
            party_message: Hello, Please sign pronto!
            party_mobile: '+447510417059'
          - party_name: Spectator
            party_email: abby+spectator@signable.co.uk
            party_role: copy
            party_message: Hello Alex, Please have a read
          - party_name: Tim Matthews
            party_email: abby@signable.co.uk
            party_role: signer3
            party_message: Hello, Please sign pronto!
            party_mobile: '+447510417059'
        envelope_documents:
          - document_url: https://yellow-della-30.tiiny.site/Tenancy-Contract-2025-v2.pdf
            document_title: Test Agreement
          - document_title: Validation Contract
            document_file_name: ValidationContract.pdf
            document_file_content: JVBERi0xLjQKJdPr6...Zgo2MDE3MwolJUVPRgo=
    EnvelopeSendTemplateRequestExample:
      summary: Example send envelope (using single template) request
      value:
        envelope_title: Melbourne Road 23/06/25
        user_id: 819622
        envelope_redirect_url: https://www.example.com
        envelope_all_at_once_enabled: true
        envelope_requires_otp: true
        envelope_password_protect: false
        envelope_auto_expire_hours: 144
        envelope_auto_remind_hours: 72
        envelope_meta:
          internal_id: ABC123
          VIP: false
        envelope_parties:
          - party_name: Alex Mitchell
            party_email: abby+alex@signable.co.uk
            party_id: '20748256'
            party_role: signer
            party_message: Hello Alex, Please review and sign
            party_mobile: '+447510417059'
          - party_name: Abby Signers
            party_email: abby@signable.co.uk
            party_id: '20748255'
            party_role: signer
            party_message: Hello, Please sign pronto!
            party_mobile: '+447510417059'
          - party_name: Spectator
            party_email: abby+spectator@signable.co.uk
            party_id: '20750393'
            party_role: copy
            party_message: Hello Maisy, Please have a read
        envelope_documents:
          - document_title: TC 2025 v2
            document_template_fingerprint: 28f9add86f25028df2eee9adee866aba
            document_merge_fields:
              - field_id: '454958773'
                field_value: Note that breakables are not included in rent cost
    EnvelopeSendTemplateMultipleRequestExample:
      summary: Example send envelope (using multiple templates) successful response
      value:
        envelope_title: Barnsley Road 21/04/25
        user_id: 819622
        envelope_redirect_url: https://www.example.com
        envelope_all_at_once_enabled: true
        envelope_requires_otp: true
        envelope_password_protect: false
        envelope_auto_expire_hours: 144
        envelope_auto_remind_hours: 72
        envelope_meta:
          internal_id: ABC123
          VIP: false
        envelope_parties:
          - party_name: Alex Mitchell
            party_email: abby+alex@signable.co.uk
            party_role: signer
            party_message: Hello Alex, Please review and sign
            party_mobile: '+447510417059'
            party_documents:
              - party_id: 20748256
                document_template_fingerprint: 28f9add86f25028df2eee9adee866aba
          - party_name: Abby Signers
            party_email: abby@signable.co.uk
            party_role: signer
            party_message: Hello, Please sign pronto!
            party_mobile: '+447510417059'
            party_documents:
              - party_id: 20748265
                document_template_fingerprint: 88d2c9e8dc4a69ce1cd97ac1684f3e45
              - party_id: 20748255
                document_template_fingerprint: 28f9add86f25028df2eee9adee866aba
          - party_name: Spectator
            party_email: abby+spectator@signable.co.uk
            party_role: copy
            party_message: Hello Maisy, Please have a read
            party_documents:
              - party_id: 20750393
                document_template_fingerprint: 28f9add86f25028df2eee9adee866aba
        envelope_documents:
          - document_title: TC 2025 v2
            document_template_fingerprint: 28f9add86f25028df2eee9adee866aba
            document_merge_fields:
              - field_id: '454958773'
                field_value: Note that breakables are not included in rent cost
          - document_title: TC 2025 v3
            document_template_fingerprint: 88d2c9e8dc4a69ce1cd97ac1684f3e45
    EnvelopeSendDocResponseExample:
      summary: Example send envelope (using document) successful response
      value:
        http: 202
        message: >-
          Your envelope with title Singer Road 23/06/25 will be processed and
          sent out.
        href: >-
          https://api.signable.co.uk/v1/envelopes/584ea8b41b0d4c17a96b967433b211e6
        envelope_title: Singer Road 23/06/25
        envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
        envelope_password_protect: false
        envelope_requires_otp: true
        envelope_redirect_url: https://www.example.com
        envelope_queued: 2025-07-16T14:39:02+0000
        envelope_all_at_once_enabled: false
        envelope_parties:
          - party_id: '45849370'
            party_title: Alex Mitchell
            party_mobile_last4: '7059'
            party_password: null
          - party_id: '45849371'
            party_title: Abby Signers
            party_mobile_last4: '7059'
            party_password: null
          - party_id: '45849372'
            party_title: Spectator
            party_mobile_last4: null
            party_password: null
          - party_id: '45849373'
            party_title: Tim Matthews
            party_mobile_last4: '7059'
            party_password: null
    EnvelopeSendTemplateResponseExample:
      summary: Example send envelope (using single template) successful response
      value:
        http: 202
        message: >-
          Your envelope with title Melbourne Road 23/06/25 will be processed and
          sent out.
        href: >-
          https://api.signable.co.uk/v1/envelopes/584ea8b41b0d4c17a96b967433b211e6
        envelope_title: Melbourne Road 23/06/25
        envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
        envelope_signing_embed: >-
          <iframe
          src="https://sign.signable.app/#yXqPrm7HVOaiQUNM4NZI34BocfDWB69lf68lHq90R0s"
          width="100%" height="95%" frameborder="0" style="border: 0; overflow:
          hidden"></iframe>
        envelope_password_protect: false
        envelope_redirect_url: https://www.example.com
        envelope_queued: 2025-07-16T16:30:23+0000
        envelope_all_at_once_enabled: true
        envelope_requires_otp: true
        envelope_parties:
          - party_id: '45855081'
            party_title: Alex Mitchell
            party_mobile_last4: '7059'
            party_password: null
          - party_id: '45855082'
            party_title: Abby Signers
            party_mobile_last4: '7059'
            party_password: null
          - party_id: '45855083'
            party_title: Spectator
            party_mobile_last4: null
            party_password: null
    EnvelopeSendTemplateMultipleResponseExample:
      summary: Example send envelope (using multiple templates) successful response
      value:
        http: 202
        message: >-
          Your envelope with title Barnsley Road 21/04/25 will be processed and
          sent out.
        href: >-
          https://api.signable.co.uk/v1/envelopes/584ea8b41b0d4c17a96b967433b211e6
        envelope_title: Barnsley Road 21/04/25
        envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
        envelope_signing_embed: >
          <iframe
          src="https://sign.signable.app/#kVXVoBHVOBwh8ijT56DXYhSIjTIcrNsyD6OyDAKdWMZ"
          width="100%" height="95%" frameborder="0" style="border: 0; overflow:
          hidden"></iframe>
        envelope_password_protect: false
        envelope_redirect_url: https://www.example.com
        envelope_queued: 2025-07-17T13:42:35+0000
        envelope_all_at_once_enabled: true
        envelope_requires_otp: true
        envelope_parties:
          - party_id: '45880606'
            party_title: Alex Mitchell
            party_mobile_last4: '7059'
            party_password: null
          - party_id: '45880607'
            party_title: Abby Signers
            party_mobile_last4: '7059'
            party_password: null
          - party_id: '45880608'
            party_title: Spectator
            party_mobile_last4: null
            party_password: null
    EnvelopeGetResponseExample:
      summary: Example envelope details response
      value:
        http: 200
        envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
        envelope_title: 17 John Street Tenancy Contract - 25th Jun 2025
        envelope_status: sent
        envelope_redirect_url: null
        envelope_created: 2025-07-08T14:58:54+0000
        envelope_sent: 2025-07-08T15:02:49+0000
        envelope_processed: null
        envelope_all_at_once_enabled: true
        envelope_requires_otp: false
        envelope_parties:
          - party_id: '45631119'
            party_title: Abby Signable
            party_mobile_last4: null
            party_password: Test123
            contact_id: '17225983'
            contact_email: abby@signable.co.uk
            party_status: in progress
            party_signature_type: remote
            party_role: signer
          - party_id: '45631121'
            party_title: Sabby
            party_mobile_last4: null
            party_password: null
            contact_id: '17241370'
            contact_email: abby+010725@signable.co.uk
            party_status: in progress
            party_signature_type: remote
            party_role: signer
          - party_id: '45631122'
            party_title: Bristol Solicitors
            party_mobile_last4: null
            party_password: null
            contact_id: '17241371'
            contact_email: test@example.com
            party_status: pending
            party_signature_type: remote
            party_role: copy
        envelope_documents:
          - document_fingerprint: 78c54190abc34179919e6c2197465926
            document_title: Sample Tenancy Contract
            document_page_total: '2'
            document_pdf_url: >-
              https://docs.signable.co.uk/original/78c54190abc34179919e6c2197465926.pdf
            document_thumbnails:
              - >-
                https://docs.signable.co.uk/small/78c54190abc34179919e6c2197465926-0.jpg
              - >-
                https://docs.signable.co.uk/small/78c54190abc34179919e6c2197465926-1.jpg
            document_pages:
              - >-
                https://docs.signable.co.uk/large/78c54190abc34179919e6c2197465926-0.jpg
              - >-
                https://docs.signable.co.uk/large/78c54190abc34179919e6c2197465926-1.jpg
            document_fields:
              - field_id: '452902787'
                field_title: First Name
                field_type: text
                field_value: Abby Sackson
                party_id: '45631119'
                field_merge: Sender Name
              - field_id: '452902789'
                field_title: Date please
                field_type: date
                field_value: ''
                party_id: '45631119'
                field_merge: null
          - document_fingerprint: 2cbd40997bc64c1c9b700d80471723b9
            document_title: Sample Contract
            document_page_total: '1'
            document_pdf_url: >-
              https://docs.signable.co.uk/original/2cbd40997bc64c1c9b700d80471723b9.pdf
            document_thumbnails:
              - >-
                https://docs.signable.co.uk/small/2cbd40997bc64c1c9b700d80471723b9-0.jpg
            document_pages:
              - >-
                https://docs.signable.co.uk/large/2cbd40997bc64c1c9b700d80471723b9-0.jpg
            document_fields:
              - field_id: '452902797'
                field_title: Print Name
                field_type: text
                field_value: ''
                party_id: '45631119'
                field_merge: null
              - field_id: '452902798'
                field_title: Full Address
                field_type: text
                field_value: ''
                party_id: '45631119'
                field_merge: null
        envelope_history:
          - history_detail: Envelope generated by Abby Loves Signable
            history_ip: 147.147.97.34
            history_user_agent: >-
              Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
              (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
            history_date: 2025-07-08T14:58:54+0000
          - history_detail: >-
              Document generated with fingerprint
              78c54190abc34179919e6c2197465926
            history_ip: 147.147.97.34
            history_user_agent: >-
              Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
              (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
            history_date: 2025-07-08T14:58:55+0000
          - history_detail: >-
              Document generated with fingerprint
              2cbd40997bc64c1c9b700d80471723b9
            history_ip: 147.147.97.34
            history_user_agent: >-
              Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
              (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
            history_date: 2025-07-08T14:58:55+0000
          - history_detail: >-
              Sent the envelope to Abby Signable (abby@signable.co.uk) for
              signing
            history_ip: 147.147.97.34
            history_user_agent: >-
              Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
              (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
            history_date: 2025-07-08T15:02:48+0000
          - history_detail: >-
              Sent the envelope to Sabby (abby+010725@signable.co.uk) for
              signing
            history_ip: 147.147.97.34
            history_user_agent: >-
              Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
              (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
            history_date: 2025-07-08T15:02:49+0000
          - history_detail: Document emailed to abby@signable.co.uk
            history_ip: ''
            history_user_agent: ''
            history_date: 2025-07-08T15:02:49+0000
          - history_detail: Document emailed to abby+010725@signable.co.uk
            history_ip: ''
            history_user_agent: ''
            history_date: 2025-07-08T15:02:49+0000
          - history_detail: Abby Signable opened the document email.
            history_ip: 66.249.93.102
            history_user_agent: >-
              Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via
              ggpht.com GoogleImageProxy)
            history_date: 2025-07-09T08:37:19+0000
          - history_detail: Sabby opened the document email.
            history_ip: 66.249.93.98
            history_user_agent: >-
              Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via
              ggpht.com GoogleImageProxy)
            history_date: 2025-07-09T08:37:19+0000
          - history_detail: Sent Abby Signable a reminder to sign the document.
            history_ip: ''
            history_user_agent: ''
            history_date: 2025-07-13T15:03:15+0000
          - history_detail: Sent Sabby a reminder to sign the document.
            history_ip: ''
            history_user_agent: ''
            history_date: 2025-07-13T15:03:15+0000
          - history_detail: Document emailed to abby@signable.co.uk
            history_ip: ''
            history_user_agent: ''
            history_date: 2025-07-13T15:03:15+0000
          - history_detail: Document emailed to abby+010725@signable.co.uk
            history_ip: ''
            history_user_agent: ''
            history_date: 2025-07-13T15:03:15+0000
        envelope_meta:
          internal_id: ABC123
          VIP: false
    EnvelopeDeleteResponseExample:
      summary: Envelope deleted successfully
      value:
        http: 200
        message: The envelope has been deleted
        envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
        envelope_title: Test Envelope
        envelope_status: deleted
    EnvelopeRemindResponseExample:
      summary: Reminder email triggered
      value:
        http: 200
        message: The signing parties for this envelope have been reminded.
        envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
        envelope_title: 17 John Street Tenancy Contract - 25th Jun 2025
        envelope_all_at_once_enabled: true
    EnvelopeCancelResponseExample:
      summary: Envelope cancelled successfully
      value:
        http: 200
        message: The envelope has been cancelled
        envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
        envelope_title: Contract Settlement
        envelope_status: cancelled
        envelope_processed: 2025-07-14T13:34:34+0000
    EnvelopeExpireResponseExample:
      summary: Envelope expired successfully
      value:
        http: 200
        message: The envelope has been expired
        envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
        envelope_title: Industrial Contract
        envelope_status: expired
        envelope_processed: 2025-07-14T14:37:34+0000
    TemplatesListResponseExample:
      summary: Example template list response
      value:
        http: 200
        offset: 0
        limit: 10
        total_templates: '2'
        templates:
          - template_id: '53890528'
            template_fingerprint: e0b3a9cbd4a6ff2cb57cfca161a38309
            template_title: Sample Tenancy Contract
            template_page_total: '2'
            template_in_progress: '0'
            template_parties_total: '1'
            template_widget_url: https://sign.signable.app/#/widget/YzVsBQ5Dyj
            template_widget_embed: >-
              <iframe src='https://sign.signable.app/#/widget/YzVsBQ5Dyj'
              frameborder='0' style='border:0;width:100%;height:100vh;'
              scrolling='yes'></iframe>
            template_pdf_url: >-
              https://docs.signable.co.uk/original/e0b3a9cbd4a6ff2cb57cfca161a38309.pdf
            template_thumbnails:
              - >-
                https://docs.signable.co.uk/small/e0b3a9cbd4a6ff2cb57cfca161a38309-0.jpg
              - >-
                https://docs.signable.co.uk/small/e0b3a9cbd4a6ff2cb57cfca161a38309-1.jpg
            template_pages:
              - >-
                https://docs.signable.co.uk/large/e0b3a9cbd4a6ff2cb57cfca161a38309-0.jpg
              - >-
                https://docs.signable.co.uk/large/e0b3a9cbd4a6ff2cb57cfca161a38309-1.jpg
            template_uploaded: 2025-07-07T15:49:43+0000
            template_parties:
              - party_id: '20576938'
                party_name: Signer 1
          - template_id: '53690003'
            template_fingerprint: b786a173554cc06371248caf0b250704
            template_title: Sample Contract
            template_page_total: '1'
            template_in_progress: '3'
            template_parties_total: '1'
            template_widget_url: https://sign.signable.app/#/widget/
            template_widget_embed: >-
              <iframe src='https://sign.signable.app/#/widget/' frameborder='0'
              style='border:0;width:100%;height:100vh;'
              scrolling='yes'></iframe>
            template_pdf_url: >-
              https://docs.signable.co.uk/original/b786a173554cc06371248caf0b250704.pdf
            template_thumbnails:
              - >-
                https://docs.signable.co.uk/small/b786a173554cc06371248caf0b250704-0.jpg
            template_pages:
              - >-
                https://docs.signable.co.uk/large/b786a173554cc06371248caf0b250704-0.jpg
            template_uploaded: 2025-07-01T08:40:38+0000
            template_parties:
              - party_id: '20459705'
                party_name: Party
                party_merge_fields:
                  - field_id: '450927743'
                    field_merge: Name of Sender
                    field_type: text
    TemplateGetResponseExample:
      summary: Example template details response
      value:
        http: 200
        template_id: '53690003'
        template_fingerprint: b786a173554cc06371248caf0b250704
        template_title: Sample Contract
        template_page_total: '1'
        template_in_progress: '3'
        template_parties_total: '1'
        template_widget_url: https://sign.signable.app/#/widget/YzVsBQ5Dyj
        template_widget_embed: >-
          <iframe src='https://sign.signable.app/#/widget/YzVsBQ5Dyj'
          frameborder='0' style='border:0;width:100%;height:100vh;'
          scrolling='yes'></iframe>
        template_pdf_url: >-
          https://docs.signable.co.uk/original/b786a173554cc06371248caf0b250704.pdf
        template_thumbnails:
          - >-
            https://docs.signable.co.uk/small/b786a173554cc06371248caf0b250704-0.jpg
        template_pages:
          - >-
            https://docs.signable.co.uk/large/b786a173554cc06371248caf0b250704-0.jpg
        template_uploaded: 2025-07-01T08:40:38+0000
        template_parties:
          - party_id: '20459705'
            party_name: Party
            party_merge_fields:
              - field_id: '450927743'
                field_merge: Name of Sender
                field_type: text
    TemplateDeleteResponseExample:
      summary: Example template deletion confirmation
      value:
        http: 200
        message: Sample Tenancy Contract has been removed from your template list.
        template_id: '53890528'
        tempate_fingerprint: e0b3a9cbd4a6ff2cb57cfca161a38309
        tempate_title: Sample Tenancy Contract
    ContactsListResponseExample:
      summary: Paginated list of contacts
      value:
        http: 200
        offset: 0
        limit: 50
        total_contacts: '3'
        contacts:
          - contact_id: '17224073'
            contact_name: Buffy The Vampire Slayer
            contact_email: buffy@sunnydale.com
            contact_outstanding_documents: '0'
            contact_created: 2025-07-07T09:54:08+0000
          - contact_id: '17224050'
            contact_name: Jane Doe
            contact_email: jane@example.com
            contact_outstanding_documents: '0'
            contact_created: 2025-07-07T09:52:54+0000
          - contact_id: '17224044'
            contact_name: Jo Bloggs
            contact_email: jo@example.com
            contact_outstanding_documents: '0'
            contact_created: 2025-07-07T09:52:32+0000
    ContactCreateRequestExample:
      summary: Example create contact request
      value:
        contact_name: Hanz Zimmer
        contact_email: hanz.zimmer@music.com
    ContactCreateResponseExample:
      summary: Example create contact response
      value:
        http: 200
        message: Hanz Zimmer has been added to your contact list.
        href: https://api.signable.co.uk/v1/contacts/17224150
        contact_id: '17224150'
        contact_name: Hanz Zimmer
        contact_email: hanz.zimmer@music.com
        contact_created: 2025-07-07T09:57:39+0000
    ContactGetResponseExample:
      summary: Example get contact response
      value:
        http: 200
        contact_id: 17224150
        contact_name: Hanz Zimmer
        contact_email: hanz.zimmer@music.com
        contact_outstanding_documents: '0'
        contact_created: 2025-07-07T09:57:39+0000
    ContactUpdateRequestExample:
      summary: Example update contact request
      value:
        contact_name: Nemo
        contact_email: nemo@coralreef.com
    ContactUpdateResponseExample:
      summary: Example update contact response
      value:
        http: 200
        message: Nemo has been updated in your contact list.
        href: https://api.signable.co.uk/v1/contacts/17224150
        contact_id: 17224150
        contact_name: Nemo
        contact_email: nemo@coralreef.com
        contact_updated: 2025-07-07T09:59:25+0000
    ContactDeleteResponseExample:
      summary: Example delete contact response
      value:
        http: 200
        message: Nemo has been removed from your contact list.
        contact_id: 17224150
        contact_name: Nemo
        contact_email: nemo@coralreef.com
    ContactEnvelopesListResponseExample:
      summary: Envelopes associated with a contact
      value:
        http: 200
        offset: 0
        limit: 10
        total_envelopes: '3'
        envelopes:
          - envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
            envelope_title: Another Test
            envelope_status: draft
            envelope_created: 2025-07-07T11:30:27+0000
            envelope_sent: null
            envelope_processed: null
          - envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
            envelope_title: 2nd Test
            envelope_status: signed
            envelope_created: 2025-07-07T11:27:44+0000
            envelope_sent: 2025-07-07T11:29:31+0000
            envelope_processed: 2025-07-07T11:30:09+0000
            envelope_signed_pdf: >-
              https://api.signableapi.com/shareable/envelope?t=403cebcc-60ec-4cc2-b7d6-753fb7d5c632
          - envelope_fingerprint: 584ea8b41b0d4c17a96b967433b211e6
            envelope_title: Test Envelope
            envelope_status: signed
            envelope_created: 2025-07-07T10:30:02+0000
            envelope_sent: 2025-07-07T11:26:20+0000
            envelope_processed: 2025-07-07T11:27:20+0000
            envelope_signed_pdf: >-
              https://api.signableapi.com/shareable/envelope?t=3dd2069d-4a61-4c9e-99c8-9dfc737eb150
    UsersListResponseExample:
      summary: Paginated user list
      value:
        http: 200
        offset: 0
        limit: 50
        total_users: '2'
        users:
          - user_id: '836499'
            role_id: '3'
            user_name: Abby Loves Signable
            user_email: abby+010725@signable.co.uk
            user_added: 2025-07-01T08:40:38+0000
            user_last_updated: 2025-07-07T07:57:54+0000
          - user_id: '837142'
            role_id: '1'
            user_name: Sabby
            user_email: abby+sabby@signable.co.uk
            user_added: 2025-07-07T07:58:38+0000
            user_last_updated: 2025-07-07T07:58:44+0000
    UserCreateRequestExample:
      summary: Example user creation request
      value:
        user_name: Abby Example
        user_email: abby+example@wearedom.com
        role_id: '2'
    UserCreateResponseExample:
      summary: Example successful user creation response
      value:
        http: 200
        message: Abby Example has been added to your user list.
        href: https://api.signable.co.uk/v1/users/837146
        user_id: '837146'
        role_id: '2'
        user_name: Abby Example
        user_email: abby+example@wearedom.com
        user_added: 2025-07-07T08:06:49+0000
    UserGetResponseExample:
      summary: Single user response
      value:
        http: 200
        user_id: 836499
        role_id: '3'
        user_name: Abby Loves Signable
        user_email: abby+010725@signable.co.uk
        user_added: 2025-07-01T08:40:38+0000
        user_last_updated: 2025-07-07T07:57:54+0000
    UserUpdateRequestExample:
      summary: Update user details
      value:
        user_name: Abby Smith
        user_email: abby+jackson@signable.co.uk
        role_id: '1'
    UserUpdateResponseExample:
      summary: Successful user update
      value:
        http: 200
        message: Abby Smith has been updated in your user list.
        href: https://api.signable.co.uk/v1/users/837154
        user_id: 837154
        role_id: '1'
        user_name: Abby Smith
        user_email: abby+jackson@signable.co.uk
        user_updated: 2025-07-07T08:38:54+0000
    UserDeleteResponseExample:
      summary: User deletion confirmation
      value:
        http: 200
        message: Abby Smith has been removed from your user list.
        user_id: 837154
        role_id: '1'
        user_email: abby+jackson@signable.co.uk
        user_name: Abby Smith
    BrandingResponseExample:
      summary: Example branding configuration
      value:
        http: 200
        branding_logo: https://www.signable.co.uk/signable.png
        branding_colour: '#0095E6'
    BrandingPutRequestExample:
      summary: Example branding update request
      value:
        branding_logo_url: https://upload.wikimedia.org/wikipedia/commons/7/70/Example.png
        branding_colour: '#558caa'
    BrandingPutResponseExample:
      summary: Branding successfully updated
      value:
        http: 200
        message: Branding options have been updated.
        branding_logo: https://assets.signable.co.uk/company-logo/213690-1751360856.png
        branding_colour: '#558CAA'
    BrandingEmailsResponseExample:
      summary: Example branding emails response
      value:
        http: 200
        branding_emails:
          - branding_email_type: email-cancelled
            branding_email_subject: '{company name} has cancelled a document'
            branding_email_content: >
              <body style="font-family:Arial,Helvetica,sans-serif;">

              <table
              style="background:#FFF;font-family:Arial,Helvetica,sans-serif;border-collpase:collapse;width:600px;margin:0
              auto;">
                <tr>
                  <td>
                    <table style="border-collpase:collapse">
                      <tr>
                        <td style="padding:15px 10px 10px">
                          <a href="https://www.signable.co.uk">
                            <img src="{company logo}" alt="{company name}" />
                          </a>
                        </td>
                      </tr>
                      <tr>
                        <td style="padding-top:10px">
                          <h1 style="font-size:15px;">A document previously sent to you has been cancelled</h1>
                          <p><strong>{company name}</strong> has cancelled the <strong>{contract title}</strong> document.</p>
                          <p>Kind regards, <a href="https://www.signable.co.uk">Signable</a></p>
                        </td>
                      </tr>
                    </table>
                  </td>
                </tr>
              </table>

              </body>
            branding_email_content_plain: |
              A document previously sent to you has been cancelled

              {company name} has cancelled the {contract title} document.

              Kind regards,
              Signable

              https://www.signable.co.uk
            branding_email_updated: 2025-07-01T08:40:38+0000
          - branding_email_type: email-rejected
            branding_email_subject: '{contract title} document rejected'
            branding_email_content: <html>...</html>
            branding_email_content_plain: A document you signed has been rejected...
            branding_email_updated: 2025-07-01T08:40:38+0000
          - branding_email_type: email-reminder
            branding_email_subject: '{company name} has sent you a document to sign'
            branding_email_content: <body>...</body>
            branding_email_content_plain: >-
              {company name} has sent you the document {contract title} to sign
              online...
            branding_email_updated: 2025-07-01T08:40:38+0000
          - branding_email_type: email-reminder-password
            branding_email_subject: '{company name} has sent you a document to sign'
            branding_email_content: <body>...</body>
            branding_email_content_plain: >-
              {company name} has also requested this document be password
              protected...
            branding_email_updated: 2025-07-01T08:40:38+0000
          - branding_email_type: email-send
            branding_email_subject: '{company name} has sent you a document to sign'
            branding_email_content: <body>...</body>
            branding_email_content_plain: '{client name}, you have been sent a document to sign...'
            branding_email_updated: 2025-07-01T08:40:38+0000
          - branding_email_type: email-send-password
            branding_email_subject: '{company name} has sent you a document to sign'
            branding_email_content: <body>...</body>
            branding_email_content_plain: '{client name}, you''ve been sent a secure document...'
            branding_email_updated: 2025-07-01T08:40:38+0000
          - branding_email_type: email-signed
            branding_email_subject: Document signed confirmation
            branding_email_content: <body>...</body>
            branding_email_content_plain: You have successfully signed {contract title}...
            branding_email_updated: 2025-07-01T08:40:38+0000
          - branding_email_type: email-widget-verify
            branding_email_subject: Verify your signed document with {company name}
            branding_email_content: <body>...</body>
            branding_email_content_plain: >-
              Please verify your email address to complete signing of {contract
              title}...
            branding_email_updated: 2025-07-01T08:40:38+0000
    BrandingEmailPutRequestExample:
      summary: Update branding email
      value:
        branding_email_subject: '{company name} has cancelled a test document'
        branding_email_content: >
          <body style="font-family:Arial,Helvetica,serif;">

          <table
          style="background:#FFF;font-family:Arial,Helvetica,sans-serif;border-collpase:collapse;width:600px;margin:0
          auto;">
              <tr>
                  <td>
                      <table style="border-collpase:collapse">
                          <tr>
                              <td style="padding:15px 10px 10px">
                                  <a href="https://www.signable.co.uk" style="font-size:25px;color:#FFF;letter-spacing:-1px;font-weight:normal">
                                      <img src="{company logo}" alt="{company name}" style="border:0;" />
                                  </a>
                              </td>
                          </tr>
                          <tr>
                              <td style="padding-top:10px">
                                  <h1 style="font-size:15px;font-weight:normal;color:#444">A document previously sent to you has been cancelled</h1>
                                  <p style="font-size:13px;color:#444;line-height:18px;padding-top:10px">
                                    <span style="font-weight:bold;">{company name}</span> has cancelled the <span style="font-weight:bold;">{contract title}</span> document.
                                  </p>
                                  <p style="font-size:15px;color:#555;margin-top:30px">
                                    Kind regards, <a href="https://www.signable.co.uk" style="color:#555;">Signable</a>
                                  </p>
                                  <hr style="background:#FFF;color:#FFF;border:none;height:0;border-bottom:1px dotted #CCC;" />
                              </td>
                          </tr>
                      </table>
                  </td>
              </tr>
          </table>

          </body>
        branding_email_content_plain: "A test document previously sent to you has been cancelled\r\n\r\n{company name} has cancelled the {contract title} document.\r\n\r\nKind regards,\r\nSignable\r\n\r\nhttps://www.signable.co.uk"
    BrandingEmailPutResponseExample:
      summary: Updated branding email response
      value:
        http: 200
        message: email-cancelled email has been updated.
        branding_email_type: email-cancelled
        branding_email_subject: '{company name} has cancelled a test document'
        branding_email_content: >
          <body style="font-family:Arial,Helvetica,serif;">

          <table
          style="background:#FFF;font-family:Arial,Helvetica,sans-serif;border-collpase:collapse;width:600px;margin:0
          auto;">
              <tr>
                  <td>
                    <table style="border-collpase:collapse">
                        <tr>
                            <td style="padding:15px 10px 10px">
                                <a href="https://www.signable.co.uk">
                                    <img src="{company logo}" alt="{company name}" />
                                </a>
                            </td>
                        </tr>
                        <tr>
                            <td style="padding-top:10px">
                                <h1 style="font-size:15px;color:#444;">A document previously sent to you has been cancelled</h1>
                                <p style="font-size:13px;color:#444;line-height:18px;padding-top:10px">
                                    <strong>{company name}</strong> has cancelled the <strong>{contract title}</strong> document.
                                </p>
                                <p style="font-size:15px;color:#555;margin-top:30px">Kind regards, <a href="https://www.signable.co.uk" style="color:#555;">Signable</a></p>
                                <hr style="background:#FFF;color:#FFF;border:none;height:0;border-bottom:1px dotted #CCC;" />
                            </td>
                        </tr>
                    </table>
                  </td>
              </tr>
          </table>

          </body>
        branding_email_content_plain: "A test document previously sent to you has been cancelled\r\n\r\n{company name} has cancelled the {contract title} document.\r\n\r\nKind regards,\r\nSignable\r\n\r\nhttps://www.signable.co.uk"
        branding_email_updated: 2025-07-02T11:44:32+0000
    SettingsResponseExample:
      summary: Example company settings response
      value:
        http: 200
        setting_signature_more_info: true
        setting_signature_format_accepted: typed,drawn,upload
        setting_signature_format_default: typed
        setting_email_pdf_attach: true
        setting_email_pdf_attach_sender: true
        setting_email_envelope_open: true
        setting_email_main_email: true
        setting_email_return_address_user: true
        setting_signing_consumer_regulations_act: false
        setting_signing_tooltips: false
        setting_signing_questions: true
        setting_pdf_audit_trail_hide: true
        setting_all_at_once_default: false
    SettingsPutRequestExample:
      summary: Example of an update company settings request payload
      value:
        setting_signature_more_info: true
        setting_signature_format_accepted: typed,drawn,upload
        setting_signature_format_default: typed
        setting_email_pdf_attach: true
        setting_email_pdf_attach_sender: true
        setting_email_envelope_open: true
        setting_email_main_email: true
        setting_email_return_address_user: true
        setting_signing_consumer_regulations_act: false
        setting_signing_tooltips: false
        setting_signing_questions: true
        setting_pdf_audit_trail_hide: true
        setting_all_at_once_default: false
    SettingsPutResponseExample:
      summary: A successful update of company settings
      value:
        http: 200
        message: Signable Ltd settings have been updated.
        href: https://api.signable.co.uk/v1/companies/32275
        company_id: '32275'
        company_name: Signable Ltd
        setting_signature_more_info: true
        setting_signature_format_accepted: typed,drawn,upload
        setting_signature_format_default: typed
        setting_email_pdf_attach: true
        setting_email_pdf_attach_sender: true
        setting_email_envelope_open: true
        setting_email_main_email: true
        setting_email_return_address_user: true
        setting_signing_consumer_regulations_act: false
        setting_signing_tooltips: true
        setting_signing_questions: false
        setting_pdf_audit_trail_hide: true
        setting_all_at_once_default: false
    WebhookListResponseExample:
      summary: Paginated list of webhooks
      value:
        http: 200
        offset: 10
        limit: 10
        total_webhooks: '44'
        next: https://api.signable.co.uk/v1/webhooks?offset=10&limit=10
        webhooks:
          - webhook_id: '132223'
            webhook_url: https://mylovelyendpointfortesting.free.beeceptor.com
            webhook_type: all
            webhook_created: 2019-01-29T18:22:05+0000
            webhook_suspended: 2024-07-11T12:21:12+0000
            webhook_updated: 2024-07-11T12:21:12+0000
          - webhook_id: '133097'
            webhook_url: https://webhook.site/e9f2c61c-98ec-4277-bef8-cf6bca506583
            webhook_type: send-envelope
            webhook_created: 2019-07-29T14:20:40+0000
            webhook_suspended: 2024-07-11T12:10:22+0000
            webhook_updated: 2024-07-11T12:10:22+0000
          - webhook_id: '133203'
            webhook_url: https://webhook.site/1b225ac0-703d-4d91-ab35-751034157ace
            webhook_type: cancelled-envelope
            webhook_created: 2019-08-22T08:38:35+0000
            webhook_suspended: 2024-07-17T08:48:02+0000
            webhook_updated: 2024-07-17T08:48:02+0000
    WebhookRequestExample:
      summary: Example of a webhook request payload
      value:
        webhook_url: https://example.com/webhook
        webhook_type: send-envelope
    WebhookPostResponseExample:
      summary: Example response after creating a webhook
      value:
        http: 200
        message: The webhook (https://example.com) has been created
        href: https://api.signable.co.uk/v1/webhooks/152691
        webhook_id: '152691'
        webhook_url: https://example.com
        webhook_type: all
        webhook_created: 2025-06-23T17:15:01+0000
    WebhookGetResponseExample:
      summary: Example of a single webhook fetched by ID
      value:
        http: 200
        webhook_id: 152691
        webhook_url: https://example.com
        webhook_type: all
        webhook_created: 2025-06-23T17:15:01+0000
        webhook_updated: null
        webhook_suspended: null
    WebhookPutResponseExample:
      summary: Example response from updating a webhook
      value:
        http: 200
        message: The webhook with ID 152691 has been updated
        href: https://api.signable.co.uk/v1/webhooks/152691
        webhook_id: 152691
        webhook_url: https://abby-example.com
        webhook_type: all
        webhook_updated: 2025-06-24T09:32:55+0000
    WebhookDeleteResponseExample:
      summary: Example response after deleting a webhook
      value:
        http: 200
        message: >-
          The webhook (https://abby-example.com) has been removed from your
          account.
        webhook_id: 152691
        webhook_url: https://abby-example.com
        webhook_type: all
