openapi: 3.1.0
info:
  version: 1.0.0
  title: nCino eVault
  description: All routes are currently in development and should be treated as such.
servers:
  - url: 'https://evault.ncino.com/api'
    description: Production server
security:
  - bearerAuth: []
paths:
  /oauth/auth_token:
    servers:
      - url: 'https://evault.ncino.com'
        description: 'Token endpoint host (served at the domain root, not under /api)'
    post:
      summary: Generate or refresh an auth token
      description: 'Exchanges API client credentials for a JWT access token. Authenticate with HTTP Basic using your client_id (username) and client_secret (password). Use grant_type `authorization_code` with the `code` issued for your <Glossary>OrgApiClient</Glossary> to obtain the first token, or grant_type `refresh_token` with a previously issued <Glossary>refresh token</Glossary> to renew one. The returned `access_token` is used as the Bearer token on all other endpoints.'
      tags:
        - Authentication
      security:
        - basicAuth: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/auth_token_post'
            examples:
              authorization_code:
                summary: First token (authorization_code grant)
                value:
                  grant_type: authorization_code
                  code: 459f521f-f2fa-4230-a704-46147ac8as7e
              refresh_token:
                summary: Renew a token (refresh_token grant)
                value:
                  grant_type: refresh_token
                  refresh_token: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTYifQ.abc123
      responses:
        '200':
          description: Access token issued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/auth_token_response'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
  /connectivity-check:
    get:
      summary: Verifies API connectivity
      description: Lightweight connection/health check. Requires a valid <Glossary>bearer token</Glossary> but no specific permission — a 200 response confirms the caller's credentials are valid and can reach the eVault API. No environment segment or identifiers are needed.
      tags:
        - Connectivity
      responses:
        '200':
          description: The connection is healthy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connectivity_check_response'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
  '/{environment}/enotes':
    x-acl: enotes
    post:
      summary: Create an eNote
      description: 'Creates a new <Glossary>eNote</Glossary> in eVault from the supplied borrower, property, and loan details along with the eNote document data (the eNote file and its PDF rendering).'
      tags:
        - Enotes
      parameters:
        - name: environment
          description: 'The environment where the eNote, transaction, or audit log will be located.'
          required: true
          in: path
          schema:
            $ref: '#/components/schemas/environment'
      requestBody:
        description: 'In order to create an eNote, all of the following must be included in the request body'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/enotes_post'
      responses:
        '200':
          description: Created eNote
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/default_success_response'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            $ref: '#/components/schemas/guid'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks/put/responses/500'
  '/{environment}/enotes/{enote_id}':
    x-acl: enotes
    get:
      summary: Get an eNote
      description: 'Retrieves the full details and current status of an <Glossary>eNote</Glossary> by its guid, including its registration status, named parties, and <Glossary>audit log</Glossary> entries.'
      operationId: getEnote
      tags:
        - Enotes
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - name: enote_id
          description: The unique identifier for an eNote
          required: true
          in: path
          schema:
            $ref: '#/components/schemas/guid'
      responses:
        '200':
          description: eNote
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/default_success_response'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/enote_response'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  '/{environment}/enotes/{enote_id}/smartdoc':
    x-acl: enotes
    get:
      summary: Get an eNote smartdoc
      description: Retrieves the <Glossary>smartdoc</Glossary> (SMART Doc®) representation of an <Glossary>eNote</Glossary> by its guid.
      operationId: getEnoteSmartdoc
      tags:
        - Enotes
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes~1%7Benote_id%7D/get/parameters/1'
      responses:
        '200':
          description: eNote
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/default_success_response'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/base64'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  '/{environment}/enotes/{enote_id}/pdf':
    x-acl: enotes
    get:
      summary: Get an eNote pdf
      description: Retrieves the PDF rendering of an <Glossary>eNote</Glossary> by its guid.
      operationId: getEnotePdf
      tags:
        - Enotes
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes~1%7Benote_id%7D/get/parameters/1'
      responses:
        '200':
          description: eNote
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/default_success_response'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/base64'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  '/{environment}/enotes/{enote_id}/audit-log':
    x-acl: enotes
    get:
      summary: Get an eNote audit log
      description: 'Retrieves the <Glossary>audit log</Glossary> for an <Glossary>eNote</Glossary> — the time-ordered record of events (registration, transfers, status changes, and so on) recorded against its <Glossary>electronic record</Glossary>.'
      operationId: getEnoteAuditLog
      tags:
        - Enotes
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes~1%7Benote_id%7D/get/parameters/1'
      responses:
        '200':
          description: eNote
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/default_success_response'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          auditLog:
                            $ref: '#/components/schemas/base64'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  '/{environment}/enotes/{enote_id}/documents/upload':
    x-acl: enotes
    post:
      summary: Upload a document to an eNote
      description: Uploads one or more supporting documents (such as an appraisal or title policy) and attaches them to an <Glossary>eNote</Glossary>.
      tags:
        - Enotes
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes~1%7Benote_id%7D/get/parameters/1'
      requestBody:
        description: 'In order to upload documents to an eNote, all of the following must be included in the request body'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/enotes-enote_guid-documents-upload_post'
      responses:
        '200':
          description: Document uploaded
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/default_success_response'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          documents:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  $ref: '#/components/schemas/guid'
                                name:
                                  $ref: '#/components/schemas/document_name'
                                documentType:
                                  $ref: '#/components/schemas/document_type'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks/put/responses/500'
  '/{environment}/audit-logs/{audit_log_id}':
    x-acl: auditLogs
    get:
      summary: Get an audit log
      description: Retrieves a single <Glossary>audit log</Glossary> entry by its guid.
      operationId: getAuditLog
      tags:
        - Audit Logs
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - name: audit_log_id
          description: The unique identifier for an audit log
          required: true
          in: path
          schema:
            $ref: '#/components/schemas/guid'
      responses:
        '200':
          description: eNote
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/default_success_response'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            $ref: '#/components/schemas/guid'
                          eventType:
                            $ref: '#/components/schemas/event_type'
                          incoming:
                            $ref: '#/components/schemas/incoming'
                          status:
                            $ref: '#/components/schemas/status'
                          min:
                            $ref: '#/components/schemas/min'
                          enoteId:
                            $ref: '#/components/schemas/guid'
                          documentId:
                            $ref: '#/components/schemas/guid'
                          transactionId:
                            $ref: '#/components/schemas/guid'
                          ipAddress:
                            $ref: '#/components/schemas/ip_address'
                          userAgent:
                            $ref: '#/components/schemas/user_agent'
                          additionalInfo:
                            $ref: '#/components/schemas/additional_info'
                          initiatorMersOrgId:
                            $ref: '#/components/schemas/mers_org_id'
                          requestTimestamp:
                            $ref: '#/components/schemas/general_iso8601'
                          createdAt:
                            $ref: '#/components/schemas/general_iso8601'
                          updatedAt:
                            $ref: '#/components/schemas/general_iso8601'
                          user:
                            $ref: '#/components/schemas/user'
                          isSystem:
                            $ref: '#/components/schemas/is_system'
                          isTest:
                            $ref: '#/components/schemas/is_test'
                          request:
                            $ref: '#/components/schemas/base64'
                          response:
                            $ref: '#/components/schemas/base64'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  '/{environment}/transactions/{transaction_id}':
    x-acl: transactions
    get:
      summary: Get a transaction
      description: 'Retrieves a previously submitted transaction by its transaction guid, including its current status and details.'
      operationId: getTransaction
      tags:
        - Transactions
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - name: transaction_id
          description: The unique identifier for a transaction
          required: true
          in: path
          schema:
            $ref: '#/components/schemas/guid'
      responses:
        '200':
          description: Transaction
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/default_success_response'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            $ref: '#/components/schemas/guid'
                          requestId:
                            $ref: '#/components/schemas/request_id'
                          enoteId:
                            $ref: '#/components/schemas/guid'
                          min:
                            $ref: '#/components/schemas/min'
                          transactionType:
                            $ref: '#/components/schemas/transaction_type'
                          detailedType:
                            $ref: '#/components/schemas/detailed_transaction_type'
                          initiatorMersOrgId:
                            $ref: '#/components/schemas/mers_org_id'
                          initiatorName:
                            $ref: '#/components/schemas/name'
                          isSystem:
                            $ref: '#/components/schemas/is_system'
                          isTest:
                            $ref: '#/components/schemas/is_test'
                          incoming:
                            $ref: '#/components/schemas/incoming'
                          status:
                            $ref: '#/components/schemas/status'
                          completed:
                            $ref: '#/components/schemas/boolean'
                          requestTimestamp:
                            $ref: '#/components/schemas/general_iso8601'
                          createdAt:
                            $ref: '#/components/schemas/general_iso8601'
                          updatedAt:
                            $ref: '#/components/schemas/general_iso8601'
                          additionalDetails:
                            $ref: '#/components/schemas/transaction_additional_details'
                          auditLogs:
                            $ref: '#/components/schemas/audit_logs'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
    post:
      summary: Updates an existing transaction
      description: Confirms or updates a pending transaction — for example accepting or rejecting a pending <Glossary>transfer</Glossary> awaiting confirmation. The confirmation type is specified in the request body.
      tags:
        - Transactions
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - $ref: '#/paths/~1%7Benvironment%7D~1transactions~1%7Btransaction_id%7D/get/parameters/1'
      requestBody:
        description: 'In order to perform this transaction, include the following in the request body'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/transaction_post'
      responses:
        '200':
          description: Update transaction
          $ref: '#/paths/~1%7Benvironment%7D~1inquiry/post/responses/200'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  '/{environment}/inquiry':
    x-acl: transactions
    post:
      summary: Performs an inquiry
      description: 'Looks up the current registry state of an <Glossary>eNote</Glossary> by its <Glossary>MIN</Glossary> or eNote guid, returning status or summary information.'
      tags:
        - Transactions
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
      requestBody:
        description: 'In order to perform an inquiry, all of the following must be included in the request body'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/inquiry_post'
      responses:
        '200':
          description: Inquiry
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/default_success_response'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/mers_response'
                      transactionId:
                        $ref: '#/components/schemas/guid'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  '/{environment}/connectivity':
    x-acl: transactions
    post:
      summary: Performs a connectivity test
      description: Verifies connectivity to <Glossary>MERS eRegistry</Glossary> or <Glossary>MERS eDelivery</Glossary> for the given environment. The target is set by the address type in the request body.
      tags:
        - Transactions
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
      requestBody:
        description: 'In order to perform a connectivity test, all of the following must be included in the request body'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/connectivity_post'
      responses:
        '200':
          description: Connectivity
          $ref: '#/paths/~1%7Benvironment%7D~1inquiry/post/responses/200'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  '/{environment}/enotes/{enote_id}/register':
    x-acl: transactions
    post:
      summary: Performs a Registration
      description: 'Registers a newly created <Glossary>eNote</Glossary> on <Glossary>MERS eRegistry</Glossary>, establishing the initial <Glossary>controller</Glossary> and the <Glossary>location</Glossary> that maintains its <Glossary>authoritative copy</Glossary>. On success the eNote''s <Glossary>electronic record</Glossary> is created with a status of Active.'
      tags:
        - Transactions
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes~1%7Benote_id%7D/get/parameters/1'
      requestBody:
        description: 'In order to perform a registration, all of the following must be included in the request body'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/register_post'
      responses:
        '200':
          description: Register
          $ref: '#/paths/~1%7Benvironment%7D~1inquiry/post/responses/200'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  '/{environment}/enotes/{enote_id}/change-status':
    x-acl: transactions
    post:
      summary: Performs a Change Status
      description: 'Changes the lifecycle status of a registered <Glossary>eNote</Glossary>''s <Glossary>electronic record</Glossary> — for example marking it paid off, charged off, <Glossary>converted to paper</Glossary>, or <Glossary>paper replacement</Glossary>, or reversing a prior status change. The status type is specified in the request body.'
      tags:
        - Transactions
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes~1%7Benote_id%7D/get/parameters/1'
      requestBody:
        description: 'In order to perform a change status, all of the following must be included in the request body'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/change_status_post'
      responses:
        '200':
          description: Change Status
          $ref: '#/paths/~1%7Benvironment%7D~1inquiry/post/responses/200'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  '/{environment}/enotes/{enote_id}/change-data':
    x-acl: transactions
    post:
      summary: Performs a Change Data
      description: 'Updates data or party associations on a registered <Glossary>eNote</Glossary>''s <Glossary>electronic record</Glossary> without a full transfer — for example adding or releasing a <Glossary>secured party</Glossary>, changing the <Glossary>master servicer</Glossary> or <Glossary>subservicer</Glossary>, or reporting a modification or assumption. The change type is specified in the request body.'
      tags:
        - Transactions
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes~1%7Benote_id%7D/get/parameters/1'
      requestBody:
        description: 'In order to perform a change data, all of the following must be included in the request body'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/change_data_post'
      responses:
        '200':
          description: Change Data
          $ref: '#/paths/~1%7Benvironment%7D~1inquiry/post/responses/200'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  '/{environment}/enotes/{enote_id}/deliver':
    x-acl: transactions
    post:
      summary: Performs a Delivery
      description: Delivers the <Glossary>eNote</Glossary> to one or more recipient organizations via <Glossary>MERS eDelivery</Glossary>. Each recipient is identified by its <Glossary>MERS Org ID</Glossary> and may accept or reject the delivery.
      tags:
        - Transactions
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes~1%7Benote_id%7D/get/parameters/1'
      requestBody:
        description: 'In order to perform a delivery, all of the following must be included in the request body'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/delivery_post'
      responses:
        '200':
          description: Delivery
          $ref: '#/paths/~1%7Benvironment%7D~1inquiry/post/responses/200'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  '/{environment}/enotes/{enote_id}/transfer':
    x-acl: transactions
    post:
      summary: Performs a Transfer
      description: 'Changes the parties on a registered <Glossary>eNote</Glossary> — for example the <Glossary>controller</Glossary>, <Glossary>location</Glossary>, or <Glossary>secured party</Glossary>. The transfer type included in the request body determines which parties change.'
      tags:
        - Transactions
      parameters:
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes/post/parameters/0'
        - $ref: '#/paths/~1%7Benvironment%7D~1enotes~1%7Benote_id%7D/get/parameters/1'
      requestBody:
        description: 'In order to perform a transfer, all of the following must be included in the request body'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/transfer_post'
      responses:
        '200':
          description: Transfer
          $ref: '#/paths/~1%7Benvironment%7D~1inquiry/post/responses/200'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/responses/500'
  /webhooks:
    x-acl: webhooks
    put:
      summary: Create a webhook configuration
      description: Creates a <Glossary>webhook</Glossary> — a URL eVault calls when subscribed <Glossary>webhook event</Glossary>s fire — with its <Glossary>signing key</Glossary> and the set of events it subscribes to.
      operationId: addWebhookConfiguration
      tags:
        - Webhooks
      requestBody:
        description: 'In order to create a webhook configuration, all of the following must be included in the request body'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/add_webhook_configuration_put'
      responses:
        '200':
          description: Created webhook configuration
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/default_success_response'
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          id:
                            $ref: '#/components/schemas/guid'
        '400':
          description: Validation error
          $ref: '#/paths/~1webhooks/put/responses/401'
        '401':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_response'
        '500':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500_error_response'
  '/webhooks/{webhook_id}':
    x-acl: webhooks
    get:
      summary: Get a webhook configuration
      description: 'Retrieves a <Glossary>webhook</Glossary> configuration, including the <Glossary>webhook event</Glossary>s it subscribes to.'
      operationId: getWebhookConfiguration
      tags:
        - Webhooks
      parameters:
        - name: webhook_id
          description: The unique identifier for a webhook configuration
          required: true
          in: path
          schema:
            $ref: '#/components/schemas/guid'
      responses:
        '200':
          description: Webhook configuration
          content:
            application/json:
              schema:
                type: object
                allOf:
                  - $ref: '#/components/schemas/default_success_response'
                  - type: object
                    properties:
                      data:
                        $ref: '#/components/schemas/webhook_configuration_response'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500_get_error_response'
    post:
      summary: Edit a webhook configuration
      description: 'Updates an existing <Glossary>webhook</Glossary> configuration''s name, URL, <Glossary>signing key</Glossary>, enabled state, or subscribed events.'
      operationId: editWebhookConfiguration
      tags:
        - Webhooks
      parameters:
        - $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/parameters/0'
      requestBody:
        description: All fields are optional; only the fields included in the request body are updated. The nCino webhook configuration cannot be edited.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/edit_webhook_configuration_post'
      responses:
        '200':
          description: Updated webhook configuration
          $ref: '#/paths/~1webhooks/put/responses/200'
        '400':
          description: Validation error
          $ref: '#/paths/~1webhooks/put/responses/401'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks/put/responses/500'
    delete:
      summary: Delete a webhook configuration
      description: Deletes a <Glossary>webhook</Glossary> configuration.
      operationId: deleteWebhookConfiguration
      tags:
        - Webhooks
      parameters:
        - $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/parameters/0'
      responses:
        '200':
          description: Deleted webhook configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/default_success_response'
        '400':
          description: Validation error
          $ref: '#/paths/~1webhooks/put/responses/401'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks/put/responses/500'
  '/webhooks/{webhook_id}/active-status':
    x-acl: webhooks
    post:
      summary: Update a webhook configuration's active status
      description: Enables or disables a <Glossary>webhook</Glossary> configuration.
      operationId: updateWebhookConfigurationActiveStatus
      tags:
        - Webhooks
      parameters:
        - $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/parameters/0'
      requestBody:
        description: Enables or disables the webhook configuration
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/webhook_active_status_post'
      responses:
        '200':
          description: Updated active status
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/delete/responses/200'
        '400':
          description: Validation error
          $ref: '#/paths/~1webhooks/put/responses/401'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks/put/responses/500'
  '/webhooks/{webhook_id}/test':
    x-acl: webhooks
    post:
      summary: Test a webhook configuration
      description: Sends a test event to a <Glossary>webhook</Glossary>'s configured URL and reports whether delivery succeeded.
      operationId: testWebhookConfiguration
      tags:
        - Webhooks
      parameters:
        - $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/get/parameters/0'
      responses:
        '200':
          description: Sends a test event to the configured URL and returns whether it succeeded
          $ref: '#/paths/~1webhooks~1%7Bwebhook_id%7D/delete/responses/200'
        '400':
          description: Validation error
          $ref: '#/paths/~1webhooks/put/responses/401'
        '401':
          $ref: '#/paths/~1webhooks/put/responses/401'
        '500':
          description: Error
          $ref: '#/paths/~1webhooks/put/responses/500'
