asyncapi: 3.0.0 info: title: Webhook API version: 1.0.0 description: CreditApp async webhook api. For the latest version please visit https://api.creditapp.ca/. channels: integrationEnabled: address: "/integration-enabled" messages: integrationEnabledMessage: $ref: "#/components/messages/integrationEnabledMessage" applicationBooked: address: "/application-booked" messages: applicationBookedMessage: $ref: "#/components/messages/applicationBookedMessage" applicationApproved: address: "/application-approved" messages: applicationApprovedMessage: $ref: "#/components/messages/applicationApprovedMessage" applicationConditionallyApproved: address: "/application-conditionally-approved" messages: applicationConditionallyApprovedMessage: $ref: "#/components/messages/applicationConditionallyApprovedMessage" documentsIncomplete: address: "/documents-incomplete" messages: documentsIncompleteMessage: $ref: "#/components/messages/documentsIncompleteMessage" awaitingDecision: address: "/awaiting-decision" messages: awaitingDecisionMessage: $ref: "#/components/messages/awaitingDecisionMessage" pendingBanking: address: "/pending-banking" messages: pendingBankingMessage: $ref: "#/components/messages/pendingBankingMessage" applicationDeclined: address: "/application-declined" messages: applicationDeclinedMessage: $ref: "#/components/messages/applicationDeclinedMessage" applicationExported: address: "/application-exported" messages: applicationExportedMessage: $ref: "#/components/messages/applicationExportedMessage" operations: sendIntegrationEnabled: action: receive channel: $ref: "#/channels/integrationEnabled" bindings: http: method: POST messages: - $ref: "#/channels/integrationEnabled/messages/integrationEnabledMessage" sendApplicationBooked: action: receive channel: $ref: "#/channels/applicationBooked" bindings: http: method: POST messages: - $ref: "#/channels/applicationBooked/messages/applicationBookedMessage" sendApplicationApproved: action: receive channel: $ref: "#/channels/applicationApproved" bindings: http: method: POST messages: - $ref: "#/channels/applicationApproved/messages/applicationApprovedMessage" sendApplicationConditionallyApproved: action: receive channel: $ref: "#/channels/applicationConditionallyApproved" bindings: http: method: POST messages: - $ref: "#/channels/applicationConditionallyApproved/messages/applicationConditionallyApprovedMessage" sendDocumentsIncomplete: action: receive channel: $ref: "#/channels/documentsIncomplete" bindings: http: method: POST messages: - $ref: "#/channels/documentsIncomplete/messages/documentsIncompleteMessage" sendAwaitingDecision: action: receive channel: $ref: "#/channels/awaitingDecision" bindings: http: method: POST messages: - $ref: "#/channels/awaitingDecision/messages/awaitingDecisionMessage" sendPendingBanking: action: receive channel: $ref: "#/channels/pendingBanking" bindings: http: method: POST messages: - $ref: "#/channels/pendingBanking/messages/pendingBankingMessage" sendApplicationDeclined: action: receive channel: $ref: "#/channels/applicationDeclined" bindings: http: method: POST messages: - $ref: "#/channels/applicationDeclined/messages/applicationDeclinedMessage" sendApplicationExported: action: receive channel: $ref: "#/channels/applicationExported" bindings: http: method: POST messages: - $ref: "#/channels/applicationExported/messages/applicationExportedMessage" components: messages: integrationEnabledMessage: summary: This message is triggered when an integration is enabled by a retailer. payload: schemaFormat: application/schema+yaml;version=draft-07 schema: type: object properties: retailerId: type: string format: uuid description: Unique identifier for the retailer. retailerName: type: string description: The name of the retailer that enabled the integration. configJson: type: object description: A JSON object containing the result of the configuration for the integration. required: - retailerId - retailerName bindings: http: headers: type: object properties: X-INTEGRATION-SIGNATURE: type: string description: HMAC signature for verifying the request authenticity. applicationBookedMessage: summary: This message is triggered when an application is booked. payload: schemaFormat: application/schema+yaml;version=draft-07 schema: type: object properties: retailerId: type: string format: uuid description: Unique identifier for the retailer. status: enum: - "BOOKED" description: Status of the application. creditorId: type: string format: uuid description: Unique identifier for the creditor. applicationId: type: string format: uuid description: Unique identifier for the application. conditions: type: string description: Some requested item. required: - retailerId - status - creditorId - applicationId bindings: http: headers: type: object properties: X-CREDIT-APP-SIGNATURE: type: string description: HMAC signature for verifying the request authenticity. applicationApprovedMessage: summary: This message is triggered when an application is approved. payload: schemaFormat: application/schema+yaml;version=draft-07 schema: type: object properties: retailerId: type: string format: uuid description: Unique identifier for the retailer. status: enum: - "APPROVED" description: Status of the application. creditorId: type: string format: uuid description: Unique identifier for the creditor. applicationId: type: string format: uuid description: Unique identifier for the application. conditions: type: string description: Some requested item. firstPaymentDate: type: string format: date description: Date of the first payment. frequency: type: string enum: - "WEEKLY" - "BI-WEEKLY" - "SEMI-MONTHLY" - "MONTHLY" description: Frequency of payments. interestRate: type: number description: Interest rate of the approved loan. approvedPayment: type: object properties: amount: type: number description: Amount of the approved payment. currency: type: string enum: - "CAD" description: Currency of the approved payment. rateReduction: type: number description: Rate reduction applied. termStretch: type: integer description: Number of months the term is stretched. maxPayment: type: object properties: amount: type: number description: Maximum payment amount. currency: type: string enum: - "CAD" description: Currency of the maximum payment. required: - retailerId - status - creditorId - applicationId - firstPaymentDate - frequency - interestRate bindings: http: headers: type: object properties: X-CREDIT-APP-SIGNATURE: type: string description: HMAC signature for verifying the request authenticity. applicationConditionallyApprovedMessage: summary: This message is triggered when an application is conditionally approved. payload: schemaFormat: application/schema+yaml;version=draft-07 schema: type: object properties: retailerId: type: string format: uuid description: Unique identifier for the retailer. status: enum: - "CONDITIONALLY_APPROVED" description: Status of the application. creditorId: type: string format: uuid description: Unique identifier for the creditor. applicationId: type: string format: uuid description: Unique identifier for the application. conditions: type: string description: The conditions of the conditionally approved application. firstPaymentDate: type: string format: date description: Date of the first payment. frequency: type: string enum: - "WEEKLY" - "BI-WEEKLY" - "SEMI-MONTHLY" - "MONTHLY" description: Frequency of the application. interestRate: type: number description: Interest rate of the application. approvedPayment: type: object properties: amount: type: number description: Amount of the approved payment. currency: type: string enum: - "CAD" description: Currency of the approved payment. rateReduction: type: number description: Rate reduction of the application. termStretch: type: integer description: Number of months the term is stretched. maxPayment: type: object properties: amount: type: number description: Maximum payment amount. currency: type: string enum: - "CAD" description: Currency of the maximum payment. required: - retailerId - status - creditorId - applicationId - firstPaymentDate - frequency - interestRate bindings: http: headers: type: object properties: X-CREDIT-APP-SIGNATURE: type: string description: HMAC signature for verifying the request authenticity. documentsIncompleteMessage: summary: This message is triggered when an application is marked incomplete. payload: schemaFormat: application/schema+yaml;version=draft-07 schema: type: object properties: retailerId: type: string format: uuid description: Unique identifier for the retailer. status: enum: - "INCOMPLETE" description: Status of the application. creditorId: type: string format: uuid description: Unique identifier for the creditor. applicationId: type: string format: uuid description: Unique identifier for the application. conditions: type: string description: The conditions of the application. firstPaymentDate: type: string format: date description: Date of the first payment. frequency: type: string enum: - "WEEKLY" - "BI-WEEKLY" - "SEMI-MONTHLY" - "MONTHLY" description: Frequency of the application. interestRate: type: number description: Interest rate of the application. approvedPayment: type: object properties: amount: type: number description: Amount of the approved payment. currency: type: string enum: - "CAD" description: Currency of the approved payment. rateReduction: type: number description: Rate reduction of the application. termStretch: type: integer description: Number of months the term is stretched. maxPayment: type: object properties: amount: type: number description: Maximum payment amount. currency: type: string enum: - "CAD" description: Currency of the maximum payment. required: - retailerId - status - creditorId - applicationId - firstPaymentDate - frequency - interestRate bindings: http: headers: type: object properties: X-CREDIT-APP-SIGNATURE: type: string description: HMAC signature for verifying the request authenticity. awaitingDecisionMessage: summary: This message is triggered when an application is awaiting a decision. payload: schemaFormat: application/schema+yaml;version=draft-07 schema: type: object properties: retailerId: type: string format: uuid description: Unique identifier for the retailer. status: enum: - "AWAITING_DECISION" description: Status of the application. creditorId: type: string format: uuid description: Unique identifier for the creditor. applicationId: type: string format: uuid description: Unique identifier for the application. conditions: type: string description: The conditions of the application. required: - retailerId - status - creditorId - applicationId bindings: http: headers: type: object properties: X-CREDIT-APP-SIGNATURE: type: string description: HMAC signature for verifying the request authenticity. pendingBankingMessage: summary: This message is triggered when an application is pending bank connection. payload: schemaFormat: application/schema+yaml;version=draft-07 schema: type: object properties: retailerId: type: string format: uuid description: Unique identifier for the retailer. status: enum: - "PENDING_BANK_CONNECTION" description: Status of the application. creditorId: type: string format: uuid description: Unique identifier for the creditor. applicationId: type: string format: uuid description: Unique identifier for the application. conditions: type: string description: The conditions of the application. required: - retailerId - status - creditorId - applicationId bindings: http: headers: type: object properties: X-CREDIT-APP-SIGNATURE: type: string description: HMAC signature for verifying the request authenticity. applicationDeclinedMessage: summary: This message is triggered when an application is declined. payload: schemaFormat: application/schema+yaml;version=draft-07 schema: type: object properties: retailerId: type: string format: uuid description: Unique identifier for the retailer. status: enum: - "DECLINED" description: Status of the application. creditorId: type: string format: uuid description: Unique identifier for the creditor. applicationId: type: string format: uuid description: Unique identifier for the application. conditions: type: string description: The conditions of the application. required: - retailerId - status - creditorId - applicationId bindings: http: headers: type: object properties: X-CREDIT-APP-SIGNATURE: type: string description: HMAC signature for verifying the request authenticity. For more info on useage please see https://api.creditapp.ca/guides/Webhooks/Webhook%20Authentication applicationExportedMessage: summary: This message is triggered when an application is exported by a finance manager to an external integration. payload: schemaFormat: application/schema+yaml;version=draft-07 schema: type: object properties: retailerId: type: string format: uuid description: Unique identifier for the retailer. applicationId: type: string format: uuid description: Unique identifier for the application. creditorId: type: string format: uuid description: Unique identifier for the creditor. primaryApplicant: type: object properties: firstName: type: string lastName: type: string sin: type: string nullable: true dateOfBirth: type: string format: date phoneNumber: type: string email: type: string format: email addressHistory: type: array items: type: object properties: addressType: type: string apartmentSuite: type: string city: type: string direction: type: string enum: - "N" - NE - E - SE - S - SW - W - NW id: type: string format: uuid monthlyRentOrMortgage: type: object properties: amount: type: number currency: type: string monthsAtAddress: type: integer pOBoxNumber: type: string postalCode: type: string province: type: string enum: - AB - BC - MB - NB - NL - NS - NT - NU - "ON" - PE - QC - SK - YT residenceType: type: string enum: - RENT - OWN_FREE_AND_CLEAR - OWN_WITH_MORTGAGE - OWN_MOBILE_HOME - RESERVE_HOUSING - WITH_PARENTS - OTHER searchAddress: type: string streetName: type: string streetNo: type: string streetType: type: string yearsAtAddress: type: integer employmentHistory: type: array items: type: object properties: additionalIncomeSources: type: array items: type: string enum: - CAR_ALLOWANCE - CHILD_SUPPORT - DISABILITY_PAYMENTS - INVESTMENT_INCOME - PENSIONS - RENTAL_INCOME - WORKERS_COMPENSATION - OTHER apartmentSuite: type: string city: type: string direction: type: string employerName: type: string employmentPhone: type: string frequency: type: string grossIncome: type: object properties: amount: type: number currency: type: string id: type: string format: uuid monthsWorked: type: integer occupation: type: string postalCode: type: string province: type: string status: type: string enum: - FULL_TIME - FULL_TIME_PROBATION - PART_TIME - PART_TIME_CASUAL - RETIRED - SEASONAL_SUMMER - SEASONAL_WINTER - SELF_EMPLOYED - UNEMPLOYED streetName: type: string streetNo: type: string streetType: type: string type: type: string enum: - AT_HOME - EXECUTIVE - LABOURER - MANAGEMENT - OFFICE_STAFF - OTHER - PRODUCTION - PROFESSIONAL - RETIRED - SALES - SELF_EMPLOYED - SERVICE - STUDENT - TRADES - UNEMPLOYED yearsWorked: type: integer relationship: type: string enum: - COMMON_LAW - EMPLOYER - FRIEND - IN_LAW - OTHER - PARENT - SIBLING - SPOUSE coApplicant: type: object properties: firstName: type: string lastName: type: string sin: type: string nullable: true dateOfBirth: type: string format: date phoneNumber: type: string email: type: string format: email addressHistory: type: array items: type: object properties: addressType: type: string apartmentSuite: type: string city: type: string direction: type: string enum: - "N" - NE - E - SE - S - SW - W - NW id: type: string format: uuid monthlyRentOrMortgage: type: object properties: amount: type: number currency: type: string monthsAtAddress: type: integer pOBoxNumber: type: string postalCode: type: string province: type: string enum: - AB - BC - MB - NB - NL - NS - NT - NU - "ON" - PE - QC - SK - YT residenceType: type: string enum: - RENT - OWN_FREE_AND_CLEAR - OWN_WITH_MORTGAGE - OWN_MOBILE_HOME - RESERVE_HOUSING - WITH_PARENTS - OTHER searchAddress: type: string streetName: type: string streetNo: type: string streetType: type: string yearsAtAddress: type: integer employmentHistory: type: array items: type: object properties: additionalIncomeSources: type: array items: type: string enum: - CAR_ALLOWANCE - CHILD_SUPPORT - DISABILITY_PAYMENTS - INVESTMENT_INCOME - PENSIONS - RENTAL_INCOME - WORKERS_COMPENSATION - OTHER apartmentSuite: type: string city: type: string direction: type: string employerName: type: string employmentPhone: type: string frequency: type: string grossIncome: type: object properties: amount: type: number currency: type: string id: type: string format: uuid monthsWorked: type: integer occupation: type: string postalCode: type: string province: type: string status: type: string enum: - FULL_TIME - FULL_TIME_PROBATION - PART_TIME - PART_TIME_CASUAL - RETIRED - SEASONAL_SUMMER - SEASONAL_WINTER - SELF_EMPLOYED - UNEMPLOYED streetName: type: string streetNo: type: string streetType: type: string type: type: string enum: - AT_HOME - EXECUTIVE - LABOURER - MANAGEMENT - OFFICE_STAFF - OTHER - PRODUCTION - PROFESSIONAL - RETIRED - SALES - SELF_EMPLOYED - SERVICE - STUDENT - TRADES - UNEMPLOYED yearsWorked: type: integer worksheet: type: object properties: programId: type: string format: uuid tierId: type: string format: uuid vehicle: type: object properties: id: type: string vin: type: string status: type: string msrp: type: object properties: amount: type: number currency: type: string adjustedMsrp: type: number nullable: true odometer: type: object properties: amount: type: number unit: type: string uvc: type: string year: type: integer make: type: string model: type: string trim: type: string series: type: string style: type: string addOnOptions: type: array items: type: object properties: auto: type: boolean averageValue: type: object properties: amount: type: number currency: type: string cleanValue: type: object properties: amount: type: number currency: type: string extraCleanValue: type: object properties: amount: type: number currency: type: string id: type: string format: uuid name: type: string roughValue: type: object properties: amount: type: number currency: type: string addOns: type: array items: type: string nullable: true deductOptions: type: array items: type: object properties: auto: type: boolean averageValue: type: object properties: amount: type: number currency: type: string cleanValue: type: object properties: amount: type: number currency: type: string extraCleanValue: type: object properties: amount: type: number currency: type: string id: type: string format: uuid name: type: string roughValue: type: object properties: amount: type: number currency: type: string deducts: type: array items: type: string nullable: true colour: type: string nullable: true carfaxClaims: type: string nullable: true extraCleanWholesaleValue: type: object properties: amount: type: number currency: type: string cleanWholesaleValue: type: object properties: amount: type: number currency: type: string averageWholesaleValue: type: object properties: amount: type: number currency: type: string roughWholesaleValue: type: object properties: amount: type: number currency: type: string drivingDistancePerYear: type: number nullable: true isZeroEmissionVehicle: type: boolean taxExempt: type: boolean gstPercent: type: number gst: type: object properties: amount: type: number currency: type: string gstAdjusted: type: boolean pstHstPercent: type: number pstHst: type: object properties: amount: type: number currency: type: string pstHstAdjusted: type: boolean salePrice: type: object properties: amount: type: number currency: type: string cashDown: type: object properties: amount: type: number currency: type: string rebate: type: object properties: amount: type: number currency: type: string tradeIn: type: string nullable: true dealerAdminFee: type: string nullable: true registrationFee: type: object properties: amount: type: number currency: type: string creditorFee: type: object properties: amount: type: number currency: type: string gpsFee: type: string nullable: true licenseFee: type: string nullable: true installationDeliveryFee: type: string nullable: true ahInsuranceFee: type: string nullable: true lifeInsuranceFee: type: string nullable: true gapInsurance: type: string nullable: true extServiceContract: type: string nullable: true dealerReserve: type: object properties: amount: type: number currency: type: string firstPaymentDate: type: string format: date deliveryDate: type: string format: date interestRate: type: number term: type: integer frequency: type: string enum: - BI_WEEKLY - MONTHLY - SEMI_MONTHLY - WEEKLY totalFinancedAmount: type: object properties: amount: type: number currency: type: string worksheetPayment: type: object properties: amount: type: number currency: type: string bindings: http: headers: type: object properties: X-CREDIT-APP-SIGNATURE: type: string description: HMAC signature for verifying the request authenticity.