openapi: 3.0.0
info:
  version: '1.0'
  title: Loans
servers:
  - url: https://api.solaris-sandbox.de
    description: Sandbox
  - url: https://api.solarisbank.de
    description: Production
paths:
  /v1/loans/{loan_id}/repayment_schedule:
    get:
      tags:
        - Loan servicing
      summary: Retrieve a loan schedule
      security:
        - oauth2:
            - solaris_service_loan_engine_repayment_schedule#find
      responses:
        '200':
          description: Repayment Schedule
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/LoanEngine.GetLoanRepaymentScheduleResponse
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error409'
      parameters:
        - schema:
            type: string
          required: true
          name: loan_id
          in: path
          description: The ID of the loan for which the schedule should be retrieved.
      operationId: LoanEngineWeb.V1.Loans.RepaymentSchedule.ShowOperation
      description: >-
        Returns the schedule of the loan specified in the request URL. The loan
        schedule includes the full details of a loan, such as loan balance,
        fees, penalities, interests, and all past, present, and future
        installments of the loan.
      deprecated: false
      callbacks: {}
  /v1/loans/{loan_id}/repayment_history:
    get:
      tags:
        - Loan servicing
      summary: Retrieve the history of repayments of a loan
      security:
        - oauth2:
            - solaris_service_loan_engine_repayment_history#find
      responses:
        '200':
          description: Repayment history
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/LoanEngine.GetLoanRepaymentHistoryResponse
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
      parameters:
        - schema:
            type: string
          required: true
          name: loan_id
          in: path
          description: >-
            The ID of the loan for which the repayment history should be
            retrieved.
      operationId: LoanEngineWeb.V1.Loans.ShowRepaymentHistoryOperation
      description: >-
        Returns the history of all past repayments the customer made in relation
        to the loan specified in the request URL. This includes all executed
        SEPA Direct Debits (SDD) and/or SEPA Credit Transfers (SCT).
      deprecated: false
      callbacks: {}
  /v1/loans/{loan_id}:
    get:
      tags:
        - Loan servicing
      summary: Retrieve a loan
      security:
        - oauth2:
            - solaris_service_loan_engine_loan#find
      responses:
        '200':
          description: Loan
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoanEngine.GetLoanResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
      parameters:
        - schema:
            type: string
          required: true
          name: loan_id
          in: path
          description: The ID of the loan to be retrieved.
      operationId: LoanEngineWeb.V1.Loans.ShowOperation
      description: Returns the details of the loan specified in the request URL.
      deprecated: false
      callbacks: {}
  /v1/loans:
    get:
      tags:
        - Loan servicing
      summary: Index loans
      security:
        - oauth2:
            - solaris_service_loan_engine_loan#all
      responses:
        '200':
          headers:
            total:
              schema:
                type: integer
          description: LoanEngine.ListLoansResponse
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoanEngine.ListLoansResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
      parameters:
        - schema:
            type: integer
          required: false
          name: page[number]
          in: query
          description: Specifies the number of pages of results to return.
        - schema:
            type: integer
          required: false
          name: page[size]
          in: query
          description: Specifies the size of each page of results.
        - schema:
            type: string
          required: false
          name: filter[credit_reference_id]
          in: query
          description: Filters the returned loans by a specific credit_reference_id.
      operationId: LoanEngineWeb.V1.Loans.IndexOperation
      description: Returns an array containing all loans for all of your customers.
      deprecated: false
      callbacks: {}
  /v1/dunning_cases/{dunning_case_id}/notifications:
    get:
      tags:
        - Loan dunning cases
      summary: Index the notifications of a dunning case
      security:
        - oauth2:
            - solaris_service_loan_engine_dunning_case_notification#all
      responses:
        '200':
          description: LoanEngine.V1.ListDunningCaseNotificationsResponse
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/LoanEngine.V1.ListDunningCaseNotificationsResponse
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
      parameters:
        - schema:
            type: string
          required: true
          name: dunning_case_id
          in: path
          description: >-
            The ID of the dunning case for which the notifications should be
            retrieved.
      operationId: LoanEngineWeb.V1.DunningCases.Notifications.IndexOperation
      description: Returns the notifications related to a dunning case.
      deprecated: false
      callbacks: {}
  /v1/dunning_cases/{dunning_case_id}:
    get:
      tags:
        - Loan dunning cases
      summary: Retrieve a dunning case
      security:
        - oauth2:
            - solaris_service_loan_engine_dunning_case#find
      responses:
        '200':
          description: Dunning Case
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoanEngine.V1.GetDunningCaseResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
      parameters:
        - schema:
            type: string
          required: true
          name: dunning_case_id
          in: path
          description: The ID of the dunning case to be retrieved.
      operationId: LoanEngineWeb.V1.DunningCases.ShowOperation
      description: Returns the dunning case with the ID specified in the request URL.
      deprecated: false
      callbacks: {}
  /v1/dunning_cases:
    get:
      tags:
        - Loan dunning cases
      summary: Index dunning cases
      security:
        - oauth2:
            - solaris_service_loan_engine_dunning_case#all
      responses:
        '200':
          headers:
            total:
              schema:
                type: integer
          description: LoanEngine.V1.ListDunningCasesResponse
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoanEngine.V1.ListDunningCasesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
      parameters:
        - schema:
            type: integer
          required: false
          name: page[number]
          in: query
          description: Specifies the number of pages of results to return.
        - schema:
            type: integer
          required: false
          name: page[size]
          in: query
          description: Specifies the size of each page of results.
        - schema:
            type: string
          required: false
          name: filter[loan_account_id]
          in: query
          description: Filters the returned dunning cases by a specific loan_account_id.
        - schema:
            type: string
          required: false
          name: filter[person_id]
          in: query
          description: Filters the returned dunning cases by a specific person ID.
        - schema:
            type: string
            enum:
              - new
              - dunning
              - pre_termination
              - terminated
              - closed
          required: false
          name: filter[status]
          in: query
          description: Filters the returned dunning cases by a specific status.
      operationId: LoanEngineWeb.V1.DunningCases.IndexOperation
      description: >-
        Returns an array containing all the dunning cases for all of your
        customers.
      deprecated: false
      callbacks: {}
  /v1/credit_lines/{credit_line_id}/active_mandate:
    get:
      tags:
        - Loan servicing
      summary: Retrieve a credit line mandate
      security:
        - oauth2:
            - solaris_service_loan_engine_credit_line_active_mandate#find
      responses:
        '200':
          description: Mandate
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoanEngine.GetMandateResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
      parameters:
        - schema:
            type: string
          required: true
          name: credit_line_id
          in: path
          description: The ID of the credit line associated with the signed mandate.
      operationId: LoanEngineWeb.V1.Mandates.ShowCreditLineMandateOperation
      description: Returns a signed mandate for a credit line.
      deprecated: false
      callbacks: {}
  /v1/loans/{loan_id}/repayment_plan:
    get:
      tags:
        - Loan servicing
      summary: (DEPRECATED) Retrieve the repayment plan of a loan
      security:
        - oauth2:
            - solaris_service_loan_engine_repayment_plan#find
      responses:
        '200':
          description: Repayments
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoanEngine.GetLoanRepaymentsResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
      parameters:
        - schema:
            type: string
          required: true
          name: loan_id
          in: path
          description: The ID of the loan for which the repayments to be returned.
      operationId: LoanEngineWeb.V1.Loans.RepaymentPlan.ShowOperation
      description: >-
        Returns the repayment plan of the loan specified in the request URL.
        This endpoint is deprecated. Please use the repayment schedule endpoint
        instead.
      deprecated: true
      callbacks: {}
  /v1/anonymous_consumer_loan_offers:
    post:
      tags:
        - Consumer Loan
      summary: Create anonymous loan offer
      security:
        - oauth2:
            - solaris_service_consumer_loan_anonymous_offer#create
      responses:
        '201':
          description: Anonymous Offer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumerLoan.CreateAnonymousOfferResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
      requestBody:
        required: false
        description: The anonymous offer attributes
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsumerLoan.CreateAnonymousOfferRequest'
      parameters: []
      operationId: ConsumerLoanWeb.V1.AnonymousOffers.CreateOperation
      description: >-
        Generates a non-binding anonymous loan offer for a customer based on
        their self-declared and unverified financial information.
      deprecated: false
      callbacks: {}
  /v1/consumer_loans/two_thirds_rates:
    get:
      tags:
        - Consumer Loan
      summary: Retrieve two thirds rates
      security:
        - oauth2:
            - solaris_service_consumer_loan_two_thirds_rate#find
      responses:
        '200':
          description: Two Thirds Rates
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumerLoan.TwoThirdsRatesResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
      parameters: []
      operationId: ConsumerLoanWeb.V1.Partners.ShowTwoThirdsRatesOperation
      description: >-
        Returns the 2/3 interest rate for different loan terms for an anonymous
        loan offer.
      deprecated: false
      callbacks: {}
  /v1/persons/{person_id}/consumer_loan_applications:
    post:
      tags:
        - Consumer Loan
      summary: Create consumer loan application
      security:
        - oauth2:
            - solaris_service_consumer_loan_application#create
      responses:
        '200':
          description: Application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumerLoan.GetBindingOfferResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SolarisToolkit.Web.Json.ErrorBody'
      requestBody:
        required: false
        description: The application attributes
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsumerLoan.CreateApplicationRequest'
      parameters:
        - schema:
            type: string
          required: true
          name: person_id
          in: path
          description: The `person_id` of the customer applying for the loan.
      operationId: ConsumerLoanWeb.V1.Applications.CreateOperation
      description: >-
        Creates a consumer loan application and assigns it to the person with
        the `person_id` specified in the request URL. The payload of the request
        includes all the required financial information and account data about
        the customer, which the credit scorer uses to initiate a series of
        credit checks to determine the customer's credit risk and eligibility.
      deprecated: false
      callbacks: {}
  /v1/persons/{person_id}/consumer_loan_applications/{application_id}:
    get:
      tags:
        - Consumer Loan
      summary: Retrieve consumer loan application
      security:
        - oauth2:
            - solaris_service_consumer_loan_application#find
      responses:
        '200':
          description: Application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumerLoan.GetApplicationResponse'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
      parameters:
        - schema:
            type: string
          required: true
          name: person_id
          in: path
          description: The `person_id` of the customer applying for the loan.
        - schema:
            type: string
          required: true
          name: application_id
          in: path
          description: The unique ID of the customer's loan application.
      operationId: ConsumerLoanWeb.V1.Applications.ShowOperation
      description: >-
        Returns the current status and details of an existing consumer loan
        application. Additionally, you can subscribe to the webhook event
        `CONSUMER_LOAN_APPLICATION` to receive status updates on the
        application.
      deprecated: false
      callbacks: {}
  /v1/persons/{person_id}/consumer_loan_applications/{application_id}/skip_account_snapshot:
    put:
      tags:
        - Consumer Loan
      summary: Skip the account snapshot process for a consumer loan application
      security:
        - oauth2:
            - solaris_service_consumer_loan_application#skip_account_snapshot
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '409':
          description: Application state cannot be changed to approved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error409'
      requestBody:
        required: false
        description: Account Snapshot skip
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsumerLoan.SkipAccountSnapshotRequest'
      parameters:
        - schema:
            type: string
          required: true
          name: person_id
          in: path
          description: The `person_id` of the customer applying for the loan.
        - schema:
            type: string
          required: true
          name: application_id
          in: path
          description: The unique ID of the customer's loan application.
      operationId: ConsumerLoanWeb.V1.Applications.SkipAccountSnapshotOperation
      description: >-
        Skips the processing of an account snapshot in relation to the consumer
        loan application specified in the request URL.
      deprecated: false
      callbacks: {}
  /v1/persons/{person_id}/consumer_loan_applications/{application_id}/account_snapshot:
    put:
      tags:
        - Consumer Loan
      summary: Link an account snapshot to a consumer loan application
      security:
        - oauth2:
            - solaris_service_consumer_loan_application#link_account_snapshot
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '409':
          description: Application state cannot be changed to account_snapshot_verification
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error409'
      requestBody:
        required: false
        description: Account Snapshot link
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsumerLoan.LinkAccountSnapshotRequest'
      parameters:
        - schema:
            type: string
          required: true
          name: person_id
          in: path
          description: The `person_id` of the customer applying for the loan.
        - schema:
            type: string
          required: true
          name: application_id
          in: path
          description: The unique ID of the customer's loan application.
      operationId: ConsumerLoanWeb.V1.Applications.LinkAccountSnapshotOperation
      description: >-
        Links a customer's account snapshot to their consumer loan application.
        You must include the `account_snapshot_id` in the request body. This
        call triggers the credit scorer to complete the final verification step.
      deprecated: false
      callbacks: {}
  /v1/persons/{person_id}/consumer_loan_applications/{application_id}/upload_purchase_contract:
    put:
      tags:
        - Consumer Loan
      summary: Upload the purchase contract related to the financed good
      security:
        - oauth2:
            - solaris_service_consumer_loan_application#upload_purchase_contract
      responses:
        '204':
          description: No Content
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SolarisToolkit.Web.Json.ErrorBody'
      requestBody:
        required: false
        description: Purchase contract attributes
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsumerLoan.UploadPurchaseContractRequest'
      parameters:
        - schema:
            type: string
          required: true
          name: person_id
          in: path
          description: The `person_id` of the customer applying for the loan.
        - schema:
            type: string
          required: true
          name: application_id
          in: path
          description: The unique ID of the customer's loan application.
      operationId: ConsumerLoanWeb.V1.Applications.UploadPurchaseContractOperation
      description: >-
        Uploads the purchase contract of the financed good purchased with the
        loan. You must include the details of the signature position in the
        payload.
      deprecated: false
      callbacks: {}
  /v1/persons/{person_id}/consumer_loan_applications/{application_id}/offers/{offer_id}/subsidize:
    post:
      tags:
        - Consumer Loan
      summary: Generate a subsidized offer for a consumer loan
      security:
        - oauth2:
            - solaris_service_consumer_loan_application_subsidized_offer#create
      responses:
        '201':
          description: Subsidized loan offer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumerLoan.Offer'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
      requestBody:
        required: false
        description: Subsidized offer attributes
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsumerLoan.CreateSubsidizedOfferRequest'
      parameters:
        - schema:
            type: string
          required: true
          name: person_id
          in: path
          description: The `person_id` of the customer applying for the loan.
        - schema:
            type: string
          required: true
          name: application_id
          in: path
          description: The unique ID of the customer's loan application.
        - schema:
            type: string
          required: true
          name: offer_id
          in: path
          description: The unique ID of a loan offer.
      operationId: ConsumerLoanWeb.V1.Applications.CreateSubsidizedOfferOperation
      description: >-
        Creates a subsidized loan offer with a reduced interest rate from the
        original offer. You must add the required interest rate in the request
        body to receive the new offer.
      deprecated: false
      callbacks: {}
  /v1/persons/{person_id}/consumer_loan_applications/{application_id}/offers/{offer_id}/pre_contract:
    get:
      tags:
        - Consumer Loan
      summary: Download the pre-contractual information for consumer loan
      security:
        - oauth2:
            - solaris_service_consumer_loan_application_offer_pre_contract#find
      responses:
        '200':
          description: The binary of the pre-contractual information (SECCI)
          content:
            application/pdf:
              schema:
                $ref: >-
                  #/components/schemas/ConsumerLoan.DownloadOfferPreContractResponse
      parameters:
        - schema:
            type: string
          required: true
          name: person_id
          in: path
          description: The `person_id` of the customer applying for the loan.
        - schema:
            type: string
          required: true
          name: application_id
          in: path
          description: The unique ID of the customer's loan application.
        - schema:
            type: string
          required: true
          name: offer_id
          in: path
          description: The unique ID of a loan offer.
      operationId: ConsumerLoanWeb.V1.Applications.DownloadOfferPreContractOperation
      description: >-
        Downloads a SECCI form as a PDF, which is the overview of the final
        offer and the contract. You must share it with the customer to review it
        prior to the identification and e-signing process.
      deprecated: false
      callbacks: {}
  /v1/persons/{person_id}/consumer_loan_applications/{application_id}/offers/{offer_id}/contract:
    get:
      tags:
        - Consumer Loan
      summary: Download the final contract for a consumer loan
      security:
        - oauth2:
            - solaris_service_consumer_loan_application_offer_contract#find
      responses:
        '200':
          description: The binary of the offer contract
          content:
            application/pdf:
              schema:
                $ref: >-
                  #/components/schemas/ConsumerLoan.DownloadOfferContractResponse
      parameters:
        - schema:
            type: string
          required: true
          name: person_id
          in: path
          description: The `person_id` of the customer applying for the loan.
        - schema:
            type: string
          required: true
          name: application_id
          in: path
          description: The unique ID of the customer's loan application.
        - schema:
            type: string
          required: true
          name: offer_id
          in: path
          description: The unique ID of a loan offer.
      operationId: ConsumerLoanWeb.V1.Applications.DownloadOfferContractOperation
      description: >-
        Generates the final contract for a consumer loan, which the customer
        must e-sign during the identification and e-signing process.
      deprecated: false
      callbacks: {}
  /v1/persons/{person_id}/consumer_loan_applications/{application_id}/consumer_loan:
    put:
      tags:
        - Consumer Loan
      summary: Create a consumer loan
      security:
        - oauth2:
            - solaris_service_consumer_loan#create
      responses:
        '202':
          description: Loan
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsumerLoan.CreateLoanResponse'
      requestBody:
        required: false
        description: The application attributes
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsumerLoan.CreateLoanRequest'
      parameters:
        - schema:
            type: string
          required: true
          name: person_id
          in: path
          description: The `person_id` of the customer to whom the loan should be paid out.
        - schema:
            type: string
          required: true
          name: application_id
          in: path
          description: The unique ID of the customer's loan application.
      operationId: ConsumerLoanWeb.V1.Applications.CreateLoanOperation
      description: >-
        Creates a loan and issues the loan payout to the customer's specified
        IBAN. The `status` of the consumer loan application will change to
        `loan_created` after calling this endpoint.
      deprecated: false
      callbacks: {}
