Oper Simulators API

The Simulators API from Oper — 15 operation(s) for simulators.

Operations 20

POST /api/simulators/calculate/ #
POST /api/simulators/default-products/ #
GET /api/simulators/discounts/ #
POST /api/simulators/discounts/ #
GET /api/simulators/mortgage/advisor/client-upload-document-types/ #
GET /api/simulators/mortgage/advisor/client-upload-document-types/{id}/ #
POST /api/simulators/mortgage/advisor/convert/ #
POST /api/simulators/mortgage/advisor/products/ #
GET /api/simulators/mortgage/advisor/simulations/ #
POST /api/simulators/mortgage/advisor/simulations/ #
POST /api/simulators/mortgage/advisor/simulations/clean-up/ #
DELETE /api/simulators/mortgage/advisor/simulations/{id}/ #
GET /api/simulators/mortgage/advisor/simulations/{id}/ #
PATCH /api/simulators/mortgage/advisor/simulations/{id}/ #
PUT /api/simulators/mortgage/advisor/simulations/{id}/ #
DELETE /api/simulators/mortgage/advisor/simulations/{id}/remove/ #
POST /api/simulators/mortgage/advisor/simulations/{id}/sync-simulations/ #
POST /api/simulators/mortgage/client/ #
POST /api/simulators/offer/ #
POST /api/simulators/offers/ #

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/oper-simulators-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

oper-simulators-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Oper Agent Documents Simulators API
  version: '1.0'
