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: "

\"Experimental\"\nCreate a new Dealmaker loan application.\n

" 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: "

\"Experimental\"\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.\nNOTE: Only retail finance is currently supported. This is experimental and can change in the future.\n

" 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: '

Experimental Taxable amount.

' 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 RebateType: example: CASH description: Default is `CASH`. type: string enum: - CASH - FINANCE_RATE - LEASE_RATE FinancePricingStack: title: Finance type: object description: This fields are only applicable to `FINANCE`. allOf: - $ref: '#/components/schemas/BasePricingStack' properties: downPayment: type: - integer - 'null' description: Amount the consumer is putting down towards the vehicle. example: 3500.01 financeCharge: type: - number - 'null' format: float description: Finance charge calculated based on the `amountFinanced`, `apr` and `termMonths`. example: 345.01 taxItems: type: array description: Tax items have now been `deprecated` in favor of the standardized `appliedTaxes` field. items: type: object allOf: - $ref: '#/components/schemas/TaxItem' deprecated: true example: name: Municipal Tax price: 87.99 totalTax: 87.99 amountFinanced: description: Total amount financed for the vehicle. example: 2269.57 monthlyPayment: description: Total monthly payment. offerType: description: Type of offer. termMonths: description: Duration of the `FINANCE` contract in months. example: 48 totalTaxes: description: "Total amount of all vehicle and products taxes. \n**Notes:** For vehicle specific taxes see `appliedTaxes.amount`. \nFor product specific taxes see `selectedProducts.tax`.\n" type: - number - 'null' format: float example: 6513.67 totalFees: description: Total amount of all fees. type: - number - 'null' format: float example: 250 DealmakerCreditAppExistsError: allOf: - $ref: '#/components/schemas/DealmakerExistsErrorProperties' properties: creditApp: $ref: '#/components/schemas/DealmakerCreditApp' required: - creditApp DealmakerCreditAppApplicantInput: type: object title: Applicant description: Applicant Information. required: - email - name properties: address: type: object title: Address properties: street: type: string description: Applicant street line. example: 1234 Main St street2: type: string description: Applicant street line 2. example: Apt B city: type: string description: Applicant city of residence. example: Madison state: type: string description: Two character code for state (US). example: WI zip: type: string description: Zip code. example: 53714 email: $ref: '#/components/schemas/EmailInput' name: $ref: '#/components/schemas/ApplicantFullNameInput' phone: $ref: '#/components/schemas/PhoneInput' TaxItem: type: object properties: name: type: - string - 'null' price: type: - number - 'null' format: float totalTax: type: - number - 'null' format: float LoanApplicationData: type: object properties: afExperienceCompleted: type: - boolean - 'null' description: This flag is `true` when a customer has completed the last step in the AutoFi experience. appliedFees: description: Fees applied to the loan application anyOf: - $ref: '#/components/schemas/schemas-FinanceFees' - $ref: '#/components/schemas/LeaseFees' appliedTaxes: description: Taxes applied to the loan application anyOf: - $ref: '#/components/schemas/FinanceTaxes' - $ref: '#/components/schemas/LeaseTaxes' creditScore: type: integer minimum: 300 maximum: 999 description: Credit score. Number between 300 and 999. decisions: type: - array - 'null' items: allOf: - $ref: '#/components/schemas/Decision' loanApplicationId: type: string offerAvailable: type: - boolean - 'null' description: This flag is `true` if an offer is available to be displayed to a consumer. offerPreferences: type: object properties: annualMileage: type: - integer - 'null' example: 1 minimum: 1 description: Miles the consumer would prefer when leasing a vehicle apr: type: number format: float description: Annual percentage rate in decimals downPayment: type: integer example: 1 minimum: 0 description: Amount the consumer is putting down towards the vehicle incentiveOption: allOf: - $ref: '#/components/schemas/IncentiveOption' description: 'Default: `LOWEST_MONTHLY`' 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. requestedOfferType: allOf: - $ref: '#/components/schemas/CreditOfferType' description: How the customer is financing the vehicle - "FINANCE" or "LEASE". term: type: integer example: 1 minimum: 1 description: Length of term in months pricingStack: description: Pricing information for a loan application. Only available after the state is `ACCEPTED`. oneOf: - $ref: '#/components/schemas/FinancePricingStack' - $ref: '#/components/schemas/LeasePricingStack' referenceId: type: - string - 'null' description: Partner's unique identifier for each credit application. Same `referenceId` as was provided to AutoFi. selectedProducts: type: array description: Selected products. items: allOf: - $ref: '#/components/schemas/BaseSelectedProduct' type: object properties: monthlyPayment: type: - number - 'null' example: 1 format: float minimum: 0 description: Monthly payment over the finance term including the finance charge. state: description: '

