AutoFi Dealmaker API

The Dealmaker API from AutoFi — 2 operation(s) for dealmaker.

Operations 2

POST /v1/dealmaker Create Dealmaker
POST /v1/dealmaker/credit-application Create Credit App

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/autofi-dealmaker-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

autofi-dealmaker-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: AutoFi Dealmaker API
  description: "\n# Introduction\n Welcome to the AutoFi REST API. Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.\n\n# HTTP Requests\n### Environments\nEnvironment | URL\n----------------|-------------\nTest Sandbox | https://api-uat.autofi.com\nProduction | https://api.autofi.com\n\n### Request Headers\n\nThe `Content-Type` header for `POST` and `PUT` requests should be set to `application/json` unless otherwise noted.\n\nHeader | Value\n----------------|-------------\nContent-Type | application/json\n\n### Response Headers\nHeader | Value\n----------------|-------------\nX-RateLimit-Limit | Request quota\nX-RateLimit-Reset | UNIX timestamp the request quota will be reset after exceeding it\nX-RateLimit-Remaining | Remaining requests in quota\nRetry-After | Time in seconds to retry after\nX-Response-Time | The time in milliseconds it took to respond to the request\n\n# HTTP Responses\nAutoFi uses standard HTTP response codes to indicate the success or failure of an API request. \n\n## Successful requests\nHTTP requests that are successfully processed returns `2xx` status codes.\n\n| Status code | Description |\n| -- | -- |\n| **200 OK** | The request was successfully processed and requested content is returned in the response body. |\n| **201 Created** | The request was successfully processed and a new resource was created. |\n| **204 No Content** | The request was successfully processed and the response body has no content. |\n\n## Failed Requests\nHTTP requests that are not successfully processed, due to a client or server error, returns `4xx` or `5xx` status codes respectively.\n\n### HTTP 4XX status codes\n| Status code | Description \n| -- | -- |\n| **400 Bad Request** | The request cannot be processed. Typically due to a malformed payload.\n| **401 Unauthorized** | The request has invalid credentials (token).\n| **403 Forbidden** | The request has insufficient privileges.\n| **404 Not Found** | The requested resource could not be found.\n| **405 Method Not Allowed** | The API does not allow this method.\n| **415 Unsupported Media Type** | The payload format is not supported. [AutoFi request headers](#request-headers).\n| **429 Too Many Requests** | There were too many request in a given amount of time.\n\n### Error response definition\nMost types of errors have the following structure:\n| field | Description \n| --- | --- \n| code | reference to the status code of the response\n| message | defines the error type \n| errors | contains an array of objects with the description for an error or multiple errors generated.\n\n### Error Types\n\n`4xx` Errors can be thrown for different reasons. The following section describes common shapes for the error objects returned.\n\n#### Validation Errors\nValidation errors return a `400` status code indicating a `Bad Request`.\n\n| Parameter type | Description \n| --- | --- \n| string | `dob`, `email`, `phone`, etc., have formats and possibly character restrictions which must be observed. e.g. `phone` must be a 10 character long string that contains only numbers.\n| number | `apr`, `downPayment`, `term`, etc., have range requirements which must be observed. e.g. `apr` must be a number between [0...1]. \n| integer | `timeInMonths`, `monthlyPayment`, `year`, etc., have range requirements which must be observed.  \n\n\n> #### Example Response `400 Bad Request`\n>  ```json\n> {\n>   \"code\": 400,\n>   \"message\": \"Validation Error\",\n>   \"errors\": [\n>       {\n>         \"description\": \"Required field \\\"applicant\\\" was not provided.\"\n>       },\n>       {\n>         \"description\": \"Field \\\"cosigner.email\\\" is invalid: io.\"\n>       }\n>   ]\n> }\n>  ```\n\n\n#### Authorization Errors\nAuthorization errors return a `401` status code indicating a `Unauthorized`.\nMost endpoints will return some of the following errors in case of an invalid\n(malformed or expired) or absent authorization token, indicating that a new \ntoken must be requested.\n\n> #### Example Response `401 `\n>  ```json\n> {\n>     \"error\": \"UnauthorizedError: invalid token\"\n> }\n>  ```\n>  ```json\n> {\n>     \"error\": \"UnauthorizedError: No authorization token was found\"\n> }\n>  ```\n>  ```json\n> {\n>     \"error\": \"UnauthorizedError: Format is Authorization: Bearer [token]\"\n> }\n>  ```\n>  ```json\n> {\n>     \"error\": \"UnauthorizedError: jwt malformed\"\n> }\n>  ```\n\n#### Not Found Errors\nNot Found errors return a `404` status code indicating a `Not Found`.\n\n> #### Example Response `404 Not found`\n>  ```json\n> {\n>     \"error\": \"Error: Not Found\"\n> }\n>  ```\n\n#### Rate Limiting\nIf the server is receiving an excessive amount of requests from a \nparticular user, it may return errors with a `429` status code \nindicating `Too many requests`.\n\n> #### Example Response `429 Too many requests`\n>  ```json\n> {\n>   \"code\": 429,\n>   \"message\": \"Account limit exceeded.\",\n> }\n>  ```\n\n\n### HTTP 5XX status codes\n| Http Status | Description |\n| -- | -- |\n| **500 Internal Server Error** | An unexpected error occurred, preventing successfully processing the request. |\n| **503 Service Unavailable** | An AutoFi service is unavailable, preventing successfully processing the request. |   \n\n> See the [Hypertext Transfer Protocol (HTTP)](https://datatracker.ietf.org/doc/html/rfc7231) or the [MDN docs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status) for more details.\n\n### Error Type\n\n#### 503 Service Unavailable\nService unavailable error is returned when our servers is not available to process and return a response.\n\n> #### Example Response `503 service unavailable`\n>  ```json\n> {\n>   \"code\": 503,\n>   \"message\": \"Service Unavailable\",\n>   \"errors\": [\n>       {\n>         \"description\": \"Service Unavailable\"\n>       },\n>   ]\n> }\n>  ```\n"
  version: 1.0.0
  x-logo:
    url: https://app.autofi.com/images/email-autofi-logo.png
    backgroundColor: '#FFFFFF'
    altText: AutoFi
    href: /