components:
  schemas:
    SolarisToolkit.Web.Money:
      type: object
      title: SolarisToolkit.Web.Money
      required:
        - value
        - currency
        - unit
      properties:
        value:
          type: integer
          description: The amount value
        unit:
          type: string
          enum:
            - cents
          description: The unit of the given value.
        currency:
          type: string
          description: The currency of the given value. Only EURO is currently supported.
      example:
        value: 1000
        unit: cents
        currency: EUR
    LoanEngine.GetLoanRepaymentScheduleResponse:
      type: object
      title: LoanEngine.GetLoanRepaymentScheduleResponse
      properties:
        loan_balances:
          type: object
          required:
            - principal
            - penalty
            - interest
            - interest_from_arrears
            - fees
            - total
          properties:
            total:
              type: object
              required:
                - balance
                - due
                - paid
                - current_repayment_amount
                - loan_expenses
              properties:
                paid:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The total amount paid on the loan as of the current date,
                    including principal, interest, fees, and penalities.
                loan_expenses:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    An object representing the total loan expenses (e.g., costs,
                    fees, penalities incurred during a loan lifecycle). This
                    amount is subject to changes during the loan lifecycle to
                    include fees or penalities that might be charged on the
                    loan. At the loan origination, it's the sum of total
                    principal and total interest.
                due:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The installment amount currently due on the loan that the
                    customer must pay in general or to resolve a dunning case.
                    This amount includes the currently due principal, interest,
                    fees, and/or penalities.
                current_repayment_amount:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The current loan repayment amount, including loan total
                    balance and any accrued interest the customer must pay now
                    to settle the loan in full. This amount is subject to
                    changes daily as interest accrues.
                balance:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The total amount currently owed on the loan, including
                    principal, penalty, interest, and fees, and excluding
                    accrued interest. Balance refers to only overdue and future
                    payments.
              description: >-
                An object containing information about all the sum of all
                relevant amounts payable in relation to the loan, including
                principal, interests, penalities, and fees.
              additionalProperties: false
            principal:
              type: object
              required:
                - balance
                - due
                - paid
              properties:
                paid:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The total principal amount paid on the loan as of the
                    current date.
                due:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: The principal amount currently due on the loan.
                balance:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The total principal amount currently owed on the loan.
                    Balance refers to only overdue and future payments.
              description: >-
                An object containing information about the loan principal,
                including current balance, paid and due amounts.
              additionalProperties: false
            penalty:
              type: object
              required:
                - balance
                - due
                - paid
              properties:
                paid:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The total amount of penalities paid on the loan as of the
                    current date.
                due:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: The penalty amount currently due on the loan.
                balance:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The total penalities currently owed on the loan. Balance
                    refers to only overdue and future payments.
              description: >-
                An object containing information about the loan applicable
                penalities, including current balance, paid and due amounts.
              additionalProperties: false
            interest_from_arrears:
              type: object
              required:
                - balance
                - due
                - paid
              properties:
                paid:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The amount of interest from arrears paid on the loan as of
                    the current date.
                due:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The amount of interest from arrears currently due on the
                    loan.
                balance:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The total interest from arrears currently owed on the loan.
                    Balance refers to only overdue and future payments.
              description: >-
                An object containing information about interest from arrears,
                including balance, paid and due amounts. Only applicable if
                additional interests in case of arrear is to be applied on the
                loan.
              additionalProperties: false
            interest:
              type: object
              required:
                - balance
                - due
                - paid
              properties:
                paid:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The total amount of interest paid on the loan as of the
                    current date.
                due:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: The amount of interest currently due on the loan.
                balance:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The total balance of applied interest expected throughout
                    the loan lifecycle. Balance refers to only overdue and
                    future payments.
              description: >-
                An object containing information about the loan interest,
                including balance, paid and due amounts. Accrued interest isn't
                reflected in this field, only applied interest is considered.
              additionalProperties: false
            fees:
              type: object
              required:
                - balance
                - due
                - paid
              properties:
                paid:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The total amount of fees paid on the loan as of the current
                    date.
                due:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: The amount of fees currently due on the loan.
                balance:
                  oneOf:
                    - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                  description: >-
                    The total balance of applicable fees expected throughout the
                    loan lifecycle. Balance refers to only overdue and future
                    payments.
              description: >-
                An object containing information about the loan fees, including
                balance, paid and due amounts.
              additionalProperties: false
          description: >-
            An overview of the entire loan details, including principal,
            interests, penalities, and fees as of the current date.
          additionalProperties: false
        installments:
          type: array
          items:
            type: object
            required:
              - number
              - due_date
              - state
              - is_payment_holiday
              - total
              - principal
              - penalty
              - interest
              - fee
              - fee_details
            properties:
              total:
                type: object
                required:
                  - expected
                  - due
                  - paid
                properties:
                  paid:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The total installment amount already paid, including
                      principal, interest, fees, and/or penalities.
                  expected:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The total expected installment amount, including
                      principal, interest, fees, and/or penalities.
                  due:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The total installment amount currently due on the loan,
                      including principal, interest, fees, and/or penalities.
                description: >-
                  An object containing information about an installment,
                  including expected, due, and paid amounts.
                additionalProperties: false
              state:
                type: string
                example: PAID
                enum:
                  - PENDING
                  - LATE
                  - PAID
                  - PARTIALLY_PAID
                  - GRACE
                description: The status of an installment.
              principal:
                type: object
                required:
                  - expected
                  - due
                  - paid
                properties:
                  paid:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The principal amount that has been paid as part of an
                      installment.
                  expected:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The expected principal amount to be paid as part of an
                      installment.
                  due:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The principal amount currently due as part of an
                      installment.
                description: >-
                  An object containing information about the principal amount
                  payable as part of an installment.
                additionalProperties: false
              penalty:
                type: object
                required:
                  - expected
                  - due
                  - paid
                properties:
                  paid:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The penalty amount that has been paid as part of an
                      installment.
                  expected:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The expected penalty amount to be paid as part of an
                      installment.
                  due:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The penalty amount currently due as part of an
                      installment.
                description: >-
                  An object containing information about the penalty amount
                  payable as part of an installment.
                additionalProperties: false
              number:
                type: string
                example: '5'
                description: The installment number.
              is_payment_holiday:
                type: boolean
                description: >-
                  A field to indicate whether a pause has been implemented on
                  the loan installments or not.
              interest:
                type: object
                required:
                  - expected
                  - due
                  - paid
                properties:
                  paid:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The interest amount that has been paid as part of an
                      installment.
                  expected:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The expected interest amount to be paid as part of an
                      installment.
                  due:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The interest amount currently due as part of an
                      installment.
                description: >-
                  An object containing information about the interest amount
                  payable as part of an installment.
                additionalProperties: false
              fee_details:
                type: array
                items:
                  type: object
                  required:
                    - name
                    - amount
                    - tax
                  properties:
                    tax:
                      type: object
                      required:
                        - reduced
                        - expected
                        - due
                        - paid
                      properties:
                        reduced:
                          oneOf:
                            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                          description: >-
                            The fee tax amount that has been reduced as part of
                            an installment.
                        paid:
                          oneOf:
                            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                          description: >-
                            The fee tax amount that has been paid as part of an
                            installment.
                        expected:
                          oneOf:
                            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                          description: >-
                            The fee tax amount that's expected to be paid as
                            part of an installment.
                        due:
                          oneOf:
                            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                          description: >-
                            The fee tax amount currently due as part of an
                            installment.
                      description: >-
                        An object containing information about the tax
                        applicable to the fee.
                      additionalProperties: false
                    name:
                      type: string
                      description: >-
                        The name of the applied fee. Could be SDDR costs or
                        dunning fees.
                    amount:
                      type: object
                      required:
                        - reduced
                        - expected
                        - due
                        - paid
                      properties:
                        reduced:
                          oneOf:
                            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                          description: >-
                            The fee amount that has been reduced as part of an
                            installment.
                        paid:
                          oneOf:
                            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                          description: >-
                            The fee amount that has been paid as part of an
                            installment.
                        expected:
                          oneOf:
                            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                          description: >-
                            The fee amount that's expected to be paid as part of
                            an installment.
                        due:
                          oneOf:
                            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                          description: >-
                            The fee amount currently due as part of an
                            installment.
                      description: >-
                        An object containing information about the fee amount,
                        including reduced, expected, due, and paid amounts.
                      additionalProperties: false
                  additionalProperties: false
                description: >-
                  An array of objects containing the breakdown of the fees type,
                  applicable taxes, amounts, descriptions, etc.
              fee:
                type: object
                required:
                  - expected
                  - due
                  - paid
                properties:
                  paid:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The total fee amount that has been paid as part of an
                      installment.
                  expected:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The total fee amount that's expected to be paid as part of
                      an installment.
                  due:
                    oneOf:
                      - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                    description: >-
                      The total fee amount currently due as part of an
                      installment.
                description: >-
                  The total amount of the fees payable on an installment. For a
                  breakdown of the details of the fee, check the `fee_details`
                  field.
                additionalProperties: false
              due_date:
                type: string
                format: date
                example: '2022-06-23'
                description: The due date of the installment.
            additionalProperties: false
          description: >-
            An array of objects containing information about all the loan
            installments (past, present, and future).
    Error404:
      type: object
      title: Error404
      properties:
        title:
          type: string
          example: Model Not Found
        status:
          type: string
          example: '404'
        id:
          type: string
          example: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
        detail:
          type: string
          example: Couldn't find 'Account' for id 'DE24112233445566'.
        code:
          type: string
          example: model_not_found
    Error409:
      type: object
      title: Error409
      properties:
        title:
          type: string
          example: Record Not Unique
        status:
          type: string
          example: '409'
        id:
          type: string
          example: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
        detail:
          type: string
          example: Could not save `terms_and_conditions_event`.
        code:
          type: string
          example: record_not_unique
    LoanEngine.GetLoanRepaymentHistoryResponse:
      type: object
      title: LoanEngine.GetLoanRepaymentHistoryResponse
      properties:
        repayment_history:
          type: array
          items:
            type: object
            required:
              - date
              - amount
              - interest_amount
              - payout_amount
            properties:
              payout_amount:
                oneOf:
                  - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                description: The monthly installment amount the customer paid.
              interest_amount:
                oneOf:
                  - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                description: >-
                  An object representing the amount of interest included in the
                  installment amount.
              date:
                type: string
                format: date
                example: '2021-10-01'
                description: The date when the loan installment was paid.
              amount:
                oneOf:
                  - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                description: >-
                  The total amount of the transaction, including monthly
                  installment amount and interest.
            additionalProperties: false
    LoanEngine.GetLoanResponse:
      type: object
      title: LoanEngine.GetLoanResponse
      required:
        - id
        - status
        - person_id
        - billing_account_id
        - amount
        - term
        - interest_rate
        - recipient_iban
        - repayment_begin_date
        - payout_date
        - interest_start_date
        - effective_interest_rate
        - overdue_amount
        - created_at
      properties:
        total_loan_expenses:
          type: object
          oneOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
          nullable: true
          description: >-
            An object representing the loan total expenses (e.g., costs and
            expenses the lender incurred during a loan lifecycle).
        term:
          type: number
          example: 24
          description: The number of months over which the loan will be repaid.
        status_reason:
          type: string
          nullable: true
          enum:
            - upfront_subsidy_pull_failed_collateral_account_not_set
            - upfront_subsidy_pull_failed_debit_blocked
            - upfront_subsidy_pull_failed_insufficient_funds
          description: Additional context around the loan status.
        status:
          type: string
          example: payout_issued
          enum:
            - payout_initiation_pending
            - payout_initiation_blocked
            - payout_pending
            - payout_issued
            - all_obligations_met
          description: The loan's status.
        repayment_plan_updated_at:
          type: string
          nullable: true
          format: datetime
          example: '2021-04-16T13:52:05Z'
          description: The date when the loan's repayment plan was last updated.
        repayment_plan_created_at:
          type: string
          nullable: true
          format: datetime
          example: '2020-04-16T13:52:05Z'
          description: The date when the loan's repayment plan was created.
        repayment_begin_date:
          type: string
          example: '2020-05-16'
          description: The date when the loan's first monthly installment is due.
        reference:
          type: string
          nullable: true
          description: A reference for the loan.
        recipient_iban:
          type: string
          example: DE88888881010987654321
          description: The IBAN to which the loan is paid out.
        purpose:
          type: string
          nullable: true
          example: Buying a car.
          description: The purpose of the loan.
        person_id:
          type: string
          example: 547a870b2c8461a3104559369d09265dcper
          description: The person ID of the customer getting the loan.
        payout_date:
          type: string
          format: date
          example: '2020-05-16'
          description: The date when the loan will be paid out.
        overdue_amount:
          type: object
          oneOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
          description: An object representing the loan overdue amount.
        monthly_payment:
          type: object
          oneOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
          nullable: true
          description: An object representing the loan monthly installment amount.
        maturity_date:
          type: string
          nullable: true
          example: '2022-05-16'
          description: The date when the final loan payment is due.
        loan_account_id:
          type: string
          nullable: true
          example: adc123a45d6d7cf8fbfeed537ba919d5cacc
          description: The account ID to which the loan is attached.
        loan_account_iban:
          type: string
          nullable: true
          example: DE72110101014351836685
          description: The IBAN of the account to which the loan is attached.
        interest_start_date:
          type: string
          format: date
          example: '2021-06-16'
          description: The date when the interest starts accruing on a loan.
        interest_rate:
          type: number
          example: 0.0499
          description: The monthly interest rate applied to a loan.
        id:
          type: string
          example: c13447d659db4cdcb450b977f8f25c57cloa
          description: The ID of the loan.
        effective_interest_rate:
          type: number
          example: 0.0511
          description: The annual effective interest rate applied to the loan.
        created_at:
          type: string
          format: datetime
          example: '2021-06-16T10:22:38'
          description: The date when the loan was created.
        billing_account_id:
          type: string
          nullable: true
          example: 1d0e52af0a62b4b44d8c54a87a7fc6a7cacc
          description: >-
            The ID of the customer's billing account from which all the loan
            payments will be debited.
        billing_account_iban:
          type: string
          nullable: true
          example: DE72110101014351836685
          description: The IBAN of the customer's billing account associated with the loan.
        annual_percentage_rate:
          type: number
          description: >-
            A percentage that represents the yearly cost of funds over the term
            of a loan. It includes interest, fees and additional costs
            associated with a loan.
        amount:
          oneOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
          description: The loan amount.
    LoanEngine.ListLoansItem:
      type: object
      title: LoanEngine.ListLoansItem
      required:
        - id
        - amount
      properties:
        repayment_begin_date:
          type: string
          nullable: true
          example: '2020-05-16'
          description: The date when the loan's first monthly installment is due.
        payout_date:
          type: string
          nullable: true
          example: '2020-05-16'
          description: The date when the loan will be paid out.
        maturity_date:
          type: string
          nullable: true
          example: '2022-05-16'
          description: The date when the final loan payment is due.
        loan_account_id:
          type: string
          nullable: true
          example: adc123a45d6d7cf8fbfeed537ba919d5cacc
          description: The account ID to which the loan is attached.
        id:
          type: string
          example: c13447d659db4cdcb450b977f8f25c57cloa
          description: The ID of the loan.
        billing_account_iban:
          type: string
          nullable: true
          example: DE72110101014351836685
          description: The IBAN of the customer's billing account associated with the loan.
        amount:
          oneOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
          description: The loan amount.
    LoanEngine.ListLoansResponse:
      type: array
      title: LoanEngine.ListLoansResponse
      items:
        $ref: '#/components/schemas/LoanEngine.ListLoansItem'
    Error403:
      type: object
      title: Error403
      properties:
        title:
          type: string
          example: Unauthorized Action
        status:
          type: string
          example: '403'
        id:
          type: string
          example: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
        detail:
          type: string
          example: Unauthorized action is not allowed.
        code:
          type: string
          example: unauthorized_action
    LoanEngine.V1.ListDunningCaseNotificationItem:
      type: object
      title: LoanEngine.V1.ListDunningCaseNotificationItem
      required:
        - id
        - created_at
        - title
        - type
      properties:
        type:
          type: string
          example: dunning_letter
          enum:
            - sddr_notification
            - partial_repayment_notification
            - full_repayment_notification
            - reminder
            - dunning_letter
            - pre_termination_letter
            - termination_letter
            - pre_collection_letter
          description: The type of the dunning case notification.
        title:
          type: string
          description: The title of the dunning case notification.
        id:
          type: string
          example: de8d170b-321c-425b-830d-ed406cba6792
          description: The ID of the dunning case.
        created_at:
          type: string
          format: datetime
          example: '2021-04-16T13:52:05Z'
          description: The timestamp from when the dunning case notification was created.
    LoanEngine.V1.ListDunningCaseNotificationsResponse:
      type: array
      title: LoanEngine.V1.ListDunningCaseNotificationsResponse
      items:
        $ref: '#/components/schemas/LoanEngine.V1.ListDunningCaseNotificationItem'
    Error400:
      type: object
      title: Error400
      properties:
        title:
          type: string
          example: Failed to build pagination headers.
        status:
          type: string
          example: '400'
        id:
          type: string
          example: a95f2aaf-4e0c-4d49-8021-8a16a884ed86
        detail:
          type: string
          example: Cannot connect to database.
        code:
          type: string
          example: build_pagination_headers_failure
    LoanEngine.V1.GetDunningCaseResponse:
      type: object
      title: LoanEngine.V1.GetDunningCaseResponse
      required:
        - id
        - status
        - person_id
        - loan_id
        - billing_account_id
        - loan_account_id
        - credit_reference_id
        - strategy
        - total_overdue_amount
        - overdue_installment_amount
        - fees
        - deadline
        - last_sddr_date
      properties:
        total_overdue_amount:
          oneOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
          description: >-
            An object containing the total overdue amount, including the overdue
            monthly installment and any payable fees and/or interest.
        strategy:
          type: string
          example: consumer
          enum:
            - consumer
            - freelancer
          description: The dunning handling strategy to be applied to the case.
        status:
          type: string
          example: new
          enum:
            - new
            - dunning
            - pre_termination
            - terminated
            - closed
            - pre_collection
            - closed_matured
          description: The status of the dunning case.
        person_id:
          type: string
          example: 547a870b2c8461a3104559369d09265dcper
          description: >-
            The person ID of the customer associated with the loan and dunning
            case.
        overdue_installment_amount:
          oneOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
          description: An object containing the overdue installment amount.
        loan_id:
          type: string
          example: c13447d659db4cdcb450b977f8f25c57cloa
          description: The ID of the loan.
        loan_account_id:
          type: string
          example: adc123a45d6d7cf8fbfeed537ba919d5cacc
          description: The account ID to which the loan is attached.
        last_sddr_date:
          type: string
          format: date
          example: '2021-09-01'
          description: The date of the last SEPA Direct Debit R-transaction.
        id:
          type: string
          example: 41c8d48c-4b73-4f5b-a7d0-5778e041b7c2
          description: The ID of the dunning case.
        fees:
          oneOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
          description: An object containing the fees related to the dunning case.
        deadline:
          type: string
          format: date
          example: '2021-09-01'
          description: The date when the dunning case must be resolved.
        credit_reference_id:
          type: string
          description: The ID of the related credit line.
        billing_account_id:
          type: string
          example: 1d0e52af0a62b4b44d8c54a87a7fc6a7cacc
          description: >-
            The ID of the customer's billing account from which all the loan
            payments will be debited.
    LoanEngine.V1.ListDunningCasesItem:
      type: object
      title: LoanEngine.V1.ListDunningCasesItem
      required:
        - id
        - person_id
        - loan_account_id
        - status
        - total_overdue_amount
      properties:
        total_overdue_amount:
          oneOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
          description: An object containing the total overdue amount.
        status:
          type: string
          example: dunning
          enum:
            - new
            - dunning
            - pre_termination
            - terminated
            - closed
            - pre_collection
            - closed_matured
          description: The status of the dunning case.
        person_id:
          type: string
          example: 547a870b2c8461a3104559369d09265dcper
          description: >-
            The person ID of the customer associated with the loan and dunning
            case.
        loan_account_id:
          type: string
          example: adc123a45d6d7cf8fbfeed537ba919d5cacc
          description: The account ID to which the loan is attached.
        id:
          type: string
          example: de8d170b-321c-425b-830d-ed406cba6792
          description: The ID of the dunning case.
    LoanEngine.V1.ListDunningCasesResponse:
      type: array
      title: LoanEngine.V1.ListDunningCasesResponse
      items:
        $ref: '#/components/schemas/LoanEngine.V1.ListDunningCasesItem'
    LoanEngine.GetMandateResponse:
      type: object
      title: LoanEngine.GetMandateResponse
      properties:
        signature_date:
          type: string
          example: '2020-08-24'
          description: >-
            The date when the customer signed the SDD mandate for the loan
            repayment.
        name:
          type: string
          example: Max Mustermann
          description: The name of the account holder.
        mandate_id:
          type: string
          example: LOY327JAFM3V3M
          description: The ID of the signed mandate.
        iban:
          type: string
          example: DE92370601930002130041
          description: >-
            The IBAN of the account from which the loan repayments will be
            debited.
        bic_code:
          type: string
          example: SOBKDEBBXXX
          description: The bank identifier code of the customer's account.
    LoanEngine.GetLoanRepaymentsResponse:
      type: object
      title: LoanEngine.GetLoanRepaymentsResponse
      properties:
        updated_at:
          type: string
          nullable: true
          format: datetime
          example: '2021-04-16T13:52:05Z'
          description: The date when the loan repayment plan was last updated.
        repayments:
          type: array
          items:
            type: object
            required:
              - date
              - beginning_balance
              - ending_balance
              - installment_amount
              - principal_paid
              - interest_paid
            properties:
              principal_paid:
                oneOf:
                  - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                description: >-
                  The total amount of the loan principal to be paid in the
                  current installment.
              interest_paid:
                oneOf:
                  - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                description: The amount of interest to be paid in the current installment.
              installment_amount:
                oneOf:
                  - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                description: The amount of the loan monthly installment to be paid.
              ending_balance:
                oneOf:
                  - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                description: >-
                  The ending balance of the loan account after the current
                  installment.
              date:
                type: string
                format: date
                example: '2021-10-01'
                description: The date when the installment is due.
              beginning_balance:
                oneOf:
                  - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
                description: >-
                  The start balance of the loan account before the next due
                  installment.
            additionalProperties: false
        created_at:
          type: string
          nullable: true
          format: datetime
          example: '2020-04-16T13:52:05Z'
          description: The date when the loan repayment plan was created.
    ConsumerLoan.CreateAnonymousOfferRequest:
      type: object
      title: ConsumerLoan.CreateAnonymousOfferRequest
      required:
        - number_of_dependents
        - living_situation
        - living_situation_amount
        - net_income_amount
        - private_insurance_amount
        - requested_loan_amount
        - requested_loan_term
      properties:
        requested_loan_term:
          type: integer
          example: 24
          description: >-
            The number of months over which the loan will be repaid as requested
            by the customer.
        requested_loan_amount:
          type: object
          description: The loan amount requested by the customer.
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        requested_interest_rate:
          type: number
          nullable: true
          format: float
          example: 0.02
          description: The requested monthly interest rate to apply to the loan.
        requested_emi:
          type: object
          nullable: true
          description: >-
            The requested equated monthly installment (EMI) the customer wants
            to pay each month to repay the loan principal and interest (in EUR).
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        private_insurance_amount:
          type: object
          description: The amount of the private insurance the customer pays monthly.
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        partner_reference_number:
          type: string
          nullable: true
          description: Your internal reference number for the customer.
        number_of_kids:
          type: integer
          nullable: true
          description: The number of kids the customer has.
        number_of_dependents:
          type: integer
          description: The number of dependents the customer has.
        net_income_amount:
          type: object
          description: The customer's net income amount in EUR after tax deduction.
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        living_situation_amount:
          type: object
          description: >-
            The customer's living monthly expenses, e.g., rent or mortgage,
            utilities, health insurance, etc.
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        living_situation:
          type: string
          example: LIVING_IN_RENTED_HOUSE
          enum:
            - LIVING_WITH_PARENTS
            - LIVING_IN_RENTED_HOUSE
            - LIVING_IN_OWN_HOUSE
          description: The customer's living situation.
        is_joint_application:
          type: boolean
          nullable: true
          description: >-
            A field to indicate whether the application is a joint application
            or not.
        existing_credit_repayment_excluding_mortgage:
          type: object
          nullable: true
          description: >-
            The customer's existing debt repayments (in EUR) (excluding mortgage
            payments).
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        additional_costs:
          type: object
          nullable: true
          description: Any additional costs the customer incurs on a regular basis.
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
    ConsumerLoan.CreateAnonymousOfferResponse:
      type: object
      title: ConsumerLoan.CreateAnonymousOfferResponse
      required:
        - loan_decision
      properties:
        offer:
          type: object
          required:
            - loan_amount
            - loan_term
            - interest_rate
            - monthly_installment
          properties:
            monthly_installment:
              description: The loan monthly installment (in EURO).
              allOf:
                - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
            loan_term:
              type: integer
              example: 24
              description: The number of months over which the loan will be repaid.
            loan_amount:
              description: The loan amount (in EURO) to be paid out to the customer.
              allOf:
                - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
            interest_rate:
              type: number
              format: float
              example: 0.02
              description: The monthly interest rate to be applied to the loan.
          nullable: true
        loan_decision:
          type: string
          example: OFFERED
          enum:
            - REJECTED
            - OFFERED
          description: Solaris' decision on the loan application.
    ConsumerLoan.TwoThirdsRatesResponse:
      type: object
      title: ConsumerLoan.TwoThirdsRatesResponse
      required:
        - two_thirds_rate
      properties:
        two_thirds_rate:
          type: object
          description: The 2/3 interest rate for various loan terms.
      example:
        two_thirds_rate:
          '6': 0.04
          '12': 0.04
          '18': 0.04
    ConsumerLoan.CreateApplicationRequest:
      type: object
      title: ConsumerLoan.CreateApplicationRequest
      required:
        - credit_record_id
        - number_of_dependents
        - living_situation
        - living_situation_amount
        - loan_purpose
        - moved_in_last_two_years
        - net_income_amount
        - partner_reference_number
        - private_insurance_amount
        - repayment_day_of_month
        - requested_loan_amount
        - requested_loan_term
      properties:
        seller:
          type: string
          nullable: true
          description: The name of the seller of the financed good.
        payout_description:
          type: string
          nullable: true
          description: Additional details around the loan payout.
        solarisbank_scoring:
          type: string
          nullable: true
          description: Solaris' score for the customer.
        private_insurance_amount:
          description: The amount of the private insurance the customer pays monthly.
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        recipient_iban:
          type: string
          nullable: true
          example: DE92370601930002130041
          description: >-
            The IBAN of the recipient's account. This account will be debited
            with a SEPA Direct Debit (SDD) in the amount of the loan's monthly
            installment. Unless stated otherwise in your configurations, the
            loan will also be paid out to this account.
        payout_account_name:
          type: string
          nullable: true
          description: >-
            The name of the payout account holder (i.e., the account to which
            the loan will be paid out). You may only use this field if your
            configurations allow it via
            `allow_loan_specific_payout_account_ibans`.
        existing_credit_repayment_excluding_mortgage:
          type: object
          nullable: true
          description: >-
            The customer's existing debt repayments (in EUR) (excluding mortgage
            payments).
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        mortgage:
          type: object
          nullable: true
          description: The customer's mortgage payments (in EUR).
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        requested_interest_rate:
          type: number
          nullable: true
          format: float
          example: 0.02
          description: The requested monthly interest rate to apply to the loan.
        requested_loan_term:
          type: integer
          description: The number of months over which the loan will be repaid.
        payout_account_iban:
          type: string
          nullable: true
          description: >-
            The IBAN (different from recipient_iban) to which the loan will be
            paid out. You may only use this field if your configurations allow
            it via `allow_loan_specific_payout_account_ibans`.
        moved_in_last_two_years:
          type: boolean
          description: >-
            Field to indicate whether the customer has moved and changed
            addresses in the last two years.
        credit_record_id:
          type: string
          example: fbb7d15fa4c54ba0b077592665ef04a4ccrd
          description: The unique ID of a customer's credit record.
        loan_purpose:
          type: string
          example: Buying a car.
          description: The purpose of the loan.
        delayed_payout_strategy:
          type: string
          enum:
            - none
            - after_revocation
          description: >-
            Field to indicate the payout strategy to be applied to the loan. If
            set to `none`, then the loan payout will happen automatically.
          default: none
        living_situation:
          type: string
          example: LIVING_IN_RENTED_HOUSE
          enum:
            - LIVING_WITH_PARENTS
            - LIVING_IN_RENTED_HOUSE
            - LIVING_IN_OWN_HOUSE
          description: The customer's living situation.
        partner_score:
          type: string
          nullable: true
          description: The score assigned to the customer by your internal scoring flow.
        financed_good:
          type: string
          nullable: true
          description: The financed good that was purchased using the loan.
        repayment_day_of_month:
          type: integer
          example: 1
          enum:
            - 1
            - 15
          description: The day of the month when the customer pays the loan installment.
        number_of_dependents:
          type: integer
          description: The number of dependents the customer has.
        employment_since:
          type: string
          nullable: true
          format: date
          example: '2019-08-24'
          description: The date when the customer started their current employment.
        partner_reference_number:
          type: string
          description: Your internal reference number for the customer.
        cash_price:
          type: object
          nullable: true
          description: >-
            The cash price of the financed good (i.e., net price without
            financing fees, interest).
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        number_of_kids:
          type: integer
          nullable: true
          description: The number of kids the customer has.
        requested_loan_amount:
          description: The loan amount requested by the customer.
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        is_joint_application:
          type: boolean
          nullable: true
          description: >-
            A field to indicate whether the application is a joint application
            or not.
        employment_until:
          type: string
          nullable: true
          format: date
          description: The date when the customer ended an employment.
        net_income_amount:
          description: The customer's net income amount in EUR after tax deduction.
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        solarisbank_risk_class:
          type: integer
          nullable: true
          description: The risk class assigned to the customer by Solaris.
        additional_costs:
          type: object
          nullable: true
          description: Any additional costs the customer incurs on a regular basis.
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        rent:
          type: object
          nullable: true
          description: The customer's monthly rent (in EUR).
          deprecated: true
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        living_situation_amount:
          type: object
          description: >-
            The customer's living monthly expenses, i.e., rent or mortgage,
            utilities, health insurance, etc.
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        requested_emi:
          type: object
          nullable: true
          description: >-
            The requested equated monthly installment (EMI) in EUR the customer
            wants to pay each month to repay the loan principal and interest.
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
    ConsumerLoan.Offer:
      type: object
      title: ConsumerLoan.Offer
      required:
        - id
        - loan_amount
        - loan_term
        - interest_rate
        - annual_percentage_rate
        - effective_interest_rate
        - monthly_installment
        - approximate_total_loan_expenses
        - subsidized
        - type
      properties:
        type:
          type: string
          enum:
            - original
            - decreased_amount
            - increased_term
          description: The type of the loan offer.
        subsidized:
          type: boolean
          description: A field to indicate whether the loan offer is subsidized or not.
        monthly_installment:
          description: ''
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        loan_term:
          type: integer
          description: The number of months over which the loan will be repaid.
        loan_amount:
          description: The loan amount offered to the customer.
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        interest_rate:
          type: number
          format: float
          description: The offered monthly interest rate to be applied to the loan.
        id:
          type: string
          description: The unique ID of the loan offer.
        effective_interest_rate:
          type: number
          format: float
          description: The annual effective interest rate to be applied to the loan.
        approximate_total_loan_expenses:
          type: object
          description: >-
            An approximate amount of the loan total expenses (e.g., costs and
            expenses the lender incurred during a loan lifecycle).
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        annual_percentage_rate:
          type: number
          format: float
          description: >-
            A percentage that represents the yearly cost of funds over the term
            of a loan. It includes interest, fees and additional costs
            associated with a loan.
      nullable: true
      example:
        type: original
        subsidized: false
        monthly_installment:
          value: 10000000
          unit: cents
          currency: EUR
        loan_term: 36
        loan_amount:
          value: 10000000
          unit: cents
          currency: EUR
        interest_rate: 0.12
        id: 105a0fa505f44afea4b433d170b83d87cofr
        effective_interest_rate: 0.13
        approximate_total_loan_expenses:
          value: 10000000
          unit: cents
          currency: EUR
        annual_percentage_rate: 0.13
    ConsumerLoan.GetBindingOfferResponse:
      type: object
      title: ConsumerLoan.GetBindingOfferResponse
      required:
        - id
        - loan_decision
      properties:
        offer:
          $ref: '#/components/schemas/ConsumerLoan.Offer'
        loan_decision:
          type: string
          example: OFFERED
          enum:
            - REJECTED
            - OFFERED
            - OFFERED_ALTERNATIVE
          description: Solaris' decision on the consumer loan application.
        id:
          type: string
          example: 9b3147c5498b405d9402630bc308ad0ecofr
          description: The unique ID of the loan offer.
        customer_category:
          type: string
          nullable: true
          example: GREEN
          enum:
            - AMBER
            - GREEN
            - RED
          description: The customer's risk category as scored by Solaris' scoring system.
          deprecated: true
    SolarisToolkit.Web.Json.Error:
      type: object
      title: SolarisToolkit.Web.Json.Error
      required:
        - id
        - status
        - code
        - title
        - detail
      properties:
        title:
          type: string
          description: Some short human friendly string
        status:
          type: integer
          description: The HTTP status
        source:
          type: object
          required:
            - field
            - message
          properties:
            message:
              type: string
            field:
              type: string
          nullable: true
          example:
            message: is_required
            field: name
          description: Optional computer-friendly error source description
        id:
          type: string
          description: A UUID, preferably the request ID
        detail:
          type: string
          description: 'Some human friendly-ish detail: field is required'
        code:
          type: string
          description: some_computer_friendly_string
        backtrace:
          type: array
          nullable: true
          items:
            type: string
          description: Optional array of backtrace lines
    SolarisToolkit.Web.Json.ErrorBody:
      type: object
      title: SolarisToolkit.Web.Json.ErrorBody
      required:
        - errors
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/SolarisToolkit.Web.Json.Error'
    ConsumerLoan.GetApplicationResponse:
      type: object
      title: ConsumerLoan.GetApplicationResponse
      required:
        - id
        - status
      properties:
        status_description:
          type: string
          nullable: true
          description: Additional details about the consumer loan application status.
        status:
          type: string
          example: esign_pending
          enum:
            - offered
            - account_snapshot_verification
            - approved
            - esign_pending
            - screening_pending
            - esign_failed
            - loan_creation_pending
            - loan_created
            - rejected
            - deleted
            - expired
          description: The status of a consumer loan application.
        skip_account_snapshot:
          type: boolean
          nullable: false
        signing_id:
          type: string
          nullable: true
          example: 7c63600ddddec4f2668893af39c1b814csig
          description: >-
            The ID of the signing resource, created after the customer's
            identification and e-signing process has been triggered.
        seller:
          type: string
          nullable: true
          description: The name of the seller of the financed good.
        payout_description:
          type: string
          nullable: true
          description: Additional details around the loan payout.
        loan_id:
          type: string
          nullable: true
          description: The unique ID of a loan.
        id:
          type: string
          example: 108787ede6b743dcbe0c3398bc4a6ce8clap
          description: The unique ID of a customer's consumer loan application.
        financed_good:
          type: string
          nullable: true
          description: The financed good that was purchased using the loan.
        delayed_payout_strategy:
          type: string
          enum:
            - none
            - after_revocation
          description: >-
            Field to indicate the payout strategy to be applied to the loan. If
            set to `none`, then the loan payout will happen automatically.
        cash_price:
          type: object
          nullable: true
          description: >-
            The cash price of the financed good (i.e., net price without
            financing fees, interest).
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
        approximate_total_loan_expenses:
          type: object
          nullable: true
          description: >-
            An approximate amount of the loan total expenses (e.g., costs and
            expenses the lender incurred during a loan lifecycle)
          allOf:
            - $ref: '#/components/schemas/SolarisToolkit.Web.Money'
    ConsumerLoan.SkipAccountSnapshotRequest:
      type: object
      title: ConsumerLoan.SkipAccountSnapshotRequest
      properties: {}
    ConsumerLoan.LinkAccountSnapshotRequest:
      type: object
      title: ConsumerLoan.LinkAccountSnapshotRequest
      required:
        - account_snapshot_id
      properties:
        account_snapshot_id:
          type: string
          example: 2a9fbb2fc5be45f7b8ca782c45715576snap
          description: The unique ID of a customer's account snapshot.
    ConsumerLoan.UploadPurchaseContractRequest:
      type: object
      title: ConsumerLoan.UploadPurchaseContractRequest
      required:
        - file
        - signature_position
      properties:
        signature_position:
          type: object
          required:
            - page
            - left
            - width
            - bottom
            - height
          properties:
            width:
              type: integer
              minimum: 0
            page:
              type: string
            left:
              type: integer
              minimum: 0
            height:
              type: integer
              minimum: 0
            bottom:
              type: integer
              minimum: 0
        file:
          type: string
          description: The contract file (Base64 encoded).
    ConsumerLoan.CreateSubsidizedOfferRequest:
      type: object
      title: ConsumerLoan.CreateSubsidizedOfferRequest
      required:
        - interest_rate
      properties:
        interest_rate:
          type: number
          format: float
          example: 0.02
          description: The requested reduced interest rate to be applied to the loan offer.
    ConsumerLoan.DownloadOfferPreContractResponse:
      type: string
      title: ConsumerLoan.DownloadOfferPreContractResponse
      format: binary
    ConsumerLoan.DownloadOfferContractResponse:
      type: string
      title: ConsumerLoan.DownloadOfferContractResponse
      format: binary
    ConsumerLoan.CreateLoanRequest:
      type: object
      title: ConsumerLoan.CreateLoanRequest
      properties: {}
    ConsumerLoan.CreateLoanResponse:
      type: object
      title: ConsumerLoan.CreateLoanResponse
      required:
        - id
      properties:
        id:
          type: string
          example: 6c8b5faf3c2d4a5682c5c80ef7382387cloa
          description: The unique ID of the loan.