servers:
- url: https://api.opercredits.com
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Simulators
paths:
  /api/simulators/calculate/:
    post:
      operationId: api_simulators_calculate_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdvisorMortgageSimulator'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AdvisorMortgageSimulator'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AdvisorMortgageSimulator'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdvisorMortgageSimulator'
          description: ''
      security:
      - jwtAuth: []
      tags:
      - Simulators
  /api/simulators/default-products/:
    post:
      description: "The DynamicProductLiteViewSet provides a way to fetch the list of available products by providing loan request data\n as input since no actual LR will exist at the time of calling this in Advisor Simulator v2.\nIt is used to select products to add to an offer as product items.\n\nThe list is a multiplication of the active ProductVersions with a start date of at least today and\nthe allowed variabilities configured for the product.\nAs an example:\n2 Products (A & B) with each one version\nProduct A has 2 allowed variabilities (fix and 5-5-5)\nProduct B has 1 allowed variabilities (fix)\nThe view will return 3 results\nIf product A has 2 versions that have a start date of at least today, the view will return 5 results.\n\nNext to the product details, the view runs the acceptance rules and provides the result in the errors attribute.\n\nDeveloper notes:\nThe logic used in this view and its related code assumes that there is no offer or product items\nto base calculations on.\n\nYou can define the duration you want to calculate the products for by setting the query params min_duration\nand max_duration to an equal value. Otherwise, those values are only used to filter and the default duration\non the product version is used in the calculations.,\n\nInputs will be sent in the body of the POST request:\n{\n    \"loan_amount\": decimal,\n    \"cash_own_funds\": decimal,\n    \"bridge_loan_amount\": decimal,\n    \"realty_price\": decimal,\n    \"building_costs\": decimal,\n    \"price_of_land\": decimal,\n    \"total_renovation_costs\": decimal,\n    \"cost_vat\": decimal,\n    \"additional_financing_needs\": decimal,\n    \"region\": {\n        \"id\": int,\n        \"definition\": \"str\"\n    },\n    \"is_main_first_residence\": boolean,\n    \"venal_value_after\": decimal,\n    \"loan_purposes\": [\n        {\n            \"id\": int,\n            \"definition\": \"str\"\n        }\n    ]\n}\n\nAs inputs we will take known data from the simulator and construct LoanRequest and Realty objects, which will then\nbe used to initialize DataHandlers in Serializer context. Then the serializer will proceed with rate calculations.\nThis serializer won't be running acceptance criteria and will not have the results in the data."
      operationId: api_simulators_default_products_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DynamicProductLite'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/DynamicProductLite'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/DynamicProductLite'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DynamicProductLite'
          description: ''
      security:
      - jwtAuth: []
      tags:
      - Simulators
  /api/simulators/discounts/:
    get:
      operationId: api_simulators_discounts_list
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/BaseProductDiscountsSimulator'
                type: array
          description: ''
      security:
      - jwtAuth: []
      tags:
      - Simulators
    post:
      operationId: api_simulators_discounts_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BaseProductDiscountsSimulator'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BaseProductDiscountsSimulator'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BaseProductDiscountsSimulator'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseProductDiscountsSimulator'
          description: ''
      security:
      - jwtAuth: []
      tags:
      - Simulators
  /api/simulators/mortgage/advisor/client-upload-document-types/:
    get:
      description: Informative document types
      operationId: api_simulators_mortgage_advisor_client_upload_document_types_list
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/DocumentType'
                type: array
          description: ''
      security:
      - jwtAuth: []
      tags:
      - Simulators
  /api/simulators/mortgage/advisor/client-upload-document-types/{id}/:
    get:
      description: Informative document types
      operationId: api_simulators_mortgage_advisor_client_upload_document_types_retrieve
      parameters:
      - description: A unique integer value identifying this Document Type.
        in: path
        name: id
        required: true
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentType'
          description: ''
      security:
      - jwtAuth: []
      tags:
      - Simulators
  /api/simulators/mortgage/advisor/convert/:
    post:
      description: Convert a simulation to Loan Request
      operationId: api_simulators_mortgage_advisor_convert_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConvertSimulationToLoanRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ConvertSimulationToLoanRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ConvertSimulationToLoanRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConvertLoanRequestSummary'
          description: ''
      security:
      - jwtAuth: []
      tags:
      - Simulators
  /api/simulators/mortgage/advisor/products/:
    post:
      description: "The DynamicProductLiteViewSet provides a way to fetch the list of available products by providing loan request data\n as input since no actual LR will exist at the time of calling this in Advisor Simulator v2.\nIt is used to select products to add to an offer as product items.\n\nThe list is a multiplication of the active ProductVersions with a start date of at least today and\nthe allowed variabilities configured for the product.\nAs an example:\n2 Products (A & B) with each one version\nProduct A has 2 allowed variabilities (fix and 5-5-5)\nProduct B has 1 allowed variabilities (fix)\nThe view will return 3 results\nIf product A has 2 versions that have a start date of at least today, the view will return 5 results.\n\nNext to the product details, the view runs the acceptance rules and provides the result in the errors attribute.\n\nDeveloper notes:\nThe logic used in this view and its related code assumes that there is no offer or product items\nto base calculations on.\n\nYou can define the duration you want to calculate the products for by setting the query params min_duration\nand max_duration to an equal value. Otherwise, those values are only used to filter and the default duration\non the product version is used in the calculations.,\n\nInputs will be sent in the body of the POST request:\n{\n    \"loan_amount\": decimal,\n    \"cash_own_funds\": decimal,\n    \"bridge_loan_amount\": decimal,\n    \"realty_price\": decimal,\n    \"building_costs\": decimal,\n    \"price_of_land\": decimal,\n    \"total_renovation_costs\": decimal,\n    \"cost_vat\": decimal,\n    \"additional_financing_needs\": decimal,\n    \"region\": {\n        \"id\": int,\n        \"definition\": \"str\"\n    },\n    \"is_main_first_residence\": boolean,\n    \"venal_value_after\": decimal,\n    \"loan_purposes\": [\n        {\n            \"id\": int,\n            \"definition\": \"str\"\n        }\n    ]\n}\n\nAs inputs we will take known data from the simulator and construct LoanRequest and Realty objects, which will then\nbe used to initialize DataHandlers in Serializer context. Then the serializer will proceed with rate calculations.\nThis serializer won't be running acceptance criteria and will not have the results in the data."
      operationId: api_simulators_mortgage_advisor_products_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DynamicProductLite'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/DynamicProductLite'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/DynamicProductLite'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DynamicProductLite'
          description: ''
      security:
      - jwtAuth: []
      tags:
      - Simulators
  /api/simulators/mortgage/advisor/simulations/:
    get:
      description: A ViewSet mixin that parametrizes DRF methods over roles
      operationId: api_simulators_mortgage_advisor_simulations_list
      parameters:
      - in: query
        name: analyst
        schema:
          type: integer
      - in: query
        name: loan_request
        schema:
          type: integer
      - in: query
        name: obsolete
        schema:
          type: boolean
      - description: Which field to use when ordering the results.
        in: query
        name: ordering
        required: false
        schema:
          type: string
      - description: A page number within the paginated result set.
        in: query
        name: page
        required: false
        schema:
          type: integer
      - description: Number of results to return per page.
        in: query
        name: page_size
        required: false
        schema:
          type: integer
      - description: A search term.
        in: query
        name: search
        required: false
        schema:
          type: string
      - in: query
        name: source
        schema:
          type: string
      - in: query
        name: status
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedReducedMortgageSimulationResultList'
          description: ''
      tags:
      - Simulators
    post:
      description: A ViewSet mixin that parametrizes DRF methods over roles
      operationId: api_simulators_mortgage_advisor_simulations_create
      responses:
        '201':
          description: No response body
      tags:
      - Simulators
  /api/simulators/mortgage/advisor/simulations/clean-up/:
    post:
      description: A ViewSet mixin that parametrizes DRF methods over roles
      operationId: api_simulators_mortgage_advisor_simulations_clean_up_create
      responses:
        '200':
          description: No response body
      tags:
      - Simulators
  /api/simulators/mortgage/advisor/simulations/{id}/:
    delete:
      description: A ViewSet mixin that parametrizes DRF methods over roles
      operationId: api_simulators_mortgage_advisor_simulations_destroy
      parameters:
      - description: A unique integer value identifying this Mortgage Simulation.
        in: path
        name: id
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: No response body
      tags:
      - Simulators
    get:
      description: A ViewSet mixin that parametrizes DRF methods over roles
      operationId: api_simulators_mortgage_advisor_simulations_retrieve
      parameters:
      - description: A unique integer value identifying this Mortgage Simulation.
        in: path
        name: id
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: No response body
      tags:
      - Simulators
    patch:
      description: A ViewSet mixin that parametrizes DRF methods over roles
      operationId: api_simulators_mortgage_advisor_simulations_partial_update
      parameters:
      - description: A unique integer value identifying this Mortgage Simulation.
        in: path
        name: id
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: No response body
      tags:
      - Simulators
    put:
      description: A ViewSet mixin that parametrizes DRF methods over roles
      operationId: api_simulators_mortgage_advisor_simulations_update
      parameters:
      - description: A unique integer value identifying this Mortgage Simulation.
        in: path
        name: id
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: No response body
      tags:
      - Simulators
  /api/simulators/mortgage/advisor/simulations/{id}/remove/:
    delete:
      description: A ViewSet mixin that parametrizes DRF methods over roles
      operationId: api_simulators_mortgage_advisor_simulations_remove_destroy
      parameters:
      - description: A unique integer value identifying this Mortgage Simulation.
        in: path
        name: id
        required: true
        schema:
          type: integer
      responses:
        '204':
          description: No response body
      tags:
      - Simulators
  /api/simulators/mortgage/advisor/simulations/{id}/sync-simulations/:
    post:
      description: A ViewSet mixin that parametrizes DRF methods over roles
      operationId: api_simulators_mortgage_advisor_simulations_sync_simulations_create
      parameters:
      - description: A unique integer value identifying this Mortgage Simulation.
        in: path
        name: id
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: No response body
      tags:
      - Simulators
  /api/simulators/mortgage/client/:
    post:
      operationId: api_simulators_mortgage_client_create
      responses:
        '200':
          description: No response body
      security:
      - jwtAuth: []
      - {}
      tags:
      - Simulators
  /api/simulators/offer/:
    post:
      operationId: api_simulators_offer_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateSimulatorOffer'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UpdateSimulatorOffer'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UpdateSimulatorOffer'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateSimulatorOffer'
          description: ''
      security:
      - jwtAuth: []
      tags:
      - Simulators
  /api/simulators/offers/:
    post:
      operationId: api_simulators_offers_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateSimulatorOffers'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/GenerateSimulatorOffers'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/GenerateSimulatorOffers'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateSimulatorOffers'
          description: ''
      security:
      - jwtAuth: []
      tags:
      - Simulators
