> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cardinalgray.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Title Entry

> Update a title entry by providing specific fields to update

The request body should contain only the fields you wish to update. The primary key fields `website` and `entryId` cannot be modified and will be automatically removed from the update operation if included.


## OpenAPI

````yaml PATCH /title/{id}
openapi: 3.0.1
info:
  title: Cardinal Gray OpenAPI
  description: OpenAPI for automating vehicle title work
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://dev.cardinalgray.com
    description: Development
  - url: https://api.cardinalgray.com
    description: Production
security:
  - bearerAuth: []
paths:
  /title/{id}:
    patch:
      summary: Update a title entry
      description: >-
        Updates a title entry with new account data. Performs intelligent deep
        merging to preserve existing data while applying updates. Automatically
        recalculates account status and handles title chain management when
        newer title issuance dates are provided.
      parameters:
        - $ref: '#/components/parameters/id'
      requestBody:
        description: Account data updates to apply to the title entry
        content:
          application/json:
            schema:
              type: object
              properties:
                account_data:
                  $ref: '#/components/schemas/AccountData'
                  description: >-
                    Partial or complete account data to merge with existing
                    entry
              required:
                - account_data
        required: true
      responses:
        '200':
          description: Title entry updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DynamoDBEntry'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
components:
  parameters:
    id:
      name: id
      in: path
      required: true
      schema:
        type: string
      description: Unique identifier of the title entry
  schemas:
    AccountData:
      type: object
      properties:
        vehicle:
          $ref: '#/components/schemas/Vehicle'
        loan:
          $ref: '#/components/schemas/DirectLoan'
        sale:
          $ref: '#/components/schemas/Sale'
        repo:
          $ref: '#/components/schemas/Repo'
        salvage:
          $ref: '#/components/schemas/Salvage'
      required:
        - vehicle
    DynamoDBEntry:
      type: object
      properties:
        webhook_events:
          type: array
          items:
            type: string
          description: >-
            Only exists on sent webhooks to help users quickly parse specific
            fields
        website:
          type: string
          description: Organization identifier
        entryId:
          type: string
          description: Unique identifier for this database entry
        userId:
          type: string
          description: User who created this entry
        user_email:
          type: string
          description: Email of the user who created this entry
        job_status:
          $ref: '#/components/schemas/JobStatus'
          description: Processing status of the job
        createdAt:
          type: string
          description: Timestamp when this entry was created
        groupId:
          type: string
          description: User group ID for organizational access control
        s3Index:
          type: string
          description: S3 path prefix for this entry's documents
        last_modified:
          type: number
          description: Timestamp when this entry was last modified
        VIN:
          type: string
          description: Vehicle Identification Number (17 characters)
        state:
          type: string
          description: State where the vehicle is titled/registered
        Borrower:
          type: string
          description: Primary borrower name on the loan
        existingEntryId:
          type: string
          description: If this is a duplicate entry, points to the original entry ID
        bdaJobs:
          type: object
          additionalProperties:
            type: string
          description: Background document analysis job statuses
        attachment:
          type: array
          items:
            $ref: '#/components/schemas/DocumentUpload'
          description: User-uploaded documents like driver licenses, vehicle titles, etc.
        lmsData:
          type: object
          description: Loan management system data
        loanData:
          description: Legacy loan data field (can be any type or AccountData)
          oneOf:
            - $ref: '#/components/schemas/AccountData'
            - type: object
        account_data:
          $ref: '#/components/schemas/AccountData'
        account_status:
          $ref: '#/components/schemas/AccountStatus'
          description: Account status to determine workflows (scrapers, etc.)
        is_elt:
          type: boolean
          description: Whether this account uses Electronic Lien & Title system
        elt_data:
          $ref: '#/components/schemas/DynamoEltData'
        lenderLoanId:
          type: string
          description: Lender's internal loan/account number
        tracking_url_provider:
          type: string
          description: Service provider for shipping tracking (if applicable)
        form_statement_of_fact:
          type: string
          description: S3 path to the Statement of Fact form PDF
        form_lien_add:
          type: string
          description: S3 path to the Add Lien form PDF
        form_title_application:
          type: string
          description: S3 path to the Title Application form PDF
        form_duplicate_title:
          type: string
          description: S3 path to the Duplicate Title request form PDF
        form_repo_affidavit:
          type: string
          description: S3 path to the Repossession Affidavit PDF
        form_lien_release_letter:
          type: string
          description: S3 path to the Lien Release Letter PDF
        forms_poa:
          type: array
          items:
            $ref: '#/components/schemas/FormAndGeneric'
          description: Array of Power of Attorney forms
        form_payoff_authorization:
          type: string
          description: S3 path to the Payoff Authorization form PDF
        form_letter_of_guarantee:
          type: string
          description: S3 path to the Letter of Guarantee PDF
        form_final_packet:
          type: string
          description: >-
            S3 path to the Final Packet PDF (contains all generated forms
            combined)
        final_packet_indices:
          type: string
          description: >-
            Page indices showing which forms appear on which pages of the final
            packet
        form_instructions:
          type: string
          description: S3 path to the Instructions PDF
        form_ohv_declaration:
          type: string
          description: S3 path to the Off-Highway Vehicle Declaration PDF
        form_odometer_disclosure:
          type: string
          description: S3 path to the Odometer Disclosure form PDF
        form_addr_oats:
          type: string
          description: S3 path to the Address OATS form PDF
        form_vin_verification:
          type: string
          description: S3 path to the VIN Verification form PDF
        form_low_speed_affidavit:
          type: string
          description: S3 path to the Low Speed Vehicle Affidavit PDF
        forms_name_oats:
          type: array
          items:
            $ref: '#/components/schemas/FormAndGeneric'
          description: Array of Name OATS forms
        forms_non_obligor:
          type: array
          items:
            $ref: '#/components/schemas/FormAndGeneric'
          description: Array of Non-Obligor forms
        form_updates:
          type: object
          additionalProperties:
            type: string
          description: >-
            Mapping of DynamoDBEntry.form* key to s3 metadata.json file
            containing overview of form updates
        form_downloads:
          type: object
          additionalProperties:
            type: number
          description: Mapping of DynamoDBEntry.form* key to download count
        nmvtis_txn_id:
          type: string
          description: Transaction ID for NMVTIS vehicle history report
        nmvtis_pull:
          type: string
          description: >-
            S3 URL to JSON file containing the NMVTIS pull results as
            AccountData
        nmvtis_found_status:
          $ref: 02e43a9b-f3e9-475b-be16-60373b41b526
          description: >-
            NMVTIS pull status: 'found' (record exists), 'not_found' (no
            record), 'error' (CG failure, retry), 'unavailable' (source down)
        nmvtis_report_pdf:
          type: string
          description: S3 path to the NMVTIS vehicle history report PDF
        nmvtis_last_fetch:
          type: string
          description: Timestamp of last NMVTIS data fetch
        state_txn_id:
          type: string
          description: Transaction ID for state DMV data pull (Yassi, DMV123, or internal)
        state_pull:
          type: string
          description: >-
            S3 URL to JSON file containing the state DMV pull results as
            AccountData
        state_found_status:
          description: >-
            State DMV pull status: 'found' (record exists), 'not_found' (no
            record), 'error' (CG failure, retry), 'unavailable' (source down)
          type: string
          enum:
            - found
            - not_found
            - error
            - unavailable
        state_report_pdf:
          type: string
          description: S3 path to the state DMV report PDF
        state_last_fetch:
          type: string
          description: Timestamp of last state DMV data fetch
        portal_screenshot:
          type: string
          description: >-
            S3 path to a screenshot of the DMV portal showing current vehicle
            status
        portal_pull:
          type: string
          description: >-
            S3 URL to JSON file containing the DMV portal pull results as
            AccountData
        portal_found_status:
          $ref: 8e24abfd-e92e-4208-84ba-a241afc0addb
          description: >-
            DMV portal pull status: 'found' (record exists), 'not_found' (no
            record), 'error' (CG failure, retry), 'unavailable' (portal down)
        portal_last_fetch:
          type: string
          description: Timestamp of last DMV portal data fetch
        insurance_last_fetch:
          type: string
          format: date-time
          description: Timestamp of last insurance data fetch
        insurance_search_raw_data:
          type: object
          description: Raw insurance search data
        insurance_search_result:
          type: string
          description: Insurance search result status
        insurance_update_result:
          type: string
          description: Insurance update result status
        signature_requests:
          type: array
          items:
            $ref: '#/components/schemas/SignatureRequest'
          description: >-
            Electronic signature requests including signed documents,
            certificates, and collected driver licenses
        fee_estimate:
          $ref: '#/components/schemas/EstFees'
        account_discrepancies:
          type: object
          description: >-
            Discrepancies found between different data sources (document
            uploads, NMVTIS, state portals, etc.) for this account. Each
            discrepancy shows field path and conflicting values with their
            sources.
          properties:
            items:
              type: array
              description: List of field discrepancies found across data sources
              items:
                type: object
                properties:
                  field_path:
                    type: string
                    description: >-
                      JSON pointer path to the conflicting field (e.g.
                      '/vehicle/title/issuance_date')
                  observations:
                    type: array
                    description: >-
                      All different values found for this field from various
                      sources
                    items:
                      type: object
                      properties:
                        from:
                          type: object
                          description: Source of this data value
                          properties:
                            kind:
                              type: string
                              enum:
                                - document_upload
                                - state_portal_pull
                                - nmvtis_pull
                              description: Type of data source
                            ref_id:
                              type: string
                              description: >-
                                Reference ID for the source (S3 key, transaction
                                ID, etc.)
                            doc_type:
                              type: string
                              description: >-
                                Document type if source is document_upload (e.g.
                                VEHICLE_TITLE, DRIVER_LICENSE)
                        value:
                          description: The actual value found from this source
        account_matches:
          type: object
          description: >-
            Fields where multiple data sources agree on the same value,
            providing validation confidence for critical data points like title
            numbers, dates, etc.
          properties:
            items:
              type: array
              description: List of fields where all data sources agree
              items:
                type: object
                properties:
                  field_path:
                    type: string
                    description: >-
                      JSON pointer path to the matching field (e.g.
                      '/vehicle/title/issuance_date')
                  agreed_value:
                    description: The normalized value that all sources agree on
                  sources:
                    type: array
                    description: All data sources that provided this matching value
                    items:
                      type: object
                      properties:
                        kind:
                          type: string
                          enum:
                            - document_upload
                            - state_portal_pull
                            - nmvtis_pull
                          description: Type of data source
                        ref_id:
                          type: string
                          description: >-
                            Reference ID for the source (S3 key, transaction ID,
                            etc.)
                        doc_type:
                          type: string
                          description: >-
                            Document type if source is document_upload (e.g.
                            VEHICLE_TITLE, DRIVER_LICENSE)
      required:
        - website
        - entryId
        - userId
        - job_status
        - s3Index
        - createdAt
        - VIN
        - state
        - Borrower
        - account_data
        - account_status
        - lenderLoanId
        - tracking_url_provider
    Vehicle:
      type: object
      properties:
        vin:
          type: string
          description: Vehicle Identification Number (17 characters)
          pattern: ^[A-HJ-NPR-Z0-9]{17}$
          example: 1HGCM82633A123456
        year:
          oneOf:
            - type: string
            - type: number
          description: Vehicle model year
          example: 2023
        make:
          type: string
          description: Vehicle manufacturer (e.g., Honda, Ford, Toyota)
          example: Honda
        model:
          type: string
          description: Vehicle model name
          example: Accord
        body:
          type: string
        type:
          $ref: '#/components/schemas/VehicleTypeEnum'
        color:
          type: string
        color_secondary:
          type: string
        fuel_type:
          type: string
        use:
          type: string
          description: Vehicle use classification
        weight:
          oneOf:
            - type: string
            - type: number
        weight_rating:
          type: string
          description: Weight rating classification
        weight_gross:
          oneOf:
            - type: string
            - type: number
        weight_unladen:
          oneOf:
            - type: string
            - type: number
        width:
          type: string
        length:
          type: string
        bhpcc:
          type: string
        number_of_axles:
          type: string
        number_of_cylinders:
          type: string
        license_plate:
          type: string
        license_plate_type:
          type: string
        motorcycle_engine_number:
          type: string
        registration_status:
          type: string
          enum:
            - ACTIVE
            - EXPIRED
            - SUSPENDED/REVOKED
          description: Current status of the vehicle's registration
        registration_expiration_date:
          type: string
        registration_issuance_date:
          type: string
          description: Date when the current registration was issued
        class:
          type: string
        has_reg_title_holds:
          type: boolean
          description: Whether the vehicle has outstanding registration or title holds
        reg_title_holds:
          type: array
          items:
            type: object
            description: Represents a hold or stop on a vehicle's registration or title
            properties:
              hold_type:
                type: string
                enum:
                  - INSURANCE
                  - LIEN
                  - FEE
                  - SUSPENSION
                  - STOP
                  - OTHER
                description: Type of hold placed on the registration or title
              hold_code:
                type: string
                description: State-specific code for this hold type
              hold_description:
                type: string
                description: Human-readable description of the hold
              issue_date:
                type: string
                description: Date the hold was issued
              clear_date:
                type: string
                description: Date the hold was cleared (if applicable)
              source:
                type: string
                description: Source of the hold (e.g., 'DMV', 'COURT', 'LIENHOLDER')
            required:
              - hold_type
          description: Outstanding registration or title holds on the vehicle
        prev_date_of_sale:
          type: string
        prev_sale_price:
          type: string
          description: Price of the previous sale (if known)
        fee_history:
          type: array
          items:
            $ref: '#/components/schemas/TransactionFee'
        insurance:
          $ref: '#/components/schemas/Insurance'
        title:
          $ref: '#/components/schemas/VehicleTitle'
      required:
        - vin
    DirectLoan:
      type: object
      properties:
        new_lienholder:
          $ref: '#/components/schemas/Lienholder'
        borrower:
          type: array
          items:
            $ref: '#/components/schemas/Person'
        loan_id:
          type: string
        security_agreement_sign_date:
          type: string
        loan_amount:
          type: number
        payoff_amount:
          type: number
        per_diem:
          type: number
        prior_lien:
          $ref: '#/components/schemas/Lien'
        add_owner:
          type: array
          items:
            $ref: '#/components/schemas/Person'
        drop_owner:
          type: array
          items:
            $ref: '#/components/schemas/Person'
        release_title_to_address:
          $ref: '#/components/schemas/Address'
      required:
        - new_lienholder
        - borrower
    Sale:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/SaleTypeEnum'
          description: >-
            Type of vehicle sale - NEW for new vehicles from dealer, USED for
            pre-owned vehicles, GIFT for transfers without payment
        sale_type:
          $ref: '#/components/schemas/SaleTypeEnum'
          description: Alternative field name for sale type (synonym of 'type')
        sale_price:
          type: number
          description: Total sale price of the vehicle in US Dollars
        date_of_sale:
          type: string
        state:
          type: string
          description: State in which the sold vehicle is being titled and registered
        seller:
          oneOf:
            - $ref: '#/components/schemas/Person'
            - $ref: '#/components/schemas/Dealer'
        buyer:
          oneOf:
            - type: array
              items:
                $ref: '#/components/schemas/Person'
              description: Array of buyers (persons)
            - $ref: '#/components/schemas/Dealer'
              description: Dealer as buyer
          description: Vehicle buyer - can be an array of persons or a dealer
        financed:
          $ref: '#/components/schemas/Lien'
        delivery_date:
          type: string
        additional_dues:
          $ref: '#/components/schemas/AdditionalDues'
        trade_in:
          $ref: '#/components/schemas/Vehicle'
      required:
        - type
        - sale_price
        - date_of_sale
        - state
        - additional_dues
    Repo:
      type: object
      properties:
        reposession_date:
          type: string
          description: Date of vehicle repossession
        reposession_address:
          $ref: '#/components/schemas/Address'
          description: Address where the vehicle was repossessed
        reposession_agency:
          type: string
          description: Name of the repossession agency
        reposession_agency_address:
          $ref: '#/components/schemas/Address'
          description: Address of the repossession agency
      required:
        - reposession_date
        - reposession_address
        - reposession_agency
        - reposession_agency_address
    Salvage:
      type: object
      properties:
        type:
          type: string
          enum:
            - THEFT
            - DAMAGE
        insurance:
          $ref: '#/components/schemas/Insurance'
        claim_number:
          type: string
        total_loss_date:
          type: string
        payoff_date:
          type: string
    JobStatus:
      type: string
      enum:
        - pending
        - input_parsing
        - enriching
        - generating_forms
        - complete
        - error
      description: >-
        Processing status of the title entry workflow. Statuses: 'pending' -
        Initial state when job is created; 'input_parsing' - Processing uploaded
        documents and extracting data; 'enriching' - Enriching data with
        NMVTIS/DMV data or calculating fees; 'generating_forms' - Generating DMV
        forms for submission; 'complete' - Successfully completed all
        processing; 'error' - Error state for any processing failures
    DocumentUpload:
      type: object
      properties:
        display_name:
          type: string
          description: Human-readable name for this document
        s3_key:
          type: string
          description: S3 key for accessing the document
        document_type:
          type: string
          enum:
            - VEHICLE_TITLE
            - VEHICLE_TITLE_BACK
            - VEHICLE_REGISTRATION
            - DRIVER_LICENSE
            - DRIVER_LICENSE_BACK
            - PAYOFF_LETTER
            - UNKNOWN
            - MARRIAGE_DIVORCE_NAMECHANGE_CERT
            - SECURITY_AGREEMENT
            - ASSET_RECOVERY_REPO_REPORT
            - AUTO_INSURANCE_COVERAGE_CARD
          description: Type of document that was uploaded
        json_path:
          type: string
          description: Filepath to Partial<AccountData>.json file in S3
      required:
        - display_name
        - s3_key
        - document_type
    AccountStatus:
      type: string
      enum:
        - originated
        - poa_sent
        - poa_signed
        - filing_en_route
        - filing_received
        - lien_delay
        - lien_error
        - lien_filed
        - lien_perfected
        - account_paid
        - lien_release_pending
        - lien_release_complete
      description: >-
        Current status of the account in the titling/lien workflow. Early
        stages: 'originated' - Account created; 'poa_sent' - Power of Attorney
        sent to customer; 'poa_signed' - POA signed and returned. DMV
        submission: 'filing_en_route' - Documents in transit to DMV;
        'filing_received' - DMV received documents. Lien lifecycle: 'lien_delay'
        - Lien processing delayed; 'lien_error' - Error in lien filing;
        'lien_filed' - DEPRECATED; 'lien_perfected' - Lien successfully
        perfected. End of life: 'account_paid' - Account paid off;
        'lien_release_pending' - Lien release in progress;
        'lien_release_complete' - Lien fully released
    DynamoEltData:
      type: object
      properties:
        id:
          type: string
          description: Corresponds to elt system's txn id
        ddi_email:
          type: string
        receipt_lien_perfection:
          type: string
          description: Corresponds to ELT_Perfection_Receipt
        receipt_lien_release:
          type: string
          description: Corresponds to DDI ELT Lien Release Acknowledgement
        receipt_lien_release_complete:
          type: string
          description: Corresponds to DDI ELT Lien Release Confirmation
        messages:
          type: array
          items:
            type: object
            properties:
              message:
                type: object
              resolved:
                type: boolean
      required:
        - id
    FormAndGeneric:
      type: object
      properties:
        signer_id:
          type: string
        signer_name:
          type: string
        form:
          type: string
        form_generic:
          type: string
      required:
        - signer_name
        - form_generic
    SignatureRequest:
      type: object
      properties:
        transaction_access_url:
          type: string
          description: URL for accessing the signature transaction
        redirect_url:
          type: object
          properties:
            url:
              type: string
            message:
              type: string
          required:
            - url
        requester_email:
          type: string
          description: Additional notification email for signature completion
        id:
          type: string
          description: >-
            Provider-specific ID (NTRZ::id for Notarize, DSGN::id for DocuSign,
            DMNS::id for Documenso, PNDC::id for Pandadoc)
        type:
          type: string
          enum:
            - WET_SIGN
            - WET_NOTARY
            - RON
            - E_SIGN
          description: Type of signature required
        status:
          type: string
          enum:
            - DRAFT
            - SENT
            - OPENED
            - COMPLETED
            - FAILED
            - EXPIRED
          description: Current status of the signature request
        documents_to_sign:
          type: array
          items:
            $ref: '#/components/schemas/DocumentToSign'
        created_at:
          type: string
          description: When the request was created
        updated_at:
          type: string
          description: Last status update
        signers:
          type: array
          items:
            $ref: '#/components/schemas/Person'
        sign_cert:
          type: string
          description: S3 path to signing certification
        collected_dlid:
          type: string
          description: S3 path to collected driver license ID
        full_export:
          type: string
          description: >-
            S3 path to full export consisting of sign cert, collected_dlid, and
            documents_to_sign
        physical_tracking:
          type: object
          properties:
            status:
              type: string
            tracking_url:
              type: string
            label_url:
              type: string
            shipment_id:
              type: string
            return_tracking_url:
              type: string
            return_label_url:
              type: string
            return_shipment_id:
              type: string
        instructions:
          type: string
          description: Any special instructions for the signer
        metadata:
          type: object
          additionalProperties: true
          description: Additional provider-specific metadata
    EstFees:
      type: object
      properties:
        tax:
          type: object
          properties:
            taxable_amount:
              type: number
            total:
              type: number
            items:
              type: array
              items:
                $ref: '#/components/schemas/TransactionFee'
            submission_instructions:
              $ref: '#/components/schemas/RemittanceInstructions'
          required:
            - taxable_amount
            - total
            - items
        registration:
          type: object
          properties:
            total:
              type: number
            items:
              type: array
              items:
                $ref: '#/components/schemas/TransactionFee'
          required:
            - total
            - items
        title:
          type: object
          properties:
            total:
              type: number
            items:
              type: array
              items:
                $ref: '#/components/schemas/TransactionFee'
          required:
            - total
            - items
        submission_instructions:
          $ref: '#/components/schemas/RemittanceInstructions'
      required:
        - tax
        - registration
        - title
        - submission_instructions
    Response:
      type: object
      properties:
        error:
          type: string
          description: Error message
        statusCode:
          type: number
          description: HTTP status code
    VehicleTypeEnum:
      type: string
      enum:
        - AUTO
        - OHV
        - ORV
        - ATV
        - MOTORCYCLE
        - LOW_SPEED
        - TRAILER
        - BOAT
      description: >-
        Type of vehicle. AUTO for passenger vehicles, OHV for off-highway
        vehicles, ORV for off-road vehicles, ATV for all-terrain vehicles,
        MOTORCYCLE, LOW_SPEED for low-speed vehicles, TRAILER, BOAT
    TransactionFee:
      type: object
      properties:
        feeType:
          type: string
          description: Type of fee (e.g., 'StateTax', 'TitleFee', 'RegFee')
        name:
          type: string
          description: Human-readable name of the fee
        value:
          type: number
          description: Fee amount in dollars
    Insurance:
      type: object
      properties:
        provider_name:
          type: string
          description: Insurance company name (e.g., 'GEICO', 'State Farm')
        provider_naic:
          type: string
          description: National Association of Insurance Commissioners code
        policy_number:
          type: string
          description: Insurance policy number
      description: Vehicle insurance information
    VehicleTitle:
      type: object
      properties:
        number:
          type: string
          description: Vehicle title number
        issuing_state:
          type: string
          description: State that issued the title (e.g., 'FL', 'TX')
        issuing_county:
          type: string
          description: County where the title was issued
        issuance_date:
          type: string
          format: date
          description: Date the title was issued (YYYY-MM-DD)
        brand:
          $ref: '#/components/schemas/VehicleBrandEnum'
          description: >-
            Title brand indicating the vehicle's condition or history
            (DEPRECATED - use brands array instead)
        brand_code:
          type: string
          description: >-
            Numeric or alphanumeric code associated with the title brand
            (DEPRECATED)
        brands:
          type: array
          description: Array of vehicle brand details with NMVTIS and state codes
          items:
            type: object
            properties:
              brand:
                $ref: '#/components/schemas/VehicleBrandEnum'
              nmvtis_code:
                type: string
                description: NMVTIS code for this brand
              state_code:
                type: string
                description: State-specific code for this brand
            required:
              - brand
        odometer_reading:
          type: string
          description: >-
            Odometer reading at the time of title issuance, usually in miles or
            kilometers
        odometer_reading_unit:
          type: string
          enum:
            - MI
            - KM
          description: >-
            Unit of measurement for odometer reading (MI for miles, KM for
            kilometers)
        odometer_code:
          type: string
          description: Code indicating the status or accuracy of the odometer reading
        odometer_code_translation:
          $ref: '#/components/schemas/OdometerStatusEnum'
        has_liens:
          type: boolean
        active_liens:
          type: array
          items:
            $ref: '#/components/schemas/Lien'
        is_electronic:
          type: boolean
        is_and:
          type: boolean
        is_or:
          type: boolean
        is_tod:
          type: boolean
          description: >-
            Whether the title has a TOD (Transfer on Death) conjunction in the
            ownership line
        is_jtwros:
          type: boolean
          description: >-
            Whether ownership is Joint Tenants With Right of Survivorship
            (JTWROS)
        conjunction:
          type: string
          enum:
            - AND
            - OR
            - TOD
            - AND/OR
            - JTWROS
            - UNKNOWN
          description: >-
            Ownership conjunction type. Replaces individual boolean flags
            (is_and, is_or, is_tod, is_jtwros)
        is_leased:
          type: boolean
          description: Whether the vehicle is leased rather than owned
        previous_title:
          $ref: '#/components/schemas/VehicleTitle'
        owner_names_one_line:
          type: string
        number_of_owners:
          type: number
        owners:
          type: array
          items:
            $ref: '#/components/schemas/Person'
        status:
          type: string
          enum:
            - active
            - inactive_transferred_out_of_state
            - inactive_cancelled
            - inactive_sold
            - inactive_revoked
            - inactive_suspended
            - pending
            - unknown
          description: >-
            Opinionated but stable title status indicating the current state of
            the title
        status_raw_text:
          type: string
          description: >-
            Raw text from the portal/source system for the title status
            (preserved for reference)
        prev_action:
          type: string
          enum:
            - original
            - renewal
            - transfer
            - duplicate
            - replacement
            - correction
            - elt2paper
            - update
            - nonresident
            - unknown
          description: >-
            Previous action taken on this title (e.g., was it an original title,
            a transfer, a duplicate request, etc.)
        prev_action_raw_text:
          type: string
          description: >-
            Raw text from the portal/source system for the previous action
            (preserved for reference)
    Lienholder:
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            type:
              type: string
              enum:
                - LIENHOLDER
            address_vault:
              $ref: '#/components/schemas/Address'
            elt_id:
              type: string
            feid:
              type: string
            signatory:
              $ref: '#/components/schemas/Person'
    Person:
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            type:
              type: string
              enum:
                - PERSON
                - BUSINESS
            dob:
              type: string
            contact_phone:
              type: string
            contact_email:
              type: string
            dlid:
              $ref: '#/components/schemas/DriversLicense'
            ssn:
              type: string
            addr_mailing:
              $ref: '#/components/schemas/Address'
            insurance:
              $ref: '#/components/schemas/Insurance'
            ownership_type:
              type: string
              description: >-
                Type of ownership (e.g., SOLE, JOINT, LEASED, TRUST,
                registered_owner, titled_owner)
            is_nonobligor:
              type: boolean
              description: Whether this person is a non-obligor on the loan
          required:
            - dob
    Lien:
      type: object
      properties:
        lien_date:
          type: string
          description: Date the lien was filed
        lien_amount:
          oneOf:
            - type: string
            - type: number
          description: Amount of the lien
        lien_id:
          type: string
          description: Lien identifier
        lienholder:
          $ref: '#/components/schemas/Lienholder'
      required:
        - lien_date
        - lienholder
    Address:
      type: object
      properties:
        recipient_name:
          type: string
          description: Name of the recipient at this address
        street1:
          type: string
          description: Primary street address line
        street2:
          type: string
          description: Secondary street address line (apartment, unit, etc.)
        city:
          type: string
          description: City name
        county:
          type: string
          description: County name
        state:
          type: string
          description: State abbreviation
        zip:
          type: string
          description: ZIP/postal code
      required:
        - street1
        - city
        - state
        - zip
    SaleTypeEnum:
      type: string
      enum:
        - NEW
        - USED
        - GIFT
      description: Type of vehicle sale transaction
    Dealer:
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            type:
              type: string
              enum:
                - DEALERSHIP
            dealer_id:
              type: string
            dealer_tax_id:
              type: string
          required:
            - dealer_id
    AdditionalDues:
      type: object
      properties:
        fidelity:
          type: string
          enum:
            - initial
            - apiEstimate
            - final
            - actual
        deliveryEstimate:
          type: number
        taxEstimates:
          type: array
          items:
            $ref: '#/components/schemas/TransactionFee'
        feeEstimates:
          type: array
          items:
            $ref: '#/components/schemas/TransactionFee'
      required:
        - fidelity
        - deliveryEstimate
        - taxEstimates
        - feeEstimates
    DocumentToSign:
      type: object
      properties:
        filename:
          type: string
        id:
          type: string
        signer_id:
          type: array
          items:
            type: string
        signed_copy:
          type: string
    RemittanceInstructions:
      type: object
      properties:
        payable_to:
          type: string
        address:
          $ref: '#/components/schemas/Address'
      required:
        - payable_to
        - address
    VehicleBrandEnum:
      type: string
      enum:
        - SALVAGE
        - REBUILT
        - RECONSTRUCTED
        - DISMANTLED
        - JUNK
        - CRUSHED
        - EXPORT_ONLY
        - TOTALED
        - OWNER_RETAINED
        - PRIOR_OWNER_RETAINED
        - NON_REPAIRABLE_REPAIRED
        - SALVAGE_RETENTION
        - SALVAGE_OTHER
        - FLOOD
        - SALT_WATER_DAMAGE
        - FIRE_DAMAGE
        - LEMON
        - WARRANTY_RETURN
        - MANUFACTURER_BUYBACK
        - REPLICA
        - GRAY_MARKET
        - VIN_REPLACED
        - ACTUAL_MILEAGE
        - NOT_ACTUAL_MILEAGE
        - TAMPERING_VERIFIED
        - EXEMPT_ODOMETER
        - EXCEEDS_MECHANICAL_LIMITS
        - ODOMETER_ALTERED
        - ODOMETER_REPLACED
        - ODOMETER_DISCREPANCY
        - CARS_PENDING_JUNK
        - CARS_JUNK
        - MEMORANDUM_COPY
        - CALL_TITLE_DIVISION
        - PENDING_INVESTIGATION
        - UNKNOWN
        - NONE
      description: >-
        Vehicle title brand designation. Includes NMVTIS brands covering damage,
        environmental, manufacturer, odometer, and administrative categories.
    OdometerStatusEnum:
      type: string
      enum:
        - ACTUAL
        - NOT_ACTUAL
        - EXCESS
        - EXEMPT
      description: Odometer reading status
    Entity:
      type: object
      properties:
        id:
          type: string
          description: >-
            Use this field to pass your internal uuid for an entity, or let
            Cardinal Gray generate one
        type:
          type: string
          enum:
            - PERSON
            - DEALERSHIP
            - BUSINESS
            - LIENHOLDER
          description: Type of entity
        name:
          type: string
          description: >-
            Full name of owner in First Middle Last format. If found in Last,
            First Middle format, convert it
        name_first:
          type: string
          description: First name component
        name_middle:
          type: string
          description: Middle name component
        name_last:
          type: string
          description: Last name component
        name_suffix:
          type: string
          description: Name suffix (e.g., Jr., Sr., III)
        oats_names:
          type: array
          items:
            type: string
            description: >-
              Each additional name for the owner in First Middle Last format; do
              not confuse separate owners for an oats name
          description: >-
            Sometimes the same document can contain multiple names for the same
            person (i.e. the mailing info says Harper Smith but the section
            under titled or registered owners says John Smith-Avery), please
            list the additional names (in this case the former) in the
            oats_names array
        addr:
          $ref: '#/components/schemas/Address'
          description: Physical/residential address of the owner
        contact_phone:
          type: string
          description: Phone number for the owner
        contact_email:
          type: string
          description: Email address for the owner
      required:
        - type
        - name
        - addr
    DriversLicense:
      type: object
      properties:
        number:
          type: string
          description: Driver's license number
        state:
          type: string
          description: Two-letter code of state that issued the license
        sex:
          type: string
          description: Gender/sex as listed on license (typically 'M' or 'F')
        expiration_date:
          type: string
          description: License expiration date, format MM/DD/YYYY preferred
        first_name:
          type: string
          description: First name as it appears on license
        middle_name:
          type: string
          description: Middle name or initial as it appears on license
        last_name:
          type: string
          description: Last name as it appears on license
        suffix:
          type: string
          description: Name suffix (e.g., Jr., Sr., III)
        addr:
          $ref: '#/components/schemas/Address'
          description: Address as it appears on the driver's license
      required:
        - number
        - state
        - sex
  responses:
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Response'
    NotFound:
      description: Not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Response'
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Response'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````