Oper Simulators API
The Simulators API from Oper — 15 operation(s) for simulators.
The Simulators API from Oper — 15 operation(s) for simulators.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/oper-simulators-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 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