{
  "openapi": "3.1.0",
  "info": {
    "title": "Subscriptions — eClose scopes",
    "version": "v1"
  },
  "tags": [
    {
      "name": "Subscriptions"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "servers": [
    {
      "url": "https://api.snapdocs.com",
      "description": "Production"
    },
    {
      "url": "https://api.cs-demo0.snpd.io",
      "description": "Demo"
    },
    {
      "url": "https://api.cx-int0.snpd.io",
      "description": "Integrator"
    }
  ],
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    },
    "schemas": {
      "meta": {
        "type": "object",
        "description": "The object storing metadata about the returned transaction status results.",
        "properties": {
          "current_page": {
            "type": "integer",
            "description": "The current page of the paginated results."
          },
          "next_page": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The next page number of the paginated results."
          },
          "page_size": {
            "type": "integer",
            "description": "The number of results per page."
          },
          "total_count": {
            "type": "integer",
            "description": "The total number of results."
          },
          "total_pages": {
            "type": "integer",
            "description": "The total number of pages of paginated results."
          }
        }
      },
      "borrower_doc_status": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "id",
            "description": "The user unique identifier issued by Snapdocs."
          },
          "first_name": {
            "type": "string",
            "example": "John",
            "description": "The Borrower's first name."
          },
          "middle_name": {
            "type": "string",
            "example": "Dave",
            "description": "The Borrower's middle name."
          },
          "last_name": {
            "type": "string",
            "example": "Doe",
            "description": "The Borrower's last name."
          },
          "suffix": {
            "type": "string",
            "example": "Jr",
            "description": "The Borrower's suffix."
          },
          "email": {
            "type": "string",
            "example": "test@test.com",
            "description": "The Borrower's email address."
          },
          "phone": {
            "type": "string",
            "example": "127-234-2234",
            "description": "The Borrower's phone number."
          },
          "preview_status": {
            "type": "string",
            "example": "Ready",
            "description": "The current status of documents preview.\n\n Possible values are:\n* `Not Ready` — Documents are either not yet uploaded or still in Doc Process.\n * `Ready` — Documents are ready for preview. \n * `Completed` — The Borrower has reviewed documents."
          },
          "esigning_status": {
            "type": "string",
            "example": "Not Ready",
            "description": "The current status of documents eSign.\n\n Possible values are:\n* `Not Ready` — Documents are either still in Doc Process, or eSigning is not yet unlocked for the Borrower.\n * `Ready` — Documents are ready for eSign.\n * `Completed` — The Borrower has eSigned documents."
          },
          "access_token": {
            "type": "string",
            "example": "eY...",
            "description": "This is the unique token to format the URL for the Borrower to Preview/Esign the documents. \n\n As part of on-boarding, your Snapdocs Partner will provide you with an URL which is appended with the Access Token for the Borrower Experience. \n\n The format will look like: `https://app.snapdocs.com/secure_access?secure_token=<access_token>`\n\n Add `act` to open a specific step directly:\n* `act=preview` and `act=esign` — the document preview and eSigning ceremony, which is also where an eNote is signed when the closing has one\n * `act=ron_preview` — the remote online notarization document preview\n * `act=ron_esign` — the remote online notarization signing session\n\n Add `redirect_url` to choose where the Borrower lands when the requested step cannot open. A `ron_esign` link opens the session only while `ron_esigning_status` is `Ready`; otherwise it redirects to the closing page (or `redirect_url`) rather than failing, so check the status before sending the link. Where the Borrower goes after a RON session ends is not controlled by this link.\n\n Each response issues a new token. It is `null` until the Borrower has a status, and it expires after the number of days configured for your company (default 14), so build links from the latest response rather than storing one."
          },
          "borrower_sub_type": {
            "type": "string",
            "enum": [
              "nbo"
            ],
            "description": "Borrower sub type."
          },
          "kba_status": {
            "type": "string",
            "example": "passed",
            "description": "The Borrower's knowledge-based authentication outcome for a remote online notarization.\n\n Possible values are:\n* `passed`\n* `failed`\n* empty — not a remote online notarization, or the Borrower has not reached this step."
          },
          "idv_status": {
            "type": "string",
            "example": "passed",
            "description": "The Borrower's identity verification outcome for a remote online notarization. Reported for Snapdocs RON only; a Proof notarization leaves this empty.\n\n Possible values are:\n* `passed`\n* `failed`\n* empty — not a Snapdocs RON notarization, or the Borrower has not reached this step."
          },
          "ron_preview_status": {
            "type": "string",
            "example": "Ready",
            "description": "Whether the Borrower can open the remote online notarization document preview. This field never reports `Completed`: the preview is a separate link that stays available after the Borrower signs, so use `ron_esigning_status` for completion.\n\n Possible values are:\n* `Not Applicable` — not a Snapdocs RON notarization.\n * `Not Ready` — the preview is not available to the Borrower yet.\n * `Ready` — the Borrower can open the preview."
          },
          "ron_esigning_status": {
            "type": "string",
            "example": "Not Ready",
            "description": "Whether the Borrower can start the remote online notarization signing session. The session opens a configurable number of minutes before the appointment, so this stays `Not Ready` until then even when `ron_preview_status` is `Ready`.\n\n Possible values are:\n* `Not Applicable` — not a Snapdocs RON notarization.\n * `Not Ready` — the session is not available to the Borrower yet.\n * `Ready` — the Borrower can start the session.\n * `Completed` — the Borrower has signed in the session."
          }
        }
      },
      "borrower_base": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "example": "Primary",
            "description": "The Borrower's first name. This must match the first name printed on the closing documents."
          },
          "middle_name": {
            "type": "string",
            "example": "Middle",
            "description": "The Borrower's middle name. This must match the middle name printed on the closing documents."
          },
          "last_name": {
            "type": "string",
            "example": "Signer",
            "description": "The Borrower's last name. This must match the last name printed on the closing documents."
          },
          "suffix": {
            "type": "string",
            "example": "Jr",
            "description": "The suffix of the Borrower's name."
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "primary.signer@snapdocs.com",
            "description": "The Borrower's email address."
          },
          "phone": {
            "type": "string",
            "example": "2343234333",
            "description": "The Borrower's phone number."
          },
          "address": {
            "type": "string",
            "example": "123 Example Ln",
            "description": "The Borrower's current address."
          },
          "city": {
            "type": "string",
            "example": "San Francisco",
            "description": "The city the Borrower's currently residing in."
          },
          "state": {
            "type": "string",
            "example": "California",
            "description": "The state the Borrower's currently residing in."
          },
          "zip": {
            "type": "string",
            "example": "94107",
            "description": "The zip code the Borrower's currently residing in."
          },
          "ssn_last_4": {
            "type": "string",
            "pattern": "/^\\d{4}$/",
            "example": "1234",
            "description": "The last 4 digits of the Borrower's social security number."
          },
          "borrower_sub_type": {
            "type": "string",
            "enum": [
              "nbo"
            ],
            "description": "Borrower sub type."
          }
        },
        "required": [
          "first_name",
          "last_name"
        ]
      },
      "borrower_hybrid": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/borrower_base"
          },
          {
            "description": "extra hybrid borrower attributes",
            "type": "object",
            "properties": {
              "signature_name": {
                "type": "string",
                "example": "Signature",
                "description": "The Document Signature Name is an optional field that allows you to send Snapdocs a custom signature name value for each borrower. If the field is populated, we will utilize that field to tag documents and that borrower will eSign with that name. If the field is blank, we will utilize the borrowers First + Middle + Last + Suffix to create their signature."
              }
            }
          }
        ],
        "required": [
          "first_name",
          "last_name",
          "phone",
          "email"
        ]
      },
      "borrower_full_eclosing": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "example": "Primary",
            "description": "The Borrower's first name. This must match the first name printed on the closing documents."
          },
          "middle_name": {
            "type": "string",
            "example": "Middle",
            "description": "The Borrower's middle name. This must match the middle name printed on the closing documents."
          },
          "last_name": {
            "type": "string",
            "example": "Signer",
            "description": "The Borrower's last name. This must match the last name printed on the closing documents."
          },
          "suffix": {
            "type": "string",
            "example": "Jr",
            "description": "The suffix of the Borrower's name."
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "primary.signer@snapdocs.com",
            "description": "The Borrower's email address."
          },
          "phone": {
            "type": "string",
            "example": "2343234333",
            "description": "The Borrower's phone number."
          },
          "address": {
            "type": "string",
            "example": "123 Example Ln",
            "description": "The Borrower's current address."
          },
          "address_line2": {
            "type": "string",
            "example": "Unit 12",
            "description": "The apartment, suite, unit number, or other address designation that is not part of the physical address of the borrower."
          },
          "city": {
            "type": "string",
            "example": "San Francisco",
            "description": "The city the Borrower's currently residing in."
          },
          "state": {
            "type": "string",
            "example": "California",
            "description": "The state the Borrower's currently residing in."
          },
          "zip": {
            "type": "string",
            "example": "94107",
            "description": "The zip code the Borrower's currently residing in."
          },
          "ssn_last_4": {
            "type": "string",
            "pattern": "/^\\d{4}$/",
            "example": "1234",
            "description": "The last 4 digits of the Borrower's social security number."
          },
          "borrower_sub_type": {
            "type": "string",
            "enum": [
              "nbo"
            ],
            "description": "Borrower sub type."
          }
        },
        "required": [
          "first_name",
          "last_name",
          "phone",
          "email"
        ]
      },
      "closing_user": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "example": "Closer",
            "description": "First name of the closing user handling this closing."
          },
          "last_name": {
            "type": "string",
            "example": "User",
            "description": "Last name of the closing user handling this closing."
          },
          "phone": {
            "type": "string",
            "example": "1234567890",
            "description": "Phone number of the closing user handling this closing."
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "email@example.com",
            "description": "Email address of the closing user handling this closing."
          },
          "roles": {
            "type": "array",
            "description": "⚠️ IMPORTANT: Map the LOS role to this field for Snapdocs emails and UI to work correctly for lender team members. Official role of the closing user handling this closing, such as Loan Officer, Closer, Funder, etc.",
            "items": {
              "type": "string",
              "enum": [
                "closer",
                "funder",
                "loan_coordinator",
                "loan_officer",
                "broker",
                "quality_controller"
              ]
            }
          }
        },
        "required": [
          "first_name",
          "last_name",
          "email"
        ]
      },
      "settlement_agent": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "example": "Settlement",
            "description": "First name of the Settlement Agent handling this closing."
          },
          "last_name": {
            "type": "string",
            "example": "Agent",
            "description": "Last name of the Settlement Agent handling this closing."
          },
          "phone": {
            "type": "string",
            "example": "1234567890",
            "description": "Phone number of the Settlement Agent handling this closing."
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "settlement.agent@snapdocs.com",
            "description": "Email address of the Settlement Agent handling this closing."
          }
        },
        "required": [
          "first_name",
          "last_name",
          "email"
        ]
      },
      "consumer_team_member": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string",
            "example": "John",
            "description": "First name of the consumer team member."
          },
          "last_name": {
            "type": "string",
            "example": "Foe",
            "description": "Last name of the consumer team member."
          },
          "phone": {
            "type": "string",
            "example": "1234567890",
            "description": "Phone number of the consumer team member."
          },
          "email": {
            "type": "string",
            "format": "email",
            "example": "email@example.com",
            "description": "Email address of the consumer team member."
          },
          "role": {
            "type": "string",
            "enum": [
              "buyer_agent",
              "buyer_attorney"
            ],
            "description": "Official role of the consumer team member."
          }
        },
        "required": [
          "first_name",
          "last_name",
          "email",
          "role"
        ]
      },
      "external_identifier": {
        "type": "object",
        "properties": {
          "external_system": {
            "type": "string",
            "enum": [
              "encompass",
              "other_los",
              "resware",
              "softpro",
              "byte",
              "netox",
              "empower",
              "meridianlink",
              "custom",
              "vesta",
              "blue_sage",
              "lender",
              "besmartee",
              "tavant",
              "maxwell",
              "dividend",
              "lender_logix_lite_speed",
              "other_pos",
              "simplifile",
              "other_tps"
            ],
            "description": "The name of the external system."
          },
          "external_type": {
            "type": "string",
            "enum": [
              "loan_id",
              "loan_guid",
              "file_number",
              "byte_id",
              "custom",
              "branch"
            ],
            "description": "The type of the external identifier."
          },
          "value": {
            "type": "string",
            "example": "UUID123",
            "description": "The value of the external identifier."
          }
        }
      },
      "closing": {
        "type": "object",
        "properties": {
          "closing_uuid": {
            "type": "string",
            "description": "The unique identifier for this closing."
          },
          "snapdocs_url": {
            "type": "string",
            "description": "The closing’s URL created by Snapdocs."
          },
          "errors": {
            "type": "array",
            "description": "Errors encountered while creating the closing. Note that for errors that are not critical, Snapdocs allows the closing to be created, and will follow up with the Lender to fix the issues.",
            "items": {
              "$ref": "#/components/schemas/closing_error"
            }
          }
        },
        "example": {
          "closing_uuid": "5a8b7694-d56b-427e-a446-e8ad93a2358d",
          "snapdocs_url": "https://www.snapdocs.com/closings/closing-test",
          "errors": []
        }
      },
      "enote": {
        "type": "object",
        "properties": {
          "external_identifier": {
            "type": "string",
            "example": "conventional-fixed-3200-multistate",
            "description": "The direct identifier for the eNote form. external_identifier supports acceleration, and deprecates the form_id/arm_form_id fields.",
            "enum": [
              "conventional-fixed-3200-multistate",
              "conventional-fixed-3200-ak",
              "conventional-fixed-3200-fl",
              "conventional-fixed-3200-me",
              "conventional-fixed-3200-nh",
              "conventional-fixed-3200-ny",
              "conventional-fixed-3200-pa",
              "conventional-fixed-3200-vt",
              "conventional-fixed-3200-va",
              "conventional-fixed-3200-wv",
              "conventional-fixed-3200-wi",
              "conventional-fixed-3900-az",
              "conventional-fixed-3900-ar",
              "conventional-fixed-3900-ca",
              "conventional-fixed-3900-co",
              "conventional-fixed-3900-de",
              "conventional-fixed-3900-dc",
              "conventional-fixed-3900-fl",
              "conventional-fixed-3900-ga",
              "conventional-fixed-3900-id",
              "conventional-fixed-3900-il",
              "conventional-fixed-3900-ia",
              "conventional-fixed-3900-ks",
              "conventional-fixed-3900-ky",
              "conventional-fixed-3900-la",
              "conventional-fixed-3900-md",
              "conventional-fixed-3900-mi",
              "conventional-fixed-3900-nh",
              "conventional-fixed-3900-nj",
              "conventional-fixed-3900-oh",
              "conventional-fixed-3900-ok",
              "conventional-fixed-3900-or",
              "conventional-fixed-3900-pa",
              "conventional-fixed-3900-ut",
              "conventional-fixed-3900-va",
              "conventional-fixed-3900-wa",
              "conventional-fixed-3900-wi",
              "fha-fixed-3200-multistate",
              "fha-fixed-3200-ak",
              "fha-fixed-3200-fl",
              "fha-fixed-3200-ia",
              "fha-fixed-3200-me",
              "fha-fixed-3200-mo",
              "fha-fixed-3200-nh",
              "fha-fixed-3200-ny",
              "fha-fixed-3200-pa",
              "fha-fixed-3200-vt",
              "fha-fixed-3200-va",
              "fha-fixed-3200-wv",
              "fha-fixed-3200-wi",
              "usda-fixed-3200-multistate",
              "usda-fixed-3200-ak",
              "usda-fixed-3200-fl",
              "usda-fixed-3200-me",
              "usda-fixed-3200-nh",
              "usda-fixed-3200-ny",
              "usda-fixed-3200-pa",
              "usda-fixed-3200-vt",
              "usda-fixed-3200-va",
              "usda-fixed-3200-wv",
              "usda-fixed-3200-wi",
              "va-fixed-3200-multistate",
              "va-fixed-3200-ak",
              "va-fixed-3200-ca",
              "va-fixed-3200-dc",
              "va-fixed-3200-fl",
              "va-fixed-3200-la",
              "va-fixed-3200-me",
              "va-fixed-3200-nh",
              "va-fixed-3200-ny",
              "va-fixed-3200-pa",
              "va-fixed-3200-tx",
              "va-fixed-3200-vt",
              "va-fixed-3200-va",
              "va-fixed-3200-wv",
              "va-fixed-3200-wi",
              "conventional-arm-3441-multistate",
              "conventional-arm-3441-ak",
              "conventional-arm-3441-fl",
              "conventional-arm-3441-nh",
              "conventional-arm-3441-pa",
              "conventional-arm-3441-tx",
              "conventional-arm-3441-va",
              "conventional-arm-3441-vt",
              "conventional-arm-3441-wi",
              "conventional-arm-3441-wv",
              "conventional-arm-3442-multistate",
              "conventional-arm-3442-ak",
              "conventional-arm-3442-fl",
              "conventional-arm-3442-nh",
              "conventional-arm-3442-pa",
              "conventional-arm-3442-tx",
              "conventional-arm-3442-va",
              "conventional-arm-3442-vt",
              "conventional-arm-3442-wi",
              "conventional-arm-3442-wv",
              "conventional-arm-3501-multistate",
              "conventional-arm-3501-ak",
              "conventional-arm-3501-fl",
              "conventional-arm-3501-nh",
              "conventional-arm-3501-pa",
              "conventional-arm-3501-vt",
              "conventional-arm-3501-va",
              "conventional-arm-3501-wv",
              "conventional-arm-3501-wi",
              "conventional-arm-3501-pr",
              "conventional-arm-3502-multistate",
              "conventional-arm-3502-ak",
              "conventional-arm-3502-fl",
              "conventional-arm-3502-nh",
              "conventional-arm-3502-pa",
              "conventional-arm-3502-vt",
              "conventional-arm-3502-va",
              "conventional-arm-3502-wv",
              "conventional-arm-3502-wi",
              "conventional-arm-3502-pr",
              "conventional-arm-3522-multistate"
            ]
          },
          "form_id": {
            "type": "string",
            "example": "Conventional Fixed",
            "description": "Mortgage Type & Loan Amortization Type."
          },
          "execution_city": {
            "type": "string",
            "example": "New Orleans",
            "description": "The name of the city where documents were signed (executed)."
          },
          "execution_date": {
            "type": "string",
            "example": "2020-11-19T00:00:00",
            "description": "The date documents were signed (executed)."
          },
          "execution_state": {
            "type": "string",
            "example": "LA",
            "description": "The name of the state where documents were signed (executed)."
          },
          "note_pay_to_street_address": {
            "type": "string",
            "example": "3344 E. Tennessee Ave.",
            "description": "The street address indicated on the note where to send the mortgage payment."
          },
          "note_pay_to_city": {
            "type": "string",
            "example": "Pueblo",
            "description": "The city indicated on the note where to send the mortgage payment."
          },
          "note_pay_to_state": {
            "type": "string",
            "example": "CO",
            "description": "The state indicated on the note where to send the mortgage payment."
          },
          "note_pay_to_postal_code": {
            "type": "string",
            "example": "80234",
            "description": "The postal code indicated on the note where to send the mortgage payment."
          },
          "note_rate_percent": {
            "type": "number",
            "example": 2.999,
            "description": "The actual interest rate as disclosed on the note."
          },
          "scheduled_first_payment_date": {
            "type": "string",
            "example": "2021-01-01T00:00:00",
            "description": "The date of the first scheduled mortgage payment to be made by the borrower under the terms of the mortgage."
          },
          "lender_loan_id": {
            "type": "string",
            "example": "12345678",
            "description": "The identifier assigned by the originating Lender to be referenced as the Loan ID/Number on all settlement documents, notes, riders, etc."
          },
          "loan_maturity_date": {
            "type": "string",
            "example": "2050-12-01T00:00:00",
            "description": "The date when the loan is scheduled to be paid in full as reflected on the Note."
          },
          "loan_originator_unparsed_name": {
            "type": "string",
            "example": "Acme Biggest Bank, LLC",
            "deprecated": true,
            "description": "Deprecated: use loan_originators instead. The name of the Loan Originator company."
          },
          "loan_originator_nmls_id": {
            "type": "string",
            "example": "33445",
            "deprecated": true,
            "description": "Deprecated: use loan_originators instead. The NMLS ID of the Loan Originator company."
          },
          "loan_originator_individual_unparsed_name": {
            "type": "string",
            "example": "Billy Bob",
            "deprecated": true,
            "description": "Deprecated: use loan_originators instead. The name of the Loan Originator individual."
          },
          "loan_originator_individual_nmls_id": {
            "type": "string",
            "example": "888999",
            "deprecated": true,
            "description": "Deprecated: use loan_originators instead. The NMLS ID of the Loan Originator individual."
          },
          "mers_min_number": {
            "type": "string",
            "example": "123456789012345678",
            "description": "Number used by MERS to identify loans. Referred to as the MIN, Mortgage Identification Number."
          },
          "original_principal_and_interest_payment_amount": {
            "type": "number",
            "example": 1234.56,
            "description": "The dollar amount of the P&I payment as stated on the Note. The P&I payment is usually obtained using the loan amount and interest rate to arrive at full amortization during the loan term."
          },
          "original_loan_amount": {
            "type": "number",
            "example": 338000,
            "description": "Amount of the Mortgage as stated on the original note."
          },
          "agency_case_identifier": {
            "type": "string",
            "example": "8362750483742",
            "description": "Special ID for Agency Loans."
          },
          "property_street_address": {
            "type": "string",
            "example": "9876 Brain St.",
            "description": "The street address of the property for closing."
          },
          "property_city": {
            "type": "string",
            "example": "Pueblo",
            "description": "The city of the property for closing."
          },
          "property_state": {
            "type": "string",
            "example": "CO",
            "description": "The state of the property for closing."
          },
          "property_postal_code": {
            "type": "string",
            "example": "80234",
            "description": "The postal code of the property for closing."
          },
          "property_county": {
            "type": "string",
            "example": "Pueblo",
            "description": "The county of the property for closing."
          },
          "lender_unparsed_name": {
            "type": "string",
            "example": "Lender Agency",
            "description": "The name of the party or entity designated as the lender for the loan."
          },
          "arm_form_id": {
            "type": "string",
            "example": "3502",
            "description": "ARM Form Number."
          },
          "first_rate_adjustment_date": {
            "type": "string",
            "example": "2027-02-01T00:00:00",
            "description": "The first date the interest rate will adjust in an ARM transaction."
          },
          "first_rate_adjustment_max_percent": {
            "type": "number",
            "example": 4.5,
            "description": "The maximum interest rate that can be applied at the first interest rate adjustment."
          },
          "first_rate_adjustment_min_percent": {
            "type": "number",
            "example": 2.75,
            "description": "The minimum interest rate that can be applied at the first interest rate adjustment."
          },
          "adjustment_frequency_months": {
            "type": "number",
            "example": 12,
            "description": "The frequency (in months) at which the rate is adjusted."
          },
          "lifetime_rate_adjustment_max_percent": {
            "type": "number",
            "example": 7.75,
            "description": "The maximum interest rate that can be applied during the loan term."
          },
          "lifetime_rate_adjustment_min_percent": {
            "type": "number",
            "example": 2,
            "description": "The minimum interest rate that can be applied during the loan term."
          },
          "subsequent_rate_adjustment_percent": {
            "type": "number",
            "example": 1,
            "description": "This cap says how much the interest rate can increase in the adjustment periods that follow. This cap is most commonly two percent, meaning that the new rate can’t be more than two percentage points higher than the previous rate."
          },
          "margin_rate_percent": {
            "type": "number",
            "example": 3.25,
            "description": "The percentage stated in the loan program representing the spread between the ARM Index value and the mortgage interest rate. The gross mortgage margin is added to the index value to establish a new gross interest rate in the manner described by the calculation method."
          },
          "late_charge_grace_period_days": {
            "type": "number",
            "example": 30,
            "description": "The grace period in days for this loan before a late charge will be applied."
          },
          "late_charge_rate_percent": {
            "type": "number",
            "example": 5,
            "description": "The percentage that a borrower is required to pay for failure to make a regular installment within the period specified on the note. This is the amount specified by the late charge code and is used when the late charge is not a flat dollar."
          },
          "late_charge_maximum_amount": {
            "type": "number",
            "example": 30,
            "description": "The maximum amount that a borrower is required to pay for failure to make a regular installment within the period specified on the note."
          },
          "late_charge_minimum_amount": {
            "type": "number",
            "example": 0,
            "description": "The minimum amount that a borrower is required to pay for failure to make a regular installment within the period specified on the note."
          },
          "broker_name": {
            "type": "string",
            "example": "Broker Name",
            "description": "The name of the Broker."
          },
          "broker_nmls_id": {
            "type": "string",
            "example": "123456",
            "description": "The unique identifier of the Broker individual that is assigned by the Nationwide Mortgage Licensing System."
          },
          "loan_originators": {
            "type": "array",
            "description": "An array of loan originator pairs. Use this instead of the singular loan_originator_* fields when multiple originators are needed.",
            "items": {
              "type": "object",
              "properties": {
                "company_unparsed_name": {
                  "type": "string",
                  "example": "Acme Biggest Bank, LLC",
                  "description": "The name of the Loan Originator company."
                },
                "company_nmls_id": {
                  "type": "string",
                  "example": "33445",
                  "description": "The NMLS ID of the Loan Originator company."
                },
                "individual_unparsed_name": {
                  "type": "string",
                  "example": "Billy Bob",
                  "description": "The name of the Loan Originator individual."
                },
                "individual_nmls_id": {
                  "type": "string",
                  "example": "888999",
                  "description": "The NMLS ID of the Loan Originator individual."
                }
              }
            }
          }
        }
      },
      "notification": {
        "type": "object",
        "description": "A single notification about a quality document.",
        "properties": {
          "level": {
            "type": "string",
            "description": "The level of importance (usually WARNING).",
            "enum": [
              "INFO",
              "WARNING",
              "ERROR",
              "DEBUG"
            ]
          },
          "message": {
            "type": "string",
            "description": "The notification message.",
            "example": "Missing document"
          }
        }
      },
      "document": {
        "type": "object",
        "description": "A single document. Only unclassified documents and documents considered \"important\" will be returned.",
        "properties": {
          "name": {
            "type": "string",
            "description": "The document name.",
            "example": "Closing Disclosure"
          },
          "status": {
            "type": "string",
            "description": "The status of the document",
            "example": "passed"
          },
          "notifications": {
            "type": "array",
            "description": "A list of notifications for the document.",
            "items": {
              "$ref": "#/components/schemas/notification"
            }
          }
        }
      },
      "document_info": {
        "type": "object",
        "description": "Information and metadata pertaining to a specific document.",
        "properties": {
          "document_uuid": {
            "type": "string",
            "description": "The unique identifier of a document."
          },
          "filename": {
            "type": "string",
            "example": "example_filename.pdf",
            "description": "The file name of a document."
          },
          "document_type": {
            "type": "string",
            "example": "signed complete package",
            "enum": [
              "dual borrower signed esign documents",
              "enote audit certificate",
              "individual incremental signed documents",
              "individual signed documents",
              "individual trailing documents",
              "original combined documents",
              "original documents",
              "qc review reports",
              "redraw documents",
              "rush documents",
              "signed complete package",
              "signed enote documents",
              "signed esign documents",
              "signed ron documents",
              "signed wet documents",
              "trailing combined documents",
              "unsigned enote documents",
              "unsigned esign documents",
              "unsigned wet documents",
              "unsigned wet package with cover page"
            ],
            "description": "The type of document."
          },
          "file_size": {
            "type": "integer",
            "example": 247742,
            "description": "The document's file size in bytes."
          },
          "created_at": {
            "type": "string",
            "example": "2021-01-07T22:31:39Z",
            "description": "The datetime this document was created."
          },
          "url": {
            "type": "string",
            "example": "https://capi-test.snapdocs.com/api/v1/closings/785e6392-835a-7eda-9e75-d2b46947ba83/documents/b65734a9-26b3-57d3-6e97-d48ea9eb682a",
            "description": "The document's URL in Snapdocs."
          }
        }
      },
      "report_document": {
        "type": "object",
        "description": "A quality control report document.",
        "properties": {
          "filename": {
            "type": "string",
            "example": "Funding_QC_Report__2026-01-09_09_05.pdf",
            "description": "The file name of the report document."
          },
          "created_at": {
            "type": "string",
            "example": "2026-01-09T17:05:25Z",
            "description": "The datetime this report document was created."
          },
          "lender_reviewed": {
            "type": "string",
            "example": "Yes",
            "enum": [
              "Yes",
              "No"
            ],
            "description": "Whether the lender has reviewed this report document."
          },
          "url": {
            "type": "string",
            "example": "https://capi-test.snapdocs.com/api/v1/closings/fdc8f598-6ecd-438a-9de3-033c4609c026/documents/73689d4b-7a8b-24e3-a68b-e653d9a72536",
            "description": "The report document's URL in Snapdocs."
          }
        }
      },
      "get_documents_response": {
        "type": "object",
        "properties": {
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/document_info"
            }
          }
        }
      },
      "quality_control": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "The status of the quality control report",
            "example": "complete"
          },
          "in_progress": {
            "type": "boolean",
            "description": "If true, a new quality report is being generated, and the list of documents will be empty.",
            "example": "false"
          },
          "notifications": {
            "type": "array",
            "description": "A list of notifications for the closing.",
            "items": {
              "$ref": "#/components/schemas/notification"
            }
          },
          "documents": {
            "type": "array",
            "description": "The set of documents for the closing, by name.",
            "items": {
              "$ref": "#/components/schemas/document"
            }
          },
          "report_documents": {
            "type": "array",
            "description": "The set of quality control report documents. Only present when quality control is complete.",
            "items": {
              "$ref": "#/components/schemas/report_document"
            }
          }
        }
      },
      "closing_error": {
        "properties": {
          "detail": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        }
      },
      "get_status_response": {
        "type": "object",
        "properties": {
          "closing_uuid": {
            "type": "string",
            "example": "5a8b7694-d56b-427e-a446-e8ad93a2358d",
            "description": "The unique identifier for this closing."
          },
          "url": {
            "type": "string",
            "example": "https://company.snapdocs.com/closings/slug",
            "description": "The url to view the Snapdocs Closing."
          },
          "signing_method": {
            "type": "string",
            "enum": [
              "full_eclosing",
              "full_eclosing_with_enote",
              "hybrid"
            ],
            "description": "The type of Closing (Wet, Hybrid, Full, Hybrid/Full with eNote/) for the loan."
          },
          "external_identifiers": {
            "type": "array",
            "description": "External identifiers of the closing.",
            "items": {
              "$ref": "#/components/schemas/external_identifier"
            }
          },
          "status": {
            "$ref": "#/components/schemas/closing_status"
          }
        }
      },
      "closing_status": {
        "type": "object",
        "properties": {
          "closing": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "example": "in_progress",
                "description": "A value to identify the closing status."
              },
              "description": {
                "type": "string",
                "example": "Closing is in progress.",
                "description": "Description of the closing status value provided."
              }
            }
          },
          "documents": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "example": "docs_uploading",
                "description": "A value to identify the documents status."
              },
              "description": {
                "type": "string",
                "example": "Documents are currently uploading to closing.",
                "description": "Description of the documents status value provided."
              }
            }
          },
          "documents_preview": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "example": "awaiting_final_docs",
                "description": "A value to identify the documents preview status."
              },
              "description": {
                "type": "string",
                "example": "Awaiting final documents.",
                "description": "Description of the documents preview value provided."
              }
            }
          },
          "esign": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "example": "awaiting_final_docs",
                "description": "A value to identify the esign status."
              },
              "description": {
                "type": "string",
                "example": "Awaiting final documents.",
                "description": "Description of the esign status value provided."
              }
            }
          },
          "signing_appointment": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "example": "awaiting_final_docs",
                "description": "A value to identify the signing appointment status."
              },
              "description": {
                "type": "string",
                "example": "Awaiting final documents.",
                "description": "Description of the signing appointment value provided."
              }
            }
          },
          "enote": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string",
                "example": "preparing",
                "description": "A value to identify the enote status."
              },
              "description": {
                "type": "string",
                "example": "Preparing eNote.",
                "description": "Description of the enote status value provided."
              }
            }
          }
        }
      },
      "appointment": {
        "description": "An appointment for a closing",
        "type": "object",
        "properties": {
          "street_address": {
            "type": "string",
            "example": "123 Main St",
            "description": "The street address of the appointment location"
          },
          "city": {
            "type": "string",
            "example": "San Francisco",
            "description": "The city of the appointment location"
          },
          "state": {
            "type": "string",
            "example": "CA",
            "description": "The state of the appointment location"
          },
          "zip": {
            "type": "string",
            "example": "94104",
            "description": "The zip code of the appointment location"
          },
          "date": {
            "type": "string",
            "example": "2022-01-01",
            "description": "The date of the appointment in YYYY-MM-DD format"
          },
          "time": {
            "type": "string",
            "example": "1:00 pm",
            "description": "The time of the appointment",
            "deprecated": true
          },
          "timestamp": {
            "type": "string",
            "example": "2023-01-13 10:36:22 +0000",
            "description": "The date and time of the appointment. Can be provided as YYYY-MM-DD format if only date is known or it is desired that time is unset OR by providing both date and time in the following format with an offset from UTC as YYYY-MM-DD HH:MM:SS +0000 / +00:00."
          },
          "timezone": {
            "type": "string",
            "example": "Pacific Time (US & Canada)",
            "description": "The timezone of the appointment location (valid time zones are Pacific Time (US & Canada), Mountain Time (US & Canada), Arizona, Central Time (US & Canada), Eastern Time (US & Canada), Indiana (East), Alaska, Hawaii)",
            "deprecated": true
          }
        }
      },
      "appointment_patch": {
        "description": "An appointment for a closing (for PATCH requests). On a full eClose closing only timestamp is applied; the deprecated date, time and timezone are ignored.",
        "type": "object",
        "properties": {
          "street_address": {
            "type": "string",
            "example": "123 Main St",
            "description": "The street address of the appointment location"
          },
          "city": {
            "type": "string",
            "example": "San Francisco",
            "description": "The city of the appointment location"
          },
          "state": {
            "type": "string",
            "example": "CA",
            "description": "The state of the appointment location"
          },
          "zip": {
            "type": "string",
            "example": "94104",
            "description": "The zip code of the appointment location"
          },
          "date": {
            "type": "string",
            "example": "2022-01-01",
            "description": "The date of the appointment in YYYY-MM-DD format. Not applied on a full eClose closing - use timestamp.",
            "deprecated": true
          },
          "time": {
            "type": "string",
            "example": "1:00 pm",
            "description": "The time of the appointment. Not applied on a full eClose closing - use timestamp.",
            "deprecated": true
          },
          "timestamp": {
            "type": "string",
            "example": "2023-01-13 10:36:22 +0000",
            "description": "The date and time of the appointment. Can be provided as YYYY-MM-DD format if only date is known or it is desired that time is unset OR by providing both date and time in the following format with an offset from UTC as YYYY-MM-DD HH:MM:SS +0000 / +00:00."
          },
          "timezone": {
            "type": "string",
            "example": "Pacific Time (US & Canada)",
            "description": "The timezone of the appointment location (valid time zones are Pacific Time (US & Canada), Mountain Time (US & Canada), Arizona, Central Time (US & Canada), Eastern Time (US & Canada), Indiana (East), Alaska, Hawaii). Not applied on a full eClose closing - use timestamp, which carries its own UTC offset.",
            "deprecated": true
          }
        }
      },
      "appointment_get": {
        "description": "An appointment for a closing",
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/appointment"
          },
          {
            "description": "extra appointment attributes returned by the get appointment endpoint",
            "type": "object",
            "properties": {
              "earliest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The earliest date the Wet Signing appointment can happen in YYYY-MM-DD format"
              },
              "latest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The latest date the Wet Signing appointment can happen in YYYY-MM-DD format"
              },
              "timestamp": {
                "type": "string",
                "example": "2021-10-20 13:00:00 +0000",
                "description": "The date and time of the appointment in YYYY-MM-DD HH:MM:SS +0000 format"
              },
              "completed_at": {
                "type": "string",
                "example": "2023-01-13 10:36:22 +0000",
                "description": "The date and time that the closing was completed in YYYY-MM-DD HH:MM:SS +0000 format"
              },
              "status": {
                "type": "string",
                "example": "Open",
                "description": "The status of the signing appointment",
                "enum": [
                  "Open",
                  "Awaiting signature",
                  "Complete"
                ]
              },
              "timezone_iana": {
                "type": "string",
                "example": "American/Los Angeles",
                "description": "The timezone of the appointment location  as specified by the IANA database (https://www.iana.org/time-zones)"
              }
            }
          }
        ]
      },
      "signing_method": {
        "type": "string",
        "enum": [
          "wet_only",
          "hybrid",
          "hybrid_with_enote",
          "full_eclosing",
          "full_eclosing_with_enote"
        ],
        "description": "The type of Closing (Wet, Hybrid, Full Eclose, Hybrid/Full Eclose with eNote) for the loan."
      },
      "new_closing": {
        "type": "object",
        "discriminator": {
          "propertyName": "signing_method"
        },
        "required": [
          "signing_method"
        ],
        "properties": {
          "signing_method": {
            "$ref": "#/components/schemas/signing_method"
          }
        }
      },
      "wet_only": {
        "description": "A closing with signing_method of wet_only",
        "allOf": [
          {
            "$ref": "#/components/schemas/new_closing"
          },
          {
            "description": "A closing with signing_method of wet_only",
            "type": "object",
            "required": [
              "signing_method",
              "borrowers",
              "settlement_office_email",
              "settlement_office_name",
              "settlement_agents",
              "closing_users"
            ],
            "properties": {
              "file_number": {
                "type": "string",
                "example": "123",
                "description": "The file number on the loan."
              },
              "branding_key": {
                "type": "string",
                "example": "123",
                "description": "The branding key."
              },
              "channel": {
                "type": "string",
                "example": "Retail",
                "description": "The channel field on the loan"
              },
              "reference_id": {
                "type": "string",
                "example": "06f61895-e0b8-4525-b42d-d3431199c1f3",
                "description": "Unique Loan Guid"
              },
              "source": {
                "type": "string",
                "example": "Encompass",
                "description": "Name of the source which will be calling the API.",
                "deprecated": true
              },
              "signing_method": {
                "$ref": "#/components/schemas/signing_method"
              },
              "appointment_earliest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The earliest date the Wet Signing appointment can happen in 'YYYY-MM-DD' or 'YYYY-MM-DDT00:00:00' format. In case your organization would like to set eSign constraint on the closing, this date is used to determine when will the Borrower be allowed to eSign some of the closing documents."
              },
              "appointment_latest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The latest date the Wet Signing appointment can happen in 'YYYY-MM-DD' or 'YYYY-MM-DDT00:00:00' format."
              },
              "appointment_date": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The exact date of the closing in `YYYY-MM-DD` format."
              },
              "appointment_time": {
                "type": "string",
                "example": "9:00 am",
                "description": "The exact time for the closing. The time zone used to display the signing time will be calculated based on the data sent to Snapdocs in the following fields: \n `appointment_location_address` \n `appointment_location_city` \n `appointment_location_state` \n `appointment_location_zip`"
              },
              "appointment_location_address": {
                "type": "string",
                "example": "123 Main St",
                "description": "The street address where the signing will be held at."
              },
              "appointment_location_city": {
                "type": "string",
                "example": "Denver",
                "description": "The city where the signing will be held at."
              },
              "appointment_location_state": {
                "type": "string",
                "example": "CO",
                "description": "Two-letter state abbreviations where the signing will be held at."
              },
              "appointment_location_zip": {
                "type": "string",
                "example": "80212",
                "description": "The zip code of the address where the signing will be held at."
              },
              "funding_team_email": {
                "type": "string",
                "example": "funding-team@lender.com",
                "description": "Email address of the Funding Team who needs to be notified about the closing."
              },
              "non_borrower_title_holders": {
                "type": "integer",
                "example": "0",
                "description": "The number of non-borrower title holders involved in the loan. This field is **REQUIRED** when using any Snapdocs QC products, and should be a positive whole number."
              },
              "property_street_address": {
                "type": "string",
                "example": "9876 Brain St.",
                "description": "The address of the property being purchased."
              },
              "property_street_address_line2": {
                "type": "string",
                "example": "Unit 12",
                "description": "The apartment, suite, unit number, or other address designation that is not part of the physical address of the property being purchased."
              },
              "property_city": {
                "type": "string",
                "example": "123 Test Ln",
                "description": "The city the property is located in."
              },
              "property_state": {
                "type": "string",
                "example": "California",
                "description": "The state the property is located in."
              },
              "property_zip": {
                "type": "string",
                "example": "94107",
                "description": "The zip code of the property being purchased."
              },
              "settlement_office_email": {
                "type": "string",
                "example": "settlementoffice@example.com",
                "description": "Email address of the settlement office handling this closing."
              },
              "settlement_office_name": {
                "type": "string",
                "example": "Settlement Office",
                "description": "The name of the settlement office handling this closing."
              },
              "settlement_office_address": {
                "type": "string",
                "example": "123 Test Settlement Office",
                "description": "The address of the settlement office."
              },
              "settlement_office_city": {
                "type": "string",
                "example": "San Francisco",
                "description": "The city the settlement office is located in."
              },
              "settlement_office_state": {
                "type": "string",
                "example": "California",
                "description": "The state the settlement office is located in."
              },
              "settlement_office_zip": {
                "type": "string",
                "example": "94107",
                "description": "The zip code of the settlement office."
              },
              "loan_type": {
                "type": "string",
                "enum": [
                  "Conventional",
                  "HELOC",
                  "VA",
                  "FHA",
                  "FarmersHomeAdministration",
                  "USDA_RHS",
                  "Jumbo",
                  "Other"
                ],
                "description": "The loan type."
              },
              "loan_purpose": {
                "type": "string",
                "enum": [
                  "Purchase",
                  "NoCash-Out Refinance",
                  "Cash-Out Refinance",
                  "ConstructionOnly",
                  "ConstructionToPermanent",
                  "Reverse_mortgage",
                  "Other"
                ],
                "description": "The loan purpose."
              },
              "loan_amount": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 100500.89,
                "description": "Amount for the loan. Use value between 0 and 999999999.99 with max 2 decimals format."
              },
              "property_sale_price": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 338000.2,
                "description": "Amount for the property sale price. Use value between 0 and 999999999.99 with max 2 decimals format."
              },
              "funding_auth_required": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "Yes",
                  "No"
                ],
                "description": "If funding authorization is required."
              },
              "additional_file_contact_emails": {
                "type": "array",
                "description": "Any additional lender emails that need to be notified about the closing.",
                "items": {
                  "type": "string",
                  "example": [
                    "additional_contact@example.com",
                    "additional_contact-2@example.com"
                  ]
                }
              },
              "borrowers": {
                "type": "array",
                "description": "The Borrower's detailed info. At least one borrower is required.",
                "items": {
                  "$ref": "#/components/schemas/borrower_base"
                }
              },
              "closing_users": {
                "type": "array",
                "description": "The closing user's info.",
                "items": {
                  "$ref": "#/components/schemas/closing_user"
                }
              },
              "settlement_agents": {
                "type": "array",
                "description": "The settlement agent's info. At least one valid settlement agent email is required.",
                "items": {
                  "$ref": "#/components/schemas/settlement_agent"
                }
              },
              "consumer_team_members": {
                "type": "array",
                "description": "The consumer team members detailed info. Only 1 buyer agent and 1 buyer attorney can be added at the moment.",
                "items": {
                  "$ref": "#/components/schemas/consumer_team_member"
                }
              },
              "external_identifiers": {
                "type": "array",
                "description": "External identifiers of the closing.",
                "items": {
                  "$ref": "#/components/schemas/external_identifier"
                }
              }
            }
          }
        ]
      },
      "hybrid": {
        "description": "A closing with signing_method of hybrid",
        "allOf": [
          {
            "$ref": "#/components/schemas/new_closing"
          },
          {
            "description": "A closing with signing_method of hybrid",
            "type": "object",
            "required": [
              "signing_method",
              "borrowers",
              "settlement_office_email",
              "settlement_office_name",
              "settlement_agents",
              "closing_users"
            ],
            "properties": {
              "file_number": {
                "type": "string",
                "example": "123",
                "description": "The file number on the loan."
              },
              "branding_key": {
                "type": "string",
                "example": "123",
                "description": "The branding key."
              },
              "channel": {
                "type": "string",
                "example": "Retail",
                "description": "The channel field on the loan"
              },
              "reference_id": {
                "type": "string",
                "example": "06f61895-e0b8-4525-b42d-d3431199c1f3",
                "description": "Unique Loan Guid"
              },
              "source": {
                "type": "string",
                "example": "Encompass",
                "description": "Name of the source which will be calling the API.",
                "deprecated": true
              },
              "signing_method": {
                "$ref": "#/components/schemas/signing_method"
              },
              "appointment_earliest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The earliest date the Wet Signing appointment can happen in 'YYYY-MM-DD' or 'YYYY-MM-DDT00:00:00' format. In case your organization would like to set eSign constraint on the closing, this date is used to determine when will the Borrower be allowed to eSign some of the closing documents."
              },
              "appointment_latest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The latest date the Wet Signing appointment can happen in 'YYYY-MM-DD' or 'YYYY-MM-DDT00:00:00' format."
              },
              "appointment_date": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The exact date of the closing in `YYYY-MM-DD` format."
              },
              "appointment_time": {
                "type": "string",
                "example": "9:00 am",
                "description": "The exact time for the closing. The time zone used to display the signing time will be calculated based on the data sent to Snapdocs in the following fields: \n `appointment_location_address` \n `appointment_location_city` \n `appointment_location_state` \n `appointment_location_zip`"
              },
              "appointment_location_address": {
                "type": "string",
                "example": "123 Main St",
                "description": "The street address where the signing will be held at."
              },
              "appointment_location_city": {
                "type": "string",
                "example": "Denver",
                "description": "The city where the signing will be held at."
              },
              "appointment_location_state": {
                "type": "string",
                "example": "CO",
                "description": "Two-letter state abbreviations where the signing will be held at."
              },
              "appointment_location_zip": {
                "type": "string",
                "example": "80212",
                "description": "The zip code of the address where the signing will be held at."
              },
              "funding_team_email": {
                "type": "string",
                "example": "funding-team@lender.com",
                "description": "Email address of the Funding Team who needs to be notified about the closing."
              },
              "non_borrower_title_holders": {
                "type": "integer",
                "example": "0",
                "description": "The number of non-borrower title holders involved in the loan. This field is **REQUIRED** when using any Snapdocs QC products, and should be a positive whole number."
              },
              "property_street_address": {
                "type": "string",
                "example": "9876 Brain St.",
                "description": "The address of the property being purchased."
              },
              "property_street_address_line2": {
                "type": "string",
                "example": "Unit 12",
                "description": "The apartment, suite, unit number, or other address designation that is not part of the physical address of the property being purchased."
              },
              "property_city": {
                "type": "string",
                "example": "123 Test Ln",
                "description": "The city the property is located in."
              },
              "property_state": {
                "type": "string",
                "example": "California",
                "description": "The state the property is located in."
              },
              "property_zip": {
                "type": "string",
                "example": "94107",
                "description": "The zip code of the property being purchased."
              },
              "settlement_office_email": {
                "type": "string",
                "example": "settlementoffice@example.com",
                "description": "Email address of the settlement office handling this closing."
              },
              "settlement_office_name": {
                "type": "string",
                "example": "Settlement Office",
                "description": "The name of the settlement office handling this closing."
              },
              "settlement_office_address": {
                "type": "string",
                "example": "123 Test Settlement Office",
                "description": "The address of the settlement office."
              },
              "settlement_office_city": {
                "type": "string",
                "example": "San Francisco",
                "description": "The city the settlement office is located in."
              },
              "settlement_office_state": {
                "type": "string",
                "example": "California",
                "description": "The state the settlement office is located in."
              },
              "settlement_office_zip": {
                "type": "string",
                "example": "94107",
                "description": "The zip code of the settlement office."
              },
              "loan_type": {
                "type": "string",
                "enum": [
                  "Conventional",
                  "HELOC",
                  "VA",
                  "FHA",
                  "FarmersHomeAdministration",
                  "USDA_RHS",
                  "Jumbo",
                  "Other"
                ],
                "description": "The loan type."
              },
              "loan_purpose": {
                "type": "string",
                "enum": [
                  "Purchase",
                  "NoCash-Out Refinance",
                  "Cash-Out Refinance",
                  "ConstructionOnly",
                  "ConstructionToPermanent",
                  "Reverse_mortgage",
                  "Other"
                ],
                "description": "The loan purpose."
              },
              "loan_amount": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 100500.89,
                "description": "Amount for the loan. Use value between 0 and 999999999.99 with max 2 decimals format."
              },
              "property_sale_price": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 338000.2,
                "description": "Amount for the property sale price. Use value between 0 and 999999999.99 with max 2 decimals format."
              },
              "funding_auth_required": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "Yes",
                  "No"
                ],
                "description": "If funding authorization is required."
              },
              "additional_file_contact_emails": {
                "type": "array",
                "description": "Any additional lender emails that need to be notified about the closing.",
                "items": {
                  "type": "string",
                  "example": [
                    "additional_contact@example.com",
                    "additional_contact-2@example.com"
                  ]
                }
              },
              "borrowers": {
                "type": "array",
                "description": "The Borrower's detailed info. At least one borrower is required.",
                "items": {
                  "$ref": "#/components/schemas/borrower_hybrid"
                }
              },
              "closing_users": {
                "type": "array",
                "description": "The closing user's info.",
                "items": {
                  "$ref": "#/components/schemas/closing_user"
                }
              },
              "settlement_agents": {
                "type": "array",
                "description": "The settlement agent's info. At least one valid settlement agent email is required.",
                "items": {
                  "$ref": "#/components/schemas/settlement_agent"
                }
              },
              "consumer_team_members": {
                "type": "array",
                "description": "The consumer team members detailed info. Only 1 buyer agent and 1 buyer attorney can be added at the moment.",
                "items": {
                  "$ref": "#/components/schemas/consumer_team_member"
                }
              },
              "external_identifiers": {
                "type": "array",
                "description": "External identifiers of the closing.",
                "items": {
                  "$ref": "#/components/schemas/external_identifier"
                }
              }
            }
          }
        ]
      },
      "hybrid_with_enote": {
        "description": "A closing with signing_method of hybrid_with_enote",
        "allOf": [
          {
            "$ref": "#/components/schemas/new_closing"
          },
          {
            "description": "A closing with signing_method of hybrid_with_enote",
            "type": "object",
            "required": [
              "signing_method",
              "borrowers",
              "settlement_office_email",
              "settlement_office_name",
              "settlement_agents",
              "closing_users"
            ],
            "properties": {
              "file_number": {
                "type": "string",
                "example": "123",
                "description": "The file number on the loan."
              },
              "branding_key": {
                "type": "string",
                "example": "123",
                "description": "The branding key."
              },
              "channel": {
                "type": "string",
                "example": "Retail",
                "description": "The channel field on the loan"
              },
              "reference_id": {
                "type": "string",
                "example": "06f61895-e0b8-4525-b42d-d3431199c1f3",
                "description": "Unique Loan Guid"
              },
              "source": {
                "type": "string",
                "example": "Encompass",
                "description": "Name of the source which will be calling the API.",
                "deprecated": true
              },
              "signing_method": {
                "$ref": "#/components/schemas/signing_method"
              },
              "appointment_earliest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The earliest date the Wet Signing appointment can happen in 'YYYY-MM-DD' or 'YYYY-MM-DDT00:00:00' format. In case your organization would like to set eSign constraint on the closing, this date is used to determine when will the Borrower be allowed to eSign some of the closing documents."
              },
              "appointment_latest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The latest date the Wet Signing appointment can happen in 'YYYY-MM-DD' or 'YYYY-MM-DDT00:00:00' format."
              },
              "appointment_date": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The exact date of the closing in `YYYY-MM-DD` format."
              },
              "appointment_time": {
                "type": "string",
                "example": "9:00 am",
                "description": "The exact time for the closing. The time zone used to display the signing time will be calculated based on the data sent to Snapdocs in the following fields: \n `appointment_location_address` \n `appointment_location_city` \n `appointment_location_state` \n `appointment_location_zip`"
              },
              "appointment_location_address": {
                "type": "string",
                "example": "123 Main St",
                "description": "The street address where the signing will be held at."
              },
              "appointment_location_city": {
                "type": "string",
                "example": "Denver",
                "description": "The city where the signing will be held at."
              },
              "appointment_location_state": {
                "type": "string",
                "example": "CO",
                "description": "Two-letter state abbreviations where the signing will be held at."
              },
              "appointment_location_zip": {
                "type": "string",
                "example": "80212",
                "description": "The zip code of the address where the signing will be held at."
              },
              "funding_team_email": {
                "type": "string",
                "example": "funding-team@lender.com",
                "description": "Email address of the Funding Team who needs to be notified about the closing."
              },
              "non_borrower_title_holders": {
                "type": "integer",
                "example": "0",
                "description": "The number of non-borrower title holders involved in the loan. This field is **REQUIRED** when using any Snapdocs QC products, and should be a positive whole number."
              },
              "property_street_address": {
                "type": "string",
                "example": "9876 Brain St.",
                "description": "The address of the property being purchased."
              },
              "property_street_address_line2": {
                "type": "string",
                "example": "Unit 12",
                "description": "The apartment, suite, unit number, or other address designation that is not part of the physical address of the property being purchased."
              },
              "property_city": {
                "type": "string",
                "example": "123 Test Ln",
                "description": "The city the property is located in."
              },
              "property_state": {
                "type": "string",
                "example": "California",
                "description": "The state the property is located in."
              },
              "property_zip": {
                "type": "string",
                "example": "94107",
                "description": "The zip code of the property being purchased."
              },
              "settlement_office_email": {
                "type": "string",
                "example": "settlementoffice@example.com",
                "description": "Email address of the settlement office handling this closing."
              },
              "settlement_office_name": {
                "type": "string",
                "example": "Settlement Office",
                "description": "The name of the settlement office handling this closing."
              },
              "settlement_office_address": {
                "type": "string",
                "example": "123 Test Settlement Office",
                "description": "The address of the settlement office."
              },
              "settlement_office_city": {
                "type": "string",
                "example": "San Francisco",
                "description": "The city the settlement office is located in."
              },
              "settlement_office_state": {
                "type": "string",
                "example": "California",
                "description": "The state the settlement office is located in."
              },
              "settlement_office_zip": {
                "type": "string",
                "example": "94107",
                "description": "The zip code of the settlement office."
              },
              "loan_type": {
                "type": "string",
                "enum": [
                  "Conventional",
                  "HELOC",
                  "VA",
                  "FHA",
                  "FarmersHomeAdministration",
                  "USDA_RHS",
                  "Jumbo",
                  "Other"
                ],
                "description": "The loan type."
              },
              "loan_purpose": {
                "type": "string",
                "enum": [
                  "Purchase",
                  "NoCash-Out Refinance",
                  "Cash-Out Refinance",
                  "ConstructionOnly",
                  "ConstructionToPermanent",
                  "Reverse_mortgage",
                  "Other"
                ],
                "description": "The loan purpose."
              },
              "loan_amount": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 100500.89,
                "description": "Amount for the loan. Use value between 0 and 999999999.99 with max 2 decimals format."
              },
              "property_sale_price": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 338000.2,
                "description": "Amount for the property sale price. Use value between 0 and 999999999.99 with max 2 decimals format."
              },
              "funding_auth_required": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "Yes",
                  "No"
                ],
                "description": "If funding authorization is required."
              },
              "additional_file_contact_emails": {
                "type": "array",
                "description": "Any additional lender emails that need to be notified about the closing.",
                "items": {
                  "type": "string",
                  "example": [
                    "additional_contact@example.com",
                    "additional_contact-2@example.com"
                  ]
                }
              },
              "borrowers": {
                "type": "array",
                "description": "The Borrower's detailed info. At least one borrower is required.",
                "items": {
                  "$ref": "#/components/schemas/borrower_hybrid"
                }
              },
              "closing_users": {
                "type": "array",
                "description": "The closing user's info.",
                "items": {
                  "$ref": "#/components/schemas/closing_user"
                }
              },
              "settlement_agents": {
                "type": "array",
                "description": "The settlement agent's info. At least one valid settlement agent email is required.",
                "items": {
                  "$ref": "#/components/schemas/settlement_agent"
                }
              },
              "consumer_team_members": {
                "type": "array",
                "description": "The consumer team members detailed info. Only 1 buyer agent and 1 buyer attorney can be added at the moment.",
                "items": {
                  "$ref": "#/components/schemas/consumer_team_member"
                }
              },
              "external_identifiers": {
                "type": "array",
                "description": "External identifiers of the closing.",
                "items": {
                  "$ref": "#/components/schemas/external_identifier"
                }
              },
              "enote": {
                "$ref": "#/components/schemas/enote"
              }
            }
          }
        ]
      },
      "full_eclosing": {
        "description": "A closing with signing_method of full_eclosing",
        "allOf": [
          {
            "$ref": "#/components/schemas/new_closing"
          },
          {
            "description": "A closing with signing_method of full_eclosing",
            "type": "object",
            "required": [
              "signing_method",
              "borrowers",
              "settlement_office_email",
              "settlement_office_name",
              "settlement_agents",
              "closing_users",
              "property_street_address",
              "property_city",
              "property_state",
              "property_zip"
            ],
            "properties": {
              "file_number": {
                "type": "string",
                "example": "123",
                "description": "The file number on the loan."
              },
              "branding_key": {
                "type": "string",
                "example": "123",
                "description": "The branding key."
              },
              "channel": {
                "type": "string",
                "example": "Retail",
                "description": "The channel field on the loan"
              },
              "reference_id": {
                "type": "string",
                "example": "06f61895-e0b8-4525-b42d-d3431199c1f3",
                "description": "Unique Loan Guid"
              },
              "source": {
                "type": "string",
                "example": "Encompass",
                "description": "Name of the source which will be calling the API.",
                "deprecated": true
              },
              "signing_method": {
                "$ref": "#/components/schemas/signing_method"
              },
              "appointment_earliest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The earliest date the Wet Signing appointment can happen in 'YYYY-MM-DD' or 'YYYY-MM-DDT00:00:00' format. In case your organization would like to set eSign constraint on the closing, this date is used to determine when will the Borrower be allowed to eSign some of the closing documents."
              },
              "appointment_latest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The latest date the Wet Signing appointment can happen in 'YYYY-MM-DD' or 'YYYY-MM-DDT00:00:00' format."
              },
              "appointment_date": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The exact date of the closing in `YYYY-MM-DD` format."
              },
              "appointment_time": {
                "type": "string",
                "example": "9:00 am",
                "description": "The exact time for the closing. The time zone used to display the signing time will be calculated based on the data sent to Snapdocs in the following fields: \n *`appointment_location_address` \n *`appointment_location_city` \n *`appointment_location_state` \n *`appointment_location_zip`"
              },
              "appointment_location_address": {
                "type": "string",
                "example": "123 Main St",
                "description": "The street address where the signing will be held at."
              },
              "appointment_location_city": {
                "type": "string",
                "example": "Denver",
                "description": "The city where the signing will be held at."
              },
              "appointment_location_state": {
                "type": "string",
                "example": "CO",
                "description": "Two-letter state abbreviations where the signing will be held at."
              },
              "appointment_location_zip": {
                "type": "string",
                "example": "80212",
                "description": "The zip code of the address where the signing will be held at."
              },
              "funding_team_email": {
                "type": "string",
                "example": "funding-team@lender.com",
                "description": "Email address of the Funding Team who needs to be notified about the closing."
              },
              "non_borrower_title_holders": {
                "type": "integer",
                "example": "0",
                "description": "The number of non-borrower title holders involved in the loan. This field is **REQUIRED** when using any Snapdocs QC products, and should be a positive whole number."
              },
              "property_street_address": {
                "type": "string",
                "example": "9876 Brain St.",
                "description": "The address of the property being purchased."
              },
              "property_street_address_line2": {
                "type": "string",
                "example": "Unit 12",
                "description": "The apartment, suite, unit number, or other address designation that is not part of the physical address of the property being purchased."
              },
              "property_city": {
                "type": "string",
                "example": "123 Test Ln",
                "description": "The city the property is located in."
              },
              "property_state": {
                "type": "string",
                "example": "California",
                "description": "The state the property is located in."
              },
              "property_zip": {
                "type": "string",
                "example": "94107",
                "description": "The zip code of the property being purchased."
              },
              "settlement_office_email": {
                "type": "string",
                "example": "settlementoffice@example.com",
                "description": "Email address of the settlement office handling this closing."
              },
              "settlement_office_name": {
                "type": "string",
                "example": "Settlement Office",
                "description": "The name of the settlement office handling this closing."
              },
              "settlement_office_address": {
                "type": "string",
                "example": "123 Test Settlement Office",
                "description": "The address of the settlement office."
              },
              "settlement_office_city": {
                "type": "string",
                "example": "San Francisco",
                "description": "The city the settlement office is located in."
              },
              "settlement_office_state": {
                "type": "string",
                "example": "California",
                "description": "The state the settlement office is located in."
              },
              "settlement_office_zip": {
                "type": "string",
                "example": "94107",
                "description": "The zip code of the settlement office."
              },
              "loan_type": {
                "type": "string",
                "enum": [
                  "Conventional",
                  "HELOC",
                  "VA",
                  "FHA",
                  "FarmersHomeAdministration",
                  "USDA_RHS",
                  "Jumbo",
                  "Other"
                ],
                "description": "The loan type."
              },
              "loan_purpose": {
                "type": "string",
                "enum": [
                  "Purchase",
                  "NoCash-Out Refinance",
                  "Cash-Out Refinance",
                  "ConstructionOnly",
                  "ConstructionToPermanent",
                  "Reverse_mortgage",
                  "Other"
                ],
                "description": "The loan purpose."
              },
              "loan_amount": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 100500.89,
                "description": "Amount for the loan. Use value between 0 and 999999999.99 with max 2 decimals format."
              },
              "property_sale_price": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 338000.2,
                "description": "Amount for the property sale price. Use value between 0 and 999999999.99 with max 2 decimals format."
              },
              "funding_auth_required": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "Yes",
                  "No"
                ],
                "description": "If funding authorization is required."
              },
              "additional_file_contact_emails": {
                "type": "array",
                "description": "Any additional lender emails that need to be notified about the closing.",
                "items": {
                  "type": "string",
                  "example": [
                    "additional_contact@example.com",
                    "additional_contact-2@example.com"
                  ]
                }
              },
              "borrowers": {
                "type": "array",
                "description": "The Borrower's detailed info. At least one borrower is required.",
                "items": {
                  "$ref": "#/components/schemas/borrower_full_eclosing"
                }
              },
              "closing_users": {
                "type": "array",
                "description": "The closing user's info.",
                "items": {
                  "$ref": "#/components/schemas/closing_user"
                }
              },
              "settlement_agents": {
                "type": "array",
                "description": "The settlement agent's info. At least one valid settlement agent email is required.",
                "items": {
                  "$ref": "#/components/schemas/settlement_agent"
                }
              },
              "consumer_team_members": {
                "type": "array",
                "description": "The consumer team members detailed info. Only 1 buyer agent and 1 buyer attorney can be added at the moment.",
                "items": {
                  "$ref": "#/components/schemas/consumer_team_member"
                }
              },
              "external_identifiers": {
                "type": "array",
                "description": "External identifiers of the closing.",
                "items": {
                  "$ref": "#/components/schemas/external_identifier"
                }
              }
            }
          }
        ]
      },
      "full_eclosing_with_enote": {
        "description": "A closing with signing_method of full_eclosing_with_enote",
        "allOf": [
          {
            "$ref": "#/components/schemas/new_closing"
          },
          {
            "description": "A closing with signing_method of full_eclosing_with_enote",
            "type": "object",
            "required": [
              "signing_method",
              "borrowers",
              "settlement_office_email",
              "settlement_office_name",
              "settlement_agents",
              "closing_users",
              "property_street_address",
              "property_city",
              "property_state",
              "property_zip"
            ],
            "properties": {
              "file_number": {
                "type": "string",
                "example": "123",
                "description": "The file number on the loan."
              },
              "branding_key": {
                "type": "string",
                "example": "123",
                "description": "The branding key."
              },
              "channel": {
                "type": "string",
                "example": "Retail",
                "description": "The channel field on the loan"
              },
              "reference_id": {
                "type": "string",
                "example": "06f61895-e0b8-4525-b42d-d3431199c1f3",
                "description": "Unique Loan Guid"
              },
              "source": {
                "type": "string",
                "example": "Encompass",
                "description": "Name of the source which will be calling the API.",
                "deprecated": true
              },
              "signing_method": {
                "$ref": "#/components/schemas/signing_method"
              },
              "appointment_earliest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The earliest date the Wet Signing appointment can happen in 'YYYY-MM-DD' or 'YYYY-MM-DDT00:00:00' format. In case your organization would like to set eSign constraint on the closing, this date is used to determine when will the Borrower be allowed to eSign some of the closing documents."
              },
              "appointment_latest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The latest date the Wet Signing appointment can happen in 'YYYY-MM-DD' or 'YYYY-MM-DDT00:00:00' format."
              },
              "appointment_date": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The exact date of the closing in `YYYY-MM-DD` format."
              },
              "appointment_time": {
                "type": "string",
                "example": "9:00 am",
                "description": "The exact time for the closing. The time zone used to display the signing time will be calculated based on the data sent to Snapdocs in the following fields: \n *`appointment_location_address` \n *`appointment_location_city` \n *`appointment_location_state` \n *`appointment_location_zip`"
              },
              "appointment_location_address": {
                "type": "string",
                "example": "123 Main St",
                "description": "The street address where the signing will be held at."
              },
              "appointment_location_city": {
                "type": "string",
                "example": "Denver",
                "description": "The city where the signing will be held at."
              },
              "appointment_location_state": {
                "type": "string",
                "example": "CO",
                "description": "Two-letter state abbreviations where the signing will be held at."
              },
              "appointment_location_zip": {
                "type": "string",
                "example": "80212",
                "description": "The zip code of the address where the signing will be held at."
              },
              "funding_team_email": {
                "type": "string",
                "example": "funding-team@lender.com",
                "description": "Email address of the Funding Team who needs to be notified about the closing."
              },
              "non_borrower_title_holders": {
                "type": "integer",
                "example": "0",
                "description": "The number of non-borrower title holders involved in the loan. This field is **REQUIRED** when using any Snapdocs QC products, and should be a positive whole number."
              },
              "property_street_address": {
                "type": "string",
                "example": "9876 Brain St.",
                "description": "The address of the property being purchased."
              },
              "property_street_address_line2": {
                "type": "string",
                "example": "Unit 12",
                "description": "The apartment, suite, unit number, or other address designation that is not part of the physical address of the property being purchased."
              },
              "property_city": {
                "type": "string",
                "example": "123 Test Ln",
                "description": "The city the property is located in."
              },
              "property_state": {
                "type": "string",
                "example": "California",
                "description": "The state the property is located in."
              },
              "property_zip": {
                "type": "string",
                "example": "94107",
                "description": "The zip code of the property being purchased."
              },
              "settlement_office_email": {
                "type": "string",
                "example": "settlementoffice@example.com",
                "description": "Email address of the settlement office handling this closing."
              },
              "settlement_office_name": {
                "type": "string",
                "example": "Settlement Office",
                "description": "The name of the settlement office handling this closing."
              },
              "settlement_office_address": {
                "type": "string",
                "example": "123 Test Settlement Office",
                "description": "The address of the settlement office."
              },
              "settlement_office_city": {
                "type": "string",
                "example": "San Francisco",
                "description": "The city the settlement office is located in."
              },
              "settlement_office_state": {
                "type": "string",
                "example": "California",
                "description": "The state the settlement office is located in."
              },
              "settlement_office_zip": {
                "type": "string",
                "example": "94107",
                "description": "The zip code of the settlement office."
              },
              "loan_type": {
                "type": "string",
                "enum": [
                  "Conventional",
                  "HELOC",
                  "VA",
                  "FHA",
                  "FarmersHomeAdministration",
                  "USDA_RHS",
                  "Jumbo",
                  "Other"
                ],
                "description": "The loan type."
              },
              "loan_purpose": {
                "type": "string",
                "enum": [
                  "Purchase",
                  "NoCash-Out Refinance",
                  "Cash-Out Refinance",
                  "ConstructionOnly",
                  "ConstructionToPermanent",
                  "Reverse_mortgage",
                  "Other"
                ],
                "description": "The loan purpose."
              },
              "loan_amount": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 100500.89,
                "description": "Amount for the loan. Use value between 0 and 999999999.99 with max 2 decimals format."
              },
              "property_sale_price": {
                "type": [
                  "number",
                  "null"
                ],
                "example": 338000.2,
                "description": "Amount for the property sale price. Use value between 0 and 999999999.99 with max 2 decimals format."
              },
              "funding_auth_required": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "Yes",
                  "No"
                ],
                "description": "If funding authorization is required."
              },
              "additional_file_contact_emails": {
                "type": "array",
                "description": "Any additional lender emails that need to be notified about the closing.",
                "items": {
                  "type": "string",
                  "example": [
                    "additional_contact@example.com",
                    "additional_contact-2@example.com"
                  ]
                }
              },
              "borrowers": {
                "type": "array",
                "description": "The Borrower's detailed info. At least one borrower is required.",
                "items": {
                  "$ref": "#/components/schemas/borrower_full_eclosing"
                }
              },
              "closing_users": {
                "type": "array",
                "description": "The closing user's info.",
                "items": {
                  "$ref": "#/components/schemas/closing_user"
                }
              },
              "settlement_agents": {
                "type": "array",
                "description": "The settlement agent's info. At least one valid settlement agent email is required.",
                "items": {
                  "$ref": "#/components/schemas/settlement_agent"
                }
              },
              "consumer_team_members": {
                "type": "array",
                "description": "The consumer team members detailed info. Only 1 buyer agent and 1 buyer attorney can be added at the moment.",
                "items": {
                  "$ref": "#/components/schemas/consumer_team_member"
                }
              },
              "external_identifiers": {
                "type": "array",
                "description": "External identifiers of the closing.",
                "items": {
                  "$ref": "#/components/schemas/external_identifier"
                }
              },
              "enote": {
                "$ref": "#/components/schemas/enote"
              }
            }
          }
        ]
      },
      "new_document": {
        "type": "object",
        "properties": {
          "file": {
            "type": "object",
            "example": "<binary data>",
            "description": "The pdf file to be uploaded."
          }
        }
      },
      "audit_trail_response": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/audit_trail"
        }
      },
      "audit_trail": {
        "type": "object",
        "properties": {
          "created_at": {
            "type": "string",
            "description": "ISO-8601 encoded timestamp of the event.",
            "example": "2022-02-08T00:13:11-08:00"
          },
          "closing_uuid": {
            "type": "string",
            "description": "Snapdocs closing UUID.",
            "example": "dbd6497-d693-8ae6-8883-9e742b55a832"
          },
          "file_number": {
            "type": "string",
            "description": "File number identifier of the external LOS.",
            "example": "e564c0f1-7b31-453a-8236-bf552bfec3a0"
          },
          "user_name": {
            "type": "string",
            "description": "User's name generating the event.",
            "example": "John Smith"
          },
          "action": {
            "type": "string",
            "description": "An audit trail event type.",
            "example": "closing.create"
          },
          "ip": {
            "type": "string",
            "description": "IP of the user",
            "example": "127.0.0.1"
          },
          "browser": {
            "type": "string",
            "description": "Application client used by the user.",
            "example": "Safari"
          },
          "notes": {
            "type": "string",
            "description": "Additional notes recorded by the system.",
            "example": "Jane Smith was added to the Closing"
          },
          "linked": {
            "type": "array",
            "description": "List of linked closings in case of full redraw.",
            "items": {
              "type": "string",
              "description": "Linked Snapdocs closing UUID."
            }
          }
        }
      },
      "comment": {
        "properties": {
          "comment_uuid": {
            "type": "string",
            "description": "Identifier/uuid of the comment"
          },
          "text": {
            "type": "string",
            "description": "text of the comment"
          },
          "author": {
            "type": "string",
            "description": "First and last name of the author of the comment"
          }
        }
      },
      "comments_response": {
        "properties": {
          "comments": {
            "type": "array",
            "description": "All comments for the closing.",
            "items": {
              "$ref": "#/components/schemas/comment"
            }
          }
        },
        "required": [
          "user_uuid",
          "text"
        ]
      },
      "create_comment_request": {
        "properties": {
          "user_uuid": {
            "type": "string",
            "example": "b732b684-a394-d8e5-458a-ae6b7527a9d5",
            "description": "The comment owner's unique identifier."
          },
          "text": {
            "type": "string",
            "example": "This closing is going so well!",
            "description": "The comment text."
          },
          "mobile_notary_participant_visible": {
            "type": "boolean",
            "example": true,
            "description": "Specifies if mobile notary participant can see the comment"
          },
          "notary_visible": {
            "type": "boolean",
            "example": true,
            "description": "Specifies if notary can see the comment"
          },
          "participant_visible": {
            "type": "boolean",
            "example": true,
            "description": "Specifies if participant can see the comment"
          },
          "scheduler_visible": {
            "type": "boolean",
            "example": false,
            "description": "Specifies if scheduler can see the comment"
          },
          "settlement_agent_visible": {
            "type": "boolean",
            "example": true,
            "description": "Specifies if settlement agent can see the comment"
          },
          "consumer_visible": {
            "type": "boolean",
            "example": true,
            "description": "Specifies if consumer can see the comment"
          },
          "lender_visible": {
            "type": "boolean",
            "example": true,
            "description": "Specifies if lender can see the comment"
          }
        },
        "required": [
          "user_uuid",
          "text"
        ]
      },
      "notary_order": {
        "description": "The details of a notary order",
        "type": "object",
        "properties": {
          "notary": {
            "type": "object",
            "properties": {
              "full_name": {
                "type": "string",
                "example": "John Notary",
                "description": "First and last name of the notary"
              },
              "email": {
                "type": "string",
                "example": "john@notary.com",
                "description": "The email of the notary"
              },
              "phone": {
                "type": "string",
                "example": "1234561122",
                "description": "The phone number of the notary. Always empty on Snapdocs RON closings, which store no phone number for the notary."
              }
            }
          },
          "appointment": {
            "type": "object",
            "properties": {
              "street_address": {
                "type": "string",
                "example": "123 Main St",
                "description": "The street address where the signing will be held at."
              },
              "city": {
                "type": "string",
                "example": "Denver",
                "description": "The city where the signing will be held at."
              },
              "state": {
                "type": "string",
                "example": "CO",
                "description": "Two-letter state abbreviations where the signing will be held at."
              },
              "zip": {
                "type": "string",
                "example": "80212",
                "description": "The zip code of the address where the signing will be held at."
              },
              "time": {
                "type": "string",
                "example": "2022-03-08T17:00:00-08:00",
                "description": "The date and time of the signing."
              }
            }
          },
          "status": {
            "type": "string",
            "enum": [
              "open",
              "completed",
              "canceled",
              "on_hold",
              "did_not_sign"
            ],
            "description": "The completion status of the notary order. Empty on Snapdocs RON closings, which have no notary order."
          },
          "did_not_sign_reason": {
            "type": "string",
            "enum": [
              "loan_amount_incorrect",
              "names_incorrect",
              "borrower_wants_to_review_documents",
              "borrower_has_unanswered_questions",
              "borrower_was_not_present",
              "docs_had_errors",
              "signer_unsure_of_terms",
              "signer_refused_to_sign",
              "not_all_signers_were_present",
              "appointment_was_canceled_or_rescheduled",
              "signing_was_ineligible_to_be_completed",
              "issue_with_notary",
              "other"
            ],
            "description": "The reason for not signing. Empty on Snapdocs RON closings, which have no notary order."
          }
        }
      },
      "get_borrowers_response": {
        "type": "object",
        "description": "Details of documents preview and eSign of each Borrower.",
        "properties": {
          "borrowers": {
            "type": "array",
            "properties": {
              "length": {
                "type": "integer"
              }
            },
            "items": {
              "$ref": "#/components/schemas/borrower_doc_status"
            }
          }
        }
      },
      "closing_external_lookup": {
        "description": "Identifier/uuid of the closing fetched by an external identifier (e.g., loan_id, loan_guid, file_number, byte_id)",
        "type": "object",
        "properties": {
          "closing_uuid": {
            "type": "string",
            "example": "fbef1898-d32f-49ea-87be-3b2ce68870f0"
          }
        }
      },
      "get_subscriptions_response": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "description": "An array of webhook subscription details.",
            "items": {
              "$ref": "#/components/schemas/subscription"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/meta"
          }
        }
      },
      "new_subscription": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "example": "Analytics webhook",
            "description": "A short note about what events this webhook is following."
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "example": "https://hook.example.com/",
            "description": "A secure https URL where the event data will be posted."
          },
          "events": {
            "type": "array",
            "description": "List of events you want to be notified about.",
            "items": {
              "type": "string",
              "example": [
                "borrower.esigning_available"
              ],
              "enum": [
                "borrower.esigning_available",
                "borrower.esigning_complete",
                "borrower.esign_reminder",
                "borrower.opted_in",
                "borrower.opted_out",
                "borrower.enote_signing_available",
                "borrower.preview_available",
                "borrower.preview_complete",
                "borrower.redraw_esigning_available",
                "borrower.redraw_preview_available",
                "borrower.ron_kba_passed",
                "borrower.ron_kba_failed",
                "borrower.ron_idv_passed",
                "borrower.ron_idv_failed",
                "borrower.ron_signing_completed",
                "closing.appointment_details_changed",
                "closing.canceled",
                "closing.canceled_for_full_redraw",
                "closing.comment_created",
                "closing.completed",
                "closing.documents_finished_processing",
                "closing.created",
                "closing.created_from_redraw",
                "closing.redraw_documents_split",
                "closing.original_documents_split",
                "closing.signing_completed",
                "closing.type_converted",
                "closing.signed_document_available",
                "document.created",
                "closing.ron_signing_available",
                "closing.ron_signing_started",
                "closing.ron_signing_canceled",
                "closing.ron_signing_did_not_sign",
                "closing.enote_ready_for_signing",
                "closing.enote_signed",
                "notary.appointment_confirmation_status_changed",
                "notary.appointment_confirmed",
                "notary.assigned",
                "notary.attachment_delivery_status_changed",
                "notary.order_canceled",
                "notary.order_completed",
                "notary.order_created",
                "notary.order_did_not_sign",
                "quality_control.status_changed",
                "status.changed"
              ]
            }
          },
          "auth_type": {
            "type": "string",
            "enum": [
              "oauth2",
              "basic"
            ],
            "description": "Optional authentication method for outgoing webhook requests. When specified, Snapdocs will authenticate to your webhook endpoint using the configured method (OAuth2 or Basic Auth). When omitted, no Authorization header is sent (you can still verify requests using the HMAC signature which is always provided)."
          },
          "auth_config": {
            "type": "object",
            "description": "Authentication configuration based on auth_type. Required when auth_type is specified.",
            "oneOf": [
              {
                "type": "object",
                "description": "OAuth2 configuration",
                "properties": {
                  "token_url": {
                    "type": "string",
                    "format": "uri",
                    "description": "The OAuth2 token endpoint URL"
                  },
                  "client_id": {
                    "type": "string",
                    "description": "OAuth2 client ID"
                  },
                  "client_secret": {
                    "type": "string",
                    "description": "OAuth2 client secret"
                  },
                  "scope": {
                    "type": "string",
                    "description": "OAuth2 scope(s)"
                  },
                  "client_auth_method": {
                    "type": "string",
                    "enum": [
                      "body",
                      "header"
                    ],
                    "description": "Method for sending client credentials (body or header)"
                  },
                  "grant_type": {
                    "type": "string",
                    "enum": [
                      "client_credentials"
                    ],
                    "description": "OAuth2 grant type"
                  },
                  "audience": {
                    "type": "string",
                    "description": "Optional OAuth2 audience parameter. Used by some OAuth2 providers (e.g., Auth0) to identify the intended recipient of the token."
                  },
                  "resource": {
                    "type": "string",
                    "description": "Optional OAuth2 resource parameter. Used by some OAuth2 providers (e.g., Azure AD) to specify the target resource."
                  }
                },
                "required": [
                  "token_url",
                  "client_id",
                  "client_secret",
                  "grant_type"
                ]
              },
              {
                "type": "object",
                "description": "Basic Authentication configuration",
                "properties": {
                  "username": {
                    "type": "string",
                    "description": "Basic auth username"
                  },
                  "password": {
                    "type": "string",
                    "description": "Basic auth password"
                  }
                },
                "required": [
                  "username",
                  "password"
                ]
              }
            ]
          }
        },
        "required": [
          "webhook_url"
        ]
      },
      "new_subscription_event": {
        "type": "object",
        "properties": {
          "events": {
            "type": "array",
            "description": "List of events you want to be notified about.",
            "items": {
              "type": "string",
              "example": [
                "borrower.esigning_available"
              ],
              "enum": [
                "borrower.esigning_available",
                "borrower.esigning_complete",
                "borrower.esign_reminder",
                "borrower.opted_in",
                "borrower.opted_out",
                "borrower.enote_signing_available",
                "borrower.preview_available",
                "borrower.preview_complete",
                "borrower.redraw_esigning_available",
                "borrower.redraw_preview_available",
                "borrower.ron_kba_passed",
                "borrower.ron_kba_failed",
                "borrower.ron_idv_passed",
                "borrower.ron_idv_failed",
                "borrower.ron_signing_completed",
                "closing.appointment_details_changed",
                "closing.canceled",
                "closing.canceled_for_full_redraw",
                "closing.comment_created",
                "closing.completed",
                "closing.documents_finished_processing",
                "closing.created",
                "closing.created_from_redraw",
                "closing.redraw_documents_split",
                "closing.original_documents_split",
                "closing.signing_completed",
                "closing.type_converted",
                "closing.signed_document_available",
                "document.created",
                "closing.ron_signing_available",
                "closing.ron_signing_started",
                "closing.ron_signing_canceled",
                "closing.ron_signing_did_not_sign",
                "closing.enote_ready_for_signing",
                "closing.enote_signed",
                "notary.appointment_confirmation_status_changed",
                "notary.appointment_confirmed",
                "notary.assigned",
                "notary.attachment_delivery_status_changed",
                "notary.order_canceled",
                "notary.order_completed",
                "notary.order_created",
                "notary.order_did_not_sign",
                "quality_control.status_changed",
                "status.changed"
              ]
            }
          }
        },
        "required": [
          "events"
        ]
      },
      "subscription": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "example": "9dc4ba8e-7e95-4b8e-ad1e-e2ce51ec3618",
            "description": "A unique identifier for the webhook subscription."
          },
          "description": {
            "type": "string",
            "example": "Analytics webhook",
            "description": "A short note about what events this webhook is following."
          },
          "webhook_url": {
            "type": "string",
            "format": "uri",
            "example": "https://hook.example.com/",
            "description": "A secure https URL where the event data will be posted."
          },
          "hmac_key": {
            "type": "string",
            "example": "76637c4b-1879-42e1-8140-c555ccba2ab0",
            "description": "A hash-based message authentication code used for verifying both the data integrity and the authenticity of a webhook message via SHA256."
          },
          "events": {
            "type": "array",
            "description": "List of events you want to be notified about.",
            "items": {
              "type": "string",
              "example": [
                "borrower.esigning_available"
              ],
              "enum": [
                "borrower.esigning_available",
                "borrower.esigning_complete",
                "borrower.esign_reminder",
                "borrower.opted_in",
                "borrower.opted_out",
                "borrower.enote_signing_available",
                "borrower.preview_available",
                "borrower.preview_complete",
                "borrower.redraw_esigning_available",
                "borrower.redraw_preview_available",
                "borrower.ron_kba_passed",
                "borrower.ron_kba_failed",
                "borrower.ron_idv_passed",
                "borrower.ron_idv_failed",
                "borrower.ron_signing_completed",
                "closing.appointment_details_changed",
                "closing.canceled",
                "closing.canceled_for_full_redraw",
                "closing.comment_created",
                "closing.completed",
                "closing.documents_finished_processing",
                "closing.created",
                "closing.created_from_redraw",
                "closing.redraw_documents_split",
                "closing.original_documents_split",
                "closing.signing_completed",
                "closing.type_converted",
                "closing.signed_document_available",
                "document.created",
                "closing.ron_signing_available",
                "closing.ron_signing_started",
                "closing.ron_signing_canceled",
                "closing.ron_signing_did_not_sign",
                "closing.enote_ready_for_signing",
                "closing.enote_signed",
                "notary.appointment_confirmation_status_changed",
                "notary.appointment_confirmed",
                "notary.assigned",
                "notary.attachment_delivery_status_changed",
                "notary.order_canceled",
                "notary.order_completed",
                "notary.order_created",
                "notary.order_did_not_sign",
                "quality_control.status_changed",
                "status.changed"
              ]
            }
          },
          "auth_type": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "oauth2",
              "basic"
            ],
            "description": "Authentication method used when Snapdocs calls your webhook endpoint. If null, no Authorization header is sent. HMAC signature headers are always included for request verification regardless of auth_type."
          },
          "auth_config": {
            "description": "Sanitized authentication configuration (sensitive fields like passwords and secrets are excluded).",
            "oneOf": [
              {
                "type": "object",
                "description": "OAuth2 configuration (without client_secret)",
                "properties": {
                  "token_url": {
                    "type": "string",
                    "format": "uri",
                    "description": "The OAuth2 token endpoint URL"
                  },
                  "client_id": {
                    "type": "string",
                    "description": "OAuth2 client ID"
                  },
                  "scope": {
                    "type": "string",
                    "description": "OAuth2 scope(s)"
                  },
                  "client_auth_method": {
                    "type": "string",
                    "enum": [
                      "body",
                      "header"
                    ],
                    "description": "Method for sending client credentials"
                  },
                  "grant_type": {
                    "type": "string",
                    "enum": [
                      "client_credentials"
                    ],
                    "description": "OAuth2 grant type"
                  },
                  "audience": {
                    "type": "string",
                    "description": "Optional OAuth2 audience parameter"
                  },
                  "resource": {
                    "type": "string",
                    "description": "Optional OAuth2 resource parameter"
                  }
                }
              },
              {
                "type": "object",
                "description": "Basic Authentication configuration (without password)",
                "properties": {
                  "username": {
                    "type": "string",
                    "description": "Basic auth username"
                  }
                }
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "closing_user_detailed": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "id",
            "description": "The user unique identifier issued by Snapdocs."
          },
          "first_name": {
            "type": "string",
            "example": "John",
            "description": "The closing user's first name."
          },
          "middle_name": {
            "type": "string",
            "example": "Dave",
            "description": "The closing user's middle name."
          },
          "last_name": {
            "type": "string",
            "example": "Doe",
            "description": "The closing user's last name."
          },
          "suffix": {
            "type": "string",
            "example": "Jr",
            "description": "The suffix of the closing user's name."
          },
          "email": {
            "type": "string",
            "example": "test@test.com",
            "description": "The closing user's email address."
          },
          "phone": {
            "type": "string",
            "example": "127-234-2234",
            "description": "The closing user's phone number."
          },
          "role": {
            "type": "string",
            "enum": [
              "participant",
              "primary_signer",
              "co_signer",
              "settlement_agent",
              "company_team_member"
            ],
            "description": "The closing user's role"
          },
          "company_team_member_sub_roles": {
            "type": [
              "array",
              "null"
            ],
            "description": "⚠️ IMPORTANT: Map the LOS role to this field for Snapdocs emails and UI to work correctly for lender team members. The closing user's company member sub role on the closing",
            "items": {
              "type": "string",
              "enum": [
                "closer",
                "funder",
                "loan_officer",
                "loan_coordinator"
              ]
            }
          },
          "signature_name": {
            "type": "string",
            "example": "John Doe",
            "description": "Borrower's signature name."
          },
          "borrower_sub_type": {
            "type": "string",
            "enum": [
              "nbo"
            ],
            "description": "Borrower sub type."
          }
        }
      },
      "closing_users_response": {
        "type": "object",
        "description": "Closing users with their information.",
        "properties": {
          "closing_users": {
            "type": "array",
            "properties": {
              "length": {
                "type": "integer"
              }
            },
            "items": {
              "$ref": "#/components/schemas/closing_user_detailed"
            }
          }
        }
      },
      "add_user_to_closing_base": {
        "type": "object",
        "discriminator": {
          "propertyName": "role",
          "mapping": {
            "settlement_agent": "#/components/schemas/add_user_to_closing_request__settlement_agent",
            "company_team_member": "#/components/schemas/add_user_to_closing_request__company_team_member",
            "buyer_attorney": "#/components/schemas/add_user_to_closing_request__buyer_attorney",
            "buyer_agent": "#/components/schemas/add_user_to_closing_request__buyer_agent"
          }
        },
        "properties": {
          "email": {
            "type": "string",
            "example": "test@test.com",
            "description": "The email address of the user to be added to the closing."
          },
          "role": {
            "type": "string",
            "enum": [
              "settlement_agent",
              "company_team_member",
              "buyer_attorney",
              "buyer_agent"
            ],
            "description": "The role of the user to be added to the closing."
          },
          "first_name": {
            "type": "string",
            "example": "John",
            "description": "The user's first name."
          },
          "last_name": {
            "type": "string",
            "example": "Doe",
            "description": "The user's last name."
          },
          "phone": {
            "type": "string",
            "example": "127-234-2234",
            "description": "The user's phone number."
          }
        },
        "required": [
          "first_name",
          "last_name",
          "email",
          "role"
        ]
      },
      "add_user_to_closing_request__settlement_agent": {
        "description": "A settlement agent",
        "allOf": [
          {
            "$ref": "#/components/schemas/add_user_to_closing_base"
          },
          {
            "required": [
              "inviting_settlement_agent"
            ],
            "type": "object",
            "properties": {
              "inviting_settlement_agent": {
                "type": "boolean",
                "example": false,
                "description": "Specifies if the settlement agent is invited to the closing from outside the settlement office."
              }
            }
          }
        ]
      },
      "add_user_to_closing_request__company_team_member": {
        "description": "A company team member",
        "allOf": [
          {
            "$ref": "#/components/schemas/add_user_to_closing_base"
          },
          {
            "required": [
              "company_team_member_sub_roles"
            ],
            "type": "object",
            "properties": {
              "company_team_member_sub_roles": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "closer",
                    "funder",
                    "loan_officer",
                    "loan_coordinator",
                    "broker",
                    "quality_controller"
                  ]
                },
                "description": "⚠️ IMPORTANT: Map the LOS role to this field for Snapdocs emails and UI to work correctly for lender team members. The user's company member sub role on the closing."
              }
            }
          }
        ]
      },
      "add_user_to_closing_request__buyer_attorney": {
        "description": "A buyer attorney",
        "allOf": [
          {
            "$ref": "#/components/schemas/add_user_to_closing_base"
          },
          {
            "required": [
              "email",
              "role",
              "phone",
              "first_name",
              "last_name"
            ],
            "properties": {}
          }
        ]
      },
      "add_user_to_closing_request__buyer_agent": {
        "description": "A buyer agent",
        "allOf": [
          {
            "$ref": "#/components/schemas/add_user_to_closing_base"
          },
          {
            "required": [
              "email",
              "role",
              "first_name",
              "last_name"
            ],
            "type": "object",
            "properties": {}
          }
        ]
      },
      "add_user_to_closing_response": {
        "type": "object",
        "properties": {
          "closing_user_id": {
            "type": "string",
            "description": "uuid of the created closing user"
          }
        }
      },
      "settlement_agents_detailed": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "example": "test@test.com",
            "description": "The settlement_agents's email address."
          },
          "first_name": {
            "type": "string",
            "example": "John",
            "description": "The settlement_agents's first name."
          },
          "last_name": {
            "type": "string",
            "example": "Doe",
            "description": "The settlement_agents's last name."
          }
        }
      },
      "get_settlement_agents_response": {
        "type": "object",
        "description": "Settlement agents that can be assigned to the closing",
        "properties": {
          "settlement_agents": {
            "type": "array",
            "properties": {
              "length": {
                "type": "integer"
              }
            },
            "items": {
              "$ref": "#/components/schemas/settlement_agents_detailed"
            }
          }
        }
      },
      "update_signing_method_request": {
        "properties": {
          "email": {
            "type": "string",
            "example": "test@test.com",
            "description": "The email address of the user that is performing the signing method conversion. Must be the email of a settlement agent or a company team member."
          },
          "new_signing_method": {
            "type": "string",
            "enum": [
              "wet_only",
              "hybrid",
              "hybrid_with_enote",
              "full_eclosing",
              "full_eclosing_with_enote"
            ],
            "description": "The signing method to convert the closing to."
          }
        },
        "required": [
          "email",
          "new_signing_method"
        ]
      },
      "closing_details": {
        "type": "object",
        "description": "Closing details.",
        "properties": {
          "file_number": {
            "type": "string",
            "example": "123",
            "description": "The file number on the loan."
          },
          "signing_method": {
            "$ref": "#/components/schemas/signing_method"
          },
          "non_borrower_title_holders": {
            "type": "integer",
            "example": "0",
            "description": "The number of non-borrower title holders involved in the loan. This field is **REQUIRED** when using any Snapdocs QC products, and should be a positive whole number."
          },
          "settlement_office": {
            "type": "object",
            "description": "Settlement office on the closing.",
            "properties": {
              "email": {
                "type": "string",
                "example": "settlementoffice@example.com",
                "description": "Email address of the settlement office handling this closing."
              },
              "name": {
                "type": "string",
                "example": "Settlement Office",
                "description": "The name of the settlement office handling this closing."
              },
              "address": {
                "type": "string",
                "example": "123 Test Settlement Office",
                "description": "The address of the settlement office."
              },
              "city": {
                "type": "string",
                "example": "San Francisco",
                "description": "The city the settlement office is located in."
              },
              "state": {
                "type": "string",
                "example": "California",
                "description": "The state the settlement office is located in."
              },
              "zip": {
                "type": "string",
                "example": "94107",
                "description": "The zip code of the settlement office."
              }
            }
          },
          "in_office_signing": {
            "type": "object",
            "description": "In office signing appointment.",
            "properties": {
              "appointment_earliest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The earliest date the Wet Signing appointment can happen in 'YYYY-MM-DD' or 'YYYY-MM-DDT00:00:00' format."
              },
              "appointment_latest_at": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The latest date the Wet Signing appointment can happen in 'YYYY-MM-DD' or 'YYYY-MM-DDT00:00:00' format."
              },
              "appointment_date": {
                "type": "string",
                "format": "date",
                "example": "2020-12-04",
                "description": "The exact date of the closing in `YYYY-MM-DD` format."
              },
              "appointment_time": {
                "type": "string",
                "example": "9:00 am",
                "description": "The exact time for the closing. The time zone used to display the signing time is be calculated based on the fields: \n `appointment_location_address` \n `appointment_location_city` \n `appointment_location_state` \n `appointment_location_zip`"
              },
              "appointment_location_address": {
                "type": "string",
                "example": "123 Main St",
                "description": "The street address where the signing will be held at."
              },
              "appointment_location_city": {
                "type": "string",
                "example": "Denver",
                "description": "The city where the signing will be held at."
              },
              "appointment_location_state": {
                "type": "string",
                "example": "CO",
                "description": "Two-letter state abbreviations where the signing will be held at."
              },
              "appointment_location_zip": {
                "type": "string",
                "example": "80212",
                "description": "The zip code of the address where the signing will be held at."
              },
              "appointment_timezone": {
                "type": "string",
                "example": "Mountain Time (US & Canada)",
                "description": "The timezone of the appointment location (valid time zones are Pacific Time (US & Canada), Mountain Time (US & Canada), Arizona, Central Time (US & Canada), Eastern Time (US & Canada), Indiana (East), Alaska, Hawaii",
                "deprecated": true
              },
              "appointment_timestamp": {
                "type": "string",
                "example": "2020-12-04 18:36:22 +0000",
                "description": "The combined appointment date and time in UTC."
              },
              "appointment_completed_at": {
                "type": "string",
                "example": "2020-12-04 18:36:22 +0000",
                "description": "The timestamp in UTC for when the appointment was completed."
              },
              "appointment_timezone_iana": {
                "type": "string",
                "example": "America/Denver",
                "description": "The timezone of the appointment location as specified by the IANA database (https://www.iana.org/time-zones)"
              }
            }
          },
          "property": {
            "type": "object",
            "description": "The property being purchased.",
            "properties": {
              "street_address": {
                "type": "string",
                "example": "California",
                "description": "The address of the property being purchased."
              },
              "street_address_line2": {
                "type": "string",
                "example": "Unit 12",
                "description": "The apartment, suite, unit number, or other address designation that is not part of the physical address of the property being purchased."
              },
              "city": {
                "type": "string",
                "example": "123 Test Ln",
                "description": "The city the property is located in."
              },
              "state": {
                "type": "string",
                "example": "California",
                "description": "The state the property is located in."
              },
              "zip": {
                "type": "string",
                "example": "94107",
                "description": "The zip code of the property being purchased."
              }
            }
          },
          "loan": {
            "type": "object",
            "description": "The loan.",
            "properties": {
              "loan_type": {
                "type": "string",
                "enum": [
                  "Conventional",
                  "HELOC",
                  "VA",
                  "FHA",
                  "FarmersHomeAdministration",
                  "USDA_RHS",
                  "Jumbo",
                  "Other"
                ],
                "description": "The loan type."
              },
              "loan_purpose": {
                "type": "string",
                "enum": [
                  "Purchase",
                  "NoCash-Out Refinance",
                  "Cash-Out Refinance",
                  "ConstructionOnly",
                  "ConstructionToPermanent",
                  "Reverse_mortgage",
                  "Other"
                ],
                "description": "The loan purpose."
              },
              "loan_amount": {
                "type": "number",
                "example": 0,
                "description": "Amount for the loan."
              },
              "property_sale_price": {
                "type": "number",
                "example": 0,
                "description": "Amount for the property sale price."
              }
            }
          },
          "borrowers": {
            "type": "array",
            "description": "Detailed information about the borrowers on the closing.",
            "items": {
              "type": "object",
              "properties": {
                "first_name": {
                  "type": "string",
                  "example": "Primary",
                  "description": "The borrower's first name."
                },
                "middle_name": {
                  "type": "string",
                  "example": "Middle",
                  "description": "The borrower's middle name."
                },
                "last_name": {
                  "type": "string",
                  "example": "Signer",
                  "description": "The borrower's last name."
                },
                "suffix": {
                  "type": "string",
                  "example": "Jr",
                  "description": "The suffix of the borrower's name."
                },
                "email": {
                  "type": "string",
                  "format": "email",
                  "example": "primary.signer@snapdocs.com",
                  "description": "The borrower's email address."
                },
                "phone": {
                  "type": "string",
                  "example": "2343234333",
                  "description": "The borrower's phone number."
                },
                "role": {
                  "type": "string",
                  "enum": [
                    "primary_signer",
                    "co_signer"
                  ],
                  "description": "The borrower's role."
                },
                "signature_name": {
                  "type": "string",
                  "example": "Signature",
                  "description": "Borrower's signature name."
                }
              }
            }
          },
          "settlement_agents": {
            "type": "array",
            "description": "Detailed information about the settlement agents on the closing.",
            "items": {
              "type": "object",
              "properties": {
                "first_name": {
                  "type": "string",
                  "example": "First",
                  "description": "The settlement agent's first name."
                },
                "middle_name": {
                  "type": "string",
                  "example": "Middle",
                  "description": "The settlement agent's middle name."
                },
                "last_name": {
                  "type": "string",
                  "example": "Last",
                  "description": "The settlement agent's last name."
                },
                "suffix": {
                  "type": "string",
                  "example": "Jr",
                  "description": "The suffix of the settlement agent's name."
                },
                "email": {
                  "type": "string",
                  "format": "email",
                  "example": "settlement_agent_name@snapdocs.com",
                  "description": "The settlement agent's email address."
                },
                "phone": {
                  "type": "string",
                  "example": "2343234333",
                  "description": "The settlement agent's phone number."
                },
                "role": {
                  "type": "string",
                  "example": "settlement_agent",
                  "description": "The settlement agent's role."
                }
              }
            }
          },
          "closing_users": {
            "type": "array",
            "description": "Detailed information about the company team members on the closing.",
            "items": {
              "type": "object",
              "properties": {
                "first_name": {
                  "type": "string",
                  "example": "First",
                  "description": "The company team member's first name."
                },
                "middle_name": {
                  "type": "string",
                  "example": "Middle",
                  "description": "The company team member's middle name."
                },
                "last_name": {
                  "type": "string",
                  "example": "Last",
                  "description": "The company team member's last name."
                },
                "suffix": {
                  "type": "string",
                  "example": "Jr",
                  "description": "The suffix of the company team member's name."
                },
                "email": {
                  "type": "string",
                  "format": "email",
                  "example": "company_team_member_name@snapdocs.com",
                  "description": "The company team member's email address."
                },
                "phone": {
                  "type": "string",
                  "example": "2343234333",
                  "description": "The company team member's phone number."
                },
                "role": {
                  "type": "string",
                  "example": "company_team_member",
                  "description": "The company team member's role."
                },
                "company_team_member_sub_roles": {
                  "type": "array",
                  "description": "The company team member's sub role on the closing",
                  "items": {
                    "type": "string",
                    "enum": [
                      "closer",
                      "funder",
                      "loan_officer",
                      "loan_coordinator"
                    ]
                  }
                }
              }
            }
          },
          "external_identifiers": {
            "type": "array",
            "description": "External identifiers of the closing.",
            "items": {
              "$ref": "#/components/schemas/external_identifier"
            }
          }
        }
      }
    }
  },
  "paths": {
    "/api/v1/subscriptions/{id}/events": {
      "post": {
        "summary": "Add events to a subscription",
        "tags": [
          "Subscriptions"
        ],
        "description": "Use this endpoint to update events on a webhook subscription.",
        "operationId": "AddSubscriptionEvents",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "70c35b16-08c8-4e0a-beee-32a02812aa07",
              "description": "The unique identifier for this subscription."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/subscription"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. The Authorization header was missing or invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "properties": {
                        "length": {
                          "type": "integer"
                        }
                      },
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "401"
                          },
                          "title": {
                            "type": "string",
                            "example": "Unauthorized"
                          },
                          "detail": {
                            "type": "string",
                            "example": "Authorization is invalid"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "subscription not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "404"
                          },
                          "title": {
                            "type": "string",
                            "example": "Not found"
                          },
                          "detail": {
                            "type": "string",
                            "example": "Unable to find subscription."
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribute(s)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "properties": {
                        "length": {
                          "type": "integer"
                        }
                      },
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "422"
                          },
                          "pointer": {
                            "type": "string",
                            "example": "/events"
                          },
                          "title": {
                            "type": "string",
                            "example": "Invalid Attribute"
                          },
                          "detail": {
                            "type": "string",
                            "example": "must be an array"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/new_subscription_event"
              }
            }
          }
        }
      },
      "delete": {
        "summary": "Delete events from a subscription",
        "tags": [
          "Subscriptions"
        ],
        "description": "Use this endpoint to remove a events from a subscription. If the call is successful, return a 200 successful status code.",
        "operationId": "DeleteSubscriptionEvents",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "70c35b16-08c8-4e0a-beee-32a02812aa07",
              "description": "The unique identifier for this subscription."
            }
          },
          {
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string",
              "example": "closing.completed,closing.canceled",
              "description": "Name of events to be deleted."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful"
          },
          "401": {
            "description": "Unauthorized. The Authorization header was missing or invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "properties": {
                        "length": {
                          "type": "integer"
                        }
                      },
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "401"
                          },
                          "title": {
                            "type": "string",
                            "example": "Unauthorized"
                          },
                          "detail": {
                            "type": "string",
                            "example": "Authorization is invalid"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "subscription not found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "404"
                          },
                          "title": {
                            "type": "string",
                            "example": "Not found"
                          },
                          "detail": {
                            "type": "string",
                            "example": "Unable to find subscription."
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "invalid events",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "422"
                          },
                          "title": {
                            "type": "string",
                            "example": "Invalid events"
                          },
                          "detail": {
                            "type": "string",
                            "example": "Invalid events."
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {}
            }
          }
        }
      }
    },
    "/api/v1/subscriptions": {
      "get": {
        "summary": "Get all the subscriptions",
        "tags": [
          "Subscriptions"
        ],
        "description": "Use this endpoint to retrieve all the subscriptions your company is subscribing to.",
        "operationId": "GetSubscriptions",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/get_subscriptions_response"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. The Authorization header was missing or invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "properties": {
                        "length": {
                          "type": "integer"
                        }
                      },
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "401"
                          },
                          "title": {
                            "type": "string",
                            "example": "Unauthorized"
                          },
                          "detail": {
                            "type": "string",
                            "example": "Authorization is invalid"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "summary": "Create a subscription",
        "tags": [
          "Subscriptions"
        ],
        "description": "Use this endpoint to set up a webhook subscription.",
        "operationId": "CreateSubscription",
        "parameters": [],
        "responses": {
          "201": {
            "description": "successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/subscription"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. The Authorization header was missing or invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "properties": {
                        "length": {
                          "type": "integer"
                        }
                      },
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "401"
                          },
                          "title": {
                            "type": "string",
                            "example": "Unauthorized"
                          },
                          "detail": {
                            "type": "string",
                            "example": "Authorization is invalid"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "422": {
            "description": "Invalid attribute(s)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "properties": {
                        "length": {
                          "type": "integer"
                        }
                      },
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "422"
                          },
                          "pointer": {
                            "type": "string",
                            "example": "/webhook_url"
                          },
                          "title": {
                            "type": "string",
                            "example": "Missing Attribute"
                          },
                          "detail": {
                            "type": "string",
                            "example": "Webhook URL can't be blank"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/new_subscription"
              }
            }
          }
        }
      }
    },
    "/api/v1/subscriptions/{id}": {
      "delete": {
        "summary": "Delete a subscription",
        "tags": [
          "Subscriptions"
        ],
        "description": "Use this endpoint to remove a subscription. If the call is successful, return a 200 successful status code.",
        "operationId": "DeleteSubscription",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "example": "70c35b16-08c8-4e0a-beee-32a02812aa07",
              "description": "The unique identifier for this subscription."
            }
          }
        ],
        "responses": {
          "200": {
            "description": "successful"
          },
          "401": {
            "description": "Unauthorized. The Authorization header was missing or invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "properties": {
                        "length": {
                          "type": "integer"
                        }
                      },
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "401"
                          },
                          "title": {
                            "type": "string",
                            "example": "Unauthorized"
                          },
                          "detail": {
                            "type": "string",
                            "example": "Authorization is invalid"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "not found"
          },
          "422": {
            "description": "Invalid Attribute",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "array",
                      "properties": {
                        "length": {
                          "type": "integer"
                        }
                      },
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "422"
                          },
                          "pointer": {
                            "type": "string",
                            "example": "/id"
                          },
                          "title": {
                            "type": "string",
                            "example": "Invalid Attribute"
                          },
                          "detail": {
                            "type": "string",
                            "example": "id is invalid"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {}
            }
          }
        }
      }
    },
    "/api/v1/subscriptions/available_events": {
      "get": {
        "summary": "List available subscription events",
        "tags": [
          "Subscriptions"
        ],
        "description": "Returns the list of events available for subscription based on the scopes in the JWT token.",
        "operationId": "GetAvailableSubscriptionEvents",
        "security": [
          {
            "BearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "successful"
          },
          "401": {
            "description": "Unauthorized. The Authorization header was missing or invalid."
          },
          "403": {
            "description": "Forbidden. The token does not have the required scope."
          }
        }
      }
    }
  }
}