The current state of the loan application within the decisioning flow. The various states are detailed in the state diagram below.

Loan Application State Diagram ' type: - string - 'null' enum: - ACCEPTED - APPROVED - BEGAN_APPLICATION - DECLINED - ERROR - FI_COMPLETED - PENDING - SUBMITTED tradeIn: description: Trade in information. type: object allOf: - $ref: '#/components/schemas/TradeIn' FeeName: type: string description: The name of the fee. This fee varies per application and is different from dealer fees that are constant across all applications. example: Shipping fee. ConsumerUrlSchema: type: string title: Consumer URL example: https://example.com format: uri minLength: 1 description: URL to the consumer experience. The url expires 30 days after creation. LeaseTradeInSchema: description: Lease trade-in input details type: object title: Lease required: - amount - lease - make - model - ownership - year allOf: - $ref: '#/components/schemas/TradeInSchema' properties: amount: type: number format: float example: 5000.75 description: The value of the vehicle. lease: required: - annualMiles - monthlyPayment - numRemainingPayments - penaltyPerExcessMile - term allOf: - $ref: '#/components/schemas/TradeInLeaseTermsSchema' ownership: type: string example: LEASED description: Trade-in ownership type. enum: - LEASED DealmakerCreditApp: type: object description: Dealmaker credit application information. properties: expiresAt: type: string format: date-time title: Expires At description: The date that the `url` is good until. After expiration, creating a new credit application with the same `referenceId` will generate a new `url`. loanApplicationId: type: string title: Loan Application ID description: The unique identifier for the loan application created by the request. referenceId: type: string title: Reference ID minLength: 1 example: my-reference-id url: type: string title: Consumer URL example: https://example.com format: uri minLength: 1 description: URL to the consumer experience. The url expires 30 days after creation. required: - expiresAt - loanApplicationId - referenceId - url TradeInCondition: description: Condition for the trade-in vehicle type: string enum: - EXCELLENT - FAIR - GOOD - POOR - VERY_GOOD DealmakerCreditAppOfferPreferencesInput: type: object title: Offer Preferences description: Offer Preferences for retail finance. required: - downPayment - term properties: apr: allOf: - $ref: '#/components/schemas/Apr' minimum: 0 downPayment: $ref: '#/components/schemas/DownPayment' incentiveOption: $ref: '#/components/schemas/IncentiveOption' isSubvented: $ref: '#/components/schemas/IsSubvented' term: $ref: '#/components/schemas/Term' pricePlan: $ref: '#/components/schemas/PricePlan' DealmakerExistsErrorProperties: type: object properties: code: allOf: - $ref: '#/components/schemas/code' example: 409 message: allOf: - $ref: '#/components/schemas/message' example: 'Dealmaker already exists for referenceId: my-reference-id' required: - code - message TaxLineItems: type: array description: '

ExperimentalThe breakdown of the tax amount by jurisdiction. Each tax line item contains the tax rate and corresponding amount for each jurisdiction or tax authority.