servers:
- url: https://api.autofi.com
  description: Production server
- url: https://api-uat.autofi.com
  description: Sandbox server
security:
- bearerAuth: []
tags:
- name: Dealmaker
paths:
  /v1/dealmaker:
    post:
      security:
      - bearerAuth:
        - create:dealmaker
      summary: Create Dealmaker
      description: "<p style=\"display: flex; flex-direction: column\"><img \nsrc=\"http://badges.github.io/stability-badges/dist/experimental.svg\" alt=\"Experimental\" \nstyle=\"width: 100%; max-width: 150px\" />\nCreate a new Dealmaker loan application.\n</p>"
      tags:
      - Dealmaker
      requestBody:
        $ref: '#/components/requestBodies/CreateDealmakerBody'
      responses:
        '201':
          $ref: '#/components/responses/CreateDealmakerResponse'
        '400':
          $ref: '#/components/responses/CreateDealmaker400Response'
        '409':
          $ref: '#/components/responses/CreateDealmaker409Response'
  /v1/dealmaker/credit-application:
    post:
      security:
      - bearerAuth:
        - create:dealmakercredit
      summary: Create Credit App
      description: "<p style=\"display: flex; flex-direction: column\"><img \nsrc=\"http://badges.github.io/stability-badges/dist/experimental.svg\" alt=\"Experimental\" \nstyle=\"width: 100%; max-width: 150px\" />\nCreate a new Dealmaker loan application that starts at the credit application. Use this endpoint when the\nconsumer has already selected a vehicle and is ready to apply for credit.\n<em>NOTE: Only retail finance is currently supported. This is experimental and can change in the future.</em>\n</p>"
      tags:
      - Dealmaker
      callbacks:
        createLoanAppCallback:
          '{$request.body#/callbackUrl}':
            post:
              summary: Loan Application callback
              description: "Dealmaker loan applications utilize the same callbacks sent by the Create Loan Application endpoint.\n\nAutoFi REST APIs use callbacks for event notifications, such as lender decisions when applying for credit. \nCallbacks are outbound API calls that notify you when an event has occurred.  Note: Callbacks do not \nhave a re-try function.\n\n### How to use\n\nOn the AutoFi Create Loan Application you can provide the `callbackUrl` property with a URL value.  AutoFi will send \nevent notifications to that URL.\n\n### Messages\n\nA JSON notification will be triggered when a new event takes place. For example, an event will trigger a notification\nwhen a loan application has been approved or declined by a lender. The callback response body contains the same \ninformation as returned by the [GET Loan Application](#tag/Loan-Applications/paths/~1v1~1loan-application~1{loanApplicationId}/get) \nendpoint.\n\n### Event triggers\n\nEnum: `\"ACCEPTED\"` `\"APPROVED\"` `\"BEGAN_APPLICATION\"` `\"DECLINED\"`  `\"ERROR\"` `\"FI_COMPLETED\"` `\"PENDING\"` `\"SUBMITTED\"`\n"
              responses:
                '200':
                  description: Callback response body
                  content:
                    application/json:
                      schema:
                        allOf:
                        - $ref: '#/components/schemas/LoanApplicationData'
                        properties:
                          timestamp:
                            type: string
                            format: date-time
                            example: '2022-03-09T16:26:18.284Z'
      requestBody:
        $ref: '#/components/requestBodies/CreateDealmakerCreditAppBody'
      responses:
        '201':
          $ref: '#/components/responses/CreateDealmakerCreditAppResponse'
        '400':
          $ref: '#/components/responses/CreateDealmakerCreditApp400Response'
        '409':
          $ref: '#/components/responses/CreateDealmakerCreditApp409Response'
