openapi: 3.0.3
servers:
  - url: https://sign.sproof.com/api/v1
    description: Default Server
info:
  description: >
    This is the documentation for the sproof sign API.

    You can find out more about sproof at [sproof.com](https://sproof.com) </br>


    **If you require any further information, feel free to** **<a
    target="_blank" href="https://discord.gg/HjWe6MUMJ4" class="sc-GvhzO
    gJrtLH">join the sproof Discord Server!</a>**


    This API is documented in **OpenAPI format** and is based on
    [sign.sproof.com](https://sign.sproof.com/) provided by the
    [sproof](https://sproof.com) team. Sproof sign is an online application to
    collect signatures. The sproof sign API can be accessed through the domain
    https://sign.sproof.com/api/v1/. In the following, we describe the JSON API
    (application/json) calls to create and get the status of a signature
    requests.


    Download Postman Collection:**[Download](#postman-collection-download)**


    # Using the member ID

    The member ID can be used to open the document directly within the sproof
    sign editor after creating a [signature
    request](#operation/createSignatureRequest). It can be found in the response
    object after a successful call.


    To open the editor the member ID has to be appended to the URL as follows:
    `https://sign.sproof.com/#/editor/{memberId}`


    <img class="docImg" style="display: block; margin: 2.5rem auto;"
    src="../img/memberId_url.png" />


    ### Javascript code sample:


    ```

    const requestBody = {
        "token": "XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX",
        "data": base64File,
        "callbackUrl": "https://webhook.site/abc",
        "fileName": "important_contract",
        "email": "max.mustermann@sproof.com",
        "firstName": "Max",
        "lastName": "Mustermann",
    };

    const requestOptions = {
        'method': 'post',
        'headers': { 'Content-Type': 'application/json' },
        'body': JSON.stringify(requestBody),
    };

    const response = await fetch("https://sign.sproof.com/api/v1/documents",
    requestOptions);

    const responseJson = await response.json();


    //open the document in the sproof sign editor

    window.open("https://sign.sproof.com/#/editor/" + responseJson.member.id);

    ```


    # Using the Custom ID


    The **custom ID** can be set per member in the `createSignature` request,
    allowing you to generate the recipient's unique link before sending the
    invite. To use the custom ID for building the recipient's URL, follow the
    notation provided in the [Open Document Custom
    ID](#tag/Fastlane/paths/~1fastlane~1custom~1{planId}~1{customId}/get).


    ## Building the URL


    To construct the recipient's link, you will need a unique plan identifier.
    If you do not have this identifier, you can obtain it by contacting our
    support team or by joining our Discord server.


    > **Note:** The custom ID does not fully replace the member ID. It is
    intended solely for the recipient to open the document in the editor, but it
    cannot serve as a complete substitute for the member ID in other operations.


    ## Custom ID Requirements:


    - Must be an alphanumeric string.

    - Must be at least **70 characters long** for security purposes.

    - Must be unique



    # Embed sproof sign in an iframe

    **Warning! This only works for qualified electronic signatures, as they
    provide a second factor for authentication!**

    The [Create signature request](#operation/createSignatureRequest) call can
    be used to create a signature request. By default, the sproof sign backend
    sends out emails to all signers. 

      - For this use case we set the `doNotSendEmail` property in the signer object of the  request to `true`, to avoid sending extra emails to the signer.
      - set the `signatureTypes` to `qualified`, i.e. requires a signature with qualified electronic signature.
      - Parse the returned JSON object to get the ID of the created document for the respective signer.
      - Display an iframe and set the URL to https://sign.sproof.com/#/editor/{ID}
      - Optionally set the parameters `returnUrl` and `returnBtnText` to direct the signer to the next document after signing or to return them to a custom page of your application (see image below)

    <img style="max-width: 650px; width: 100%; display: block; margin: 2.5rem
    auto;" class="docImg" src="../img/return_btn_text_iframe.png" />


    # Text Placeholders Overview

    Text placeholders are used in documents (e.g., Microsoft Word DOCX, Google
    Docs, PDF) to define signature positions or form fields. These placeholders
    are recognized and processed during the upload.


    ## Key Features

    - **Customizable Appearance:** You can change the color of text placeholders
    to make them invisible within the document.

    - **Size Adjustment:** Prefixing a text placeholder with underscores `_`
    allows you to adjust its size.


    ## Constraints

    - **Minimum Font Size:** Text placeholders must have a font size of at least
    4pt to be recognized.

    - **Single Line Requirement:** Placeholders must not contain line breaks.


    ## Signature Placeholders

    Signature placeholders specify where a document should be signed by
    designated individuals. The format for a signature placeholder is as
    follows:


    ```

    {sproof{first_name, last_name, email_address, signing_order, [optional]
    doNotSendEmail}sproof}

    ```


    ### Field Descriptions

    1. **first_name**: 
      - **Description**: The first name of the recipient.
      - **Example**: `John`
      - **Required**: Yes

    2. **last_name**: 
      - **Description**: The last name of the recipient.
      - **Example**: `Doe`
      - **Required**: Yes

    3. **email_address**: 
      - **Description**: The email address of the recipient. This address will be used to invite the person to sign the document.
      - **Example**: `john.doe@example.com`
      - **Required**: Yes

    4. **signing_order**: 
      - **Description**: Specifies the order in which the recipients will sign the document. Recipients with the same order value will be invited to sign simultaneously. If you want the document to be signed sequentially, assign incremental values (e.g., `1`, `2`, `3`, etc.).
      - **Example**: `1`
      - **Required**: Yes

    5. **doNotSendEmail** (Optional): 
      - **Description**: A flag that indicates whether the recipient should receive an email invitation to sign the document. If set to `true`, the signatory will not receive an email.
      - **Example**: `true`
      - **Default Value**: `false`
      - **Required**: No

    ### Example

    ```

    {sproof{John, Doe, john.doe@example.com, 1, true}sproof}

    ```


    ### Usage

    **To activate signature placeholders, set the `usePlaceholders` flag to
    `true` in the [Create Signature Request](#operation/createSignatureRequest)
    API call.**


    When a document containing signature placeholders is opened in the sproof
    sign interface, a dialog opens showing the specified recipients. Recipients
    can then be invited to the document with one click or edited further in the
    editor. The `signing_order` parameter controls whether all signatories are
    invited simultaneously or sequentially.


    ![Signature Placeholder Example](../img/placeholder_popup.png)


    ## Form Field Placeholders

    Form field placeholders define where users can enter information such as
    text, dates, or checkboxes. The format for a form field placeholder is as
    follows:


    ```

    {sp{type, [optional] label, [optional] content, [optional] recipient_email,
    [optional] required}sp}

    ```


    ### Field Descriptions

    1. **type**: 
      - **Description**: Specifies the type of form field to be created.
      - **Available Options**:
        - `TB` - TextBox
        - `IB` - IBAN Field
        - `DB` - Date Box
        - `CB` - Checkbox - **The checkbox requires only a single underscore (_) and its size depends on the font size of the underscore**
      - **Example**: `TB`
      - **Required**: Yes

    2. **label** (Optional): 
      - **Description**: Defines the label that will be displayed for the form field. This provides a visual cue to the user about what information is expected.
      - **Example**: `Name`
      - **Required**: No

    3. **content** (Optional): 
      - **Description**: Prefills the form field with the specified content. This is useful for providing default values or examples.
      - **Example**: `John Doe`
      - **Required**: No

    4. **recipient_email** (Optional): 
      - **Description**: The email address of the recipient assigned to the form field. If not provided, the field is unassigned and can be filled out by anyone with access to the document.
      - **Example**: `john.doe@example.com`
      - **Required**: No

    5. **required** (Optional): 
      - **Description**: Indicates whether the form field is mandatory for the user to fill out. If set to `true`, the form cannot be submitted until the field is completed.
      - **Example**: `true`
      - **Default Value**: `false`
      - **Required**: No

    ### Example

    ```

    {sp{TB, Name, John Doe, john.doe@example.com, true}sp}

    ```

    ### Usage

    To include form field placeholders, simply insert them into your document
    and configure the fields as required.


    ## Example Files

    Download example files to see how placeholders are implemented in practice:

    - [Signature Placeholder Example File (German)](files/Platzhalter-Demo.docx)

    - [Signature Placeholder Example File
    (English)](files/Placeholder-Demo.docx)

    - [Formfield Example File (English)](files/FormField-Demo.docx)


    # Authentication


    sproof sign uses an **api key** for authentication. It can be obtained by
    purchasing an enterprise plan. The key can be found in the settings page of
    the administrator profile (see image below).


    <img style="max-width: 650px; width: 100%; display: block; margin: 2.5rem
    auto;" class="docImg" src="../img/api_keys_dashboard.png" />


    # Changelog

    ## 22/08/2025 - version 2.0.7


    - **Updated**: API docs now list multiple possible errors per status with
    clearer examples (including `message` and `traceId`).

    - **Updated**: Added/corrected error examples especially for:
      - `GET /documents/{memberId}/fda` (Download Audit Trail)
      - `GET /documents/download/{memberId}` (Get document)
      - `DELETE /documents/{memberId}` (Delete document)
      - `GET /plans/members` (legacy)
      - `POST /plans/qualifiedMembers` (legacy)
      - `DELETE /plans/qualifiedMembers/{email}` (legacy)


    **[View Full Changelog](https://sign.sproof.com/api/v1/changelog)**
  version: 2.0.7
  title: sign.sproof.com API Documentation
  contact:
    name: API Support
    email: support@sproof.com
    url: https://sproof.com
  x-logo:
    url: ./img/sproof_logo.png
    altText: sproof sign, the easiest way to sign documents
tags:
  - name: Signatures
    description: Signature handling
  - name: Members
    description: Plan member management
  - name: documents
    description: Retrieve, download, and delete documents.
  - name: signatures
    description: Signature handling.
  - name: members
    description: Member operations.
  - name: document_model
    x-displayName: The Document Model
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/_Document" />
  - name: folder_model
    x-displayName: The Folder Model
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/_Folder" />
  - name: signer_model
    x-displayName: The Signer Model
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/_Signer" />
  - name: planMember_model
    x-displayName: The Planmember Model
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/_PlanMember" />
  - name: pagination_model
    x-displayName: The Pagination Model
    description: |
      <SchemaDefinition schemaRef="#/components/schemas/_PaginationObject" />
  - name: Fastlane
    description: >
      This section outlines the necessary API requests for managing Fastlane
      profiles. 


      The Fastlane is a streamlined user interface designed to accelerate the
      process of collecting signatures and other required data. It provides a
      guided, step-by-step flow, ensuring efficiency and ease of use for your
      recipients. Fastlane profiles allow for the customization of this process,
      enabling you to tailor the signing flow according to your specific needs.


      All created Fastlane profiles are accessible to every member of your plan
      within the web application, making it simple to manage and use across your
      organization.


      For more details on how Fastlane works, visit the [Sproof
      Academy](https://www.sproof.com/en/help-resources/sproof-academy/fastlane).
x-tagGroups:
  - name: General
    tags:
      - Documents
      - Envelopes
      - Signatures
      - Stack
      - Fastlane
  - name: Member Management
    tags:
      - Members
  - name: Models
    tags:
      - document_model
      - folder_model
      - signer_model
      - planMember_model
      - pagination_model
components:
  schemas:
    _BaseScreenConfiguration:
      type: object
      properties:
        enabled:
          type: boolean
          description: Determines whether the screen is enabled.
          default: true
        title:
          type: string
          description: Title of the screen.
          maxLength: 100
        description:
          type: string
          description: Description text for the screen.
          maxLength: 500
        icon:
          type: boolean
          description: Displays an icon on the screen if enabled.
          default: true
      additionalProperties: false
    _WelcomeScreenConfiguration:
      allOf:
        - $ref: "#/components/schemas/_BaseScreenConfiguration"
        - type: object
          properties:
            showDocumentBtn:
              type: boolean
              description: Determines whether a button to preview the document is shown.
              default: true
          additionalProperties: false
      description: |
        Settings for the welcome screen.
    _DocumentScreenConfiguration:
      type: object
      properties:
        enabled:
          type: boolean
          description: Determines whether the document screen is enabled.
          default: true
        fullScreen:
          type: boolean
          description: Displays the document screen in full-screen mode if enabled.
          default: false
        mandatoryScrolling:
          type: boolean
          description: Forces mandatory scrolling through the document.
          default: false
      description: |
        Settings for the document screen.
    _CountryCode:
      type: string
      description: ISO country code or 'all' for all countries
      enum:
        - all
        - at
        - be
        - bg
        - hr
        - cy
        - cz
        - dk
        - ee
        - fi
        - fr
        - de
        - gr
        - hu
        - ie
        - it
        - lv
        - lt
        - lu
        - mt
        - nl
        - pl
        - pt
        - ro
        - sk
        - si
        - es
        - se
        - al
        - ad
        - am
        - by
        - ba
        - fo
        - ge
        - gi
        - is
        - im
        - xk
        - li
        - mk
        - md
        - mc
        - me
        - no
        - sm
        - rs
        - ch
        - tr
        - ua
        - gb
        - va
      default: at
    _ProviderTag:
      type: string
      description: Identity provider tag for the signing process
      enum:
        - evrotrust
        - primeeid
        - swisscom
        - smartid
        - mobileid
        - ptidcard
        - beidcard
        - frusbcard
        - rousbcard
        - dtrust
        - lvidcard
        - eeidcard
        - fiidcard
        - hridcard
        - idaustria
        - prime
        - simplysign
        - spid
        - sproof-standard
        - sproof-qualified
        - uanataca
        - yes
        - ""
      x-enum-descriptions:
        - Evrotrust provider
        - PrimeEID provider
        - Swisscom provider
        - SmartID provider
        - MobileID provider
        - Portuguese ID Card provider
        - Belgian ID Card provider
        - French USB Card provider
        - Romanian USB Card provider
        - D-Trust provider
        - Latvian ID Card provider
        - Estonian ID Card provider
        - Finnish ID Card provider
        - Croatian ID Card provider
        - ID Austria provider
        - Prime provider
        - SimplySign provider
        - SPID provider
        - Sproof Standard provider
        - Sproof Qualified provider (requires active User+ license)
        - Uanataca provider
        - Yes provider
        - Empty/No provider selected
      default: ""
    _ProviderScreenConfiguration:
      type: object
      properties:
        enabled:
          type: boolean
          description: Determines whether the provider screen is enabled.
          default: true
        defaultCountry:
          $ref: "#/components/schemas/_CountryCode"
        defaultProviderTag:
          $ref: "#/components/schemas/_ProviderTag"
      description: |
        Settings for the provider screen.
    _SignScreenConfiguration:
      type: object
      properties:
        signOnDisplay:
          type: boolean
          description: Determines whether the signature screen supports sign-on-display.
          default: true
        signatureCard:
          type: boolean
          description: If set to true, the visual representation includes a signature card.
          default: true
        previewDocumentButton:
          type: boolean
          description: Displays the preview document button if enabled.
          default: true
      additionalProperties: false
      description: |
        Settings for the signature screen.
    _EndScreenConfiguration:
      allOf:
        - $ref: "#/components/schemas/_BaseScreenConfiguration"
        - type: object
          properties:
            helpText:
              type: boolean
              description: Displays help text on the end screen if enabled.
              default: true
            shareDocumentBtn:
              type: boolean
              description: Displays the share document button if enabled.
              default: true
            showDownloadDocBtn:
              type: boolean
              description: Shows the download document button if enabled.
              default: true
          additionalProperties: false
      description: |
        Settings for the end screen.
    _FastlaneScreensConfiguration:
      type: object
      description: Customization options for the profile's screens.
      properties:
        welcome:
          $ref: "#/components/schemas/_WelcomeScreenConfiguration"
        document:
          $ref: "#/components/schemas/_DocumentScreenConfiguration"
        provider:
          $ref: "#/components/schemas/_ProviderScreenConfiguration"
        sign:
          $ref: "#/components/schemas/_SignScreenConfiguration"
        end:
          $ref: "#/components/schemas/_EndScreenConfiguration"
      additionalProperties: false
    _SuccessEmailConfiguration:
      type: object
      description: Customization settings for the success email sent after completion.
      properties:
        subject:
          type: string
          description: Subject line of the success email.
          maxLength: 255
          example: SUBJECT
          default: "[recipient_name] has signed [document_name]"
        title:
          type: string
          description: Title of the success email.
          maxLength: 100
          example: THIS IS THE CUSTOM TITLE
          default: You have signed [document_name]
        text:
          type: string
          description: Body text of the success email.
          maxLength: 1000
          example: CUSTOM TEXT THAT IS ADDED IN THE FASTLANE
          default: "[document_name] was signed successfully. You can find the document in
            the attachment or view it in the dashboard."
        sendEmail:
          type: boolean
          description: If set to false, an email will not be sent to the signer.
          default: true
      additionalProperties: false
    _FastlaneConfiguration:
      type: object
      description: Configuration settings for the Fastlane profile, including
        customizable screens and success email.
      required:
        - name
      properties:
        name:
          type: string
          description: The name of the Fastlane profile that appears in the profile
            selector.
          minLength: 1
          maxLength: 100
          example: Document Signing for HR
        screens:
          $ref: "#/components/schemas/_FastlaneScreensConfiguration"
        successEmail:
          $ref: "#/components/schemas/_SuccessEmailConfiguration"
        backgroundColor:
          type: string
          description: The background color of the Fastlane screens as a hex color.
          pattern: ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
          example: "#e1e1e1"
          default: "#FFFFFF"
        showAppBar:
          type: boolean
          description: If set to false, hides the app bar of the Fastlane.
          default: true
        showProgressBar:
          type: boolean
          description: If set to false, hides the progress bar of the Fastlane.
          default: true
        showHeader:
          type: boolean
          description: If set to false, hides the header in the signing-screen.
          default: true
      additionalProperties: false
    _SignatureBoxes:
      description: Signature Box Array
      type: array
      items:
        $ref: "#/components/schemas/_SignatureBox"
    _QualifiedMemberRequestObject:
      description: Qualified member request object
      type: object
      required:
        - token
        - email
      properties:
        token:
          description: Token for authentication (e.g. your API key)
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          type: string
        email:
          description: Email address of the qualified member
          type: string
          example: max.mustermann@sproof.com
        register:
          description: Boolean which indicates that sproof will automatically create an
            account for the qualified member, If set to `true` then `firstName`
            and `lastName` become required also .
          type: boolean
          default: false
          example: true
        firstName:
          description: First name of qualified member, becomes `required` parameter if
            `register` is set to `true`
          type: string
          example: Max
        lastName:
          description: Last name of qualified member, becomes `required` parameter if
            `register` is set to `true`
          type: string
          example: Mustermann
        phoneNumber:
          description: Phone number of qualified member
          type: string
          example: "+4312345678"
        doNotSendEmail:
          description: If set to `true` no email is sent to the newly created member
          type: boolean
          example: true
          default: false
    _SignatureCallbackObject:
      title: Signature Callback Object
      description: The callback object after signing containing document and signature
        information
      type: object
      properties:
        document:
          allOf:
            - $ref: "#/components/schemas/_Document"
            - description: The document object with updated signature information
        event:
          type: string
          description: The type of event that triggered the callback
          enum:
            - signature_added
            - document_completed
            - document_declined
          example: signature_added
        timestamp:
          type: string
          format: date-time
          description: The timestamp when the event occurred
          example: 2024-03-28T14:40:06.698Z
    _CreateFolderRequest:
      type: object
      required:
        - name
        - documentIds
      properties:
        name:
          type: string
          example: New Envelope
          description: Name of the envelope
        documentIds:
          type: array
          description: Document IDs of draft documents that should be combined into an
            envelope
          xml:
            wrapped: true
          items:
            type: string
            example:
              - 1ebf5b4afdc8f421a848b694037a3beb66f7bc70fba1b16c75e223d7f9987b06b091bd
              - 5e316c52cfcbe810cd12108a6b36141d3cc8116069b4ee1cb66e8a04381ce1ec958176
            xml:
              name: documentId
    VerifyDocumentRequest:
      type: object
      properties:
        data:
          type: string
          description: Base64 encoded file (PDF)
          example: JVBERi0xLjQKJe... (truncated)
        token:
          type: string
          description: Token for authentication (e.g. your API key). Can be provided here
            or as a query parameter.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
    AddProfileToDocumentRequest:
      type: object
      properties:
        memberIds:
          type: array
          description: >
            A list of unique admin memberIds. Each id corresponds to a document
            that will be configured to use the Fastlane profile specified.


            **Note: The Fastlane profile is only visible to recipients where the
            useFastlane flag was set at the time of the invite.**
          items:
            type: string
            example: d46b68b53d2bef3025fd21a0737b0cd7425b1270b0115f39dafa46131023247cd46e7f
    _SignatureDetail:
      type: object
      description: Details about a signature operation
      properties:
        success:
          description: Indicates if the signature operation was successful
          type: boolean
          example: true
        errorMessage:
          description: Error message if the signature operation failed
          type: string
          nullable: true
          example: null
        name:
          description: Name and email of the signer
          type: string
          example: Max Mustermann [max.mustermann@sproof.com]
        reason:
          description: Reason for the signature
          type: string
          example: Signature export for Max Mustermann [max.mustermann@sproof.com]
        location:
          description: Location where the signature was created
          type: string
          example: sproof sign
        date:
          description: Date and time of the signature
          type: string
          format: date-time
          example: Wed, 10 Jul 2024 09:08:24 GMT
        signerInfo:
          description: Additional signer information
          type: string
          nullable: true
          example: null
        page:
          description: Page number where the signature is located
          type: integer
          example: 0
        width:
          description: Width of the signature on the page
          type: string
          example: "0.236"
        height:
          description: Height of the signature on the page
          type: string
          example: "0.085"
        x:
          description: x coordinate of the signature's top left position on the page
          type: string
          example: "0.142"
        y:
          description: y coordinate of the signature's top left position on the page
          type: string
          example: "0.79"
        valid:
          $ref: "#/components/schemas/_SignatureValidationResult"
    _SignatureValidationResult:
      type: object
      description: Validation results of a signature
      properties:
        success:
          description: Indicates if the validation operation was successful
          type: boolean
          example: true
        errorMessage:
          description: Error message if the validation operation failed
          type: string
          nullable: true
          example: null
        valid:
          description: Indicates if the signature is valid
          type: boolean
          example: true
        signatureValid:
          description: Indicates if the signature itself is valid
          type: boolean
          example: true
        certificateValid:
          description: Indicates if the certificate used for the signature is valid
          type: boolean
          example: true
        signatureVerificationResult:
          description: Result of the signature verification
          type: string
          example: signature verified successfully
        certificateVerificationResult:
          description: Result of the certificate verification
          type: string
          example: certificate validated successfully
        subject:
          description: Subject of the certificate
          type: string
          example: sproof GmbH
        issuer:
          description: Issuer of the certificate
          type: string
          example: D-Trust GmbH
        signatureQualification:
          description: Qualification of the signature
          type: string
          example: urn:cef:dss:signatureQualification:notApplicable
    _DefaultProvider:
      type: object
      description: Configuration for the default signature provider
      nullable: true
      properties:
        tag:
          type: string
          description: >-
            This tag determines the identity provider that will be used for the
            signing process. Choose from a predefined set of supported
            providers. 

            >**Note1:** Some providers are only available for certain
            signatureTypes, for example ``onetimeqes`` will require
            ``"signatureType" : ["qualifiedPlusIdent"]`` 

            **Note2:** When using ``sproof-qualified`` as default provider the
            recipient has to have an active sproof account with an active User+
            licence.
          enum:
            - sproof-standard
            - sproof-qualified
            - simple
            - dtrust
            - evrotrust
            - smartid
            - mobileid
            - idaustria
            - swisscom
            - prime
            - yes
            - spid
            - beidcard
            - fiidcard
            - hridcard
            - eeidcard
            - uanataca
            - lvidcard
            - ptidcard
            - frusbcard
            - rousbcard
            - simplysign
            - primeeid
            - certme
            - onetimeqes
        canChange:
          type: boolean
          description: Boolean to indicate if the invited recipient should be able to
            change the signature provider
          example: false
          default: true
        country:
          type: string
          description: The default country, if blank it's set to all, an error will be
            returned with what countries are available for the provider tag
            chosen
          example: at
          default: all
          enum:
            - all
            - at
            - be
            - bg
            - hr
            - cy
            - cz
            - dk
            - ee
            - fi
            - fr
            - de
            - gr
            - hu
            - ie
            - it
            - lv
            - lt
            - lu
            - mt
            - nl
            - pl
            - pt
            - ro
            - sk
            - si
            - es
            - se
            - al
            - ad
            - am
            - by
            - ba
            - fo
            - ge
            - gi
            - is
            - im
            - xk
            - li
            - mk
            - md
            - mc
            - me
            - no
            - sm
            - rs
            - ch
            - tr
            - ua
            - gb
            - va
    AddToStackResponse:
      title: Add to Stack Response
      type: object
      properties:
        status:
          type: string
          example: added
    SignStackResponse:
      title: Sign Stack Response
      type: string
      example: done
    CreateFastlaneProfileResponse:
      title: Create Fastlane Profile Response
      type: object
      properties:
        id:
          type: string
          description: ID of the profile
          example: 54f82188-7461-48fe-882c-afbf98256b16
        name:
          type: string
          description: Name of the profile
          example: Signing screen with custom email
        createdAt:
          type: string
          format: date-time
          description: Date and time when the profile was created
          example: 2024-10-02T08:21:53.305Z
        updatedAt:
          type: string
          format: date-time
          description: Date and time when the profile was last updated
          example: 2024-10-02T08:21:53.305Z
        configuration:
          $ref: "#/components/schemas/_FastlaneConfiguration"
    FastlaneProfileListResponse:
      title: Fastlane Profile List Response
      type: object
      properties:
        id:
          type: string
          description: ID of the profile
          example: 54f82188-7461-48fe-882c-afbf98256b16
        name:
          type: string
          description: Name of the profile
          example: Signing screen with custom email
        createdAt:
          type: string
          format: date-time
          description: Date and time when the profile was created
          example: 2024-10-02T08:21:53.305Z
        updatedAt:
          type: string
          format: date-time
          description: Date and time when the profile was last updated
          example: 2024-10-02T08:21:53.305Z
        configuration:
          $ref: "#/components/schemas/_FastlaneConfiguration"
    UpdateFastlaneProfileResponse:
      title: Update Fastlane Profile Response
      type: object
      properties:
        updatedProfile:
          $ref: "#/components/schemas/_FastlaneConfiguration"
    DeleteFastlaneProfileResponse:
      title: Delete Fastlane Profile Response
      type: object
      properties:
        deletedProfiles:
          type: array
          description: A list of profile IDs that have been successfully deleted.
          items:
            type: string
            format: uuid
            example: ff093edf-2c18-4302-bb82-f3ca202694e5
    AddProfileToDocumentResponse:
      title: Add Profile to Document Response
      type: object
      properties:
        set:
          type: string
          example: 54f82188-7461-48fe-882c-afbf98256b16
    RemoveProfileFromDocumentResponse:
      title: Remove Profile from Document Response
      type: object
      properties:
        removed:
          type: string
          example: 54f82188-7461-48fe-882c-afbf98256b16
    CreateFolderResponse:
      title: Create Folder Response
      type: object
      properties:
        state:
          type: string
          example: "envelope created: true"
    DeleteFolderResponse:
      title: Delete Folder Response
      type: object
      properties:
        success:
          type: boolean
          example: true
        message:
          type: string
          example: "Successfully deleted envelope: <<envelopeId>>"
    UpdateFolderResponse:
      title: Update Folder Response
      type: string
      example: done
    DeleteFolderDocumentsResponse:
      title: Delete Folder Documents Response
      type: string
      example: "deleted: <<docId1>>, <<docId2>> from envelope: <<envelopeId>>"
    AddFolderDocumentsResponse:
      title: Add Folder Documents Response
      type: string
      example: done
    DeleteDocumentResponse:
      title: Delete Document Response
      type: string
      example: deleted single document
    CreateQualifiedMemberResponse:
      allOf:
        - title: Create Qualified Member Response
        - $ref: "#/components/schemas/_PlanMember"
    DeleteQualifiedMemberResponse:
      title: Delete Qualified Member Response
      type: object
      properties:
        deleted:
          type: boolean
          example: true
    _Document:
      title: Document
      type: object
      properties:
        name:
          description: Document name
          type: string
          example: important_contract
        id:
          description: Document ID
          type: string
          example: 7c4d105bf2cc7a146ce00b873563770fc8be20fe8c9946552dd212cdc2b49a554a356a
        updatedAt:
          description: Date of last document update
          example: 2022-03-28T14:40:06.698Z
          type: string
          format: date
        createdAt:
          description: Creation date of document
          example: 2022-03-28T14:36:06.314Z
          type: string
          format: date
        signaturesTypes:
          type: array
          items:
            type: string
          description: "The types of signatures that are allowed for this recipient, can
            be overwritten by recipient signature types. Options: ['advanced',
            'advancedPlus', 'qualified', 'simple','qualifiedPlusIdent']"
          example: []
        callbackUrl:
          type: string
          description: A post request including the document will be sent to this Url when
            a new signature is created
          example: string
        returnUrl:
          type: string
          description: The link of the return button after signing a document
          example: https://sign.sproof.com
        returnBtnText:
          type: string
          description: The text of the return button after signing a document
          example: Back to the Dashboard
        inPersonSigning:
          type: boolean
          example: false
        signingRound:
          type: number
          example: 2
        member:
          allOf:
            - description: Usually the owner of the document, but if you use
                getSignatureStatus the member will be one who's id is provided
                in the request
            - $ref: "#/components/schemas/_Member"
        members:
          description: A list of invited contacts
          type: array
          items:
            $ref: "#/components/schemas/_Member"
          example: []
        boxes:
          type: array
          default: []
          description: Signature position data with additional response-specific fields.
            The cardStyle, pageWidth, and pageHeight fields are optional and may
            not be present in all API responses.
          items:
            $ref: "#/components/schemas/DocumentResponseBox"
          example: []
        refId:
          type: string
          example: Aug24-1234
        allSignersSigned:
          type: boolean
          example: false
        allMembersSigned:
          type: boolean
          example: false
        focusedSigningMode:
          type: boolean
          example: false
    _Folder:
      title: Folder
      type: object
      properties:
        name:
          description: Folder name
          type: string
          example: important_contract
        createdAt:
          description: Creation date of folder
          example: 2023-03-28T14:36:06.314Z
          type: string
          format: date
        state:
          description: State of the folder
          type: string
          enum:
            - draft
            - pending
            - done
          default: draft
          example: draft
        isAdmin:
          description: Indicates if the logged in person is the admin of this folder
          type: boolean
        members:
          description: A list of invited contacts
          type: array
          items:
            $ref: "#/components/schemas/_FolderMember"
        documents:
          description: List of documents
          type: array
          items:
            $ref: "#/components/schemas/_FolderDocument"
    _Signer:
      title: Signer
      type: object
      required:
        - email
      properties:
        email:
          description: Email address of signer
          type: string
          example: signer@sproof.com
        firstName:
          description: First name of signer
          type: string
          example: maria
        lastName:
          description: Last name of signer
          type: string
          example: musterfrau
        doNotSendEmail:
          description: If set to `true` no email is sent to the signer
          type: boolean
        useFastlane:
          description: If set to ``true`` the signer receives a Fastlane link in the
            invitation email
          type: boolean
        customId:
          description: >
            The customId can be used to create a document link for a recipient
            instead of using the memberId provided by the return object of the
            createSignatureRequest. Check [Using the custom
            ID](#section/Using-the-Custom-ID) for more information.


            **Note: The customId can only be used to build the recipient link to
            a document. It can not be used for other requests instead of the
            memberId**
          type: string
        isSigner:
          description: Set to `false` if the signer should be treated as viewer only
          type: boolean
        signingOrder:
          description: The order when the signer will be notified to sign the document.
            The values for signingOrder start at 1. If there exists a smaller
            signingOrder then this signer needs to sign the document before.
          type: integer
        defaultProvider:
          $ref: "#/components/schemas/_DefaultProvider"
        signaturePosition:
          title: DocumentMemberSignaturePosition
          description: Array or one single signaturePosition Object. The signature
            position **relative to the height and width of the page**.
          oneOf:
            - $ref: "#/components/schemas/_SignaturePosition"
            - type: array
              items:
                $ref: "#/components/schemas/_SignaturePosition"
    _PlanMember:
      title: Plan Member
      type: object
      properties:
        email:
          description: Email of plan member
          type: string
          example: max.mustermann@sproof.com
        firstName:
          description: First name of member
          type: string
          example: Max
        lastName:
          description: Last name of member
          type: string
          example: Mustermann
        identificationStarted:
          description: Boolean which indicates if the identification process was started
          type: boolean
          example: false
        isIdentified:
          description: Boolean which indicates if the plan member is identified for
            qualified signing
          type: boolean
          example: false
        identifiedAt:
          type: string
          format: date-time
          description: Date of the last time the user went through the identification
            process
        isAdvancedUser:
          description: Boolean which indicates if the plan member is an advanced user
          type: boolean
          example: false
        isQualifiedUser:
          description: Boolean which indicates if the plan member is a qualifed user
          type: boolean
          example: false
        isBlocked:
          description: Boolean which indicates if the plan member is blocked but not deleted
          type: boolean
        isPending:
          description: Boolean which indicates that a plan member wants to join a plan
            which need to be updated.
          type: boolean
          example: false
        role:
          description: Role of the user in the plan
          type: string
          example: user
          enum:
            - owner
            - user
            - poweruser
        planTransferPending:
          description: Plan transfer is in progress
          type: boolean
          example: false
        isDeletable:
          description: Boolean which indicates that a plan member can be deleted. You need
            to wait at lease 30 days after the identification of a plan member
            before you can delete the member
          type: boolean
          example: true
        remainingDaysToDelete:
          description: Remaining days to wait until the plan member can be finally deleted
          type: integer
        lastLoginAt:
          type: string
          format: date-time
          description: Date of the last time the member logged into their account
        verificationLink:
          description: A link to set the password and complete the registration process
          type: string
    _FolderMember:
      title: Folder Member
      type: object
      properties:
        id:
          type: string
          description: The member ID can be used to open the document within the sproof
            sign editor. A more detailed description can be found
            [here](#section/Using-the-member-ID)
          example: 0dd4a4718ad3669c7133a615d955b4a89f5f11452de55d21d7ca0fff859a08c698b5a3
        documentId:
          description: Document ID of the document the member is on
          type: string
          example: dd7b88f7c24808372891b54e507988283e30d694dd75c52eb91c466e7a36972a851119
        email:
          description: Email of document owner
          type: string
          format: email
          example: max.mustermann@sproof.com
        firstName:
          description: Firstname of document owner
          type: string
          example: Max
        lastName:
          description: Lastname of document owner
          type: string
          example: Mustermann
        lastActivityAt:
          type: string
          format: date
          example: 2022-04-05T08:58:04.206Z
        createdAt:
          description: Date and time of document upload
          type: string
          format: date
          example: 2022-04-05T08:58:04.206Z
        isAdmin:
          type: boolean
          description: Indicates whether the member has Admin status
          example: true
        signaturePosition:
          description: Based on what is sent in the request you can expect.
          oneOf:
            - $ref: "#/components/schemas/_SignaturePosition"
            - type: array
              items:
                $ref: "#/components/schemas/_SignaturePosition"
        signingOrder:
          type: number
          example: 1
        declinedAt:
          type: string
          format: date
          example: null
    _FolderDocument:
      title: Folder Document
      type: object
      properties:
        name:
          description: Document Name
          type: string
          example: important_contract
        state:
          description: State of the document
          type: string
          enum:
            - draft
            - pending
            - done
          default: draft
          example: draft
        documentId:
          description: Id of the document
          type: string
        memberId:
          description: MemberId of the user for this document
          type: string
    _SignatureRequestResponse:
      title: Signature Request Response
      type: object
      description: Response object for signature request operations
      properties:
        success:
          type: boolean
          description: Whether the signature request was successful
          example: true
        message:
          type: string
          description: Response message
          example: Signature request created successfully
        document:
          allOf:
            - $ref: "#/components/schemas/_Document"
            - description: The created document object
    _DocumentResponse:
      title: Document Response
      type: object
      properties:
        data:
          description: List of documents
          type: array
          items:
            $ref: "#/components/schemas/_Document"
        pagination:
          allOf:
            - description: Pagination object
            - $ref: "#/components/schemas/_PaginationObject"
        allDocuments:
          description: Number of all documents
          type: integer
          example: 43
        envelopeDocuments:
          description: Number of documents in folders
          type: integer
          example: 6
        createdDocuments:
          description: Number of created documents
          type: integer
          example: 55
        createdIncompleteDocuments:
          description: Number of created incomplete documents
          type: integer
          example: 16
        incompleteDocuments:
          description: Number of total incomplete documents
          type: integer
          example: 18
        draftDocuments:
          description: Number of drafts
          type: integer
          example: 28
        invitedDocuments:
          description: Number of invited documents
          type: integer
          example: 7
        declinedDocuments:
          description: Number of declined documents
          type: integer
          example: 0
        pendingInvitations:
          description: Number of pending invitations (not in signing round yet)
          type: integer
          example: 0
        openInvitedDocuments:
          description: Number of open invited documents
          type: integer
          example: 6
        openInvitedToApproveDocuments:
          description: Number of open documents to be approved by you
          type: integer
          example: 3
        openInvitedToViewDocuments:
          description: Number of open documents to be viewed by you
          type: integer
          example: 1
        openInvitedToSignDocuments:
          description: Number of open documents to be signed by you
          type: integer
          example: 3
        openPositionedDocuments:
          description: Number of open positioned documents (ready for stack)
          type: integer
          example: 7
        stackedDocuments:
          description: Number of stacked documents
          type: integer
          example: 1
        completedDocuments:
          description: Number of completed documents
          type: integer
          example: 6
    _FolderListResponse:
      title: Folder List Response
      type: object
      properties:
        data:
          description: List of envelopes
          type: array
          items:
            $ref: "#/components/schemas/_FolderResponse"
        pagination:
          allOf:
            - description: Pagination object
            - $ref: "#/components/schemas/_PaginationObject"
    _FolderResponse:
      title: Folder Response
      type: object
      allOf:
        - $ref: "#/components/schemas/_Folder"
    _SignaturePosition:
      title: Signature Position
      type: object
      properties:
        page:
          description: Page number, starting with 0
          type: integer
        x:
          description: x coordinate of the signatures' top left position
          type: number
          minimum: 0
          maximum: 1
          example: 0.57489
        y:
          description: y coordinate of the signatures' top left position
          type: number
          minimum: 0
          maximum: 1
          example: 0.8455
        width:
          description: Width of the signature
          type: number
          minimum: 0
          maximum: 1
          example: 0.35
        height:
          description: Height of the signature
          type: number
          minimum: 0
          maximum: 1
          example: 0.1
    _VerificationResponse:
      title: Verification Response
      type: object
      properties:
        totalSignaturesCount:
          description: Number of total signatures on document
          type: integer
          example: 1
        validSignaturesCount:
          description: Number of valid signatures on document
          type: integer
          example: 1
        signatureVerificationInfos:
          description: List of verification information
          type: array
          items:
            $ref: "#/components/schemas/_Verification"
    _Verification:
      title: Verification
      type: object
      properties:
        id:
          type: string
          example: S-68EFBE99F599B6B13658BBC6B846D211F2ED2D1EE49298A51C0A712A209DCD9F
        qualification:
          type: string
          example: urn:cef:dss:signatureQualification:notApplicable
        format:
          type: string
          example: PKCS7-B
        indication:
          type: string
          example: urn:etsi:019102:mainindication:total-passed
        subIndication:
          type: string
          example: null
        certificateChain:
          type: array
          items:
            type: string
          example:
            - sproof GmbH
            - D-TRUST Application Certificates CA 3-1 2013
            - D-TRUST Root CA 3 2013
        signatureTime:
          type: string
          format: date-time
          description: Date of the signature
        bestSignatureTime:
          type: string
          format: date-time
          description: Lowest time at which there exists a proof of existence for the
            signature
        byteRange:
          type: string
          example: "The document ByteRange : [0, 46391, 106393, 130384]"
        name:
          type: string
          description: Name and email of the signer
          example: Max Mustermann [max.mustermann@sproof.com]
        signatureTimestampVerificationInfo:
          type: string
          example: null
    _SignatureBox:
      title: Signature Box
      type: object
      properties:
        page:
          description: Page number, starting by 0
          default: 0
          type: number
        pageWidth:
          type: number
        pageHeight:
          type: number
        type:
          example: signatureStyleBox
          type: string
        maxWidht:
          type: number
        minWidht:
          type: number
        maxHeight:
          type: number
        minHeight:
          type: number
        x:
          description: x coordinate of the signatures' top left position
          type: number
          minimum: 0
          maximum: 1
        y:
          description: y coordinate of the signatures' top left position
          type: number
          minimum: 0
          maximum: 1
        width:
          description: width of the signature
          type: number
          minimum: 0
          maximum: 1
        height:
          description: height of the signature
          type: number
          minimum: 0
          maximum: 1
        resizeable:
          type: boolean
          example: false
        styleId:
          type: string
        keepRatio:
          type: boolean
        selectedSigningOption:
          type: string
        value:
          description: Base64 Encoded PNG File which represents the signature or seal
          type: string
        moveable:
          type: boolean
        signatureType:
          description: Signature type
          example: aes_sproof
          type: string
        fdaConfig:
          type: object
    _DocumentRequestBody:
      title: Document Request Body
      type: object
      required:
        - token
        - data
      properties:
        token:
          description: Token for authentication
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          type: string
        data:
          description: Base64 Encoded Pdf File as string, represented by the BASE64PDF token
          example: "{{BASE64PDF}}"
          type: string
        signature:
          description: Base64 Encoded PNG File as a string which represents the signature
            or seal, represented by the BASE64PNGorJPG token
          example: "{{BASE64PNGorJPG}}"
          type: string
        page:
          description: Page number, starting at 0 ,if you pass a page number that is not
            out of bounds, the last page of the document will be used
          default: 0
          type: number
          example: 0
        x:
          description: x coordinate of the signature image, default is bottom right
            position, where 0 is the leftmost edge and 1 is the rightmost edge
            of the page
          type: number
          minimum: 0
          maximum: 1
          default: 0.7
          example: 0.142
        y:
          description: y coordinate of the signature image, default values are for bottom
            right, where 0 is the bottom edge and 1 is the top edge of the page
          type: number
          minimum: 0
          maximum: 1
          default: 0.9
          example: 0.79
        width:
          description: Width of the signature, relative to the page width, where 1
            represents the full width of the page
          type: number
          minimum: 0
          maximum: 1
          default: 0.3
          example: 0.26
        height:
          description: Height of the signature, relative to the page height, where 1
            represents the full height of the page
          type: number
          minimum: 0
          maximum: 1
          default: 0.1
          example: 0.085
        name:
          description: Name of the signer, defaults to API token holder name
          type: string
          example: Max Mustermann
        email:
          description: Email of the signer, defaults to API token holder email
          type: string
          example: max.mustermann@sproof.com
        key:
          description: "PKCS #12-File including the private key and the X.509 certificate"
          type: string
          example: ""
        password:
          description: Password of the key file
          type: string
          example: ""
        signatureCard:
          description: Flag to add a signature card with a visual timestamp that can
            include a custom image or name based on above parameters, defaults
            to true if no signature image is provided and uses the api token
            holder name and email as default values
          type: boolean
          default: false
          example: true
    _DocumentResponseBody:
      title: Document Response Body
      type: object
      properties:
        data:
          description: Base64 Encoded Signed PDF File
          example: "{{BASE64SIGNEDPDF}}"
          type: string
        signatures:
          description: List of signature details
          type: array
          items:
            $ref: "#/components/schemas/_SignatureDetail"
    _AddToStackRequestBody:
      title: Add to Stack Request Body
      type: object
      required:
        - token
        - memberId
      properties:
        token:
          description: Token for authentication
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          type: string
        memberId:
          description: MemberId of the user for this document
          type: string
        signature:
          description: Base64 Encoded PNG File which represents the signature or seal, if
            a custom image is desired
          type: string
          example: null
        page:
          description: Page number, starting at 0, default is last page of document
          default: null
          type: number
        x:
          description: x coordinate of the signatures' top left position
          type: number
          minimum: 0
          maximum: 1
          default: 0.7
        y:
          description: y coordinate of the signatures' top left position
          type: number
          minimum: 0
          maximum: 1
          default: 0.9
        width:
          description: width of the signature
          type: number
          minimum: 0
          maximum: 1
          default: 0.3
        height:
          description: height of the signature
          type: number
          minimum: 0
          maximum: 1
          default: 0.1
        signatureType:
          description: Type of the signature
          type: string
          enum:
            - aes_sproof
            - qes_sproof
          default: qes_sproof
    _PaginationObject:
      title: Pagination Object
      type: object
      properties:
        total:
          description: Total number of elements (e.g., documents) in a view (e.g.,
            allDocuments)
          type: integer
          example: 43
        lastPage:
          description: Number of the last page
          type: integer
          example: 5
        perPage:
          description: Number of documents per page
          type: integer
          example: 10
        currentPage:
          description: Number of the current page
          type: integer
          example: 1
        to:
          description: Index of the last document
          type: integer
          example: 10
    _FolderDocumentInvite:
      title: Folder Document Invite
      type: object
      properties:
        id:
          description: Id of the document
          type: string
        signingOrder:
          description: The order when the signer will be notified to sign the document.
            The values for signingOrder start at 1. If there exists a smaller
            signingOrder then this signer needs to sign the document before.
          type: integer
        signaturePosition:
          description: Array or one single signaturePosition Object. The signature
            position **relative to the height and width of the page**.
          oneOf:
            - $ref: "#/components/schemas/_SignaturePosition"
            - type: array
              items:
                $ref: "#/components/schemas/_SignaturePosition"
    _FolderSigner:
      title: Folder Signer
      type: object
      properties:
        email:
          description: Email address of signer
          type: string
          example: signer@sproof.com
        firstName:
          description: First name of signer
          type: string
          example: maria
        lastName:
          description: Last name of signer
          type: string
          example: musterfrau
        isSigner:
          description: Indicates if the person should be able to sign the document or can
            only view it
          type: boolean
        documents:
          description: List of document ids and signature positions
          type: array
          items:
            $ref: "#/components/schemas/_FolderDocumentInvite"
    _SignatureRequestBody:
      title: Signature Request Body
      type: object
      required:
        - token
        - data
        - email
        - firstName
        - lastName
        - fileName
      properties:
        token:
          description: Token for authentication (e.g. your API key)
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          type: string
        data:
          description: Base64 encoded file (PDF or DOCX). If the file is DOCX, mimetype
            must be set accordingly.
          type: string
          example: string Base64 encoded file (PDF or DOCX)
        mimetype:
          description: MIME type of the Base64-encoded file. Required for DOCX files.
          default: application/pdf
          type: string
          enum:
            - application/pdf
            - application/vnd.openxmlformats-officedocument.wordprocessingml.document
        email:
          description: Email of the sender. It must belong to a member of your plan.
          type: string
          format: email
          example: max.mustermann@sproof.com
        firstName:
          description: First name of the sender
          type: string
          example: Max
        lastName:
          description: Last name of the sender
          type: string
          example: Mustermann
        fileName:
          description: Name of the file
          type: string
          example: important_contract
        callbackUrl:
          description: A post request including the document will be sent to this Url when
            a new signature is created
          type: string
        returnUrl:
          type: string
          description: The link of the return button after signing a document
          example: https://sign.sproof.com
        returnBtnText:
          type: string
          description: The text of the return button after signing a document
          example: Back to the Dashboard
        language:
          description: Specifies the language of the emails sent to anonymous users who do
            not have an account. For users with an account, the language they
            have selected in their profile will be used instead.
          default: en
          type: string
        signatureTypes:
          description: >
            This parameter accepts an array containing a single string that
            specifies the allowed signature type. 

            - Set to ["qualified"] to allow only qualified signatures.

            - Set to ["advanced"] to allow only advanced signatures.

            - If the array is left empty, all signature types are allowed.
          type: array
          items:
            type: string
          default: []
          example:
            - qualified
        subject:
          description: The subject line of the email sent to the signers.
          type: string
          example: This is a custom subject.
        message:
          description: A custom message sent to the signers within the email
          type: string
          example: This is a custom message.
        dueDate:
          description: For historical reasons, this date marks the start of reminder email
            notifications. To precisely manage the actual due date—when the
            document must be signed—as well as the sendReminders and
            reminderInterval settings, we recommend using the new
            [createSignatureRequest](#operation/createSignatureRequest) feature
          type: string
          format: date YYYY-MM-DD
          example: 2022-03-28
        focusedSigningMode:
          description: When this option is enabled, the recipient of the signature request
            will be limited to  signing or declining the document, and will not
            be able to navigate away from the page
          type: boolean
          default: false
          example: false
        usePlaceholders:
          description: If set we will use the placeholders stored in the document for
            inviting signers.
          type: boolean
          default: false
          example: false
        boxes:
          type: array
          items:
            $ref: "#/components/schemas/Box"
          default: []
          description: The boxes of the document.
        isMailMerge:
          default: false
          type: boolean
          description: When set to `true`, the [mail merge
            document](https://www.sproof.com/en/help-resources/sproof-academy/send-out-mail-merges)
            included in the request will be automatically split and sent out to
            all detected recipients within the document.  The return value will
            be an array of document objects representing all successfully
            created and sent documents.
        signers:
          description: List of signers **without the sender of the document.**
          type: array
          items:
            $ref: "#/components/schemas/_Signer"
        label:
          description: A custom label that can be sent to organize documents.
          type: string
          example: Urgent
        refId:
          type: string
          description: >
            The refId is an optional field used to cross-reference the uploaded
            document. If provided, it allows you to assign a custom reference
            identifier to the document, which will be returned as part of the
            document object in future API responses. This can be useful for
            tracking or organizing documents by an external system or workflow.
          example: Aug24-1234
        useFastlane:
          type: boolean
          default: false
          example: true
          description: If set to true all signers receive a fastlane link to the document
            in the invitation email.
        fastlaneProfileId:
          type: string
          format: uuid
          example: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
          description: Specify the Fastlane profile which should be used with this
            document. useFastlane needs to be set to true.
    _FolderRequestBody:
      title: Folder Request Body
      type: object
      required:
        - signers
      properties:
        signers:
          description: List of signers **without the sender of the document.**
          type: array
          items:
            $ref: "#/components/schemas/_FolderSigner"
    _userPlanMembers:
      title: A userPlanMember
      type: object
      required:
        - id
        - userPlanId
        - email
      properties:
        id:
          description: Id
          type: string
        userPlanId:
          description: User Plan Id
          type: string
        email:
          description: Users Email Address
          type: string
        type:
          description: Type of the plan
          type: string
        role:
          description: Role of the user in the plan
          type: string
        updatedAt:
          description: Last update
          type: string
        createdAt:
          description: Entry created at
          type: string
        isVerified:
          description: Is verified
          type: boolean
        isBlocked:
          description: Member is blocked
          type: boolean
    _CreateFolderRequestBody:
      title: Create Folder Request Body
      type: object
      description: Request body for creating a folder
      properties:
        name:
          type: string
          description: Name of the folder
        members:
          type: array
          items:
            $ref: "#/components/schemas/_FolderMember"
          description: List of members to add to the folder
        documents:
          type: array
          items:
            $ref: "#/components/schemas/_Document"
          description: List of documents to add to the folder
    _CreateFolderWithDocuments:
      title: Create Folder With Documents
      type: object
      description: Request body for creating a folder with document objects
      properties:
        documents:
          type: array
          items:
            $ref: "#/components/schemas/_Document"
          description: List of documents to add to the folder
    _RemoveFastlaneProfileRequest:
      title: Remove Fastlane Profile Request
      type: object
      description: Request body for removing a Fastlane profile from documents
      properties:
        memberIds:
          type: array
          description: List of admin memberIds where the Fastlane profile should be
            removed from.
          items:
            type: string
            example: d46b68b53d2bef3025fd21a0737b0cd7425b1270b0115f39dafa46131023247cd46e7f
    _RemoveFastlaneProfileResponse:
      title: Remove Fastlane Profile Response
      type: object
      description: Response for removing a Fastlane profile from documents
      properties:
        removed:
          type: string
          description: ID of the removed Fastlane profile
          example: 54f82188-7461-48fe-882c-afbf98256b16
    _ErrorResponse:
      title: Error Response
      type: object
      description: Standard error response object
      properties:
        message:
          type: string
          description: General or specific error message
          example: Example error message
        traceId:
          type: string
          description: Trace ID - Provide this to the sproof support team to help them
            debug the issue
          example: db89cb064945cea8c361aca3638e05d3
    _SuccessResponse:
      title: Success Response
      type: object
      description: Standard success response object
      properties:
        success:
          type: boolean
          description: Whether the operation was successful
          example: true
        message:
          type: string
          description: Success message
          example: Operation completed successfully
    _BatchDeleteResponse:
      title: Batch Delete Response
      type: object
      description: Response for batch delete operations
      properties:
        deletedProfiles:
          type: array
          description: List of deleted profile IDs
          items:
            type: string
            format: uuid
          example:
            - 54f82188-7461-48fe-882c-afbf98256b16
            - ff093edf-2c18-4302-bb82-f3ca202694e5
    _DocumentListResponse:
      title: Document List Response
      type: object
      description: Response object for document list operations
      properties:
        data:
          type: array
          description: List of documents
          items:
            $ref: "#/components/schemas/_Document"
        pagination:
          $ref: "#/components/schemas/_PaginationObject"
    _SignatureValidationResponse:
      title: Signature Validation Response
      type: object
      description: Response object for signature validation
      properties:
        success:
          type: boolean
          description: Whether the validation was successful
          example: true
        errorMessage:
          type: string
          description: Error message if validation failed
          nullable: true
        valid:
          type: boolean
          description: Whether the signature is valid
          example: true
        signatureValid:
          type: boolean
          description: Whether the signature itself is valid
          example: true
        certificateValid:
          type: boolean
          description: Whether the certificate is valid
          example: true
        signatureVerificationResult:
          type: string
          description: Detailed result of signature verification
          example: signature verified successfully
        certificateVerificationResult:
          type: string
          description: Detailed result of certificate verification
          example: certificate validated successfully
    _BatchDeleteRequest:
      title: Batch Delete Request
      type: object
      description: Request body for batch deleting Fastlane profiles
      properties:
        ids:
          type: array
          description: List of profile IDs to be deleted
          items:
            type: string
            format: uuid
          example:
            - 54f82188-7461-48fe-882c-afbf98256b16
            - ff093edf-2c18-4302-bb82-f3ca202694e5
    _UpdateFolderRequest:
      title: Update Folder Request
      type: object
      description: Request body for updating an envelope name
      required:
        - folderName
      properties:
        folderName:
          type: string
          description: New name for the envelope
          example: Updated Contract Envelope
    _DeleteFolderDocumentsRequest:
      title: Delete Folder Documents Request
      type: object
      description: Request body for deleting documents from an envelope
      required:
        - documentIds
      properties:
        documentIds:
          type: array
          items:
            type: string
          description: List of document IDs to be removed from the envelope
          example:
            - doc1
            - doc2
    _AddFolderDocumentsRequest:
      title: Add Folder Documents Request
      type: object
      description: Request body for adding documents to an envelope
      required:
        - documentIds
      properties:
        documentIds:
          type: array
          items:
            type: string
          description: List of document IDs to be added to the envelope
          example:
            - doc1
            - doc2
    FastlaneProfileGetResponse:
      title: Fastlane Profile Get Response
      type: object
      properties:
        id:
          type: string
          description: ID of the profile
          example: 54f82188-7461-48fe-882c-afbf98256b16
        name:
          type: string
          description: Name of the profile
          example: Signing screen with custom email
        createdAt:
          type: string
          format: date-time
          description: Date and time when the profile was created
          example: 2024-10-02T08:21:53.305Z
        updatedAt:
          type: string
          format: date-time
          description: Date and time when the profile was last updated
          example: 2024-10-02T08:21:53.305Z
        configuration:
          $ref: "#/components/schemas/_FastlaneConfiguration"
    SignBatchRequest:
      title: Sign Batch Request
      type: object
      required:
        - email
      properties:
        email:
          type: string
          format: email
          description: Email of the member from the stack you want to sign (only QES)
    CreateSignatureRequestBody:
      title: Create Signature Request Body
      type: object
      description: Request body for creating a new signature request
      required:
        - token
        - inviteData
        - envelopeData
      properties:
        token:
          type: string
          description: Token for authentication (e.g. your API key)
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
        inviteData:
          $ref: "#/components/schemas/CSRInviteData"
        envelopeData:
          $ref: "#/components/schemas/EnvelopeData"
    CSRInviteData:
      title: CSR Invite Data
      type: object
      description: Data relevant for the invitation
      required:
        - sender
        - recipients
      properties:
        sender:
          $ref: "#/components/schemas/CSRSender"
        recipients:
          type: array
          items:
            $ref: "#/components/schemas/CSRRecipient"
        signatureTypes:
          type: array
          items:
            type: string
          description: "The types of signatures that are allowed. Options: ['advanced',
            'advancedPlus', 'qualified', 'simple', 'qualifiedPlusIdent']"
        subject:
          type: string
          description: The subject line of the email sent to the recipients
          example: Please sign this important document
        message:
          type: string
          description: A custom message sent to the recipients within the email
          example: This document requires your signature
    CSRSender:
      title: CSR Sender
      type: object
      description: Information about the sender of the signature request
      required:
        - email
        - firstName
      properties:
        email:
          type: string
          format: email
          description: Email of the sender. It must belong to a member of your plan
          example: max.mustermann@sproof.com
        firstName:
          type: string
          description: First name of the sender
          example: Max
        lastName:
          type: string
          description: Last name of the sender
          example: Mustermann
    CSRRecipient:
      title: CSR Recipient
      type: object
      description: Information about a recipient of the signature request
      properties:
        email:
          type: string
          format: email
          description: Email of the recipient
          example: signer@sproof.com
        firstName:
          type: string
          description: First name of the recipient
          example: Maria
        lastName:
          type: string
          description: Last name of the recipient
          example: Musterfrau
        doNotSendEmails:
          type: boolean
          description: If set to true no email is sent to the recipient
        useFastlane:
          type: boolean
          description: If set to true the recipient receives a Fastlane link
    EnvelopeData:
      type: object
      properties:
        usePlaceholders:
          type: boolean
          description: |-
            If true, text placeholders/formFields stored in the document
              wil be used for inviting recipients.
          example: false
        inPersonSigning:
          type: boolean
          description: When true, the recipient gets a popup where he needs to manually
            draw a signature
          example: false
        folderName:
          type: string
          description: If given, an envelope will be created containing all documents in
            documentDataArray. (Required if more than one document is sent)
          example: Important Documents.
        callbackUrl:
          type: string
          description: A POST request, including the document, will be sent to this URL
            when a new signature is created or when a recipient declines the
            document. In case of failure, a retry mechanism is in place to
            ensure the request is retried.
          example: https://yourserver.com/api/v1/documents/signature.
        returnUrl:
          type: string
          description: The link of the return button after signing a document
          example: https://www.sproof.com.
        returnBtnText:
          type: string
          description: The text of the return button after signing a document
          example: Return to sproof.
        documentDataArray:
          type: array
          items:
            $ref: "#/components/schemas/DocumentData"
          maxItems: 25
          description: Array of the data of each document, if more than one document is
            sent, the folderName is required.
        useFastlane:
          type: boolean
          description: If set to ``true`` the signer receives a Fastlane link in the
            invitation email.
        fastlaneProfileId:
          type: string
          format: uuid
          description: Specify the Fastlane profile which should be used with this
            document. (useFastlane must be set to true).
      required:
        - documentDataArray
      description: Can create either one document or multiple documents in an
        envelope. If more than one document is sent, the folderName is required.
      example:
        documentDataArray:
          - data: base64string
            fileName: important_contract
            recipientDetails:
              max.mustermann@sproof.com:
                role: signer
                signaturePositions:
                  - page: 0
                    x: 0.57489
                    y: 0.8455
                    width: 0.35
                    height: 0.1
              maria.musterfrau@sproof.com:
                role: viewer
    DocumentData:
      anyOf:
        - $ref: "#/components/schemas/Document"
        - $ref: "#/components/schemas/Attachment"
    Box:
      anyOf:
        - $ref: "#/components/schemas/TextBox"
        - $ref: "#/components/schemas/DateBox"
        - $ref: "#/components/schemas/ChooseBox"
        - $ref: "#/components/schemas/RadioBox"
        - $ref: "#/components/schemas/CheckBox"
        - $ref: "#/components/schemas/IbanBox"
    PaginationObject:
      type: object
      properties:
        total:
          type: integer
          description: Total number of elements (e.g., documents) in a view (e.g.,
            allDocuments)
          example: 43
        lastPage:
          type: integer
          description: Number of the last page
          example: 5
        perPage:
          type: integer
          description: Number of documents per page
          example: 10
        currentPage:
          type: integer
          description: Number of the current page
          example: 1
        to:
          type: integer
          description: Index of the last document
          example: 10
      description: Pagination Data
    Sender:
      type: object
      properties:
        email:
          type: string
          description: Email of the sender. It must belong to a member of your plan.
        firstName:
          type: string
          minLength: 1
          description: First name of the sender.
        lastName:
          type: string
          description: Last name of the sender.
        role:
          type: string
          enum:
            - signer
            - viewer
            - approver
            - none
          description: The role of the sender on all documents.
      required:
        - email
        - firstName
      description: The sender of the document, it must be a member of your plan.
      example:
        email: youremail@sproof.com
        firstName: yourname
        lastName: yourlastname.
    Recipient:
      type: object
      properties:
        email:
          type: string
          description: Email of the recipient.
        firstName:
          type: string
          description: First name of the recipient.
        lastName:
          type: string
          description: Last name of the recipient.
        doNotSendEmails:
          type: boolean
          description: If set to `true` no email is sent to the recipient.
        customId:
          type: string
          description: >-
            The customId can be used to create a document link for a recipient
            instead of using the memberId provided by the return object of the
            CreateSignatureRequest. Check [Using the custom
            ID](#section/Using-the-Custom-ID) for more information.

              **Note: The customId can only be used to build the recipient link to a document. It can not be used for other requests instead of the memberId**.
        useFastlane:
          type: boolean
          description: If set to ``true`` the signer receives a Fastlane link in the
            invitation email.
        phoneNumber:
          type: string
          nullable: true
          description: "The phone number of this recipient. This is used for SMS
            verification. (eg: +43 699 1234 1234)."
        privateMessage:
          type: string
          description: A private message for this specific recipient.
        inPersonMode:
          type: boolean
          nullable: true
          default: false
          description: When this option is enabled, the recipient of the signature request
            will be required to sign the document in person and no email is
            sent. This mode is only available using the SES signature type
        signatureTypes:
          type: array
          nullable: true
          items:
            type: string
          default: []
          description: "The types of signatures that are allowed for this recipient.
            Options: ['advanced', 'advancedPlus', 'qualified',
            'qualifiedPlusIdent', 'simple']"
        defaultProvider:
          type: object
          nullable: true
          properties:
            tag:
              type: string
              description: >-
                This tag determines the identity provider that will be used for
                the signing process. Choose from a predefined set of supported
                providers. 

                 >**Note1:** Some providers are only available for certain signatureTypes, for example ``onetimeqes`` will require ``"signatureType" : ["qualifiedPlusIdent"]`` 

                 **Note2:** When using ``sproof-qualified`` as default provider the recipient has to have an active sproof account with an active User+ licence.
              enum:
                - sproof-standard
                - sproof-qualified
                - simple
                - dtrust
                - evrotrust
                - smartid
                - mobileid
                - idaustria
                - swisscom-ciba
                - swisscom-ciba-zertes
                - prime
                - yes
                - spid
                - beidcard
                - fiidcard
                - hridcard
                - eeidcard
                - uanataca
                - lvidcard
                - ptidcard
                - frusbcard
                - rousbcard
                - simplysign
                - primeeid
                - certme
                - onetimeqes
            canChange:
              type: boolean
              description: Boolean to indicate if the invited recipient should be able to
                change the signature provider
              example: false
              default: true
            country:
              type: string
              description: The default country, if blank it's set to all, an error will be
                returned with what countries are available for the provider tag
                chosen
              example: at
              default: all
              enum:
                - all
                - at
                - be
                - bg
                - hr
                - cy
                - cz
                - dk
                - ee
                - fi
                - fr
                - de
                - gr
                - hu
                - ie
                - it
                - lv
                - lt
                - lu
                - mt
                - nl
                - pl
                - pt
                - ro
                - sk
                - si
                - es
                - se
                - al
                - ad
                - am
                - by
                - ba
                - fo
                - ge
                - gi
                - is
                - im
                - xk
                - li
                - mk
                - md
                - mc
                - me
                - no
                - sm
                - rs
                - ch
                - tr
                - ua
                - gb
                - va
          description: Configure a default signature provider for the invited recipient
    CollabSigningMode:
      type: object
      additionalProperties:
        type: boolean
        description: Indicates whether only one person (true) or everyone (false) is
          required to sign the document in the specified signing round.
      description: "An object where each key represents a signing round, and its
        corresponding value indicates whether collaborative signing is enabled
        for that round. If the value is true, only one signature is required to
        complete the specified signing round and proceed to the next round. For
        example, { '1': true } means that in signing round '1', only one
        signature is necessary."
      example:
        "1": true
    InviteData:
      type: object
      properties:
        sender:
          $ref: "#/components/schemas/Sender"
        recipients:
          type: array
          items:
            $ref: "#/components/schemas/Recipient"
          description: List of recipients **without the sender of the document.**
          example:
            - email: max.mustermann@sproof.com
              firstName: Max
              lastName: Mustermann.
            - email: maria.musterfrau@sproof.com
              firstName: Maria
              lastName: Musterfrau.
        dueDate:
          type: string
          nullable: true
          format: YYYY-MM-DD
          description: The date until which the document can be signed. This due date is
            displayed to the recipient in the invite email and is also visible
            in the document details section of the dashboard. It serves as a
            deadline for completing the signing process.
          example: 2032-12-31
        reminderInterval:
          type: number
          nullable: true
          description: Specifies the number of days between reminder emails.
          example: 3
        startSendingReminders:
          type: string
          nullable: true
          format: YYYY-MM-DD HH:MM
          description: Date from which reminders should be sent out
          example: 2030-12-31 23:59
        inviteLanguage:
          type: string
          nullable: true
          default: en
          description: Specifies the language of the emails sent to anonymous users who do
            not have an account. For users with an account, the language they
            have selected in their profile will be used instead.
          example: en.
        message:
          type: string
          nullable: true
          maxLength: 5000
          description: A custom message sent to the recipients within the email.
          example: Please sign this document.
        subject:
          type: string
          nullable: true
          maxLength: 255
          description: The subject line of the email sent to the recipients.
          example: Signature required.
        sendOutFinishedPdf:
          type: boolean
          nullable: true
          description: If set to true, the pdf is sent as an attachment to all recipients
            on the document (If it is smaller than 5MB).
          example: false
        focusedSigningMode:
          type: boolean
          nullable: true
          default: false
          description: When this option is enabled, the recipient of the signature request
            will be limited to signing or declining the document, and will not
            be able to navigate away from the page.
          example: false
        allowForwarding:
          type: boolean
          nullable: true
          description: Allow forwarding of the invite.
          example: false
        collabSigningMode:
          $ref: "#/components/schemas/CollabSigningMode"
      required:
        - sender
        - recipients
      description: Data relevant for the invitation
      example:
        sender:
          email: youremail@sproof.com
          firstName: yourname
          lastName: yourlastname.
        recipients:
          - email: max.mustermann@sproof.com
            firstName: Max
            lastName: Mustermann.
          - email: maria.musterfrau@sproof.com
            firstName: Maria
            lastName: Musterfrau.
    BaseBox:
      type: object
      properties:
        page:
          type: integer
          description: Number of the page the box is on, with the first page being 0.
        pageWidth:
          type: integer
          description: Any integer value describing the page width. The larger the number,
            the better the precision when positioning the box in x y space. On
            an A4 page, we have 478 as a default value.
        pageHeight:
          type: integer
          description: Any integer value describing the page height. The larger the
            number, the better the precision when positioning the box in x y
            space. On an A4 page, we have 676 as a default value.
        x:
          type: number
          description: Represents the horizontal position of the box as a percentage of
            the page width. The origin (0,0) is at the top left of the page. A
            value of 0.1 means the box is positioned at 10% of the page width
            from the left.
          format: float
        y:
          type: number
          description: Represents the vertical position of the box as a percentage of the
            page height. The origin (0,0) is at the top left of the page. A
            value of 0.1 means the box is positioned at 10% of the page height
            from the top.
          format: float
        width:
          type: number
          description: Width of the box based on page dimensions, similar to the x and y
            coordinates. It's a float representing a percentage of the
            pageWidth.
          format: float
        height:
          type: number
          description: Height of the box based on page dimensions, similar to the x and y
            coordinates. It's a float representing a percentage of the
            pageHeight.
          format: float
        id:
          type: string
          description: A unique ID for this box, generated in any way you wish.
        label:
          type: string
          description: Placeholder text, such as the name of the field, e.g., "Date of
            Birth.".
        value:
          type: string
          nullable: true
          description: Default value for the box. Can be null. If the box is of type
            'chooseBox', the value can be null or one of the strings defined in
            the options.
        readonly:
          type: boolean
          default: false
          description: If set to true, the invited person cannot modify the value of this
            box.
        required:
          type: boolean
          default: false
          description: If set to true, the invited person cannot sign the document without
            filling out this box.
      required:
        - page
        - x
        - y
        - width
        - height
        - id
    TextBox:
      allOf:
        - $ref: "#/components/schemas/BaseBox"
        - type: object
          properties:
            type:
              type: string
              enum:
                - textBoxMultiLine
            multiline:
              type: boolean
              default: false
              description: Whether multiple lines are allowed in this text box.
          required:
            - type
    DateBox:
      allOf:
        - $ref: "#/components/schemas/BaseBox"
        - type: object
          properties:
            type:
              type: string
              enum:
                - dateBox
          required:
            - type
    ChooseBox:
      allOf:
        - $ref: "#/components/schemas/BaseBox"
        - type: object
          properties:
            type:
              type: string
              enum:
                - chooseBox
            options:
              type: array
              items:
                type: object
                properties:
                  displayValue:
                    type: string
                  exportValue:
                    type: string
                required:
                  - displayValue
                  - exportValue
              description: All the possible choices in this drop down box, displayValue and
                exportValue can be the same.
          required:
            - type
    RadioBox:
      allOf:
        - $ref: "#/components/schemas/BaseBox"
        - type: object
          properties:
            type:
              type: string
              enum:
                - radioBox
            group:
              type: number
              default: 1
              description: Each radio box can be assigned to a group.
          required:
            - type
    CheckBox:
      allOf:
        - $ref: "#/components/schemas/BaseBox"
        - type: object
          properties:
            type:
              type: string
              enum:
                - checkBox
          required:
            - type
    IbanBox:
      allOf:
        - $ref: "#/components/schemas/BaseBox"
        - type: object
          properties:
            type:
              type: string
              enum:
                - ibanBox
          required:
            - type
    SignaturePosition:
      type: object
      properties:
        page:
          type: integer
          description: Page number, starting with 0.
        x:
          type: number
          minimum: 0
          maximum: 1
          description: x coordinate of the signatures' top left position
        y:
          type: number
          minimum: 0
          maximum: 1
          description: y coordinate of the signatures' top left position
        width:
          type: number
          minimum: 0
          maximum: 1
          description: Width of the signature.
        height:
          type: number
          minimum: 0
          maximum: 1
          description: Height of the signature.
      required:
        - page
        - x
        - y
        - width
        - height
    BaseDocumentRecipientDetails:
      type: object
      properties:
        signingOrder:
          type: number
          default: 1
          description: The order when the recipient will be notified to interact with the
            document.
    SignerRecipientDetails:
      allOf:
        - $ref: "#/components/schemas/BaseDocumentRecipientDetails"
        - type: object
          properties:
            role:
              type: string
              enum:
                - signer
              description: The role must be signer in this case.
            signaturePositions:
              type: array
              items:
                $ref: "#/components/schemas/SignaturePosition"
              description: The signature position array of the signer, it is required when the
                role is signer.
            signatureTypes:
              type: array
              nullable: true
              items:
                type: string
              default: []
              description: "The types of signatures that are allowed for this recipient.
                Options: ['advanced', 'advancedPlus', 'qualified', 'simple']"
          required:
            - role
            - signaturePositions
    Non-SignerRecipientDetails:
      allOf:
        - $ref: "#/components/schemas/BaseDocumentRecipientDetails"
        - type: object
          properties:
            role:
              type: string
              enum:
                - viewer
                - approver
              description: The role for the recipient.
            signaturePositions:
              type: array
              items:
                $ref: "#/components/schemas/SignaturePosition"
              description: The signature position array is not needed in this case.
            signatureTypes:
              type: array
              items:
                type: string
              default: []
              description: The signature types array is not needed in this case.
          required:
            - role
    DocumentRecipientDetails:
      anyOf:
        - $ref: "#/components/schemas/SignerRecipientDetails"
        - $ref: "#/components/schemas/Non-SignerRecipientDetails"
    Document:
      type: object
      properties:
        data:
          type: string
          description: The document (PDF or DOCX) data in base64 format.
          example: base64string.
        mimetype:
          type: string
          nullable: true
          enum: &a1
            - application/pdf
            - application/vnd.openxmlformats-officedocument.wordprocessingml.document
          default: application/pdf
          description: MIME type of base64 encoded data PDF or DOCX, required if the
            document is not a pdf
          example: application/pdf
        fileName:
          type: string
          description: Name of the file
          example: important_contract.
        label:
          type: string
          description: A custom label that can be sent to organize documents.
        boxes:
          type: array
          items:
            $ref: "#/components/schemas/Box"
          default: &a2 []
          description: An array of form fields that can be added to a document, allowing
            for various types of user input.
        signatureTypes:
          type: array
          nullable: true
          items:
            type: string
          default: &a3 []
          description: "The types of signatures that are allowed for this recipient, can
            be overwritten by recipient signature types. Options: ['advanced',
            'advancedPlus', 'qualified', 'simple','qualifiedPlusIdent']"
        refId:
          type: string
          description: The refId is an optional field used to cross-reference the uploaded
            document. If provided, it allows you to assign a custom reference
            identifier to the document, which will be returned as part of the
            document object in future API responses. This can be useful for
            tracking or organizing documents by an external system or workflow.
        language:
          type: string
          description: The document language.
        folderId:
          type: string
          description: The ID of a folder into which the documents should be inserted.
            This is only possible when both inviteData and folderName are
            undefined.
        isAttachment:
          type: boolean
          description: isAttachment is not needed in this case.
        recipientDetails:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/DocumentRecipientDetails"
          description: The details of each recipient for this document, The key (*property
            name*) is the email of the recipient.
          example:
            max.mustermann@sproof.com:
              role: Signer
              signaturePositions:
                - page: 0
                  x: 0.57489
                  y: 0.8455
                  width: 0.35
                  height: 0.1
            maria.musterfrau@sproof.com:
              role: viewer.
      required:
        - data
        - fileName
        - recipientDetails
    Attachment:
      type: object
      properties:
        data:
          type: string
          description: The document (PDF or DOCX) data in base64 format.
          example: base64string.
        mimetype:
          type: string
          nullable: true
          enum: *a1
          default: application/pdf
          description: MIME type of base64 encoded data PDF or DOCX, required if the
            document is not a pdf
          example: application/pdf
        fileName:
          type: string
          description: Name of the file
          example: important_contract.
        label:
          type: string
          description: A custom label that can be sent to organize documents.
        boxes:
          type: array
          items:
            $ref: "#/components/schemas/Box"
          default: *a2
          description: An array of form fields that can be added to a document, allowing
            for various types of user input.
        signatureTypes:
          type: array
          nullable: true
          items:
            type: string
          default: *a3
          description: "The types of signatures that are allowed for this recipient, can
            be overwritten by recipient signature types. Options: ['advanced',
            'advancedPlus', 'qualified', 'simple','qualifiedPlusIdent']"
        refId:
          type: string
          description: The refId is an optional field used to cross-reference the uploaded
            document. If provided, it allows you to assign a custom reference
            identifier to the document, which will be returned as part of the
            document object in future API responses. This can be useful for
            tracking or organizing documents by an external system or workflow.
        language:
          type: string
          description: The document language.
        folderId:
          type: string
          description: The ID of a folder into which the documents should be inserted.
            This is only possible when both inviteData and folderName are
            undefined.
        isAttachment:
          type: boolean
          enum:
            - true
          description: True to indicate the document is an attachment.
        recipientDetails:
          type: object
          additionalProperties:
            $ref: "#/components/schemas/DocumentRecipientDetails"
          description: recipientDetails is not needed in this case.
      required:
        - data
        - fileName
        - isAttachment
    CreateSignatureRequestSchema:
      type: object
      properties:
        token:
          type: string
          description: Token for authentication (e.g. your API key)
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
        inviteData:
          $ref: "#/components/schemas/InviteData"
        envelopeData:
          $ref: "#/components/schemas/EnvelopeData"
      required:
        - token
        - inviteData
        - envelopeData
    SignaturePositionResponse:
      allOf:
        - $ref: "#/components/schemas/SignaturePosition"
        - type: object
          properties:
            cardStyle:
              type: string
              description: The visual style of the signature card. This field is optional and
                may not be returned in all responses.
              example: default
            pageWidth:
              type: number
              description: The width of the page in pixels. This field is optional and may not
                be returned in all responses.
              example: 478
            pageHeight:
              type: number
              description: The height of the page in pixels. This field is optional and may
                not be returned in all responses.
              example: 675
      description: Signature position data with additional response-specific fields.
        The cardStyle, pageWidth, and pageHeight fields are optional and may not
        be present in all API responses.
    _Member:
      type: object
      properties:
        id:
          type: string
          description: The member ID can be used to open the document within the sproof
            sign editor. A more detailed description can be found
            [here](#section/Using-the-member-ID)
          example: 0dd4a4718ad3669c7133a615d955b4a89f5f11452de55d21d7ca0fff859a08c698b5a3
        email:
          type: string
          description: Email of document owner
          example: max.mustermann@sproof.com
        firstName:
          type: string
          description: Firstname of document owner
          example: Max
        lastName:
          type: string
          description: Lastname of document owner
          example: Mustermann
        lastActivityAt:
          type: string
          format: date-time
          description: Date and time of last activity (ISO 8601 datetime string)
          example: 2022-04-05T08:58:04.206Z
        createdAt:
          type: string
          format: date-time
          description: Date and time of document upload (ISO 8601 datetime string)
          example: 2022-04-05T08:58:04.206Z
        signed:
          type: boolean
          description: Indicates whether the document was signed by the owner
          example: false
        isAdmin:
          type: boolean
          description: Indicates whether the member has Admin status
          example: true
        signaturePosition:
          anyOf:
            - $ref: "#/components/schemas/SignaturePositionResponse"
            - type: array
              items:
                $ref: "#/components/schemas/SignaturePositionResponse"
          description: The signature position(s) for this member. Based on what is sent in
            the request you can expect either a single position object or an
            array of position objects.
        signedAt:
          type: string
          nullable: true
          format: date-time
          description: Date and time of the signature (ISO 8601 datetime string)
        signingOrder:
          type: number
          description: The order in which this member should sign
          example: 1
        qesVoucher:
          type: boolean
          description: Indicates whether a voucher for a qualified signature was used.
          example: false
        declinedAt:
          type: string
          nullable: true
          format: date-time
          description: Date and time when the member declined (ISO 8601 datetime string)
        signatures:
          type: array
          items:
            type: object
            properties:
              signatureType:
                type: string
                description: Type of signature (e.g. aes_sproof)
                example: aes_sproof
              signedAt:
                type: string
                format: date-time
                description: Timestamp when the signature was applied (ISO 8601 datetime string)
                example: 2023-05-26T08:03:42.946Z
            required:
              - signatureType
              - signedAt
          description: Array of signatures
          example:
            - signatureType: aes_sproof
              signedAt: 2023-05-26T08:03:42.946Z
      required:
        - id
        - email
        - firstName
        - lastName
        - lastActivityAt
        - createdAt
        - signed
        - isAdmin
        - signaturePosition
        - signedAt
        - signingOrder
        - qesVoucher
        - declinedAt
        - signatures
    MemberSignaturePositionResponse:
      anyOf:
        - $ref: "#/components/schemas/SignaturePositionResponse"
        - type: array
          items:
            $ref: "#/components/schemas/SignaturePositionResponse"
          default: []
        - nullable: true
      default: []
      description: The signature position(s) for this member. Contains position data
        when the member has a pending signature on the document. Will be an
        empty array if no signature is required or if the member has already
        signed.
      example:
        - x: 0.6150627615062761
          y: 0.3836805555555556
          page: 0
          width: 0.27742807420298443
          height: 0.1
          cardStyle: default
          pageWidth: 478
          pageHeight: 675
    MemberResponseSchema:
      type: object
      properties:
        id:
          type: string
        documentId:
          type: string
        email:
          type: string
          nullable: true
        firstName:
          type: string
          nullable: true
        lastName:
          type: string
          nullable: true
        isAdmin:
          type: boolean
        createdAt:
          type: string
          nullable: true
          format: date-time
          description: Date and time when the member was created (ISO 8601 datetime string)
          example: 2022-04-05T08:58:04.206Z
        sentDeleteNotificationAt:
          type: string
          nullable: true
          format: date-time
          description: Date and time when delete notification was sent (ISO 8601 datetime
            string)
          example: 2022-04-05T08:58:04.206Z
        manuallyLastEmailSent:
          type: string
          nullable: true
          format: date-time
          description: Date and time when the last manual email was sent (ISO 8601
            datetime string)
          example: 2022-04-05T08:58:04.206Z
        signaturePosition:
          $ref: "#/components/schemas/MemberSignaturePositionResponse"
        doNotSendEmails:
          type: boolean
        declinedAt:
          type: string
          nullable: true
          format: date-time
          description: Date and time when the member declined (ISO 8601 datetime string)
          example: 2022-04-05T08:58:04.206Z
        signingOrder:
          type: number
        onDemand:
          type: string
          nullable: true
        recipientId:
          type: string
          nullable: true
        signatureTypes:
          type: array
          nullable: true
          items:
            type: string
        signatureTypesActive:
          type: boolean
        privateMessage:
          type: string
          nullable: true
        customId:
          type: string
          nullable: true
        useFastlane:
          type: boolean
          nullable: true
        role:
          type: string
          nullable: true
        approvedAt:
          type: string
          nullable: true
          format: date-time
          description: Date and time when the member was approved (ISO 8601 datetime string)
          example: 2022-04-05T08:58:04.206Z
        verificationConfig:
          nullable: true
        phoneNumber:
          type: string
          nullable: true
        signatures:
          type: array
          nullable: true
          items:
            type: string
        signedAt:
          type: string
          nullable: true
          format: date-time
          description: Date and time when the member signed (ISO 8601 datetime string)
          example: 2022-04-05T08:58:04.206Z
      required:
        - id
        - documentId
    DocumentResponseBox:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        value:
          anyOf:
            - type: string
            - type: boolean
            - nullable: true
          description: The value of the box field. Can be a string (including empty
            string), boolean, or null depending on the box type.
        label:
          type: string
      required:
        - id
        - type
        - label
    EnvelopeResponse:
      type: object
      properties:
        folderId:
          type: string
          nullable: true
        folderName:
          type: string
          nullable: true
        documents:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
              language:
                type: string
              startSendingReminders:
                type: string
                nullable: true
                format: date-time
                description: Date and time when reminders start being sent (ISO 8601 datetime
                  string)
                example: 2022-04-05T08:58:04.206Z
              sendReminder:
                type: boolean
              reminderSent:
                type: boolean
                nullable: true
              reminderInterval:
                type: number
                nullable: true
              createdAt:
                type: string
                nullable: true
                format: date-time
                description: Date and time when the document was created (ISO 8601 datetime
                  string)
                example: 2022-04-05T08:58:04.206Z
              callbackUrl:
                type: string
                nullable: true
              returnUrl:
                type: string
                nullable: true
              returnBtnText:
                type: string
                nullable: true
              inPersonSigning:
                type: boolean
                nullable: true
              signingRound:
                type: number
                nullable: true
              isTemplate:
                type: boolean
                nullable: true
              templateId:
                type: string
                nullable: true
              linkId:
                type: string
                nullable: true
              linkExpiresAt:
                type: string
                nullable: true
              derivedFromLink:
                type: boolean
                nullable: true
              state:
                type: string
                nullable: true
              complianceLevel:
                type: string
                nullable: true
              allowForwarding:
                type: boolean
                nullable: true
              linkExpires:
                type: boolean
                nullable: true
              setDueDate:
                type: boolean
                nullable: true
              dueDate:
                type: string
                nullable: true
                format: date-time
                description: Due date for the document (ISO 8601 datetime string)
                example: 2022-04-05T08:58:04.206Z
              focusedSigningMode:
                type: boolean
                nullable: true
              linkMaxSignaturesEnabled:
                type: boolean
                nullable: true
              linkMaxSignatures:
                type: number
                nullable: true
              fastlaneProfileId:
                type: string
                nullable: true
              refId:
                type: string
                nullable: true
              sendOutFinishedPdf:
                type: boolean
                nullable: true
              signatureTypes:
                type: array
                nullable: true
                items:
                  type: string
              members:
                type: array
                items:
                  $ref: "#/components/schemas/MemberResponseSchema"
              member:
                allOf:
                  - $ref: "#/components/schemas/MemberResponseSchema"
                  - description: The owner of the document
              boxes:
                type: array
                items:
                  $ref: "#/components/schemas/DocumentResponseBox"
                default: []
                description: A form field box in the document response. This is only returned if
                  the document has form fields. If the document is signed the
                  document will return boxes with the values that were filled
                  out.
              overdue:
                type: boolean
            required:
              - id
              - name
              - language
              - sendReminder
              - member
              - overdue
      required:
        - documents
    CreateSignatureRequest:
      type: object
      properties:
        token:
          type: string
          description: Token for authentication (e.g. your API key)
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
        inviteData:
          $ref: "#/components/schemas/InviteData"
        envelopeData:
          $ref: "#/components/schemas/EnvelopeData"
      required:
        - token
        - inviteData
        - envelopeData
    PrepareSignatureRequestResponse:
      type: object
      properties:
        folderId:
          type: string
          nullable: true
        folderName:
          type: string
          nullable: true
        documents:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
              language:
                type: string
              members:
                type: array
                items:
                  nullable: true
                default: []
                description: As this is a prepare signature request response, the members array
                  will be empty. This is because the members are not invited
                  yet.
                example: []
              member:
                allOf:
                  - $ref: "#/components/schemas/MemberResponseSchema"
                  - description: The owner of the document
            required:
              - id
              - name
              - language
              - member
      required:
        - documents
    MemberIdentification:
      type: object
      properties:
        identifiedAt:
          type: string
          nullable: true
          format: date-time
          description: Date when the member was identified
        identificationStarted:
          type: boolean
          description: Whether identification has started
        isIdentified:
          type: boolean
          description: Whether the member is identified
      description: Identification details, empty if userPlus is false
    PlanMember:
      type: object
      properties:
        email:
          type: string
          description: Email address of the member
          example: max.mustermann@sproof.com
        firstName:
          type: string
          description: First name of the member
        lastName:
          type: string
          description: Last name of the member
        identification:
          $ref: "#/components/schemas/MemberIdentification"
        blockedAt:
          type: string
          nullable: true
          format: date-time
          description: Date when the member was blocked
        isPending:
          type: boolean
          description: If you create a new member without choosing to "register" the user,
            the member will be pending. This means that the user first have to
            create an account and login then accept the invitation to join the
            plan. If the user does not accept the invitation, the member will
            remain pending.
        userPlus:
          type: boolean
          description: This is a boolean that indicates if the member is a qualified user.
            This means this member will have a userPlus license and is not
            currently blocked.
        lastLoginAt:
          type: string
          nullable: true
          format: date-time
          description: Last login date of the member
      required:
        - email
        - firstName
        - lastName
        - identification
        - isPending
        - userPlus
    PlanMembers:
      type: array
      items:
        $ref: "#/components/schemas/PlanMember"
    PlanMembersPagination:
      type: object
      properties:
        currentPage:
          type: integer
        lastPage:
          type: integer
        perPage:
          type: integer
        to:
          type: integer
        total:
          type: integer
      required:
        - currentPage
        - lastPage
        - perPage
        - to
        - total
    GetPlanMembersResponse:
      type: object
      properties:
        data:
          $ref: "#/components/schemas/PlanMembers"
        pagination:
          $ref: "#/components/schemas/PlanMembersPagination"
        all:
          type: integer
        userPlus:
          type: integer
        user:
          type: integer
      required:
        - data
        - pagination
        - all
        - userPlus
        - user
    CreatePlanMemberRequest:
      type: object
      properties:
        token:
          type: string
          description: Your api token, you can find it in the settings page of the
            administrator profile
        email:
          type: string
          description: Email address of the new member
          example: max.mustermann@sproof.com
        firstName:
          type: string
          description: First name of the new member
        lastName:
          type: string
          description: Last name of the new member
        register:
          type: boolean
          default: false
          description: If true, also create a user if one does not exist. An email will be
            sent out with a link to create a password for the account. Once the
            account is created, the user will be already added to the plan and
            will be able to login
        userPlus:
          type: boolean
          default: false
          description: If true, this user will have userPlus license, this will enable
            your user to identify with a qualified signature provider and sign
            documents with a qualified signature if required
        sendEmail:
          type: boolean
          default: true
          description: If true, send invite email. Use false for SSO use cases.
      required:
        - token
        - email
        - firstName
        - lastName
    UpdatePlanMemberRequest:
      type: object
      properties:
        token:
          type: string
          description: Your api token, you can find it in the settings page of the
            administrator profile
        email:
          type: string
          description: Email address of the member to update
          example: max.mustermann@sproof.com
        firstName:
          type: string
          minLength: 1
          description: Updated first name
        lastName:
          type: string
          minLength: 1
          description: Updated last name
        blocked:
          type: boolean
          description: If this is set to true, the member will be blocked starting with
            the date of this update request,  and will not be able to use the
            plans resources.
        userPlus:
          type: boolean
          description: If true, upgrade member to userPlus. If false, downgrades userPlus
            to user. Requires available userPlus counters for upgrades.
      required:
        - token
        - email
    DeletePlanMemberResponse:
      type: object
      properties:
        success:
          type: boolean
          description: True if the member was successfully deleted
      required:
        - success
  parameters: {}
paths:
  /user/pendingSignatures:
    post:
      tags:
        - Stack
      summary: Add document to stack
      description: Adds a document to a given user's stack. Users must be in the same
        userplan, a default signature card image includes the name, company name
        and logo if available, and timestamp
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AddToStackResponse"
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_AddToStackRequestBody"
        description: Add document to stack Body
        required: true
  /documents/user/signBatch:
    post:
      tags:
        - Stack
      summary: Sign a user's stack
      description: Sign the stack of a given user. Users must be in the same userplan
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SignStackResponse"
      parameters:
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: "#/components/schemas/SignBatchRequest"
  /fastlane:
    post:
      tags:
        - Fastlane
      summary: Create profile
      description: >
        This endpoint allows you to create a new Fastlane profile with
        customizable screens. A valid authentication token is required to create
        the profile.

        ### Welcome Screen ![Welcome Screen](../img/welcome_screen.png)

        ### Document Screen ![Document Screen](../img/document_screen.png)

        ### Provider Screen ![Provider Screen](../img/provider_screen.png)

        ### Sign Screen ![Sign Screen](../img/sign_screen.png)

        ### End Screen ![End Screen](../img/end_screen.png)
      parameters:
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_FastlaneConfiguration"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateFastlaneProfileResponse"
        "400":
          description: Bad Request - Invalid input
        "401":
          description: Unauthorized - Token incorrect
    get:
      tags:
        - Fastlane
      summary: List profiles
      description: Retrieve a list of Fastlane profiles with optional sorting and
        search query filters.
      parameters:
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          required: true
          schema:
            type: string
        - name: sort
          in: query
          description: >
            Sorting criteria for listing profiles. Use the format `field:order`,
            where `field` is the profile attribute (e.g., `name`, `createdAt`)
            and `order` is either `true` for ascending or `false` for
            descending.

            Example: `name:true` for ascending sort by name, or
            `createdAt:false` for descending sort by creation date.
          required: false
          schema:
            type: string
          example: name:true
        - name: query
          in: query
          description: >
            Optional search query to filter profiles by name or other
            attributes. This query allows you to search for specific profiles
            that match the provided keyword.
          required: false
          schema:
            type: string
          example: Custom signing flow
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FastlaneProfileListResponse"
        "401":
          description: Unauthorized - Token incorrect
  /fastlane/custom/{planId}/{customId}:
    get:
      tags:
        - Fastlane
      summary: Open Document Custom Id
      description: >
        This endpoint allows you to open a sent out document using a previously
        defined custom ID. For more Information see [Using the custom
        ID](#section/Using-the-Custom-ID).
      parameters:
        - name: planId
          in: path
          description: Valid Plan identifier associated with an active user plan.
          required: true
          schema:
            type: string
            format: uuid
          example: ce410b60-7966-4d96-b523-013b9b2b7cbb
        - name: customId
          in: path
          description: Valid custom ID as per the definition in the section [Using the
            custom ID](#section/Using-the-Custom-ID)
          required: true
          schema:
            type: string
          example: d46b68b53d2bef3025fd21a0737b0cd7425b1270b0115f39dafa46131023247cd46e7f
      responses:
        "200":
          description: Redirects to the sproof Fastlane
        "404":
          description: customId not found
  /fastlane/{id}:
    get:
      tags:
        - Fastlane
      summary: Get profile
      description: >
        This endpoint allows you to get information about a Fastlane profile.
        Both the profile ID and an authentication token are required for access.
      parameters:
        - name: id
          in: path
          description: The unique identifier of the Fastlane profile to get.
          required: true
          schema:
            type: string
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FastlaneProfileGetResponse"
        "401":
          description: Unauthorized - Token incorrect
        "404":
          description: Not Found - Profile not found
    put:
      tags:
        - Fastlane
      summary: Update profile
      description: Update an existing profile with customizable screens.
      parameters:
        - name: id
          in: path
          description: ID of the profile to update
          required: true
          schema:
            type: string
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_FastlaneConfiguration"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UpdateFastlaneProfileResponse"
        "400":
          description: Bad Request - Invalid input
        "401":
          description: Unauthorized - Token incorrect
        "404":
          description: Not Found - Profile not found
    delete:
      tags:
        - Fastlane
      summary: Delete profile
      description: Delete an existing profile using its ID and and authentication token.
      parameters:
        - name: id
          in: path
          description: ID of the profile to delete
          required: true
          schema:
            type: string
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          required: true
          schema:
            type: string
      responses:
        "200":
          description: Profiles successfully deleted.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeleteFastlaneProfileResponse"
        "401":
          description: Unauthorized - Token incorrect
        "404":
          description: Not Found - Profile not found
  /fastlane/{id}/set:
    post:
      tags:
        - Fastlane
      summary: Add profile to document
      description: >
        Adds an existing Fastlane profile to an already sent out document or
        multiple documents by providing a list of admin memberIds.
      parameters:
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          required: true
          schema:
            type: string
        - name: id
          in: path
          description: |
            The unique identifier of the Fastlane profile
          required: true
          example: 54f82188-7461-48fe-882c-afbf98256b16
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddProfileToDocumentRequest"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AddProfileToDocumentResponse"
        "400":
          description: Bad Request - Invalid input data
        "401":
          description: Unauthorized - Token incorrect
        "404":
          description: Not Found - Members not found
  /fastlane/{id}/remove:
    post:
      tags:
        - Fastlane
      summary: Remove profile from document
      description: Removes a specified Fastlane profile from a document.
      parameters:
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          required: true
          schema:
            type: string
        - name: id
          in: path
          example: 54f82188-7461-48fe-882c-afbf98256b16
          description: The unique identifier of the Fastlane profile
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_RemoveFastlaneProfileRequest"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RemoveProfileFromDocumentResponse"
        "400":
          description: Bad Request - Invalid input data
        "401":
          description: Unauthorized - Token incorrect
        "404":
          description: Not Found - Document not found or member ID not found
  /fastlane/batch:
    post:
      tags:
        - Fastlane
      summary: Delete profiles
      description: Deletes multiple profiles based on the provided profile IDs.
      parameters:
        - name: token
          in: query
          description: Authentication token required to delete the profiles
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_BatchDeleteRequest"
      responses:
        "200":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_BatchDeleteResponse"
        "400":
          description: Bad Request - Invalid input data
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
        "401":
          description: Unauthorized - Token incorrect
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
        "404":
          description: Not Found - One or more profile IDs not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
  /documents/signature:
    post:
      summary: "New: Create signature request"
      description: This is the new create signature request. In addition to creating a
        single document invitation, it now supports creating envelopes and
        uploading multiple documents at once when sending invitations.
      operationId: createSignatureRequest
      callbacks:
        createSignatureRequestCallback:
          "{$request.body#/envelopeData/callbackUrl}":
            post:
              summary: New Signature added
              description: A POST request is sent to the `callbackUrl` defined in the [Create
                signature request](#operation/createSignatureRequest) every time
                a new signature is added to the document.
              responses:
                "200":
                  description: Callback successfully processed and no retries will be performed
                  content:
                    application/json:
                      schema:
                        $ref: "#/components/schemas/Document"
      tags:
        - Signatures
      requestBody:
        description: Body
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSignatureRequest"
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EnvelopeResponse"
        "400":
          description: "Required parameter(s) not provided: {{parameter}}"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_400_01:
                  summary: "Required parameter(s) not provided: {{parameter}}"
                  value:
                    message: "Required parameter(s) not provided: {{parameter}}"
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_400_02:
                  summary: "Invalid format/content for parameter(s): {{parameter}}"
                  value:
                    message: "Invalid format/content for parameter(s): {{parameter}}"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "401":
          description: User authentication failed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_401_01:
                  summary: User authentication failed
                  value:
                    message: User authentication failed
                    traceId: db89cb064945cea8c361aca3638e05d3
        "402":
          description: Please upgrade your plan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_402_01:
                  summary: Please upgrade your plan
                  value:
                    message: Please upgrade your plan
                    traceId: db89cb064945cea8c361aca3638e05d3
        "404":
          description: Document not found for memberId {{memberId}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_404_01:
                  summary: Document not found for memberId {{memberId}}
                  value:
                    message: Document not found for memberId {{memberId}}
                    traceId: db89cb064945cea8c361aca3638e05d3
        "409":
          description: At least one customId already exists
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_409_01:
                  summary: At least one customId already exists
                  value:
                    message: At least one customId already exists
                    traceId: db89cb064945cea8c361aca3638e05d3
  /documents:
    get:
      tags:
        - Documents
      summary: Get documents
      description: Get a list of documents created with your API key.
      operationId: getDocumentList
      parameters:
        - name: token
          in: query
          description: Token for authentication (e.g. your API key)
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
        - name: perPage
          in: query
          description: Number of entries per page
          required: false
          schema:
            type: integer
            default: 10
        - name: page
          in: query
          description: Page number
          required: false
          schema:
            type: integer
            default: 1
        - name: view
          in: query
          description: Document filter
          required: false
          schema:
            type: string
            default: allDocuments
            enum:
              - allDocuments
              - completedDocuments
              - createdIncompleteDocuments
              - incompleteDocuments
              - createdDocuments
              - draftDocuments
              - envelopeDocuments
              - invitedDocuments
              - declinedDocuments
              - pendingInvitations
              - openInvitedDocuments
              - openInvitedToApproveDocuments
              - openInvitedToViewDocuments
              - openInvitedToSignDocuments
              - openPositionedDocuments
              - stackedDocuments
              - templates
              - derivedFromTemplates
        - name: sort
          in: query
          description: Document sorting. Append ":true" for descending sorting.
          required: false
          schema:
            type: string
            default: createdAt
            enum:
              - createdAt
              - name
        - name: query
          in: query
          description: Search query for various information (e.g., document name, member
            emails)
          required: false
          schema:
            type: string
        - name: labels
          in: query
          description: Filter by label name
          required: false
          schema:
            type: string
        - name: startDate
          in: query
          description: Filters the results starting from a specific date and time in UTC
            format. Use this parameter in combination with 'endDate' to define a
            time range.
          required: false
          schema:
            type: string
            format: date-time
            example: 2024-08-20T12:00:00Z
        - name: endDate
          in: query
          description: Filters the results up to a specific date and time in UTC format.
            Use this parameter together with 'startDate' to set a time range.
          required: false
          schema:
            type: string
            format: date-time
            example: 2024-08-21T18:24:29Z
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_DocumentListResponse"
        "400":
          description: Bad Request - Invalid input data
        "401":
          description: Unauthorized - Token incorrect
    post:
      tags:
        - Signatures
      summary: "Legacy: Create signature request"
      description: >
        This is the **legacy** create signature request. It is maintained for
        backward compatibility and may not support the latest features.  

        _Consider using the [NEW create signature
        request](#operation/createSignatureRequest) for enhanced functionality!_
      operationId: legacyCreateSignatureRequest
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_Document"
      callbacks:
        newSignature:
          "{$request.body#/callbackUrl}":
            post:
              summary: New Signature added
              description: A POST request is sent to the `callbackUrl` defined in the [Create
                signature request](#operation/createSignatureRequest) every time
                a new signature is added to the document.
              responses:
                "200":
                  description: Callback successfully processed and no retries will be performed
                  content:
                    application/json:
                      schema:
                        $ref: "#/components/schemas/_Document"
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_SignatureRequestBody"
        description: Body
        required: true
  /documents/{memberId}/fda:
    get:
      tags:
        - Documents
      summary: Download Audit Trail
      description: Get the audit trail of a document.
      operationId: getPdfFda
      security: []
      responses:
        "200":
          description: successful operation
          content:
            text/plain:
              schema:
                type: string
                description: Base64 encoded PDF audit trail
        "401":
          description: User authentication failed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_401_01:
                  summary: User authentication failed
                  value:
                    message: User authentication failed
                    traceId: db89cb064945cea8c361aca3638e05d3
        "403":
          description: You do not have permissions to {{element}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_403_01:
                  summary: You do not have permissions to {{element}}
                  value:
                    message: You do not have permissions to {{element}}
                    traceId: db89cb064945cea8c361aca3638e05d3
        "404":
          description: Document not found for memberId {{memberId}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_404_01:
                  summary: Document not found for memberId {{memberId}}
                  value:
                    message: Document not found for memberId {{memberId}}
                    traceId: db89cb064945cea8c361aca3638e05d3
      parameters:
        - name: token
          in: query
          description: Token for authentication (e.g. your API key)
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
        - name: memberId
          in: path
          example: 0dd4a4718ad3669c7133a615d955b4a89f5f11452de55d21d7ca0fff859a08c698b5a3
          description: Member ID
          required: true
          schema:
            type: string
  /documents/download/{memberId}:
    get:
      tags:
        - Documents
      summary: Get document
      description: Get signed document as binary or Base64-encoded string.
      operationId: getDocument
      security: []
      parameters:
        - name: memberId
          in: path
          example: 0dd4a4718ad3669c7133a615d955b4a89f5f11452de55d21d7ca0fff859a08c698b5a3
          description: Member ID
          required: true
          schema:
            type: string
        - name: token
          in: query
          description: Token for authentication (e.g. your API key)
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
        - name: format
          in: query
          description: >
            Specifies the response format. Use `pdf` for binary PDF and `base64`
            for a Base64-encoded response.

            Example `base64` response: ```json {
              "base64": "JVBERi0xLjQKJe..."
            } ```
          example: pdf
          required: false
          schema:
            type: string
            enum:
              - pdf
              - base64
            default: pdf
      responses:
        "200":
          description: successful operation
          content:
            application/pdf:
              schema:
                type: string
                format: binary
        "401":
          description: User authentication failed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_401_01:
                  summary: User authentication failed
                  value:
                    message: User authentication failed
                    traceId: db89cb064945cea8c361aca3638e05d3
        "403":
          description: You do not have permissions to {{element}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_403_01:
                  summary: You do not have permissions to {{element}}
                  value:
                    message: You do not have permissions to {{element}}
                    traceId: db89cb064945cea8c361aca3638e05d3
        "404":
          description: Document not found for memberId {{memberId}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_404_01:
                  summary: Document not found for memberId {{memberId}}
                  value:
                    message: Document not found for memberId {{memberId}}
                    traceId: db89cb064945cea8c361aca3638e05d3
  /documents/verify:
    post:
      tags:
        - Documents
      summary: Verify Document
      description: >
        Validates the signatures on a document. Our signature verification
        follows the ETSI standard. Further details can be found at
        https://www.etsi.org/deliver/etsi_ts/102800_102899/102853/01.01.02_60/ts_102853v010102p.pdf


        The API token can be provided either in the request body or as a query
        parameter.
      operationId: postVerify
      security: []
      parameters:
        - name: token
          in: query
          description: Token for authentication (e.g. your API key). Can be provided here
            or in the request body.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: false
          schema:
            type: string
      requestBody:
        description: Base64 encoded file (PDF) and optional API token
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VerifyDocumentRequest"
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_SignatureValidationResponse"
        "400":
          description: Bad Request - Invalid input data
        "401":
          description: Unauthorized - Token incorrect
  /folder:
    get:
      tags:
        - Envelopes
      summary: Get envelopes
      description: Get a list of envelopes created or invited with your API key.
      operationId: getFolders
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_FolderListResponse"
      parameters:
        - name: token
          in: query
          description: Token for authentication (e.g. your API key)
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
    post:
      tags:
        - Envelopes
      summary: Create envelope
      description: Creates an envelope with the given documents.
      operationId: createFolder
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateFolderResponse"
      parameters:
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_CreateFolderRequest"
  /folder/{folderId}:
    get:
      tags:
        - Envelopes
      summary: Get envelope
      description: Get the envelope information such as documents or members.
      operationId: getFolder
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_FolderResponse"
      parameters:
        - name: folderId
          in: path
          description: ID of the requested envelope
          required: true
          schema:
            type: string
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          required: true
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          schema:
            type: string
    delete:
      tags:
        - Envelopes
      summary: Delete envelope
      description: Delete an envelope with all the documents inside.
      operationId: deleteFolder
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeleteFolderResponse"
      parameters:
        - name: folderId
          in: path
          description: ID of the envelope
          required: true
          schema:
            type: string
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
    put:
      tags:
        - Envelopes
      summary: Update envelope
      description: Updates the envelope name.
      operationId: updateFolder
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UpdateFolderResponse"
      parameters:
        - name: folderId
          in: path
          description: ID of the envelope
          required: true
          schema:
            type: string
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_UpdateFolderRequest"
  /folder/{folderId}/documents:
    post:
      tags:
        - Envelopes
      summary: Delete documents
      description: Delete the given Documents from the envelope. If no documents are
        left in the envelope, the envelope is deleted.
      operationId: deleteFolderDocs
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeleteFolderDocumentsResponse"
      parameters:
        - name: folderId
          in: path
          description: ID of the envelope
          required: true
          schema:
            type: string
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_DeleteFolderDocumentsRequest"
    put:
      tags:
        - Envelopes
      summary: Add documents
      description: Add the given Documents to the envelope.
      operationId: addFolderDocs
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AddFolderDocumentsResponse"
      parameters:
        - name: folderId
          in: path
          description: ID of the envelope
          required: true
          schema:
            type: string
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_AddFolderDocumentsRequest"
  /folder/{folderId}/invite:
    post:
      tags:
        - Envelopes
      summary: Add user
      description: Invite a user to a given envelope.
      operationId: inviteFolder
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                type: object
      parameters:
        - name: folderId
          in: path
          description: ID of the envelope
          required: true
          schema:
            type: string
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_FolderRequestBody"
        description: Body
        required: true
  /documents/{memberId}:
    get:
      tags:
        - Signatures
      summary: Get request status
      description: Get the status of a signature request. Returns a document JSON
        object or an error. The parameter is returned by the post request on
        document and is associated with the senders email.
      operationId: getSignatureStatus
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_Document"
      parameters:
        - name: memberId
          in: path
          example: 0dd4a4718ad3669c7133a615d955b4a89f5f11452de55d21d7ca0fff859a08c698b5a3
          description: Member ID
          required: true
          schema:
            type: string
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
    delete:
      tags:
        - Documents
      summary: Delete document
      description: Delete a document
      operationId: deleteDocument
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeleteDocumentResponse"
        "401":
          description: User authentication failed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_401_01:
                  summary: User authentication failed
                  value:
                    message: User authentication failed
                    traceId: db89cb064945cea8c361aca3638e05d3
        "403":
          description: You do not have permissions to {{element}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_403_01:
                  summary: You do not have permissions to {{element}}
                  value:
                    message: You do not have permissions to {{element}}
                    traceId: db89cb064945cea8c361aca3638e05d3
        "404":
          description: Document not found for memberId {{memberId}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_404_01:
                  summary: Document not found for memberId {{memberId}}
                  value:
                    message: Document not found for memberId {{memberId}}
                    traceId: db89cb064945cea8c361aca3638e05d3
      parameters:
        - name: memberId
          in: path
          example: 0dd4a4718ad3669c7133a615d955b4a89f5f11452de55d21d7ca0fff859a08c698b5a3
          description: Member ID
          required: true
          schema:
            type: string
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
        - name: all
          in: query
          description: If all is set to true the document for all non registered invited
            members will be deleted. Invited members, who are registered on the
            sproof sign platform will keep a copy of this document.
          required: false
          schema:
            type: boolean
            default: false
  /documents/auto/sign:
    post:
      tags:
        - Signatures
      summary: Seal document
      description: Returns a JSON object of the signed Base64 document including a
        signature verification object, or an error.
      operationId: signDocument
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_DocumentResponseBody"
        "400":
          description: Invalid input
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_DocumentRequestBody"
        description: Body
        required: true
  /plans/members/{email}:
    get:
      tags:
        - Members
      summary: Legacy - Get plan member
      description: Legacy - Get a single plan member by email, new endpoint is
        /plans/planmembers/{email}
      operationId: getPlanMember
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_PlanMember"
      parameters:
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
        - name: email
          in: path
          description: Email of the member
          required: true
          schema:
            type: string
  /plans/members:
    get:
      tags:
        - Members
      summary: Legacy - Get plan members
      description: Legacy - Get a list of all plan members, new endpoint is
        /plans/planmembers
      operationId: getPlanMembers
      security: []
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/_PlanMember"
        "400":
          description: "Invalid format/content for parameter(s): {{parameter}}"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_400_01:
                  summary: "Invalid format/content for parameter(s): {{parameter}}"
                  value:
                    message: "Invalid format/content for parameter(s): {{parameter}}"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "401":
          description: User authentication failed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_401_01:
                  summary: User authentication failed
                  value:
                    message: User authentication failed
                    traceId: db89cb064945cea8c361aca3638e05d3
        "403":
          description: You do not have permissions to use this {{element}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_403_01:
                  summary: You do not have permissions to use this {{element}}
                  value:
                    message: You do not have permissions to use this {{element}}
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_403_02:
                  summary: Your Plan expired
                  value:
                    message: Your Plan expired
                    traceId: db89cb064945cea8c361aca3638e05d3
      parameters:
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
  /plans/qualifiedMembers:
    post:
      tags:
        - Members
      summary: Legacy - Create qualified plan member
      description: Legacy - Create a qualified plan member. New endpoint is
        /plans/planmembers
      operationId: createQualifiedMember
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CreateQualifiedMemberResponse"
        "400":
          description: "Required parameter(s) not provided: {{parameter}}"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_400_01:
                  summary: "Required parameter(s) not provided: {{parameter}}"
                  value:
                    message: "Required parameter(s) not provided: {{parameter}}"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "401":
          description: User authentication failed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_401_01:
                  summary: User authentication failed
                  value:
                    message: User authentication failed
                    traceId: db89cb064945cea8c361aca3638e05d3
        "403":
          description: Your domain is not verified
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_403_01:
                  summary: Your domain is not verified
                  value:
                    message: Your domain is not verified
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_403_02:
                  summary: This user can not be added
                  value:
                    message: This user can not be added
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_403_03:
                  summary: "{{element}} limit reached"
                  value:
                    message: "{{element}} limit reached"
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_403_04:
                  summary: You can not add a qualified member who is not part of your plan
                  value:
                    message: You can not add a qualified member who is not part of your plan
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_403_05:
                  summary: This user is already a qualified member of your plan
                  value:
                    message: This user is already a qualified member of your plan
                    traceId: db89cb064945cea8c361aca3638e05d3
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/_QualifiedMemberRequestObject"
        description: Body
        required: true
  /plans/qualifiedMembers/{email}:
    delete:
      tags:
        - Members
      summary: Legacy - Delete qualified plan member
      description: Legacy - Delete a qualified plan member. New endpoint is
        /plans/planmembers/{email} Delete a qualified plan member. Returns a
        JSON object, or an error. The boolean isDeleted is returned in case that
        the qualified member will be deleted. In case that the qualified member
        is blocked the member object is returned.
      operationId: deleteQualifiedMember
      responses:
        "200":
          description: successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeleteQualifiedMemberResponse"
        "400":
          description: "Required parameter(s) not provided: {{parameter}}"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_400_01:
                  summary: "Required parameter(s) not provided: {{parameter}}"
                  value:
                    message: "Required parameter(s) not provided: {{parameter}}"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "401":
          description: User authentication failed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_401_01:
                  summary: User authentication failed
                  value:
                    message: User authentication failed
                    traceId: db89cb064945cea8c361aca3638e05d3
        "403":
          description: You do not have permissions to use this {{element}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_403_01:
                  summary: You do not have permissions to use this {{element}}
                  value:
                    message: You do not have permissions to use this {{element}}
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_403_02:
                  summary: Your Plan expired
                  value:
                    message: Your Plan expired
                    traceId: db89cb064945cea8c361aca3638e05d3
        "404":
          description: "{{element}} not found"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_404_01:
                  summary: "{{element}} not found"
                  value:
                    message: "{{element}} not found"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "409":
          description: You must transfer ownership before this member can be deleted
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_409_01:
                  summary: You must transfer ownership before this member can be deleted
                  value:
                    message: You must transfer ownership before this member can be deleted
                    traceId: db89cb064945cea8c361aca3638e05d3
      parameters:
        - name: token
          in: query
          description: Valid API-Token associated with an active user plan.
          example: XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX
          required: true
          schema:
            type: string
        - name: email
          in: path
          description: Email of the member
          required: true
          schema:
            type: string
  /documents/prepare:
    post:
      summary: Prepare signature request
      description: Creates a signature request with all recipient information stored
        in the document state. This does not send invitation emails to
        recipients. This creates a draft document that can be processed later to
        send invitations. The request body format is identical to the /signature
        endpoint, and the response format is also the same, but no recipients
        are actually invited. You can use the the member id of any document in
        the documents array to get the member details to create an editor link
        to complete invitation the signature request.
      operationId: prepareSignatureRequest
      callbacks:
        createSignatureRequestCallback:
          "{$request.body#/envelopeData/callbackUrl}":
            post:
              summary: New Signature added
              description: A POST request is sent to the `callbackUrl` defined in the [Create
                signature request](#operation/createSignatureRequest) every time
                a new signature is added to the document.
              responses:
                "200":
                  description: Callback successfully processed and no retries will be performed
                  content:
                    application/json:
                      schema:
                        $ref: "#/components/schemas/Document"
      tags:
        - Signatures
      requestBody:
        description: Signature request data (same format as /signature endpoint)
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateSignatureRequest"
      responses:
        "200":
          description: Signature request prepared successfully (same format as /signature
            endpoint, but no recipients invited)
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PrepareSignatureRequestResponse"
        "400":
          description: "Required parameter(s) not provided: {{parameter}}"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_400_01:
                  summary: "Required parameter(s) not provided: {{parameter}}"
                  value:
                    message: "Required parameter(s) not provided: {{parameter}}"
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_400_02:
                  summary: "Invalid format/content for parameter(s): {{parameter}}"
                  value:
                    message: "Invalid format/content for parameter(s): {{parameter}}"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "401":
          description: User authentication failed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_401_01:
                  summary: User authentication failed
                  value:
                    message: User authentication failed
                    traceId: db89cb064945cea8c361aca3638e05d3
        "402":
          description: Please upgrade your plan
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_402_01:
                  summary: Please upgrade your plan
                  value:
                    message: Please upgrade your plan
                    traceId: db89cb064945cea8c361aca3638e05d3
        "404":
          description: Document not found for memberId {{memberId}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_404_01:
                  summary: Document not found for memberId {{memberId}}
                  value:
                    message: Document not found for memberId {{memberId}}
                    traceId: db89cb064945cea8c361aca3638e05d3
        "409":
          description: At least one customId already exists
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_409_01:
                  summary: At least one customId already exists
                  value:
                    message: At least one customId already exists
                    traceId: db89cb064945cea8c361aca3638e05d3
  /plans/planmembers/:
    get:
      summary: Get a single plan member by email
      description: Returns a single plan member by their email address.
      operationId: getPlanMember_v2
      tags:
        - Members
      parameters:
        - schema:
            type: string
            description: Your api token, you can find it in the settings page of the
              administrator profile
          required: true
          description: Your api token, you can find it in the settings page of the
            administrator profile
          name: token
          in: query
        - schema:
            type: string
            description: Email address of the member in your plan
            example: max.mustermann@sproof.com
          required: true
          description: Email address of the member in your plan
          name: email
          in: query
        - schema:
            type: boolean
            nullable: true
            description: If true, also delete the user account and all their data
              (documents, contacts, groups, workflows, templates). Only allowed
              for plan members with verified domains.
          required: false
          description: If true, also delete the user account and all their data
            (documents, contacts, groups, workflows, templates). Only allowed
            for plan members with verified domains.
          name: deleteUser
          in: query
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PlanMember"
        "400":
          description: "Invalid format/content for parameter(s): {{parameter}}"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_400_01:
                  summary: "Invalid format/content for parameter(s): {{parameter}}"
                  value:
                    message: "Invalid format/content for parameter(s): {{parameter}}"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "403":
          description: You do not have permissions to access this {{element}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_403_01:
                  summary: You do not have permissions to access this {{element}}
                  value:
                    message: You do not have permissions to access this {{element}}
                    traceId: db89cb064945cea8c361aca3638e05d3
        "404":
          description: "{{element}} not found"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_404_01:
                  summary: "{{element}} not found"
                  value:
                    message: "{{element}} not found"
                    traceId: db89cb064945cea8c361aca3638e05d3
    post:
      summary: Add new plan member
      description: Creates a new plan member. Handles user creation, plan assignment,
        and invitation logic. See error codes for edge cases.
      operationId: createPlanMember
      tags:
        - Members
      requestBody:
        description: Plan member creation payload
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreatePlanMemberRequest"
      responses:
        "200":
          description: Plan member created
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PlanMember"
        "400":
          description: "Invalid format/content for parameter(s): {{parameter}}"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_400_01:
                  summary: "Invalid format/content for parameter(s): {{parameter}}"
                  value:
                    message: "Invalid format/content for parameter(s): {{parameter}}"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "403":
          description: You do not have permissions to access this {{element}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_403_01:
                  summary: You do not have permissions to access this {{element}}
                  value:
                    message: You do not have permissions to access this {{element}}
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_403_02:
                  summary: You can not add a qualified member who is not part of your plan
                  value:
                    message: You can not add a qualified member who is not part of your plan
                    traceId: db89cb064945cea8c361aca3638e05d3
        "409":
          description: Email is already in use
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_409_01:
                  summary: Email is already in use
                  value:
                    message: Email is already in use
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_409_02:
                  summary: User already added to plan
                  value:
                    message: User already added to plan
                    traceId: db89cb064945cea8c361aca3638e05d3
    put:
      summary: Update plan member
      description: Updates a plan member. Use to update member details, block/unblock
        a member, or upgrade/downgrade userPlus status.
      operationId: updatePlanMember
      tags:
        - Members
      requestBody:
        description: Plan member update payload
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/UpdatePlanMemberRequest"
      responses:
        "200":
          description: Plan member updated
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PlanMember"
        "400":
          description: "Invalid format/content for parameter(s): {{parameter}}"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_400_01:
                  summary: "Invalid format/content for parameter(s): {{parameter}}"
                  value:
                    message: "Invalid format/content for parameter(s): {{parameter}}"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "403":
          description: You do not have permissions to access this {{element}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_403_01:
                  summary: You do not have permissions to access this {{element}}
                  value:
                    message: You do not have permissions to access this {{element}}
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_403_02:
                  summary: "{{element}} limit reached"
                  value:
                    message: "{{element}} limit reached"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "404":
          description: "{{element}} not found"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_404_01:
                  summary: "{{element}} not found"
                  value:
                    message: "{{element}} not found"
                    traceId: db89cb064945cea8c361aca3638e05d3
    delete:
      summary: Delete plan member
      description: Removes a member from the plan. Optionally, with the deleteUser
        parameter set to true, the user account and all their data (documents,
        contacts, groups, workflows, templates) can be also deleted. User
        deletion is only allowed for plan members whose email domain matches a
        verified domain in the plan.
      operationId: deletePlanMember
      tags:
        - Members
      parameters:
        - schema:
            type: string
            description: Your api token, you can find it in the settings page of the
              administrator profile
          required: true
          description: Your api token, you can find it in the settings page of the
            administrator profile
          name: token
          in: query
        - schema:
            type: string
            description: Email address of the member in your plan
            example: max.mustermann@sproof.com
          required: true
          description: Email address of the member in your plan
          name: email
          in: query
        - schema:
            type: boolean
            nullable: true
            description: If true, also delete the user account and all their data
              (documents, contacts, groups, workflows, templates). Only allowed
              for plan members with verified domains.
          required: false
          description: If true, also delete the user account and all their data
            (documents, contacts, groups, workflows, templates). Only allowed
            for plan members with verified domains.
          name: deleteUser
          in: query
      responses:
        "200":
          description: Plan member deleted
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeletePlanMemberResponse"
        "400":
          description: "Invalid format/content for parameter(s): {{parameter}}"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_400_01:
                  summary: "Invalid format/content for parameter(s): {{parameter}}"
                  value:
                    message: "Invalid format/content for parameter(s): {{parameter}}"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "401":
          description: User authentication failed
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_401_01:
                  summary: User authentication failed
                  value:
                    message: User authentication failed
                    traceId: db89cb064945cea8c361aca3638e05d3
        "403":
          description: You do not have permissions to use this {{element}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_403_01:
                  summary: You do not have permissions to use this {{element}}
                  value:
                    message: You do not have permissions to use this {{element}}
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_403_02:
                  summary: You do not have permissions to {{element}}
                  value:
                    message: You do not have permissions to {{element}}
                    traceId: db89cb064945cea8c361aca3638e05d3
                ex_403_03:
                  summary: You do not have permissions to modify this {{element}}
                  value:
                    message: You do not have permissions to modify this {{element}}
                    traceId: db89cb064945cea8c361aca3638e05d3
        "404":
          description: "{{element}} not found"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_404_01:
                  summary: "{{element}} not found"
                  value:
                    message: "{{element}} not found"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "409":
          description: You must transfer ownership before this member can be deleted
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_409_01:
                  summary: You must transfer ownership before this member can be deleted
                  value:
                    message: You must transfer ownership before this member can be deleted
                    traceId: db89cb064945cea8c361aca3638e05d3
  /plans/planmembers/list:
    get:
      summary: List all plan members, paginated and with filters
      description: Returns a paginated list of all members for the current plan. Use
        filters to narrow down the results.
      operationId: getPlanMembers_v2
      tags:
        - Members
      parameters:
        - schema:
            type: integer
            minimum: 1
            default: 1
            description: Page number for pagination
          required: false
          description: Page number for pagination
          name: page
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
            description: Number of items per page
          required: false
          description: Number of items per page
          name: perPage
          in: query
        - schema:
            type: string
            default: ""
            description: Search query for members, filter by email, firstName, lastName
          required: false
          description: Search query for members, filter by email, firstName, lastName
          name: query
          in: query
        - schema:
            type: string
            enum:
              - blocked
              - pending
              - identified
              - user
              - userPlus
            description: Filter criteria - only "blocked", "pending", "identified", "user"
              or "userPlus" are allowed
          required: false
          description: Filter criteria - only "blocked", "pending", "identified", "user"
            or "userPlus" are allowed
          name: filter
          in: query
        - schema:
            type: string
            nullable: true
            description: 'Sorting parameter in format "key:direction". Valid keys:
              firstName, lastName, lastLoginAt, blockedAt, email. Valid
              directions: asc, desc'
          required: false
          description: 'Sorting parameter in format "key:direction". Valid keys:
            firstName, lastName, lastLoginAt, blockedAt, email. Valid
            directions: asc, desc'
          name: sort
          in: query
        - schema:
            type: string
            description: Your api token, you can find it in the settings page of the
              administrator profile
          required: true
          description: Your api token, you can find it in the settings page of the
            administrator profile
          name: token
          in: query
      responses:
        "200":
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetPlanMembersResponse"
        "400":
          description: "Invalid format/content for parameter(s): {{parameter}}"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_400_01:
                  summary: "Invalid format/content for parameter(s): {{parameter}}"
                  value:
                    message: "Invalid format/content for parameter(s): {{parameter}}"
                    traceId: db89cb064945cea8c361aca3638e05d3
        "403":
          description: You do not have permissions to access this {{element}}
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/_ErrorResponse"
              examples:
                ex_403_01:
                  summary: You do not have permissions to access this {{element}}
                  value:
                    message: You do not have permissions to access this {{element}}
                    traceId: db89cb064945cea8c361aca3638e05d3
