Spare RiskReport API

The RiskReport API from Spare — 6 operation(s) for riskreport.

Operations 6

GET /api/v1.0/ais/RiskReport/Create Create account information risk report.
GET /api/v1.0/ais/RiskReport/Get Get account information risk report by id.
GET /api/v1.0/ais/RiskReport/Export Export account information risk report.
POST /api/v1.0/ais/RiskReport/List List account information reports.
GET /api/v1.0/ais/RiskReport/Status Get account information risk report status.
DELETE /api/v1.0/ais/RiskReport/Delete Delete account information risk report

Work with this as data

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

MCP server

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

https://apis.io/mcp

Tools for apis

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

Call it yourself

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

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

Get an API key

Free tier, no email required.

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

OpenAPI Specification

spare-riskreport-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Information Account Risk Report API
  description: Spare account information API documentation
  termsOfService: https://terms.tryspare.com/en
  contact:
    name: Spare Technologies WLL.
    email: hello@tryspare.com
  license:
    name: Spare Technologies WLL.
  version: '1.0'
servers:
- url: https://ob.tryspare.com/api/v1.0/authentication
  description: Base URL declared by the provider in apis.yml (roadmap#122).
security:
- Bearer: []
tags:
- name: RiskReport
paths:
  /api/v1.0/ais/RiskReport/Create:
    get:
      tags:
      - RiskReport
      summary: Create account information risk report.
      description: '**Unique resource name :** ais.v1.risk_report.create'
      parameters:
      - name: customerId
        in: query
        description: Customer ID
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '500':
          description: Internal Server Error
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RiskReportStatusResponseModelApiResponse'
        '400':
          description: '- If customer ID not valid

            - If consent is expired

            - If consent is not authorized

            - If account data not found

            - If balance data not found

            - If transaction data not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '404':
          description: '- If customer not found'
  /api/v1.0/ais/RiskReport/Get:
    get:
      tags:
      - RiskReport
      summary: Get account information risk report by id.
      description: '**Unique resource name :** ais.v1.risk_report.get'
      parameters:
      - name: reportId
        in: query
        description: Report ID
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '500':
          description: Internal Server Error
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RiskScoreResponseApiResponse'
        '400':
          description: '- If consent id is not valid.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
  /api/v1.0/ais/RiskReport/Export:
    get:
      tags:
      - RiskReport
      summary: Export account information risk report.
      description: '**Unique resource name :** ais.v1.risk_report.export'
      parameters:
      - name: reportId
        in: query
        description: Report ID
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '401':
          description: Unauthorized
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '402':
          description: Payment Required
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '403':
          description: Forbidden
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '500':
          description: Internal Server Error
        '200':
          description: ''
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '400':
          description: '- If consent id is not valid.'
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '404':
          description: '- - If consent not found'
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
  /api/v1.0/ais/RiskReport/List:
    post:
      tags:
      - RiskReport
      summary: List account information reports.
      description: '**Unique resource name :** ais.v1.account_information_report.list'
      parameters:
      - name: customerId
        in: query
        description: Customer id
        required: true
        schema:
          type: string
          format: uuid
      - name: page
        in: query
        description: Page number
        schema:
          type: integer
          format: int32
          default: '1'
      - name: perPage
        in: query
        description: Number of items per page maximum allow is 10 per page
        schema:
          type: integer
          format: int32
          default: '10'
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '500':
          description: Internal Server Error
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RiskReportStatusResponseModelIEnumerablePagesModelMetaApiResponse'
        '400':
          description: '- If pagination is not valid.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '404':
          description: '- If customer not found'
  /api/v1.0/ais/RiskReport/Status:
    get:
      tags:
      - RiskReport
      summary: Get account information risk report status.
      description: '**Unique resource name :** ais.v1.risk_report.status'
      parameters:
      - name: reportId
        in: query
        description: Report ID
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '500':
          description: Internal Server Error
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RiskReportStatusResponseModelApiResponse'
        '400':
          description: '- If the job is null or not a valid UUID.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '404':
          description: '- If the job does not exist.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
  /api/v1.0/ais/RiskReport/Delete:
    delete:
      tags:
      - RiskReport
      summary: Delete account information risk report
      description: '**Unique resource name :** ais.v1.risk_report.delete'
      parameters:
      - name: reportId
        in: query
        description: Risk report ID
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
        '500':
          description: Internal Server Error
        '204':
          description: ''
        '400':
          description: '- If id is null or an invalid UUID.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectApiResponse'
components:
  schemas:
    IncomeTrendDetail:
      type: object
      properties:
        firstMonthIncome:
          type: number
          format: double
        lastMonthIncome:
          type: number
          format: double
        normalizedGrowthRate:
          type: number
          format: double
        growthConsistencyRatio:
          type: number
          format: double
        adjustedScore:
          type: integer
          format: int32
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    RecurringPaymentLoadDetail:
      type: object
      properties:
        avgMonthlyInflow:
          type: number
          format: double
        avgMonthlyRecurringPayment:
          type: number
          format: double
        recurringPaymentLoad:
          type: number
          format: double
        recurringPaymentLoadPercentage:
          type: number
          format: double
        notApplicable:
          type: boolean
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    SalaryRangeDetail:
      type: object
      properties:
        minMonthlySalary:
          type: number
          format: double
        maxMonthlySalary:
          type: number
          format: double
        medianMonthlySalary:
          type: number
          format: double
        salaryVariabilityRatio:
          type: number
          format: double
        salaryCoverageRatio:
          type: number
          format: double
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    PositiveEndOfMonthBalanceDetail:
      type: object
      properties:
        positiveMonths:
          type: integer
          format: int32
        negativeMonths:
          type: integer
          format: int32
        positiveMonthPercentage:
          type: number
          format: double
        usedNetCashFlowFallback:
          type: boolean
        notApplicable:
          type: boolean
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    AvgMonthlyOutflowDetail:
      type: object
      properties:
        monthlyOutflowValues:
          type:
          - array
          - 'null'
          items:
            type: number
            format: double
        avgMonthlyOutflow:
          type: number
          format: double
        outflowVariabilityRatio:
          type:
          - number
          - 'null'
          format: double
        expenseGrowthRate:
          type:
          - number
          - 'null'
          format: double
        expenseBurdenRatio:
          type:
          - number
          - 'null'
          format: double
        expenseBurdenScore:
          type:
          - integer
          - 'null'
          format: int32
        stabilityScore:
          type:
          - integer
          - 'null'
          format: int32
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    EmployerConsistencyDetail:
      type: object
      properties:
        distinctEmployers:
          type: integer
          format: int32
        primaryEmployer:
          type:
          - string
          - 'null'
        durationRatio:
          type: number
          format: double
        employerSwitchCount:
          type: integer
          format: int32
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    RiskReportStatusResponseModel:
      type: object
      properties:
        customerId:
          type:
          - string
          - 'null'
          format: uuid
        ReportId:
          type: string
          format: uuid
        status:
          type:
          - string
          - 'null'
        reason:
          type:
          - string
          - 'null'
        createdAt:
          type: string
          format: date-time
      additionalProperties: false
    DebtServiceRatioDetail:
      type: object
      properties:
        avgMonthlyInflow:
          type: number
          format: double
        avgMonthlyDebtPayment:
          type: number
          format: double
        dsrRatio:
          type: number
          format: double
        dsrPercentage:
          type: number
          format: double
        notApplicable:
          type: boolean
        insufficientData:
          type:
          - boolean
          - 'null'
        newLoanGuardrail:
          type:
          - boolean
          - 'null'
        incomeDecliningAdjustment:
          type:
          - boolean
          - 'null'
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    RepaymentRegularityDetail:
      type: object
      properties:
        emiExpectedAmount:
          type:
          - number
          - 'null'
          format: double
        totalExpectedPayments:
          type: integer
          format: int32
        onTimePayments:
          type: integer
          format: int32
        missedPayments:
          type: integer
          format: int32
        fullPayments:
          type: integer
          format: int32
        onTimeRatio:
          type: number
          format: double
        fullPaymentRatio:
          type: number
          format: double
        missedRatio:
          type: number
          format: double
        compositeRawScore:
          type: number
          format: double
        notApplicable:
          type: boolean
        insufficientEmiCycles:
          type:
          - boolean
          - 'null'
        newLoanGuardrail:
          type:
          - boolean
          - 'null'
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    ObjectApiResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ApiError'
        errorDescription:
          type:
          - object
          - 'null'
          additionalProperties:
            type:
            - array
            - 'null'
            items:
              type: string
        data: {}
      additionalProperties: false
    AvgMonthlyInflowDetail:
      type: object
      properties:
        monthlyInflowValues:
          type:
          - array
          - 'null'
          items:
            type: number
            format: double
        avgMonthlyInflow:
          type: number
          format: double
        inflowVariabilityRatio:
          type:
          - number
          - 'null'
          format: double
        coverageRatio:
          type:
          - number
          - 'null'
          format: double
        magnitudeScore:
          type:
          - integer
          - 'null'
          format: int32
        stabilityScore:
          type:
          - integer
          - 'null'
          format: int32
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    RiskReportStatusResponseModelApiResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ApiError'
        errorDescription:
          type:
          - object
          - 'null'
          additionalProperties:
            type:
            - array
            - 'null'
            items:
              type: string
        data:
          $ref: '#/components/schemas/RiskReportStatusResponseModel'
      additionalProperties: false
    IncomeFrequencyDetail:
      type: object
      properties:
        frequencyType:
          type:
          - string
          - 'null'
        medianGapDays:
          type: number
          format: double
        gapStabilityRatio:
          type: number
          format: double
        coverageRatio:
          type: number
          format: double
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    DoubleFeatureSignal:
      type: object
      properties:
        value:
          type: number
          format: double
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    EmergencyBufferDetail:
      type: object
      properties:
        avgAvailableBalance:
          type: number
          format: double
        avgMonthlyExpense:
          type: number
          format: double
        emergencyBufferMonths:
          type: number
          format: double
        notApplicable:
          type: boolean
        usedCurrentBalanceFallback:
          type: boolean
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    FixedVsDiscretionarySpendDetail:
      type: object
      properties:
        avgFixedSpend:
          type: number
          format: double
        avgDiscretionarySpend:
          type: number
          format: double
        avgTotalSpend:
          type: number
          format: double
        fixedSpendRatio:
          type: number
          format: double
        discretionaryRatio:
          type: number
          format: double
        notApplicable:
          type: boolean
        unreliableCategorization:
          type: boolean
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    FeatureSet:
      type: object
      properties:
        salaryCoefficientOfVariation:
          $ref: '#/components/schemas/DoubleFeatureSignal'
        salaryRangeDetail:
          $ref: '#/components/schemas/SalaryRangeDetail'
        incomeFrequencyDetail:
          $ref: '#/components/schemas/IncomeFrequencyDetail'
        employerConsistencyDetail:
          $ref: '#/components/schemas/EmployerConsistencyDetail'
        incomeTrendDetail:
          $ref: '#/components/schemas/IncomeTrendDetail'
        avgMonthlyInflowDetail:
          $ref: '#/components/schemas/AvgMonthlyInflowDetail'
        avgMonthlyOutflowDetail:
          $ref: '#/components/schemas/AvgMonthlyOutflowDetail'
        cashFlowRatioDetail:
          $ref: '#/components/schemas/CashFlowRatioDetail'
        volatilityIndexDetail:
          $ref: '#/components/schemas/VolatilityIndexDetail'
        overdraftFrequencyDetail:
          $ref: '#/components/schemas/OverdraftFrequencyDetail'
        fixedVsDiscretionarySpendDetail:
          $ref: '#/components/schemas/FixedVsDiscretionarySpendDetail'
        positiveEndOfMonthBalanceDetail:
          $ref: '#/components/schemas/PositiveEndOfMonthBalanceDetail'
        savingRatioDetail:
          $ref: '#/components/schemas/SavingRatioDetail'
        emergencyBufferDetail:
          $ref: '#/components/schemas/EmergencyBufferDetail'
        recurringPaymentLoadDetail:
          $ref: '#/components/schemas/RecurringPaymentLoadDetail'
        highRiskCategorySpendDetail:
          $ref: '#/components/schemas/HighRiskCategorySpendDetail'
        activeLoanMortgageDetail:
          $ref: '#/components/schemas/ActiveLoanMortgageDetail'
        repaymentRegularityDetail:
          $ref: '#/components/schemas/RepaymentRegularityDetail'
        debtServiceRatioDetail:
          $ref: '#/components/schemas/DebtServiceRatioDetail'
        repaymentScore:
          $ref: '#/components/schemas/DecimalFeatureSignal'
        fixedSpendRatio:
          $ref: '#/components/schemas/DecimalFeatureSignal'
        incomeTransactionCount:
          $ref: '#/components/schemas/Int32FeatureSignal'
        riskyTransactionCount:
          $ref: '#/components/schemas/Int32FeatureSignal'
        averageTransactionAmount:
          $ref: '#/components/schemas/DecimalFeatureSignal'
        incomeStabilityScore:
          $ref: '#/components/schemas/DecimalFeatureSignal'
        estimatedValueByYear:
          $ref: '#/components/schemas/DecimalFeatureSignal'
      additionalProperties: false
    RiskReportStatusResponseModelIEnumerablePagesModelMetaApiResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ApiError'
        errorDescription:
          type:
          - object
          - 'null'
          additionalProperties:
            type:
            - array
            - 'null'
            items:
              type: string
        data:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/RiskReportStatusResponseModel'
        meta:
          $ref: '#/components/schemas/PagesModel'
      additionalProperties: false
    Int32FeatureSignal:
      type: object
      properties:
        value:
          type: integer
          format: int32
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    RiskScoreResponseApiResponse:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ApiError'
        errorDescription:
          type:
          - object
          - 'null'
          additionalProperties:
            type:
            - array
            - 'null'
            items:
              type: string
        data:
          $ref: '#/components/schemas/RiskScoreResponse'
      additionalProperties: false
    ApiError:
      enum:
      - INVALID_DATA
      - INVALID_SIGNATURE
      - RESOURCE_LOCKED
      - COUNTRY_NOT_FOUND
      - CURRENCY_NOT_FOUND
      - PROVIDER_NOT_FOUND
      - CONNECTION_NOT_FOUND
      - INSUFFICIENT_CONSENT_PERMISSIONS
      - CONSENT_EXPIRED
      - CONSENT_REVOKED
      - CONSENT_UNAUTHORIZED
      - CONSENT_NOT_FOUND
      - RISK_REPORT_NOT_FOUND
      - ACCOUNT_INFORMATION_REPORT_NOT_FOUND
      - MULTIPLE_CURRENCY_NOT_ALLOWED
      - MULTIPLE_CONSENT_DATE_NOT_ALLOWED
      - PAYMENT_NOT_FOUND
      - CONSENT_REJECTED
      - PAYMENT_REQUEST_NOT_FOUND
      - CUSTOMER_NOT_FOUND
      - CUSTOMER_ALREADY_EXISTS
      - BANK_ACCOUNT_NOT_FOUND
      - SERVER_ERROR
      - PROVIDER_CONNECTION_FAILURE
      - TRANSACTION_NOT_FOUND
      - ACCOUNT_INFORMATION_ACCESS_REQUEST_NOT_FOUND
      - CONSENT_REVOCATION_FAILED
      - CONSENT_REVOKED_OR_EXPIRED
      - SUBSCRIPTION_EXPIRED
      - NOT_SUBSCRIBED_TO_SERVICE
      - BENEFICIARY_NOT_FOUND
      - PARTIES_NOT_FOUND
      - DIRECT_DEBIT_NOT_FOUND
      - SCHEDULED_PAYMENT_NOT_FOUND
      - DEBTOR_ACCOUNT_NOT_FOUND
      - CREDITOR_ACCOUNT_NOT_FOUND
      - UNAUTHORIZED_IP_ADDRESS
      type: string
    VolatilityIndexDetail:
      type: object
      properties:
        incomeVolatility:
          type: number
          format: double
        expenseVolatility:
          type: number
          format: double
        balanceVolatility:
          type: number
          format: double
        balanceVolatilityFromDailyBalances:
          type: boolean
        volatilityIndexRaw:
          type: number
          format: double
        normalizedIndex:
          type: number
          format: double
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    RiskScoreResponse:
      type: object
      properties:
        riskLevel:
          type:
          - string
          - 'null'
        score:
          type:
          - integer
          - 'null'
          format: int32
        currency:
          type:
          - string
          - 'null'
        reportId:
          type: string
          format: uuid
        accountHolderName:
          type:
          - string
          - 'null'
        requestedBy:
          type:
          - string
          - 'null'
        createdAt:
          type: string
          format: date-time
        features:
          $ref: '#/components/schemas/FeatureSet'
      additionalProperties: false
    ActiveLoanMortgageDetail:
      type: object
      properties:
        loanDetected:
          type:
          - boolean
          - 'null'
        loanTypeDetected:
          type:
          - string
          - 'null'
        monthlyEmiEstimated:
          type: number
          format: double
        notApplicable:
          type: boolean
        insufficientData:
          type:
          - boolean
          - 'null'
        newLoanWithinTwoCycles:
          type: boolean
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    OverdraftFrequencyDetail:
      type: object
      properties:
        observationWindowDays:
          type: integer
          format: int32
        overdraftDays:
          type: integer
          format: int32
        overdraftEpisodeCount:
          type: integer
          format: int32
        overdraftFrequencyRatio:
          type: number
          format: double
        insufficientBalanceHistory:
          type: boolean
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    HighRiskCategorySpendDetail:
      type: object
      properties:
        avgTotalSpend:
          type: number
          format: double
        avgHighRiskSpend:
          type: number
          format: double
        highRiskSpendRatio:
          type: number
          format: double
        highRiskSpendPercentage:
          type: number
          format: double
        notApplicable:
          type: boolean
        singleIsolatedRiskyTransactionExcluded:
          type:
          - boolean
          - 'null'
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    DecimalFeatureSignal:
      type: object
      properties:
        value:
          type: number
          format: double
        observationWindowMonths:
          type:
          - integer
          - 'null'
          format: int32
        score:
          type:
          - integer
          - 'null'
          format: int32
        interpretation:
          type:
          - string
          - 'null'
      additionalProperties: false
    SavingRatioDetail:
      type: object
      properties:
        avgMonthlyInflow:
          type: number
          format: double
        avgMonthlyClosingBalance:
          type: number
          format: double
        savingRatio:
          type: number
          format: double
        savingRatioPercentage:
 

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