components:
  schemas:
    ApplicantFullNameInput:
      allOf:
      - $ref: '#/components/schemas/ApplicantBaseNameInput'
      title: Name
      properties:
        middle:
          description: Middle name
          example: Alejandra
          type: string
        suffix:
          description: Suffix indicating generational title
          example: JR
          type: string
          enum:
          - JR
          - SR
          - I
          - II
          - III
          - IV
          - V
    TaxItemLease:
      type: object
      description: Lease Tax Item.
      properties:
        amount:
          description: Tax item amount.
          type: number
          format: float
        description:
          description: Tax item description.
          type: string
        descriptionI18n:
          description: Tax item description for locale.
          type: string
    Decision:
      type: object
      properties:
        comments:
          description: List of raw lender comments returned via the middleman.
          type: object
          properties:
            raw:
              type: array
              items:
                type: string
                example: APPROVED WITH COSIGNER
        consumerState:
          type: string
          description: Consumer decision's state.
          enum:
          - APPROVED
          - DECLINED
          - PENDING
          default: PENDING
        error:
          type:
          - object
          - 'null'
          description: Avaliable when the status of the decision is `ERROR`
          properties:
            message:
              type: string
              description: Message of the error that occurred when getting the decision.
              example: Unable to locate bookout data.
        isAccepted:
          type:
          - boolean
          - 'null'
          description: This flag is `true` when the decision has been accepted by the customer.
        lenderReferenceId:
          type:
          - string
          - 'null'
          description: Lender application id.
        middleman:
          type:
          - string
          - 'null'
          description: Middleman name.
          enum:
          - dealertrack
          - dealertrackFs
          - routeOne
        middlemanReferenceID:
          type:
          - string
          - 'null'
          description: Middleman application id.
        name:
          type:
          - string
          - 'null'
          description: Lender name.
        pricing:
          type:
          - object
          - 'null'
          properties:
            amountFinanced:
              type:
              - number
              - 'null'
              format: float
            apr:
              type:
              - number
              - 'null'
              format: float
              description: Loan's annual percentage rate.
            buyRate:
              type:
              - number
              - 'null'
              format: float
            dealerDiscountFee:
              type:
              - number
              - 'null'
              format: float
              description: Fee charged by the lender to the dealer for underwriting certain loan applications.
            downPayment:
              type:
              - number
              - 'null'
              format: float
            monthlyPayment:
              type:
              - number
              - 'null'
              format: float
            termMonths:
              type:
              - integer
              - 'null'
        state:
          type:
          - string
          - 'null'
          description: Decision's state
          enum:
          - APPROVED
          - CONDITIONAL
          - COUNTER_OFFER
          - DECLINED
          - ERROR
          - LENDER_CONSTRAINT
          - PENDING
        stipulations:
          type:
          - object
          - 'null'
          description: List of lender stipulations.
          properties:
            raw:
              type: array
              description: Raw stipulations as are sent by lenders.
              items:
                type: string
                example: DOB MISMATCH ON BUREAU. PROOF OF DOB REQUIRED; DL OR OTHER GOVERNMENT ISSUED ID WITH PHOTO AND DOBS
            normalized:
              type: array
              description: Normalized from `raw` stipulations into a user friendly format. The number of `normalized` stipulations may not match the number of `raw` ones.
              items:
                type: string
                example: Applicant will need to show a valid government issued photo ID card for date of birth verification
    TaxName:
      type: string
      description: "The name of the tax.  \n**Note**: if \"Total Taxes\" value is received, it is the total tax amount for the vehicle. Does not include product taxes.\n"
    DealmakerCreditAppProductInput:
      allOf:
      - $ref: '#/components/schemas/ProductBaseInput'
      properties:
        name:
          type: string
          description: Product description.
          example: Extended Warranty
          minLength: 1
        referenceId:
          type: string
          title: Product Reference ID
          description: Product identifier used to reference a product within a DMS.
          example: 23b605f6-2a9e-11ec-8d3d-0242ac130003
          minLength: 1
        tax:
          allOf:
          - $ref: '#/components/schemas/tax'
          description: Tax amount for the product.
      required:
      - category
      - name
      - price
      - tax
    TaxableAmount:
      type: number
      example: 34317.99
      format: float
      minimum: 0
      description: '<p style="display: flex; flex-direction: column"><img src="http://badges.github.io/stability-badges/dist/experimental.svg" alt="Experimental" style="width: 100%; max-width: 150px" /> Taxable amount.</p>'
    BaseSelectedProduct:
      type: object
      description: Fields in common for FINANCE, CASH and LEASE.
      properties:
        mileage:
          type:
          - integer
          - 'null'
          example: 1
          minimum: 0
          description: The mileage selected by the customer for a specific product (e.g. VSC).
        name:
          type:
          - string
          - 'null'
          description: Name of the F&I product selected.
        price:
          $ref: '#/components/schemas/price'
        referenceId:
          $ref: '#/components/schemas/referenceId'
        tax:
          $ref: '#/components/schemas/tax'
        taxableAmount:
          $ref: '#/components/schemas/TaxableAmount'
        taxLineItems:
          $ref: '#/components/schemas/TaxLineItems'
        termMonths:
          type:
          - integer
          - 'null'
          example: 1
          minimum: 0
          description: The term selected by the customer for a specific product (e.g. Tire and Wheel).
        total:
          type:
          - number
          - 'null'
          example: 1
          format: float
          minimum: 0
          description: The total price of the product including the finance charge.
      example:
        mileage: 50000
        name: Extended Warranty
        price: 700
        referenceId: 23b605f6-2a9e-11ec-8d3d-0242ac130003
        tax: 60.01
        taxableAmount: 700
        taxLineItems:
        - jurisdiction:
            name: COLORADO
            type: STATE
            imposition: General Sales and Use Tax
          tax:
            rate: 0.086
            amount: 60.1
        termMonths: 60
        total: 760.01
    OwnedTradeInSchema:
      description: Owned trade-in input details
      type: object
      title: Owned
      required:
      - amount
      - make
      - model
      - ownership
      - year
      allOf:
      - $ref: '#/components/schemas/TradeInSchema'
      properties:
        amount:
          type: number
          format: float
          example: 5000.75
          description: The value of the vehicle.
        ownership:
          type: string
          example: OWNED
          description: Trade-in ownership type.
          enum:
          - OWNED
    DealerCodeOnlyInput:
      type: object
      title: Dealer
      description: Dealer information.
      required:
      - code
      properties:
        code:
          description: Identification code assigned to dealer by AutoFi.
          type: string
          pattern: ^[A-Z0-9]{4}$
          minLength: 4
          maxLength: 4
          example: 76KR
    LeaseTaxes:
      type: array
      title: Lease
      items:
        properties:
          amount:
            $ref: '#/components/schemas/FeeAmount'
          name:
            $ref: '#/components/schemas/FeeName'
          taxPlacement:
            $ref: '#/components/schemas/TaxPlacement'
    DealmakerCreditAppReferenceIdInput:
      allOf:
      - $ref: '#/components/schemas/ReferenceIdInput'
      title: Reference ID
    IsSubvented:
      type: boolean
      description: Indicates that the rate in this offer contains a subvented or special rate. This influences rules relating to markup and rebate compatibility.
    VinBaseSchema:
      type: string
      maxLength: 17
      minLength: 17
      pattern: ^[a-zA-Z0-9]{17}$
    TradeInInputSchema:
      type: object
      title: Trade-In
      description: Trade-in collateral.
      oneOf:
      - $ref: '#/components/schemas/FinanceTradeInSchema'
      - $ref: '#/components/schemas/LeaseTradeInSchema'
      - $ref: '#/components/schemas/OwnedTradeInSchema'
      discriminator:
        propertyName: ownership
        mapping:
          FINANCED: '#/components/schemas/FinanceTradeInSchema'
          LEASED: '#/components/schemas/LeaseTradeInSchema'
          OWNED: '#/components/schemas/OwnedTradeInSchema'
    FinanceTaxes:
      type: array
      title: Finance
      items:
        properties:
          amount:
            $ref: '#/components/schemas/TaxAmount'
          name:
            $ref: '#/components/schemas/TaxName'
          taxableAmount:
            $ref: '#/components/schemas/TaxableAmount'
          taxLineItems:
            $ref: '#/components/schemas/TaxLineItems'
    TaxAmount:
      type: number
      example: 995.22
      format: float
      minimum: 0
      description: "Total amount for this tax.  \n**Note**: For product specific taxes see `selectedProducts.tax`.  \nFor Total taxes see `pricingStack.totalTaxes`.\n"
    DealmakerCreditAppFinanceFeesInput:
      type: array
      title: Fee
      description: Fees associated with the credit application.
      items:
        $ref: '#/components/schemas/DealmakerCreditAppFinanceFeeInput'
    DealmakerCreditAppVehicleInput:
      allOf:
      - $ref: '#/components/schemas/DealmakerCreditAppNewVehicleInput'
      title: Vehicle
      description: The vehicle associated with the credit application. Only `NEW` vehicles are currently supported.
    DealmakerCreditAppRebatesInput:
      type: array
      title: Rebate
      description: 'Rebates applied to the credit application.


        This field can be used to include qualified rebates (i.e. selected by the customer). The `programId` is required to

        match these up with the correct rebate program.

        '
      items:
        $ref: '#/components/schemas/DealmakerCreditAppRebateInput'
    IncentiveOption:
      type: string
      title: Incentive Option
      description: The type of incentive the consumer is looking for.
      default: LOWEST_MONTHLY
      enum:
      - LARGEST_REBATE
      - LOWEST_APR
      - LOWEST_MONTHLY
    DealmakerExistsError:
      allOf:
      - $ref: '#/components/schemas/Dealmaker'
      - $ref: '#/components/schemas/DealmakerExistsErrorProperties'
    CreateDealmakerInput:
      type: object
      required:
      - applicant
      - dealer
      - referenceId
      - vehicle
      properties:
        applicant:
          type: object
          required:
          - email
          - name
          properties:
            email:
              allOf:
              - $ref: '#/components/schemas/EmailInput'
            name:
              allOf:
              - $ref: '#/components/schemas/ApplicantBaseNameInput'
            phone:
              allOf:
              - $ref: '#/components/schemas/PhoneInput'
        dealer:
          allOf:
          - $ref: '#/components/schemas/DealerCodeOnlyInput'
          - properties:
              channel:
                description: The dealer channel associated with the new loan application.
                type: string
                minLength: 1
        referenceId:
          allOf:
          - $ref: '#/components/schemas/ReferenceIdInput'
        vehicle:
          allOf:
          - $ref: '#/components/schemas/VehicleVinOnlyInput'
          - properties:
              photoUrl:
                type: string
                format: url
                example: https://example.com/my/vehicle/photo.jpg
                description: A valid URL for displaying a photo of the vehicle within the consumer experience and the AutoFi Dealer Portal. When not provided, the photo from the dealer's inventory is used instead.
    TradeInLeaseTermsSchema:
      description: Lease terms applied to the trade-in vehicle.
      type: object
      properties:
        annualMiles:
          type: integer
          example: 15000
          description: Miles a leased vehicle can be driven annually before the penalty is triggered.
          exclusiveMinimum: 0
        monthlyPayment:
          type: number
          format: float
          example: 350.45
          description: Monthly payment for leased vehicle.
          exclusiveMinimum: 0
        numRemainingPayments:
          type: integer
          example: 6
          minimum: 0
          description: Number of payments remaining on the lease.
        penaltyPerExcessMile:
          type: number
          format: float
          example: 0.25
          minimum: 0
          description: Penalty per excess mile driven above the `annualMiles` allowed by the lease.
        term:
          type: integer
          example: 24
          description: Length of lease term in months.
          exclusiveMinimum: 0
    Term:
      type: integer
      title: Term
      description: Length of term in months.
      example: 24
      exclusiveMinimum: 0
    referenceId:
      type:
      - string
      - 'null'
      title: Product Reference ID
      example: 23b605f6-2a9e-11ec-8d3d-0242ac130003
      description: Product identifier used to reference a product within a DMS.
    TaxItemsLease:
      type: object
      description: Tax items applied to estimated lease payment calculation.
      properties:
        capitalized:
          type:
          - array
          - 'null'
          description: Capitalized tax items.
          items:
            allOf:
            - $ref: '#/components/schemas/TaxItemLease'
        dueAtSigning:
          type:
          - array
          - 'null'
          description: Tax items due at signing.
          items:
            allOf:
            - $ref: '#/components/schemas/TaxItemLease'
        biweekly:
          type:
          - array
          - 'null'
          description: Bi-weekly tax items.
          items:
            allOf:
            - $ref: '#/components/schemas/TaxItemLease'
        monthly:
          type:
          - array
          - 'null'
          description: Monthly tax items.
          items:
            allOf:
            - $ref: '#/components/schemas/TaxItemLease'
    CreditOfferType:
      type: string
      title: Offer Type
      description: How the customer is financing the vehicle - `FINANCE` or `LEASE`.
      example: FINANCE
      enum:
      - FINANCE
      - LEASE
    DealmakerCreditAppBaseVehicleInput:
      type: object
      properties:
        age:
          type: string
          description: Vehicle age.
          enum:
          - NEW
        bodyType:
          type: string
          example: Fastback
          description: Vehicle body type.
        color:
          type: string
          example: blue
          description: Vehicle color.
        dealerRetailPrice:
          type: integer
          example: 30995
          description: The vehicle's price.
          exclusiveMinimum: 0
        invoice:
          type: number
          format: float
          description: The initial price for the vehicle from the manufacturer.
          example: 29850.75
          exclusiveMinimum: 0
        fuelType:
          description: Fuel type used by the vehicle engine.
          type: string
          default: ELECTRIC
          example: ELECTRIC
          enum:
          - ELECTRIC
          - GASOLINE
          - HYBRID
        make:
          type: string
          description: Vehicle make.
          example: FORD
          minLength: 1
        mileage:
          type: integer
          example: 35684
          minimum: 0
          description: Number of miles on the vehicle.
        model:
          type: string
          description: Vehicle model.
          example: MUSTANG
          minLength: 1
        modelCode:
          type: string
          title: Model Code
          description: The model code provided by the manufacturer.
          example: P8T
          minLength: 1
        msrp:
          type: number
          format: float
          minimum: 0
          example: 34950.65
          description: Manufacturer Suggested Retail Price.
        photoUrl:
          type: string
          format: url
          description: A valid URL to be used for showing the vehicle within the offer experience and customer profile page in AutoFi Dealer Portal.
          example: https://example.com/images/1.jpeg
        stockNumber:
          type: string
          description: Vehicle stock number in dealer's inventory. Displayed in customer profile page in AutoFi Dealer Portal.
          example: FCL1425
        trim:
          type: string
          title: Trim
          description: Vehicle trim level.
          example: GT
          minLength: 1
        vin:
          type: string
          pattern: ^[a-zA-Z0-9]{17}$
          description: Vehicle Identification Number. Must be 17 alphanumeric characters.
          minLength: 17
          maxLength: 17
          example: 1FATP8FFXJ5139341
        year:
          type: integer
          format: int32
          description: Vehicle year.
          minimum: 1900
          example: 2021
    TradeInSchema:
      description: Trade in common details.
      type: object
      properties:
        condition:
          allOf:
          - $ref: '#/components/schemas/TradeInConditionSchema'
        make:
          type: string
          minLength: 1
          example: FORD
          description: Trade-in vehicle make.
        mileage:
          type: integer
          example: 40000
          minimum: 0
          description: Number of miles (US) or km (Canada) on vehicle.
        model:
          type: string
          minLength: 1
          example: Mustang
          description: Trade-in vehicle model.
        series:
          type: string
          description: Trade-in vehicle series
          example: Base
        style:
          type: string
          description: Trade-in vehicle style
          example: 2D Convertible
        vin:
          type: string
          example: 1FATP8FFXJ5139341
          maxLength: 17
          minLength: 17
          pattern: ^[a-zA-Z0-9]{17}$
          description: Trade-in vehicle Identification Number. Must be 17 alphanumeric characters.
        year:
          type: integer
          example: 2018
          minimum: 1990
          description: Trade-in vehicle year.
    schemas-tax:
      type: number
      example: 1745.25
      format: float
      minimum: 0
      description: The total taxes to be applied (should not include F&I Product taxes).
    DecisionMiddlemen:
      type: string
      enum:
      - routeOne
      - dealertrack
    ProductBaseInput:
      type: object
      title: Product
      description: Product information.
      properties:
        category:
          $ref: '#/components/schemas/ProductCategory'
        name:
          type: string
          description: Product description.
          example: Extended Warranty
        price:
          $ref: '#/components/schemas/price'
        termMiles:
          type: integer
          description: Product mileage limit.
          example: 100000
        termMonths:
          type: integer
          description: Product duration.
          example: 60
    PartialBasePricingStack:
      type: object
      description: Fields in common for FINANCE and LEASE.
      properties:
        amountFinanced:
          type:
          - number
          - 'null'
          format: float
        apr:
          type:
          - number
          - 'null'
          format: float
          description: Annual percentage rate.
          example: 0.02
        buyRate:
          description: Dealer financing rate.
          type:
          - number
          - 'null'
          format: float
          example: 0.0275
        monthlyPayment:
          type:
          - number
          - 'null'
          format: float
          example: 335.34
        numberOfPayments:
          type:
          - integer
          - 'null'
          minimum: 0
          description: Number of payments to make.
          example: 35
        termMonths:
          type:
          - integer
          - 'null'
          description: Duration of the contract in months.
        totalRebates:
          type:
          - integer
          - 'null'
          description: Total rebate amount.
          example: 2499.99
        totalOfPayments:
          type:
          - number
          - 'null'
          format: float
          description: Total paid for all payments.
          example: 13736.9
        totalProducts:
          description: Total amount of all products including taxes.
          type:
          - number
          - 'null'
          format: float
          example: 115.5
    DealmakerCreditAppProductsInput:
      type: array
      title: Product
      description: Products associated with the credit application.
      items:
        $ref: '#/components/schemas/DealmakerCreditAppProductInput'
    DealmakerCreditAppNonOemRebateInput:
      allOf:
      - $ref: '#/components/schemas/NonOemRebateInput'
      properties:
        disclaimer:
          type: string
          description: Disclaimer for the rebate. Displayed as a tooltip next to each rebate line item.
          example: Rebate Disclaimer
          minLength: 1
      required:
      - amount
      - disclaimer
      - name
  

# --- truncated at 32 KB (76 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/autofi/refs/heads/main/openapi/autofi-dealmaker-api-openapi.yml