webhooks:
  WebhookEvent:
    post:
      operationId: webhookEvent
      summary: Webhook event notification
      tags:
        - Webhook Events
      description: 'When a subscribed event fires, eVault sends a POST to the `url` configured on the <Glossary>webhook</Glossary>. Every event uses the same payload shape; the `event_type` field identifies which event fired and the identifier fields present depend on the event (see the schema). Verify the `ncino-evault-signature` header to confirm the payload''s authenticity.'
      parameters:
        - in: header
          name: ncino-evault-signature
          description: 'Base64-encoded HMAC-SHA256 signature of the raw request body, computed with the signing key configured on the webhook. Use it to verify the payload came from eVault and was not modified in transit.'
          schema:
            type: string
      requestBody:
        description: Webhook event payload
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/webhook_event_callback_message'
      responses:
        '200':
          description: OK
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'JWT access token used to authorize every API request. Send it as `Authorization: Bearer <access_token>`. Tokens are issued by the token endpoint (POST https://evault.ncino.com/oauth/auth_token) and expire after the `expires_in` seconds returned there (default 3600); request a new token or exchange the refresh token once it expires.'
    basicAuth:
      type: http
      scheme: basic
      description: 'HTTP Basic credentials used only by the token endpoint (POST /oauth/auth_token). The username is your API client_id and the password is your client_secret, sent as `Authorization: Basic base64(client_id:client_secret)`.'
  schemas:
    500_error_response:
      type: object
      properties:
        success:
          type: boolean
          example: false
        errors:
          type: array
          items:
            type: string
            example: Error message
        warnings:
          type: array
          nullable: true
          example: null
        data:
          type: string
          nullable: true
          example: null
    500_get_error_response:
      type: object
      properties:
        success:
          type: boolean
          example: false
        errors:
          type: array
          nullable: true
          example: null
        warnings:
          type: array
          nullable: true
          example: null
        data:
          type: string
          nullable: true
          example: null
    active:
      type: boolean
      example: true
    additional_info:
      type: string
      nullable: true
      example: null
    assumed:
      type: boolean
      example: false
    audit_logs:
      type: array
      items:
        type: object
        properties:
          id:
            $ref: '#/components/schemas/guid'
          eventType:
            $ref: '#/components/schemas/event_type'
          incoming:
            $ref: '#/components/schemas/incoming'
          status:
            $ref: '#/components/schemas/status'
          requestTimestamp:
            $ref: '#/components/schemas/general_iso8601'
          isSystem:
            $ref: '#/components/schemas/is_system'
          isTest:
            $ref: '#/components/schemas/is_test'
      example:
        - id: 459f521f-f2fa-4230-a704-46147ac8as7e
          eventType: connectivity
          incoming: false
          status: success
          requestTimestamp: '2019-02-28T00:00:00Z'
          isTest: false
    base64:
      type: string
      example: iVBORw0KGgoAAAANSUhEUgAAAWIAAAFiCAYAAADMXNJ6AAADx0lEQVR42u3UQQ0AAAgDMeZfNOCChLRzsMelegfAmQgxgBADCLEbAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGECIhRhAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQYQYiEGEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBhFiIAYQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGAAhBhBiAIQYQIgBEGIAIQZAiAGEGECIhRhAiAGE2A0AQgwgxAAIMYAQAyDEAEIMgBADCDEAQgwgxAAIMYAQAyDEAEIMgBADCDEAQgwgxAAIMYAQAyDEAEIMgBADCDEAQgwgxAAIMYAQAyDEAEIMgBADCDEAQgwgxAAIMYAQAyDEAEIMgBADCDEAQgwgxAAIMYAQAyDEAEIMgBADCDEAQgwgxAAIMYAQAyDEAEIMgBADCDEAQgwgxAAIMYAQAyDEAEIMIMRCDCDEAEIMgBADCDEAQgwgxAAIMYAQAyDEAEIMgBADCDEAQgwgxAAIMYAQAyDEAEIMgBADCDEAQgwgxAAIMYAQAyDEAEIMgBADCDEAQgzwwQDP0cK9V+cyWQAAAABJRU5ErkJggg==
    boolean:
      type: boolean
      example: true
    change_status_post:
      type: object
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/change_status_type'
        docGuid:
          allOf:
            - $ref: '#/components/schemas/guid'
          description: Required when type is REV_DOCUMENT.
    change_status_type:
      type: string
      enum:
        - REV_REGISTRATION
        - PAID_OFF
        - REV_PAID_OFF
        - CHARGED_OFF
        - REV_CHARGED_OFF
        - CONV_PAPER
        - REV_CONV_PAPER
        - PAPER_REPLACEMENT
        - REV_PAPER_REPLACEMENT
        - TRANSF_TO_PROP
        - REV_TRANSF_TO_PROP
        - REV_ASSUMPTION
        - REV_DOCUMENT
        - REV_MODIFICATION
        - ARCHIVE
      example: REV_REGISTRATION
    change_data_post:
      type: object
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/change_data_type'
        documentType:
          $ref: '#/components/schemas/document_type'
        documentData:
          $ref: '#/components/schemas/base64'
        documentName:
          $ref: '#/components/schemas/document_name'
        contentType:
          $ref: '#/components/schemas/content_type'
        borrowers:
          type: array
          items:
            type: object
            properties:
              firstName:
                $ref: '#/components/schemas/name'
              middleName:
                $ref: '#/components/schemas/name'
              lastName:
                $ref: '#/components/schemas/name'
              suffix:
                $ref: '#/components/schemas/name'
          example:
            - firstName: First
              middleName: Middle
              lastName: Last
              suffix: Sr
        modificationType:
          $ref: '#/components/schemas/modification_type'
        locationOrgId:
          $ref: '#/components/schemas/mers_org_id'
        masterServicerOrgId:
          $ref: '#/components/schemas/mers_org_id'
        subServicerOrgId:
          $ref: '#/components/schemas/mers_org_id'
        transferDelegateeOrgId:
          $ref: '#/components/schemas/mers_org_id'
        securedPartyOrgId:
          $ref: '#/components/schemas/mers_org_id'
        securedPartyDelegateeOrgId:
          $ref: '#/components/schemas/mers_org_id'
    change_data_type:
      type: string
      enum:
        - ADD_SECURED_PARTY
        - RELEASE_SECURED_PARTY
        - REVERSE_SECURED_PARTY
        - ADD_DOCUMENT
        - ASSUME
        - MODIFY
        - UPDATE
      example: ADD_DOCUMENT
    city:
      type: string
      example: Lehi
    city_state_zip:
      type: string
      example: 'Lehi, UT 84043'
    confirmation_type:
      type: string
      enum:
        - Accept
        - Reject
        - Approve
        - Disapprove
        - Cancel
      example: Accept
    connectivity_check_response:
      type: object
      properties:
        success:
          type: boolean
          example: true
        errors:
          type: array
          nullable: true
          items:
            type: string
          example: null
        warnings:
          type: array
          nullable: true
          items:
            type: string
          example: null
        data:
          type: object
          properties:
            status:
              type: string
              example: ok
    connectivity_post:
      type: object
      properties:
        addressType:
          $ref: '#/components/schemas/mers_address_type'
    content_type:
      type: string
      enum:
        - application/pdf
        - application/xml
      example: application/pdf
    default_success_response:
      type: object
      properties:
        success:
          type: boolean
          example: true
        errors:
          type: array
          nullable: true
          items:
            type: string
          example: null
        warnings:
          type: array
          nullable: true
          items:
            type: string
          example: null
    delivery_post:
      type: object
      required:
        - recipients
      properties:
        recipients:
          type: array
          items:
            $ref: '#/components/schemas/mers_org_id'
          example:
            - '1234567'
    delivery_recipient_status:
      type: string
      enum:
        - sent
        - accepted
        - rejected
        - approved
        - disapproved
        - canceled
        - expired
      example: approved
    detailed_transaction_type:
      type: string
      enum:
        - ChangeStatusDetails
        - ChangeDataDetails
        - RegistrationDetails
        - TransferDetails
        - DeliveryDetails
      example: TransferDetails
    document_name:
      type: string
      example: Document 1
    document_type:
      type: string
      example: AppraisalReport
    email:
      type: string
      example: user@simplenexus.com
    effective_date:
      type: string
      example: '2019-02-28'
    enote:
      type: object
      properties:
        data:
          type: object
          items:
            $ref: '#/components/schemas/guid'
    enotes-enote_guid-documents-upload_post:
      type: object
      required:
        - documents
      properties:
        documents:
          type: array
          items:
            type: object
            required:
              - documentType
              - contentType
              - loanNumber
              - name
              - data
            properties:
              remoteId:
                type: string
                example: remote-doc-1
              documentType:
                $ref: '#/components/schemas/document_type'
              contentType:
                $ref: '#/components/schemas/content_type'
              loanNumber:
                $ref: '#/components/schemas/loan_number'
              name:
                $ref: '#/components/schemas/document_name'
              data:
                $ref: '#/components/schemas/base64'
    enotes_post:
      type: object
      required:
        - lienType
        - borrowerFirstName
        - borrowerLastName
        - streetAddress
        - city
        - state
        - zip
        - enoteData
        - enoteDataFileType
        - pdfData
      properties:
        lienType:
          $ref: '#/components/schemas/lien_type'
        borrowerFirstName:
          $ref: '#/components/schemas/first_name'
        borrowerLastName:
          $ref: '#/components/schemas/last_name'
        streetAddress:
          $ref: '#/components/schemas/street'
        city:
          $ref: '#/components/schemas/city'
        state:
          $ref: '#/components/schemas/state'
        zip:
          $ref: '#/components/schemas/zip'
        loanNumber:
          $ref: '#/components/schemas/loan_number'
        enoteData:
          $ref: '#/components/schemas/base64'
        enoteDataFileType:
          $ref: '#/components/schemas/file_type'
        pdfData:
          $ref: '#/components/schemas/base64'
    enote_response:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/guid'
        loanNumber:
          $ref: '#/components/schemas/loan_number'
        min:
          $ref: '#/components/schemas/min'
        isTest:
          $ref: '#/components/schemas/is_test'
        smartdocPresented:
          $ref: '#/components/schemas/smartdoc_presented'
        smartdocVersion:
          $ref: '#/components/schemas/smartdoc_version'
        lienType:
          $ref: '#/components/schemas/lien_type'
        borrowerFirstName:
          $ref: '#/components/schemas/first_name'
        borrowerLastName:
          $ref: '#/components/schemas/last_name'
        borrowerAddress1:
          $ref: '#/components/schemas/street'
        borrowerAddress2:
          $ref: '#/components/schemas/city_state_zip'
        status:
          $ref: '#/components/schemas/status'
        registeredAt:
          $ref: '#/components/schemas/general_iso8601'
        tampersealed:
          $ref: '#/components/schemas/tamperseal'
        tampersealLastValidatedAt:
          $ref: '#/components/schemas/tamperseal_last_validated_at'
        assumed:
          $ref: '#/components/schemas/assumed'
        modified:
          $ref: '#/components/schemas/modified'
        active:
          $ref: '#/components/schemas/active'
        unregisteredReason:
          $ref: '#/components/schemas/unregistered_reason'
        createdAt:
          $ref: '#/components/schemas/general_iso8601'
        updatedAt:
          $ref: '#/components/schemas/general_iso8601'
        auditLogs:
          $ref: '#/components/schemas/audit_logs'
    environment:
      type: string
      enum:
        - stage
        - production
      example: stage
      readOnly: true
    error_response:
      type: object
    event_type:
      type: string
      enum:
        - connectivity
        - eRegistry_connectivity
        - eDelivery_connectivity
        - eregistry_connectivity_notification
        - edelivery_connectivity_notification
        - inquiry
        - member_inquiry
        - contact_inquiry
        - registration
        - delivery
        - transfer
        - change_status
        - change_data
        - manual_archive
        - resend_notifications
        - tamperseal_validation
        - dtd_validation
        - data_validation
        - arc_mapping_validation
        - connectivity_notification
        - registration_notification
        - delete_document
        - controller_history
        - add_secured_party
        - release_secured_party
        - reverse_secured_party
        - add_document
        - assumption
        - modification_electronic
        - modification_paper
        - update_rightsholders
        - change_data_notification
        - assumption_reversal
        - charged_off
        - charged_off_reversal
        - converted_to_paper
        - converted_to_paper_reversal
        - document_reversal
        - modification_reversal
        - paid_off
        - paid_off_reversal
        - registration_reversal
        - transferred_to_proprietary_registry
        - transferred_to_proprietary_registry_reversal
        - paper_replacement
        - paper_replacement_reversal
        - change_status_notification
        - delivery_initiated
        - delivery_canceled
        - delivery_accepted
        - delivery_rejected
        - delivery_expired
        - delivery_distributed
        - delivery_approved
        - delivery_disapproved
        - delivery_initiated_notification
        - delivery_expired_notification
        - delivery_accepted_notification
        - delivery_rejected_notification
        - delivery_distributed_notification
        - delivery_approved_notification
        - delivery_disapproved_notification
        - delivery_notification
        - transfer_initiated
        - transfer_accepted
        - transfer_rejected
        - transfer_reset
        - transfer_expired
        - transfer_completed
        - transfer_initiated_notification
        - transfer_completed_notification
        - transfer_rejected_notification
        - transfer_expired_notification
        - transfer_notification
        - add_enote_additional_data_point
        - update_enote_additional_data_point
        - delete_enote_additional_data_point
        - upload_document
        - edit_document
        - change_loan_number
        - change_type
        - archive_document
        - reactivate_document
        - view_doc
        - view_audit
        - download_doc
        - inquiry_validation
        - tamperseal_validation
        - dtd_validation
        - data_validation
        - arc_mapping_validation
        - view_enote_presentation
        - view_enote_xml
        - view_enote_data
        - upload_enote
        - became_authoritative_copy
        - released_authoritative_copy
        - multi_factor_authentication
        - user_login
        - manual_archive
        - user_sso_login
        - add_api_client
        - edit_api_client
        - deactivate_org_api_clients
        - activate_org_api_clients
        - edit_org_api_client_permissions
      example: delivery_initiated
    file_type:
      type: string
      enum:
        - application/zip
        - application/xml
      example: application/zip
    first_name:
      type: string
      example: Simple
    general_number:
      type: number
      example: 1
    general_iso8601:
      type: string
      example: '2019-02-28T00:00:00Z'
    guid:
      type: string
      example: 459f521f-f2fa-4230-a704-46147ac8as7e
    incoming:
      type: boolean
      example: false
    inquiry_post:
      type: object
      properties:
        min:
          $ref: '#/components/schemas/min'
        enote_guid:
          allOf:
            - $ref: '#/components/schemas/guid'
          description: Alternative to min. Either min or enote_guid is required.
    ip_address:
      type: string
      nullable: true
      example: null
    is_system:
      type: boolean
      example: false
    is_test:
      type: boolean
      example: true
    last_name:
      type: string
      example: Nexus
    loan_number:
      type: string
      example: 0292364
    lien_type:
      type: string
      example: FirstLien
    mers_address_type:
      type: string
      enum:
        - eRegistry
        - eDelivery
      example: eRegistry
    mers_org_id:
      type: string
      example: 1234567
    mers_response:
      type: string
      example: <xml>MERS response</xml>
    message:
      type: string
      example: Message
    min:
      type: string
      example: 123456789012345680
    modification_type:
      type: string
      enum:
        - Electronic
        - Paper
      example: Electronic
    modified:
      type: boolean
      example: false
    name:
      type: string
      example: Name
    register_post:
      type: object
      required:
        - controllerOrgId
        - locationOrgId
        - servicerOrgId
        - borrowers
      properties:
        controllerOrgId:
          $ref: '#/components/schemas/mers_org_id'
        locationOrgId:
          $ref: '#/components/schemas/mers_org_id'
        servicerOrgId:
          $ref: '#/components/schemas/mers_org_id'
        delegateeToTransferOrgId:
          $ref: '#/components/schemas/mers_org_id'
        securedPartyOrgId:
          $ref: '#/components/schemas/mers_org_id'
        securedPartyDelegateeOrgId:
          $ref: '#/components/schemas/mers_org_id'
        transferControl:
          type: boolean
          example: false
        borrowers:
          type: array
          items:
            type: object
            properties:
              firstName:
                $ref: '#/components/schemas/name'
              middleName:
                $ref: '#/components/schemas/name'
              lastName:
                $ref: '#/components/schemas/name'
              suffix:
                $ref: '#/components/schemas/name'
          example:
            - firstName: First
              middleName: Middle
              lastName: Last
              suffix: Sr
    request_id:
      type: string
      example: 123456
    smartdoc_presented:
      type: boolean
      nullable: true
      example: null
    smartdoc_version:
      type: string
      nullable: true
      example: 1.02
    state:
      type: string
      example: NV
    status:
      type: string
      nullable: true
      example: unregistered
    street:
      type: string
      example: 123 SimpleNexus Ln
    tamperseal:
      type: boolean
      example: false
    tamperseal_last_validated_at:
      type: string
      nullable: true
      example: null
    transaction_additional_details:
      type: object
      properties:
        detailsType:
          $ref: '#/components/schemas/detailed_transaction_type'
        documentName:
          type: string
          example: Name
        documentType:
          type: string
          example: Other
        trackingNumber:
          type: string
          example: '123456'
        approvalCode:
          type: string
          example: '5016'
        approvalDescription:
          type: string
          example: signature doesn't match the value on mers registry
        recipients:
          type: array
          items:
            type: object
            properties:
              mersOrgId:
                $ref: '#/components/schemas/mers_org_id'
              status:
                $ref: '#/components/schemas/delivery_recipient_status'
              approvalCode:
                type: string
                example: '5016'
              approvalDescription:
                type: string
                example: signature doesn't match the value on mers registry
          example:
            - mersOrgId: 1234567
              status: disapproved
              approvalCode: 5016
              approvalDescription: signature doesn't match the value on mers registry
        transferType:
          $ref: '#/components/schemas/transfer_type'
        mersReferenceId:
          type: string
          example: '123456'
        confirmationStatus:
          $ref: '#/components/schemas/transfer_confirmation_status'
        effectiveDate:
          $ref: '#/components/schemas/effective_date'
        controller:
          $ref: '#/components/schemas/mers_org_id'
        masterServicer:
          $ref: '#/components/schemas/mers_org_id'
        subServicer:
          $ref: '#/components/schemas/mers_org_id'
        location:
          $ref: '#/components/schemas/mers_org_id'
        transferDelegatee:
          $ref: '#/components/schemas/mers_org_id'
        securedParty:
          $ref: '#/components/schemas/mers_org_id'
        securedPartyDelegatee:
          $ref: '#/components/schemas/mers_org_id'
        originalController:
          $ref: '#/components/schemas/mers_org_id'
        originalMasterServicer:
          $ref: '#/components/schemas/mers_org_id'
        originalSubServicer:
          $ref: '#/components/schemas/mers_org_id'
        originalLocation:
          $ref: '#/components/schemas/mers_org_id'
        originalTransferDelegatee:
          $ref: '#/components/schemas/mers_org_id'
        originalSecuredParty:
          $ref: '#/components/schemas/mers_org_id'
        originalSecuredPartyDelegatee:
          $ref: '#/components/schemas/mers_org_id'
      example:
        detailsType: ChangeDataDetails
        documentName: Name
        documentType: Other
    transaction_post:
      type: object
      properties:
        confirmationType:
          $ref: '#/components/schemas/confirmation_type'
    transaction_type:
      type: string
      enum:
        - connectivity
        - inquiry
        - member_inquiry
        - contact_inquiry
        - registration
        - delivery
        - transfer
        - change_status
        - change_data
        - resend_notifications
        - controller_history
      example: transfer
    transfer_confirmation_status:
      type: string
      enum:
        - pending
        - accepted
        - rejected
        - no_action_required
      example: accepted
    transfer_post:
      type: object
      required:
        - type
        - effectiveDate
      properties:
        type:
          $ref: '#/components/schemas/transfer_type'
        effectiveDate:
          $ref: '#/components/schemas/effective_date'
        controllerOrgId:
          $ref: '#/components/schemas/mers_org_id'
        locationOrgId:
          $ref: '#/components/schemas/mers_org_id'
        servicerOrgId:
          $ref: '#/components/schemas/mers_org_id'
        subservicerOrgId:
          $ref: '#/components/schemas/mers_org_id'
        securedPartyOrgId:
          $ref: '#/components/schemas/mers_org_id'
        securedPartyDelegateeOrgId:
          $ref: '#/components/schemas/mers_org_id'
        delegateeForTransferOrgId:
          $ref: '#/components/schemas/mers_org_id'
        counterPartyOrgId:
          $ref: '#/components/schemas/mers_org_id'
        includeDelivery:
          $ref: '#/components/schemas/boolean'
    transfer_type:
      type: string
      enum:
        - TransferAll
        - TransferControl
        - TransferControlWithSecuredParty
        - TransferControlAndDelegatee
        - TransferControlAndLocation
        - TransferControlAndLocationWithSecuredParty
        - TransferDelegatee
        - TransferLocation
      example: TransferAll
    unregistered_reason:
      type: string
      nullable: true
      example: null
    user_agent:
      type: string
      nullable: true
      example: null
    user:
      type: object
      nullable: true
      example: null
    zip:
      type: string
      example: '12345'
    auth_token_post:
      type: object
      required:
        - grant_type
      properties:
        grant_type:
          type: string
          enum:
            - authorization_code
            - refresh_token
          description: The OAuth2 grant type being used.
          example: authorization_code
        code:
          type: string
          description: Required when grant_type is `authorization_code`. The authorization code issued for your org API client (returned as `clientId`/`id` when the API client was authorized for the org).
          example: 459f521f-f2fa-4230-a704-46147ac8as7e
        refresh_token:
          type: string
          description: Required when grant_type is `refresh_token`. A refresh token returned by a previous token request.
          example: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTYifQ.abc123
    auth_token_response:
      type: object
      properties:
        access_token:
          type: string
          description: 'JWT bearer token to send as `Authorization: Bearer <access_token>` on API requests.'
          example: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTYifQ.abc123
        token_type:
          type: string
          example: Bearer
        expires_in:
          type: integer
          description: Lifetime of the access token in seconds.
          example: 3600
        refresh_token:
          type: string
          description: Token used to obtain a new access token without re-sending credentials.
          example: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTYifQ.xyz789
    webhook_event_setting:
      type: object
      properties:
        key:
          type: string
          description: 'A webhook event you can subscribe to, used as the `key` of each entry in a webhook configuration''s `events` array (enable an event by setting its `value` to true). A parent key (for example `change_data`, `change_status`, `connectivity`, `delivery`, `inquiry`, `registration`, `transfer`) enables every event in that group.'
          enum:
            - archive_document
            - change_type
            - delete_document
            - download_doc
            - edit_document
            - reactivate_document
            - upload_document
            - add_enote_additional_data_point
            - became_authoritative_copy
            - delete_enote_additional_data_point
            - dtd_validation
            - data_validation
            - inquiry_validation
            - manual_archive
            - released_authoritative_copy
            - tamperseal_validation
            - update_enote_additional_data_point
            - upload_enote
            - view_enote_presentation
            - view_enote_xml
            - view_enote_data
            - change_data
            - add_document
            - add_secured_party
            - assumption
            - modification_electronic
            - modification_paper
            - release_secured_party
            - reverse_secured_party
            - update_rightsholders
            - change_data_notification
            - change_status
            - assumption_reversal
            - charged_off
            - charged_off_reversal
            - converted_to_paper
            - converted_to_paper_reversal
            - document_reversal
            - modification_reversal
            - paid_off
            - paid_off_reversal
            - paper_replacement
            - paper_replacement_reversal
            - registration_reversal
            - transferred_to_proprietary_registry
            - transferred_to_proprietary_registry_reversal
            - change_status_notification
            - connectivity
            - eDelivery_connectivity
            - eRegistry_connectivity
            - edelivery_connectivity_notification
            - eregistry_connectivity_notification
            - controller_history
            - delivery
            - delivery_accepted
            - delivery_approved
            - delivery_canceled
            - delivery_disapproved
            - delivery_distributed
            - delivery_expired
            - delivery_initiated
            - delivery_rejected
            - delivery_accepted_notification
            - delivery_approved_notification
            - delivery_disapproved_notification
            - delivery_distributed_notification
            - delivery_expired_notification
            - delivery_initiated_notification
            - delivery_rejected_notification
            - inquiry
            - contact_inquiry
            - member_inquiry
            - registration
            - registration_notification
            - resend_notifications
            - transfer
            - transfer_accepted
            - transfer_completed
            - transfer_expired
            - transfer_initiated
            - transfer_rejected
            - transfer_reset
            - transfer_completed_notification
            - transfer_expired_notification
            - transfer_initiated_notification
            - transfer_rejected_notification
          example: upload_document
        display_name:
          type: string
          example: Upload document
        value:
          type: boolean
          description: Whether this event type is enabled for the webhook configuration.
          example: false
        children:
          type: array
          items:
            type: object
          example: []
    webhook_event_group:
      type: object
      properties:
        name:
          type: string
          example: Electronic records
        settings:
          type: array
          items:
            $ref: '#/components/schemas/webhook_event_setting'
    add_webhook_configuration_put:
      type: object
      required:
        - name
        - url
        - signingKey
        - sendEmailOnError
        - isTest
      properties:
        name:
          type: string
          example: My integration webhook
        url:
          type: string
          example: 'https://example.com/webhooks/evault'
        signingKey:
          type: string
          description: Secret key used to sign webhook payloads so receivers can verify their authenticity.
          example: s3cr3t-signing-key
        sendEmailOnError:
          type: boolean
          description: 'When true, an email is sent if the webhook fails to deliver.'
          example: false
        isTest:
          type: boolean
          description: 'When true, the configuration targets the test (stage) environment.'
          example: false
    edit_webhook_configuration_post:
      type: object
      description: All fields are optional; only the fields included in the request body are updated.
      properties:
        name:
          type: string
          example: My integration webhook
        url:
          type: string
          example: 'https://example.com/webhooks/evault'
        enabled:
          type: boolean
          example: true
        signingKey:
          type: string
          example: s3cr3t-signing-key
        sendEmailOnError:
          type: boolean
          example: false
        events:
          type: array
          items:
            $ref: '#/components/schemas/webhook_event_group'
    webhook_active_status_post:
      type: object
      required:
        - enabled
      properties:
        enabled:
          type: boolean
          example: true
    webhook_configuration_response:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/guid'
        name:
          type: string
          example: My integration webhook
        url:
          type: string
          example: 'https://example.com/webhooks/evault'
        enabled:
          type: boolean
          example: true
        isTest:
          $ref: '#/components/schemas/is_test'
        sendEmailOnError:
          type: boolean
          example: false
        events:
          type: array
          items:
            $ref: '#/components/schemas/webhook_event_group'
    webhook_event_type:
      type: string
      description: 'The event that fired, sent as the `event_type` field of the webhook payload. Values are the lowercased event keys. Subscribe to the events you want to receive via the `events` array when creating or editing a webhook configuration. A parent key (for example `change_data`, `change_status`, `connectivity`, `delivery`, `inquiry`, `registration`, `transfer`) can be subscribed to on its own to receive every event in that group.'
      enum:
        - archive_document
        - change_type
        - delete_document
        - download_doc
        - edit_document
        - reactivate_document
        - upload_document
        - add_enote_additional_data_point
        - became_authoritative_copy
        - delete_enote_additional_data_point
        - dtd_validation
        - data_validation
        - inquiry_validation
        - manual_archive
        - released_authoritative_copy
        - tamperseal_validation
        - update_enote_additional_data_point
        - upload_enote
        - view_enote_presentation
        - view_enote_xml
        - view_enote_data
        - change_data
        - add_document
        - add_secured_party
        - assumption
        - modification_electronic
        - modification_paper
        - release_secured_party
        - reverse_secured_party
        - update_rightsholders
        - change_data_notification
        - change_status
        - assumption_reversal
        - charged_off
        - charged_off_reversal
        - converted_to_paper
        - converted_to_paper_reversal
        - document_reversal
        - modification_reversal
        - paid_off
        - paid_off_reversal
        - paper_replacement
        - paper_replacement_reversal
        - registration_reversal
        - transferred_to_proprietary_registry
        - transferred_to_proprietary_registry_reversal
        - change_status_notification
        - connectivity
        - edelivery_connectivity
        - eregistry_connectivity
        - edelivery_connectivity_notification
        - eregistry_connectivity_notification
        - controller_history
        - delivery
        - delivery_accepted
        - delivery_approved
        - delivery_canceled
        - delivery_disapproved
        - delivery_distributed
        - delivery_expired
        - delivery_initiated
        - delivery_rejected
        - delivery_accepted_notification
        - delivery_approved_notification
        - delivery_disapproved_notification
        - delivery_distributed_notification
        - delivery_expired_notification
        - delivery_initiated_notification
        - delivery_rejected_notification
        - inquiry
        - contact_inquiry
        - member_inquiry
        - registration
        - registration_notification
        - resend_notifications
        - transfer
        - transfer_accepted
        - transfer_completed
        - transfer_expired
        - transfer_initiated
        - transfer_rejected
        - transfer_reset
        - transfer_completed_notification
        - transfer_expired_notification
        - transfer_initiated_notification
        - transfer_rejected_notification
      example: upload_enote
    webhook_event_callback_message:
      type: object
      description: Payload eVault sends as a POST to the configured webhook URL when a subscribed event fires. `org_id` and `event_type` are always present; the remaining identifier fields are included only when they are relevant to the event that fired. The body is signed — verify it using the `ncino-evault-signature` header (see the parameter on this callback).
      required:
        - org_id
        - event_type
      properties:
        org_id:
          allOf:
            - $ref: '#/components/schemas/guid'
          description: The guid of the org the event belongs to. Always present.
        event_type:
          $ref: '#/components/schemas/webhook_event_type'
        enote_id:
          allOf:
            - $ref: '#/components/schemas/guid'
          description: Included when the event relates to an eNote.
        transaction_id:
          allOf:
            - $ref: '#/components/schemas/guid'
          description: Included when the event relates to a MERS transaction.
        audit_log_id:
          allOf:
            - $ref: '#/components/schemas/guid'
          description: Included when the event has an associated audit log.
        document_id:
          allOf:
            - $ref: '#/components/schemas/guid'
          description: Included when the event relates to a document.
        api_client_id:
          allOf:
            - $ref: '#/components/schemas/guid'
          description: Included when the event relates to an API client.
        org_api_client:
          allOf:
            - $ref: '#/components/schemas/guid'
          description: Included when the event relates to an org API client.
        user_id:
          allOf:
            - $ref: '#/components/schemas/guid'
          description: Included when the event was initiated by a user.
        additional_info:
          allOf:
            - $ref: '#/components/schemas/additional_info'
          description: Optional event-specific context. Included only when the event carries extra detail.
      example:
        org_id: 459f521f-f2fa-4230-a704-46147ac8as7e
        event_type: upload_enote
        enote_id: 8c1f0b2e-1a2b-4c3d-9e4f-5a6b7c8d9e0f
        audit_log_id: 2b7c9d1e-3f4a-5b6c-7d8e-9f0a1b2c3d4e
tags:
  - name: Authentication
  - name: Connectivity
  - name: Enotes
  - name: Audit Logs
  - name: Transactions
  - name: Webhooks
  - name: Webhook Events