components:
  schemas:
    Country:
      description: Can be managed at /resources/country
      properties:
        definition:
          type: string
        id:
          type: integer
        order:
          readOnly: true
          type: integer
      required:
      - definition
      - id
      - order
      type: object
    Discount2ndLevel:
      properties:
        discounts:
          items:
            $ref: '#/components/schemas/Discount3rdLevel'
          type: array
        explanations:
          items:
            $ref: '#/components/schemas/Explanation'
          type: array
        ignore_childs:
          default: false
          readOnly: true
          type: boolean
        interest_rate:
          format: double
          type: number
        is_corrected:
          default: false
          readOnly: true
          type: boolean
        is_default:
          readOnly: true
          type: boolean
        is_outdated:
          default: false
          readOnly: true
          type: boolean
        is_selected:
          default: false
          readOnly: true
          type: boolean
        is_selected_by_default:
          default: false
          type: boolean
        is_valid:
          default: true
          readOnly: true
          type: boolean
        max_discounts_allowed:
          default: 0
          readOnly: true
          type: integer
        name:
          type: string
        parameters:
          default: []
          items:
            $ref: '#/components/schemas/Parameter'
          readOnly: true
          type: array
      required:
      - ignore_childs
      - is_corrected
      - is_default
      - is_outdated
      - is_selected
      - is_valid
      - max_discounts_allowed
      - name
      - parameters
      type: object
    Notary:
      description: The same as ThirdPartySerializer but specifically for a Notary, without VAT, with bank account
      properties:
        VAT:
          readOnly: true
          type: string
        addresses:
          items:
            $ref: '#/components/schemas/Profile2Address'
          readOnly: true
          type: array
        bankAccount:
          readOnly: true
          type: string
        emails:
          items:
            $ref: '#/components/schemas/Profile2Email'
          readOnly: true
          type: array
        fsmaReference:
          readOnly: true
          type: string
        logo:
          readOnly: true
          type: string
        name:
          readOnly: true
          type: string
        phones:
          items:
            $ref: '#/components/schemas/Profile2Phone'
          readOnly: true
          type: array
        profileName:
          readOnly: true
          type: string
        websites:
          items:
            $ref: '#/components/schemas/CompanyProfile2Website'
          readOnly: true
          type: array
      required:
      - VAT
      - addresses
      - bankAccount
      - emails
      - fsmaReference
      - logo
      - name
      - phones
      - profileName
      - websites
      type: object
    NestedBaseRate:
      properties:
        id:
          readOnly: true
          type: integer
        percentage:
          readOnly: true
          type: string
        rate:
          format: double
          type: number
        variability:
          $ref: '#/components/schemas/Variability'
      required:
      - id
      - percentage
      - rate
      - variability
      type: object
    ProductItemCost:
      properties:
        amount_type:
          $ref: '#/components/schemas/AmountType'
        cost_type:
          $ref: '#/components/schemas/ProductCostType'
        duration:
          maximum: 2147483647
          minimum: -2147483648
          type: integer
        final_amount:
          format: double
          type: number
        final_first_month_amount:
          format: double
          type:
          - number
          - 'null'
        impacts_financial_plan:
          readOnly: true
          type: boolean
        is_included_in_allocation:
          type:
          - boolean
          - 'null'
        is_included_in_amortization:
          readOnly: true
          type: boolean
        is_overridable:
          readOnly: true
          type: boolean
        original_amount:
          format: double
          type: number
        original_first_month_amount:
          format: double
          type:
          - number
          - 'null'
        periodicity:
          $ref: '#/components/schemas/Periodicity'
        promotion:
          allOf:
          - $ref: '#/components/schemas/ProductItemCostPromotion'
        start_period:
          maximum: 2147483647
          minimum: -2147483648
          type: integer
      required:
      - amount_type
      - cost_type
      - final_amount
      - final_first_month_amount
      - impacts_financial_plan
      - is_included_in_amortization
      - is_overridable
      - original_amount
      - original_first_month_amount
      - periodicity
      type: object
    MinimalBaseProduct:
      description: "Baseclass for Reduced serializers.\n\nWill validate whether the objects exists, and returns the instance in to_internal_value\nSubclasses must implement Meta with at least the model and field attributes\n\nRaises\n------\n    Validations errors if the object doesn't exist\n    OperBadConfigurationException if the model isn't set"
      properties:
        id:
          type: integer
      required:
      - id
      type: object
    ReducedLoanRequest:
      description: Loan request reduced representation
      properties:
        borrower_reference:
          readOnly: true
          type: string
        external_reference:
          readOnly: true
          type: string
        id:
          type: integer
        internal_reference:
          readOnly: true
          type: string
        status:
          allOf:
          - $ref: '#/components/schemas/Status'
          readOnly: true
      required:
      - borrower_reference
      - external_reference
      - id
      - internal_reference
      - status
      type: object
    MortgageSimulatorMonthlyPaymentEstimationFinancialPlanLoanAmountField:
      properties:
        default_duration:
          maximum: 2147483647
          minimum: -2147483648
          type:
          - integer
          - 'null'
        default_rate:
          format: double
          type:
          - number
          - 'null'
        external_calculator_type:
          allOf:
          - $ref: '#/components/schemas/ExternalCalculatorType'
        id:
          type:
          - integer
          - 'null'
        is_calculated:
          type: boolean
        is_default:
          type: boolean
        is_loan_needed:
          type: boolean
        is_main:
          type: boolean
        is_overridable:
          type: boolean
        is_rounding_cash_out:
          type:
          - boolean
          - 'null'
        is_visible:
          type: boolean
        loan_amount_type:
          $ref: '#/components/schemas/FinancialPlanLoanAmountType'
        simulator_base_product:
          allOf:
          - $ref: '#/components/schemas/MortgageSimulatorBaseProduct'
          readOnly: true
      required:
      - loan_amount_type
      - simulator_base_product
      type: object
    RealtyPurpose:
      description: Can be managed at /resources/realty-purpose
      properties:
        definition:
          type: string
        id:
          type: integer
        order:
          readOnly: true
          type: integer
      required:
      - definition
      - id
      - order
      type: object
    UpdateSimulatorOffer:
      properties:
        architect_fees:
          format: double
          type:
          - number
          - 'null'
        borrowers_info:
          items:
            $ref: '#/components/schemas/MortgageSimulatorBorrowerInfo'
          type: array
          writeOnly: true
        building_costs:
          default: 0.0
          format: double
          minimum: 0
          type:
          - number
          - 'null'
          writeOnly: true
        buy_out_amount:
          format: double
          minimum: 0
          type:
          - number
          - 'null'
          writeOnly: true
        collaterals:
          items:
            $ref: '#/components/schemas/MortgageSimulatorCollateral'
          type: array
        epc_after_renovations:
          minimum: 0
          type:
          - integer
          - 'null'
          writeOnly: true
        epc_before_renovations:
          minimum: 0
          type:
          - integer
          - 'null'
          writeOnly: true
        fair_market_value:
          format: double
          minimum: 0
          type:
          - number
          - 'null'
          writeOnly: true
        financial_plan:
          allOf:
          - $ref: '#/components/schemas/MortgageSimulationFinancialPlan'
          writeOnly: true
        financial_plan_loan_amount_items:
          description: Financial plan items funded by loans
          items:
            $ref: '#/components/schemas/MortgageSimulatorFinancialPlanLoanAmountItem'
          type: array
        financial_plan_overridden_fields:
          allOf:
          - $ref: '#/components/schemas/MortgageSimulationFinancialPlan'
          writeOnly: true
        financial_plan_own_fund_items:
          description: Financial plan items funded by own funds
          items:
            $ref: '#/components/schemas/MortgageSimulatorFinancialPlanOwnFundItem'
          type: array
        id:
          type: integer
        is_main_first_residence:
          default: false
          type:
          - boolean
          - 'null'
          writeOnly: true
        is_realtor_excluded:
          default: false
          type:
          - boolean
          - 'null'
          writeOnly: true
        land_purchase_type:
          allOf:
          - $ref: '#/components/schemas/LandPurchaseType'
        land_value:
          default: 0.0
          format: double
          minimum: 0
          type:
          - number
          - 'null'
          writeOnly: true
        loan_purposes:
          items:
            $ref: '#/components/schemas/LoanRequestPurpose'
          type:
          - array
          - 'null'
          writeOnly: true
        price_of_land:
          default: 0.0
          format: double
          minimum: 0
          type:
          - number
          - 'null'
          writeOnly: true
        pro_fisco_value:
          format: double
          minimum: 0
          type:
          - number
          - 'null'
          writeOnly: true
        products:
          items:
            $ref: '#/components/schemas/NestedProduct'
          readOnly: true
          type: array
        purchase_sale_type:
          allOf:
          - $ref: '#/components/schemas/PurchaseSaleType'
        realty_price:
          default: 0.0
          format: double
          minimum: 0
          type:
          - number
          - 'null'
          writeOnly: true
        realty_usage_type:
          allOf:
          - $ref: '#/components/schemas/RealtyUsageType'
          writeOnly: true
        refinances:
          items:
            $ref: '#/components/schemas/MortgageSimulatorRefinance'
          type: array
        region:
          allOf:
          - $ref: '#/components/schemas/Region'
          writeOnly: true
        renovation_costs:
          items:
            $ref: '#/components/schemas/MortgageSimulatorRenovationCost'
          type: array
        selected_discounts:
          writeOnly: true
        selected_products:
          items:
            $ref: '#/components/schemas/NestedProduct'
          type: array
          writeOnly: true
        venal_value_after:
          format: double
          minimum: 0
          type:
          - number
          - 'null'
          writeOnly: true
        venal_value_before:
          format: double
          minimum: 0
          type:
          - number
          - 'null'
          writeOnly: true
      required:
      - id
      - products
      - selected_products
      type: object
    Phone:
      properties:
        country_code:
          $ref: '#/components/schemas/PhoneCountryCode'
        id:
          readOnly: true
          type: integer
        value:
          maxLength: 32
          type: string
      required:
      - country_code
      - id
      - value
      type: object
    CompanyProfile2Website:
      properties:
        value:
          type: string
        website_type:
          $ref: '#/components/schemas/ContactType'
      required:
      - value
      type: object
    SeverityType:
      description: Can be managed at /resources/severity-type
      properties:
        definition:
          type: string
        id:
          type: integer
        order:
          readOnly: true
          type: integer
      required:
      - definition
      - id
      - order
      type: object
    Variability:
      description: Can be managed at /resources/variability
      properties:
        definition:
          type: string
        group_type:
          type:
          - integer
          - 'null'
        id:
          type: integer
        order:
          readOnly: true
          type: integer
      required:
      - definition
      - id
      - order
      type: object
    RealtyUsageType:
      description: Can be managed at /resources/realty-usage-type
      properties:
        definition:
          type: string
        id:
          type: integer
        order:
          readOnly: true
          type: integer
      required:
      - definition
      - id
      - order
      type: object
    NestedProduct:
      properties:
        acceptance_rules: {}
        amount:
          format: double
          type:
          - number
          - 'null'
        aprc:
          format: double
          type:
          - number
          - 'null'
        base_product_id:
          type: integer
        base_rate:
          format: double
          type: number
        credit_provider:
          $ref: '#/components/schemas/ReducedCreditProvider'
        custom_translations: {}
        default_variability:
          $ref: '#/components/schemas/Variability'
        discounts:
          items:
            $ref: '#/components/schemas/DiscountSimulator'
          type:
          - array
          - 'null'
        discounts_rate:
          format: double
          type: number
        duration:
          type: integer
        funder:
          $ref: '#/components/schemas/Funder'
        id:
          type: integer
        interest_rate:
          default: 0.0
          format: double
          type: number
        interest_rate_overridden:
          default: false
          type: boolean
        is_amount_overridden:
          default: false
          type: boolean
        is_fallback_rate:
          default: false
          type: boolean
        loan_type:
          $ref: '#/components/schemas/LoanType'
        logo_url:
          format: uri
          type: string
        monthly_amount:
          format: double
          type:
          - number
          - 'null'
        name:
          type: string
        pricing_sheet:
          allOf:
          - $ref: '#/components/schemas/PricingSheet'
        product_type:
          $ref: '#/components/schemas/ProductType'
        product_version_id:
          type: integer
        quality_adjustments: {}
        rate:
          format: double
          type: number
        sc

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