' items: properties: jurisdiction: type: object description: The jurisdiction responsible for the tax line item. properties: type: type: string example: STATE description: Type of jurisdiction. enum: - STATE - CITY - COUNTY - DISTRICT name: type: string example: COLORADO description: Name of the jurisdiction. imposition: type: string example: General Sales and Use Tax description: Name of the tax imposition. tax: type: object description: Tax rate and amount calculated for the jurisdiction. properties: rate: type: number format: float minimum: 0 maximum: 1 example: 0.029 description: Tax rate. amount: type: number format: float minimum: 0 example: 995.22 description: Tax amount. AppliedLeasePricingStackFigures: properties: appliedToCap: description: Breakdown of capitalized costs. properties: downPayment: description: Cash applied to the capitalized costs. example: 0 format: float type: - number - 'null' rebates: description: Rebates applied to the capitalized costs. example: 0 format: float type: - number - 'null' tradeIn: description: Trade-in applied to the capitalized costs. example: 0 format: float type: - number - 'null' type: object appliedToSigning: description: Breakdown of costs applied at signing. properties: downPayment: description: Cash applied to signing costs. example: 2000 format: float type: - number - 'null' rebates: description: Rebates applied to signing costs. example: 2499.99 format: float type: - number - 'null' tradeIn: description: Trade-in applied to signing costs. example: 3600 format: int64 type: - number - 'null' type: object ProductCategory: type: string title: Product Category description: Product category. example: VSC enum: - GAP_WAIVER - OTHER - VSC ReferenceIdInput: allOf: - $ref: '#/components/schemas/ReferenceIdBase' description: Partner's unique identifier for each Dealmaker loan application. An error is returned when a loan application previously created for the given `referenceId` is found. RebateBaseInput: type: object properties: amount: type: number example: 2499.99 format: float description: The rebate amount. exclusiveMinimum: 0 disclaimer: type: string description: Disclaimer for the rebate. Displayed as a tooltip next to each rebate line item. example: Rebate Disclaimer isDiscount: type: boolean default: false description: When `true` the `amount` is included in `discounts` instead of as a rebate line item. This can also affect the tax calculation (unless tax is submitted). isQualifiedOffer: type: boolean default: false description: Indicates that the rebate is only available under certain conditions. For example special rebates for students or military. name: type: string minLength: 1 description: Description of the rebate to be shown to the customer. example: VA Rebate PricingStackRebateOutput: type: object title: Rebate properties: amount: type: number format: float example: 2499.99 disclaimer: type: string description: Disclaimer for the rebate. example: Veterans only Rebate expiryDate: type: - string - 'null' format: date description: Rebate expiry date. example: 12-01-2024 isDiscount: type: boolean default: false description: When `true` the `amount` is included in `discounts` instead of as a rebate line item. This can also affect the tax calculation. example: true isPrivateOffer: type: boolean default: false description: Indicates that the rebate is a private offer for the applicant. example: false isQualifiedOffer: type: boolean default: false description: Indicates that the rebate is only available under certain conditions. For example special rebates for students or military. example: true name: type: string description: Description of the rebate to be shown to the customer. example: VA Rebate programId: type: string description: Unique identifier for the rebate program. example: VA_1234 type: $ref: '#/components/schemas/RebateType' DealmakerCreditAppNonOemRebatesInput: type: array title: Non OEM Rebate description: 'Non OEM Rebates applied to the credit application. This field can be used to add special rebates that are not available from standard rebate providers. For example, government rebates for electric vehicles are often not available from standard rebate providers. Additionally, the `taxRule` can be used to specify how the rebate should be applied with respect to tax. ' items: $ref: '#/components/schemas/DealmakerCreditAppNonOemRebateInput' example: - amount: 7500 disclaimer: Only applicable at time of purchase for registered dealers. isDiscount: false isPrivateOffer: false isQualifiedOffer: false name: Federal EV Tax Credit taxRule: DEDUCT_AFTER_TAX FeeAmount: type: number example: 249.99 format: float minimum: 0 price: type: number example: 100 format: float minimum: 0 description: Pretax price. SimulatedDecisionState: type: string title: Decision State description: The lender response to return for the simulated decision example: DECLINED enum: - APPROVED - DECLINED - PENDING - APPROVED_WITH_COUNTEROFFER - CONDITIONAL - CONDITIONAL_WITH_COUNTEROFFER TaxPlacement: type: string enum: - BIWEEKLY - CAPITALIZED - DUE_AT_SIGNING - MONTHLY description: '`CAPITALIZED` means that the tax will be added to the Gross Capitalization Cost of the lease. `DUE_AT_SIGNING` means that the tax will be added to the Due at Signing Calculation and thus deducted from the down payment. `BIWEEKLY` and `MONTHLY` taxes are taxes applied to the biweekly or monthly payments.' FeeCode: example: SHIPPING_FEE description: 'Default is `OTHER`. Note: The `SHIPPING_FEE` is added to the vehicle''s sales price when submitted to the middleman.' type: string enum: - DOC_FEE - OTHER - SHIPPING_FEE - TIRE_FEE - TITLE_REG ReferenceIdBase: type: string title: Reference ID minLength: 1 example: my-reference-id ValidationErrorSchema: type: object properties: code: $ref: '#/components/schemas/code' message: $ref: '#/components/schemas/message' errors: $ref: '#/components/schemas/ValidationError' DealmakerCreditAppNewVehicleInput: allOf: - $ref: '#/components/schemas/DealmakerCreditAppBaseVehicleInput' properties: age: type: string description: Vehicle age. enum: - NEW required: - age - dealerRetailPrice - invoice - make - model - modelCode - msrp - trim - vin - year tax: type: number example: 15.5 format: float minimum: 0 description: "Tax amount for the product. Defaults to 0. \n**Notes:** Does not include vehicle taxes. \n For vehicle specific taxes see `appliedTaxes.amount`. \n For Total taxes see `pricingStack.totalTaxes`.\n" Apr: type: number format: float example: 0.02 description: Annual percentage rate in decimals e.g. if the apr is 2% this should be 0.02 message: type: string description: HTTP status description. DownPayment: type: integer title: Down Payment description: Amount the consumer is putting down towards the vehicle. example: 3000 minimum: 0 ValidationError: description: "Array of validation input errors found in the payload:\n - Required field not provided\n - Field can not be null\n - Field must be an object\n - Field is not a defined field\n - Field is invalid\n" allOf: - $ref: '#/components/schemas/errors' ApplicantBaseNameInput: title: Name description: Names must start with one or more alphanumeric characters, and may be followed by one special character as long as that special character is followed by one or more alphanumeric characters. A name may also end with a period. type: object required: - first - last properties: first: description: First name example: Mrs. Jamie-Lynn type: string minLength: 1 pattern: ^[a-zA-ZÀ-ÿ0-9#]+(([',. -]+[a-zA-ZÀ-ÿ0-9 ])?[a-zA-ZÀ-ÿ0-9 .-/#’&]*)*$ last: description: Last name example: O'Rourke-Van Winkle type: string minLength: 1 pattern: ^[a-zA-ZÀ-ÿ0-9#]+(([',. -]+[a-zA-ZÀ-ÿ0-9 ])?[a-zA-ZÀ-ÿ0-9 .-/#’&]*)*$ DealmakerCreditAppRebateInput: allOf: - $ref: '#/components/schemas/RebateBaseInput' properties: disclaimer: type: string description: Disclaimer for the rebate. Displayed as a tooltip next to each rebate line item. example: Rebate Disclaimer minLength: 1 programId: type: string description: Unique identifier for the rebate program. OEM rebates will require this field. example: VA_1234 minLength: 1 required: - amount - disclaimer - name - programId EmailInput: type: string example: fake@example.com format: email minLength: 1 title: Email description: 'An email is an ASCII string separated into two parts by the @ symbol (local_part@domain). The local_part may contain uppercase (A-Z) and lowercase (a-z) ASCII characters, digits (0-9), special characters (+, -, _, !, #, $, %, &, , *, /, =, ?, ^, `, {, |, }, ~) and the . character. The domain part of an email may contain letters, digits, hyphens and periods. The top level domain (TLD) portion of the domain must also be published by IANA to be considered valid. See https://tools.ietf.org/html/rfc2822#section-3.4.1 for more information.' FeeCodeInput: example: SHIPPING_FEE description: 'Default is `OTHER`. Note: The `SHIPPING_FEE` is added to the vehicle''s sales price when submitted to the middleman.' type: string enum: - DOC_FEE - OTHER - SHIPPING_FEE - TIRE_FEE - TITLE_REG SimulateEnvironment: type: string title: Environment description: Use `LENDER_TEST` to test End to End with R1/DT Lender Test Environment. Use `AUTOFI_TEST` to test with the AutoFi Test Environment (requires an array of `decisions` to be simulated). Defaults to `AUTOFI_TEST`. example: AUTOFI_TEST enum: - LENDER_TEST - AUTOFI_TEST DealmakerCreditAppTaxInput: type: object title: Tax description: Tax information provided by the partner. If not provided, AutoFi's tax engine will be used for tax calculations. required: - total properties: total: allOf: - $ref: '#/components/schemas/schemas-tax' title: Total Tax DealmakerCreditAppFinanceFeeInput: type: object title: Fee description: Fee information. required: - amount - code - name properties: amount: type: number example: 249.99 format: float minimum: 0 description: Fee amount paid by the consumer. code: allOf: - $ref: '#/components/schemas/FeeCodeInput' description: 'Indicates how the fee should be applied to the pricing stack. Note: The `SHIPPING_FEE` is added to the vehicle''s sales price when submitted to the middleman.' name: type: string minLength: 1 description: Fee name or description displayed in the AutoFi consumer experience. FeePlacement: type: string enum: - GROSS_CAP - DUE_AT_SIGNING description: '`GROSS_CAP` means that the fee will be added to the Gross Capitalization Cost of the lease. `DUE_AT_SIGNING` means that the fee will be added to the Due at Signing Calculation and thus deducted from the down payment.' NonOemRebateInput: allOf: - $ref: '#/components/schemas/RebateBaseInput' properties: isPrivateOffer: type: boolean default: false description: Indicates that the rebate is a private offer for the applicant. taxRule: type: - string - 'null' default: null enum: - DEDUCT_AFTER_TAX - DEDUCT_BEFORE_TAX - null example: DEDUCT_AFTER_TAX description: 'Indicates how the rebate should be applied with respect to the tax calculation. When `null` or not provided, the default tax behavior is applied for the given jurisdiction. `DEDUCT_AFTER_TAX`: The rebate amount is deducted **_after_** tax is calculated. `DEDUCT_BEFORE_TAX`: The rebate amount is deducted **_before_** tax is calculated. ' SimulatedDecision: title: Simulated Decision properties: decision: $ref: '#/components/schemas/SimulatedDecisionState' delay: type: integer example: 75000 description: Specify how long it should take for this simulated decision to return in milliseconds. lender: type: string example: CHASE description: "The lender that decision should be simulated for.\nThese are the lender codes available to use:\n - ALLY \n - BOFA \n - CHASE \n - EXETER \n - FIFS \n - FMCC \n - GLS \n - GMFL \n - HBAN \n - LAFSNC \n - RBC \n - SANT \n - SCF \n - SETF \n - TRICOR \n - VROOM \n - WEST\n" middleman: allOf: - $ref: '#/components/schemas/DecisionMiddlemen' description: The middleman that the decision should be simulated from. required: - decision - lender code: type: integer description: HTTP status code. LeaseFees: type: array title: Lease items: properties: amount: $ref: '#/components/schemas/FeeAmount' code: $ref: '#/components/schemas/FeeCode' feePlacement: $ref: '#/components/schemas/FeePlacement' name: $ref: '#/components/schemas/FeeName' VehicleVinOnlyInput: type: object title: VIN Only description: Vehicle Information. required: - vin properties: vin: allOf: - $ref: '#/components/schemas/VinBaseSchema' - example: 1FATP8FFXJ5139341 description: Vehicle Identification Number. Must be 17 alphanumeric characters. The vehicle must exist in the dealer's inventory. Dealmaker: type: object required: - referenceId - url properties: referenceId: $ref: '#/components/schemas/ReferenceIdSchema' url: $ref: '#/components/schemas/ConsumerUrlSchema' schemas-FinanceFees: type: array title: Finance items: properties: amount: $ref: '#/components/schemas/FeeAmount' code: $ref: '#/components/schemas/FeeCode' name: $ref: '#/components/schemas/FeeName' CreateDealmakerCreditAppInput: type: object required: - applicant - dealer - offerPreferences - referenceId - vehicle properties: applicant: $ref: '#/components/schemas/DealmakerCreditAppApplicantInput' callbackUrl: type: string example: https://my-domain.com/customers/1/updateCreditApp format: uri minLength: 1 description: A valid URL to receive responses when there is a change in state. dealer: $ref: '#/components/schemas/DealerCodeOnlyInput' fees: $ref: '#/components/schemas/DealmakerCreditAppFinanceFeesInput' offerPreferences: $ref: '#/components/schemas/DealmakerCreditAppOfferPreferencesInput' products: $ref: '#/components/schemas/DealmakerCreditAppProductsInput' rebates: $ref: '#/components/schemas/DealmakerCreditAppRebatesInput' nonOemRebates: $ref: '#/components/schemas/DealmakerCreditAppNonOemRebatesInput' referenceId: $ref: '#/components/schemas/DealmakerCreditAppReferenceIdInput' simulate: $ref: '#/components/schemas/SimulateInput' tax: $ref: '#/components/schemas/DealmakerCreditAppTaxInput' tradeIn: $ref: '#/components/schemas/TradeInInputSchema' vehicle: $ref: '#/components/schemas/DealmakerCreditAppVehicleInput' FinanceTradeInSchema: description: Finance trade-in input details title: Finance type: object required: - amount - make - model - ownership - payoff - year allOf: - $ref: '#/components/schemas/TradeInSchema' properties: amount: type: number format: float example: 5000.75 description: The difference between the value of the vehicle and payoff amount i.e. `bookValue` - `payoff`. ownership: type: string example: FINANCED description: Trade-in ownership type. enum: - FINANCED payoff: type: number example: 3500.75 format: float maximum: 999999 minimum: 0 description: The payoff amount the customer needs to pay to satisfy the terms of their vehicle loan. BasePricingStack: type: object description: Fields in common for FINANCE and LEASE. allOf: - $ref: '#/components/schemas/PartialBasePricingStack' properties: dealerDiscountFee: type: - number - 'null' format: float description: Fee charged by the lender to the dealer for underwriting certain loan applications. example: 20.01 lenderName: type: - string - 'null' description: Lender name for the accepted offer. example: BoA rebates: type: array description: 'List of applied rebates. Note: they will only be returned after an offer has been selected.' items: $ref: '#/components/schemas/PricingStackRebateOutput' offerType: type: string enum: - FINANCE - LEASE - CASH tradeInAmount: type: number format: float example: 5000.75 description: The difference between the value of the trade-in vehicle and its payoff amount. Will always be 0 if the `isApplied` field of the trade-in vehicle is `false`. errors: type: array items: properties: description: type: string description: Error description. TradeIn: type: object properties: amount: type: number format: float example: 5000.75 description: The difference between the value of the vehicle and payoff amount i.e. `bookValue` - `payoff`. bookValue: type: number format: float description: The estimated market value of the vehicle. deprecated: true class: type: string condition: allOf: - $ref: '#/components/schemas/TradeInCondition' financeCompany: description: The finance company (lienholder) on the trade-in. type: object properties: name: type: string example: FMCC description: Name of the finance company. isApplied: type: boolean example: true description: Indicates whether or not the trade-in is applied to the loan application. leaseAnnualMiles: type: integer example: 15000 minimum: 1 description: Miles a leased vehicle can be driven annually before the penalty is triggered. leaseMonthlyPayment: type: number format: float example: 350.45 description: Monthly payment for leased vehicle. leaseNumRemainingPayments: type: integer example: 6 minimum: 0 description: How many months are left until the lease terms are fulfilled. leasePenaltyPerExcessMile: type: number format: float example: 1.5 description: Penalty for driving more than leaseAnnualMiles per year. Calculated on a per mile basis. leaseTerm: type: integer example: 24 minimum: 1 description: Length of lease term in months. 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. ownership: type: string description: Current status of ownership, eg. `"owned"`, `"financed"` payoff: type: number format: float example: 3500.75 description: The payoff amount the customer needs to pay to satisfy the terms of their vehicle loan. series: type: string style: type: string terminatingLease: type: boolean description: Determines whether the trade-in is a leased vehicle. 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. LeasePricingStack: type: object title: Lease description: This fields are only applicable to `LEASE`. allOf: - $ref: '#/components/schemas/AppliedLeasePricingStackFigures' - $ref: '#/components/schemas/BasePricingStack' example: amountFinanced: 23967.14 annualMileage: 12000 apr: 6.25 buyRate: 3.875 cashAppliedToCap: 4500 capReduction: 7018.44 dealerDiscountFee: 20.01 depreciation: 17125.97 grossCap: 46127.96 leaseCharge: 6313.76 lenderName: Bank of AutoFi moneyFactor: 0 monthlyPayment: 389.76 netCap: 39109.52 numberOfPayments: 36 offerType: LEASE rebates: {} residualPercentage: 0.51 residualValue: 21983.55 totalDueAtSigning: 2000 taxItems: {} termMonths: 48 totalOfPayments: 606.61 totalProducts: 606.61 totalRebates: 123.45 totalTaxes: 367.61 properties: annualMileage: description: Miles or km associated with the offer. example: 12000 type: - integer - 'null' cashAppliedToCap: description: Cash Applied to the Capitalized Cost. type: - number - 'null' example: 4500 format: float capReduction: description: Capitalized Cost Reduction. The sum of the cash, rebates and trade in. This will be subtracted from the Gross Capitalization Cost. type: - number - 'null' example: 7018.44 format: float depreciation: description: The amount of the vehicle will depreciate over the life of the term. type: - number - 'null' example: 17125.97 format: float grossCap: description: Gross Capitalization Cost. The total amount that will be applied to the loan. format: float example: 46127.96 type: - number - 'null' leaseCharge: description: The lease charge is an interest applied to the total financing of the vehicle. type: - number - 'null' example: 6313.76 format: float moneyFactor: description: The money factor is the financing charge a person will pay on a lease. type: - number - 'null' example: 0 format: float netCap: description: Net Capitalization Cost. type: - number - 'null' example: 39109.52 format: float residualPercentage: description: Value of the vehicle at the end of the term expressed as a percentage of the sale price. type: - number - 'null' example: 0.51 format: float residualValue: description: Value of the vehicle at the end of the term. type: - number - 'null' example: 21983.55 format: float taxItems: deprecated: true description: Tax items have now been `deprecated` in favor of the standardized `appliedTaxes` field. type: object $ref: '#/components/schemas/TaxItemsLease' totalCapitalizedFees: description: Total amount of applied fees with a fee placement of `GROSS_CAP`. type: - number - 'null' example: 2000 format: float totalDueAtSigning: description: Total amount of fees and/or charges that will be due upon signing. type: - number - 'null' example: 2000 format: float totalSigningFees: description: Total amount of applied fees with a fee placement of `DUE_AT_SIGNING`. type: - number - 'null' example: 2000 format: float totalTaxes: type: - number - 'null' format: float deprecated: true description: '`totalTaxes` has been `deprecated` for LEASE applications' example: 367.61 TradeInConditionSchema: description: Condition for the trade-in vehicle type: string enum: - EXCELLENT - FAIR - GOOD - POOR - VERY_GOOD SimulateInput: type: object title: Simulate description: 'Request a test response from one or more lenders. When omitted, the loan application is handled according to the default rules defined for the environment. In uat, the AutoFi Test Environment is used and approvals are returned for all lenders. In production, the loan application is submitted to R1/DT for `live` decisioning. ' properties: environment: $ref: '#/components/schemas/SimulateEnvironment' decisions: title: Simulated Decision description: The decisions to be simulated. items: $ref: '#/components/schemas/SimulatedDecision' PricePlan: type: string description: This field can be used to denote a discount pricing program. Some manufacturers may allow eligible employees and their family members additional savings on the purchase of new vehicles. example: X ReferenceIdSchema: allOf: - $ref: '#/components/schemas/ReferenceIdBase' description: Partner's unique identifier for each Dealmaker loan application. PhoneInput: type: string example: '5554443333' maxLength: 10 minLength: 10 pattern: ^[2-9][0-9]{9}$ description: A valid 10 digit phone number. responses: CreateDealmakerCreditApp400Response: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ValidationErrorSchema' example: - code: 400 message: Bad Request errors: - description: Field "applicant.name.first" can not be null. - description: Field "applicant.name.last" can not be null. - description: 'Field "applicant.phone" is invalid: Must be a valid 10 digit phone number.' - description: 'Field "applicant.email" is invalid: Email cannot represent an invalid email address value: invalid@mail@org.' - description: Field "dealer.code" can not be null. - description: 'Dealer not found using code: AAAAA' - description: 'Vehicle not found using dealer code: ABCD and vin: MAJ6S3JL9MC396799' CreateDealmakerCreditAppResponse: description: Dealmaker credit application created successfully. content: application/json: schema: $ref: '#/components/schemas/DealmakerCreditApp' CreateDealmakerCreditApp409Response: description: Dealmaker Credit Application Exists content: application/json: schema: $ref: '#/components/schemas/DealmakerCreditAppExistsError' CreateDealmakerResponse: description: Dealmaker loan application created successfully. content: application/json: schema: $ref: '#/components/schemas/Dealmaker' CreateDealmaker409Response: description: Dealmaker Exists content: application/json: schema: $ref: '#/components/schemas/DealmakerExistsError' example: - code: 409 message: 'Dealmaker already exists for referenceId: my-reference-id' referenceId: my-reference-id url: https://example.com CreateDealmaker400Response: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ValidationErrorSchema' example: - code: 400 message: Bad Request errors: - description: Field "applicant.name.first" can not be null. - description: Field "applicant.name.last" can not be null. - description: 'Field "applicant.phone" is invalid: Must be a valid 10 digit phone number.' - description: 'Field "applicant.email" is invalid: Email cannot represent an invalid email address value: invalid@mail@org.' - description: Field "dealer.code" can not be null. - description: 'Dealer not found using code: AAAAA' - description: 'Vehicle not found using dealer code: ABCD and vin: MAJ6S3JL9MC396799' requestBodies: CreateDealmakerCreditAppBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateDealmakerCreditAppInput' CreateDealmakerBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateDealmakerInput' securitySchemes: bearerAuth: description: 'Get access to data while protecting your account credentials. ' type: http scheme: bearer bearerFormat: Bearer {token}