{"openapi":"3.0.3","info":{"title":"ISECure Bank Simulator API","version":"0.119.0","description":"Configure synthetic bank accounts and scenarios, run tests, and inspect the resulting events and file references. The Bank Simulator control API uses the same base URL and Processing session as the [Processing API](https://www.isecure.fi/apis/processing/). Actual file [uploads](https://www.isecure.fi/wsapi_v2/#operation/UploadFile) and [downloads](https://www.isecure.fi/wsapi_v2/#operation/DownloadFile) use the separate [File Exchange API](https://www.isecure.fi/wsapi_v2/).\n\n**Experimental control API · Test environment · Paid subscription and access approval required.** This reference covers 21 simulator operations plus session exchange and notifications. It is for synthetic testing only; it does not create real bank accounts or authorize real payments.\n\nThe existing Beta File Exchange simulator also offers a fixed default account and scenario. This control API is the separate, configurable interface. Select `Bank: \"simulator\"` for File Exchange transfers; use `isecure-ts-client/iso20022` to manage workspaces and runs.\n\n## The main concepts\n\n| Concept    | Plain meaning                                                                                |\n| ---------- | -------------------------------------------------------------------------------------------- |\n| Capability | Supported profiles, behaviors and limits for this deployment.                                |\n| Workspace  | Your synthetic banks, companies, accounts, currencies and service setup.                     |\n| Scenario   | The response you want to test, such as acceptance, rejection or delay.                       |\n| Run        | One execution using exact workspace and scenario revisions.                                  |\n| Clock      | The simulated business time used for schedules and cutoffs. It does not change login expiry. |\n| Checkpoint | A saved point from which another experiment can start.                                       |\n| Branch     | A separate continuation that preserves the original experiment.                              |\n| Event      | A recorded observation about a run.                                                          |\n| Artifact   | A reference to exact file bytes retrieved through File Exchange.                             |\n\n## Configure and run a test\n\n1. **Discover capabilities.** Read `simulationCapabilities.list()` with `data_admission_mode: \"synthetic\"`. Use the returned quotas, profiles and clock modes; do not hardcode greater limits.\n2. **Create a workspace.** Supply its synthetic banks, legal entities, accounts, opening balances, currencies and service setup. The resulting workspace starts as a draft. Account configuration is part of a workspace revision, not a separate account CRUD endpoint.\n3. **Activate the workspace.** Review the configuration and pass its current resource version. Use `revise()` for supported configuration changes; do not assume that an active run will pick up later edits.\n4. **Create a scenario.** Choose supported outcomes and timing rules. Save the exact scenario reference returned by the API.\n5. **Start a run.** Bind the exact workspace, scenario and admitted [Processing payment revision](https://www.isecure.fi/apis/processing/#operation/payment_orders.get) or [File Exchange artifact](https://www.isecure.fi/wsapi_v2/#operation/ListFiles). A successful start means work was accepted, not necessarily completed. Follow `simulationRuns.get()` or `list()` until the returned state indicates completion or failure.\n6. **Inspect the results.** Read `simulationEvents.list()` and `simulationArtifacts.list()`. Use the authorized artifact references with [File Exchange download](https://www.isecure.fi/wsapi_v2/#operation/DownloadFile) to retrieve exact output files.\n7. **Compare another case.** Create a checkpoint and branch when supported. Advance the simulated clock deliberately for timed behavior. Reset, suspend or close a workspace only after reviewing that operation's state and revision requirements.\n\nAll simulator operations require the server-assigned `manage_simulation` permission and an active Bank Simulation subscription. Neither a File Exchange login nor a per-user application preview switch grants this authority.\n\n### Discover and list your workspaces\n\nAfter creating the authenticated `client` shown below:\n\n```ts\nconst capabilities = await client.simulationCapabilities.list({\n  data_admission_mode: \"synthetic\",\n  page: { page_size: 25 },\n});\nconst firstPage = await client.simulationWorkspaces.list({\n  state: \"active\",\n  page: { page_size: 25 },\n});\nif (firstPage.page.next_cursor) {\n  const nextPage = await client.simulationWorkspaces.list({\n    state: \"active\",\n    page: { page_size: 25, cursor: firstPage.page.next_cursor },\n  });\n}\n```\n\n### Read the exact returned workspace\n\n```ts\nconst listed = await client.simulationWorkspaces.list({\n  page: { page_size: 25 },\n});\nconst workspace = listed.workspaces[0];\nif (workspace) {\n  const exact = await client.simulationWorkspaces.get({\n    resource_reference: {\n      resource_type: \"simulation_workspace\",\n      resource_id: workspace.workspace_id,\n      resource_version: workspace.resource_version,\n      revision_id: workspace.revision_id,\n    },\n  });\n}\n```\n\nEach operation below includes its complete input and output schemas, required permissions, version headers and a matching SDK call. Workspace creation includes the complete topology and service-setup schemas so you can define banks, accounts and starting balances without guessing field names.\n\n## Synthetic data and file access\n\nUse invented companies, accounts and payments. Never submit real bank credentials, private keys, passwords, certificate bytes or customer bank files in simulator configuration. A synthetic certificate record models test behavior; it is not a real banking certificate.\n\nThe control API returns file references, not bank-file content. [File Exchange](https://www.isecure.fi/wsapi_v2/) independently checks access when uploading or downloading bytes. Its signed-input rules still apply. A scenario result is evidence of this synthetic test, not proof that a real bank will accept a payment.\n\nReset and branch operations preserve the distinction between experiments. Do not use clock changes to bypass access expiry or treat notifications as complete historical evidence. Keep the references and revisions needed to reproduce a run.\n\n\n## One ISECure account across all three APIs\n\nUse the same ISECure registration, users and initial login for File Exchange, Processing and Bank Simulator. **Do not register a second user in Processing or Bank Simulator.** Account administration remains in the existing [File Exchange API](https://www.isecure.fi/wsapi_v2/); neither new API introduces another registration or user-management route.\n\nUse these sections of the live File Exchange reference:\n\n- [Start registration](https://www.isecure.fi/wsapi_v2/#operation/InitRegister) and [create the account](https://www.isecure.fi/wsapi_v2/#operation/Register).\n- Complete [email verification](https://www.isecure.fi/wsapi_v2/#operation/VerifyEmail) and [phone verification](https://www.isecure.fi/wsapi_v2/#operation/VerifyPhone) when requested.\n- [Start login](https://www.isecure.fi/wsapi_v2/#operation/InitLogin), [sign in](https://www.isecure.fi/wsapi_v2/#operation/Login), and [answer the SMS or TOTP MFA challenge](https://www.isecure.fi/wsapi_v2/#operation/LoginMFA). Follow the challenge returned by the server; [MFA selection](https://www.isecure.fi/wsapi_v2/#operation/SelectMFA) applies only when login explicitly requests a choice.\n- Integrators use [list customer accounts](https://www.isecure.fi/wsapi_v2/#operation/ListAccounts); account lifecycle includes [password recovery](https://www.isecure.fi/wsapi_v2/#operation/InitPasswordReset), [account deletion](https://www.isecure.fi/wsapi_v2/#operation/DeleteAccount) and the [account audit history](https://www.isecure.fi/wsapi_v2/#operation/ListAuditEvents), subject to that API's authorization rules.\n\nA shared identity does not mean one interchangeable token or identical authority. Processing and Bank Simulator share a separate Processing session obtained from the completed login. Each product also checks its subscription and user permissions. File Exchange admin/data modes do not automatically grant Processing approval or simulator-management permission.\n\n## Access and authentication\n\nThese APIs are Experimental and available only in the ISECure test environment. Request access from [ISECure support](mailto:support@isecure.fi). Registration alone does not enable either product: your tenant needs the appropriate active paid subscription, and your user needs permission for each operation. A successful login does not grant payment approval or simulator management rights.\n\n[Processing API](https://www.isecure.fi/apis/processing/) and [Bank Simulator API](https://www.isecure.fi/apis/bank-simulator/) share one Processing base URL and session. [File Exchange](https://www.isecure.fi/wsapi_v2/) has a separate API and session. Your tenant is selected by the verified API key; you cannot select another tenant in a request body or URL. Resource IDs and account IDs do not grant access.\n\n1. Complete [File Exchange login](https://www.isecure.fi/wsapi_v2/), including any requested email/phone verification or MFA. Obtain the current ID token and your tenant API key.\n2. Call `POST /session` on the Processing base URL. Send the ID token directly in `Authorization` (without a prefix) and the API key in `x-api-key`. There is no request body.\n3. Check that the response audience matches the configured Processing audience. Keep `processingSession` private. It expires after 15 minutes; use `expiresAtEpochSeconds` to check expiry.\n4. On business requests send `Authorization: Processing <processingSession>`, the same `x-api-key`, and the exact `ISECure-Contract-Version` shown for that operation. JSON requests also need `Content-Type: application/json`.\n5. Exchange a new session when necessary using a current ID token. The SDK does not silently refresh or retry commands.\n\n### Connect with TypeScript\n\nInstall `isecure-ts-client@2.7.0` and use Node.js 24 or newer for these examples. The experimental `/iso20022` entry point supports both references. The root SDK continues to handle File Exchange.\n\n```ts\nimport {\n  createIso20022Client,\n  Iso20022HttpTransport,\n} from \"isecure-ts-client/iso20022\";\n\nconst transport = new Iso20022HttpTransport({\n  baseUrl: process.env.ISECURE_PROCESSING_BASE_URL!,\n  processingAudience: process.env.ISECURE_PROCESSING_AUDIENCE!,\n  // Supply fresh credentials from your completed File Exchange login.\n  bootstrapAuthentication: async () => ({\n    apiKey: process.env.ISECURE_API_KEY!,\n    idToken: process.env.ISECURE_ID_TOKEN!,\n  }),\n});\nawait transport.exchangeProcessingSession();\nconst client = createIso20022Client(transport);\n```\n\nUse `https://processing-api.test.isecure.fi` as the base URL and audience `isecure-processing-gpgtest-v1`. Keep tokens and signing keys out of source control, URLs and application logs. The SDK sets operation versions and serializes path/query objects. Operation examples below assume this `client` has been created. Where an example declares an `input`, supply the fields documented in that operation's request schema; it is a typed integration template, not a complete runnable fixture.\n\n## Safe commands and revisions\n\nOperations that require `Idempotency-Key` show it explicitly. Create a unique key for one intended command and save it before sending. If that command needs an intentional retry, reuse the same key and unchanged input. A different key can create another action. The SDK never retries automatically.\n\nOperations that require `If-Match` also show it explicitly. Pass the current resource version returned by a read or previous command as a quoted string: `expectedResourceVersion: JSON.stringify(resource.resource_version)`. For version `3`, the HTTP header is `If-Match: \"3\"`. This prevents overwriting work performed after your last read. If the version is stale, read the resource again and review the new state before deciding what to do. Do not blindly replace the header and resubmit an old approval.\n\nAn HTTP timeout or `503` may leave the outcome unknown. First inspect the resource and its events. Do not repeat an entire payment or simulation workflow merely because a response was lost. After idempotency expiry, reconcile the original outcome before creating another command.\n\n## Lists, identifiers and pagination\n\nPass filters in the named query parameters. Object parameters use the encoding documented by each operation: for example `page[page_size]=25` and `page[cursor]=...`. Keep cursors opaque, reuse the same filters, and stop when `page.next_cursor` is absent. Results belong to the returned snapshot; do not interpret pagination as a live feed.\n\nSimulator read routes use an object-valued `resource_reference` path parameter, not just a UUID. Its OpenAPI `simple` encoding is a comma-separated sequence of field names and values in schema order. The SDK encodes this for you. Use the complete reference returned by the API, including its resource type and revision where supplied.\n\nIDs in examples are synthetic. Obtain account capabilities, resource references, versions and profile choices from your authorized API responses. Do not invent production account IDs or assume that a listed profile is enabled for your account.\n\n## Errors and recovery\n\nBusiness failures can return an `issues` array with structured issue details. Authentication, access and infrastructure failures can instead return a small `code` envelope. Gateway responses can have a different shape again. Check the HTTP status before reading a success schema; do not depend on an English error message.\n\n| Status          | Meaning and next step                                                                                                                         |\n| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |\n| 400             | Invalid input, contract version or request encoding. Correct the request.                                                                     |\n| 401             | Missing, expired or invalid authentication. Complete login/session exchange again.                                                            |\n| 403             | Missing subscription, permission or API-key access. Ask the tenant administrator or ISECure support; another resource ID will not fix access. |\n| 404             | Resource is unavailable in your scope, or the operation is not published. Check the selected test deployment and reference.                   |\n| 409             | Conflicting command, reused key with different input, or operation already in progress. Inspect the existing result.                          |\n| 410             | The command or idempotency window expired. Reconcile before submitting a new command.                                                         |\n| 412             | Resource version changed. Read the latest version and review the change.                                                                      |\n| 429             | Request limit reached. Honor any retry guidance and preserve command identity.                                                                |\n| 500 / 503 / 504 | Service failure or an uncertain outcome. Inspect existing state before retrying.                                                              |\n\n## Notifications\n\n`GET /stream` returns a short Server-Sent Events (SSE) connection containing authorized event/task notifications and heartbeats. It uses the Processing session, API key and contract version `1`. Save the last completely handled event ID and pass it as `Last-Event-ID` when reconnecting. The current connection lease is at most 20 seconds; closing is normal.\n\nThe SDK provides `transport.streamProcessingEvents({ lastEventId, signal })`. It does not reconnect automatically. Notifications require their own server-side access checks and are not a complete audit history. After a gap or expired cursor, reconcile using available resource reads; simulator runs also expose their own event list. A stream message does not prove that a payment reached a real bank.\n\n## Scope and compatibility\n\nThis reference documents only the operations deployed in the reviewed test release. The SDK contains additional generated methods that this deployment does not expose. Their presence is not a support or availability promise. Request versions are per operation; the overall specification version does not replace `ISECure-Contract-Version`.\n\n[File Exchange reference](https://www.isecure.fi/wsapi_v2/) · [Processing reference](https://www.isecure.fi/apis/processing/) · [Bank Simulator reference](https://www.isecure.fi/apis/bank-simulator/) · [TypeScript SDK](https://github.com/isecurefi/isecure-ts-client)\n## Worked simulator example\n\nThe following example starts after the shared authentication example. Set `simulation = client`; obtain `capability` from `simulationCapabilities.list({ data_admission_mode: \"synthetic\", page: { page_size: 25 } })`. `processingConnectedAccountId` and `paymentOrderRevisionReference` must identify your authorized synthetic Processing account and exact payment revision. Create and persist a separate UUID for each command in `commandKeys` (`workspaceCreate`, `workspaceActivate`, `scenarioCreate`, `runStart`, `clockControl`, `checkpointCreate`, `branchCreate`, `workspaceReset`, `workspaceClose`) before sending it. These are application inputs, not literal credentials supplied by the example.\n\n### 2. Create a synthetic Workspace\n\nThe example below creates two banks and two EUR accounts for one invented company. It also models a\nWebServices-style agreement, user, certificate, connection, file permission, schedule and cutoff.\nThe certificate is only a synthetic configuration record: do not put certificate bytes or a private\nkey in the request.\n\nSelect the ISO profile and runtime policy from capability discovery. The connected account ID comes\nfrom the separately resolved Processing payment capability.\n\n```ts\nconst profile = capability.profile_capabilities[0];\nconst runtimePolicy = capability.runtime_policy_profiles[0];\nif (!profile || !runtimePolicy)\n  throw new Error(\"Required simulator profiles are unavailable\");\n\nconst workspaceCreated = await simulation.simulationWorkspaces.create(\n  {\n    capability_reference: capability.capability_reference,\n    data_admission_mode: \"synthetic\",\n    topology: {\n      banks: [\n        {\n          bank_key: \"bank-a\",\n          display_name: \"Synthetic Bank A\",\n          domicile_country: \"FI\",\n          runtime_policy_profile_id: runtimePolicy.runtime_policy_profile_id,\n          runtime_policy_profile_version:\n            runtimePolicy.runtime_policy_profile_version,\n          supported_currencies: [\"EUR\"],\n        },\n        {\n          bank_key: \"bank-b\",\n          display_name: \"Synthetic Bank B\",\n          domicile_country: \"FI\",\n          runtime_policy_profile_id: runtimePolicy.runtime_policy_profile_id,\n          runtime_policy_profile_version:\n            runtimePolicy.runtime_policy_profile_version,\n          supported_currencies: [\"EUR\"],\n        },\n      ],\n      legal_entities: [\n        {\n          legal_entity_key: \"example-company\",\n          display_name: \"Example Company Oy\",\n          domicile_country: \"FI\",\n        },\n      ],\n      currencies: [{ currency: \"EUR\", fraction_digits: 2 }],\n      accounts: [\n        {\n          account_key: processingConnectedAccountId,\n          bank_key: \"bank-a\",\n          legal_entity_key: \"example-company\",\n          currency: \"EUR\",\n          starting_balance: { amount: \"100000.00\", currency: \"EUR\" },\n        },\n        {\n          account_key: \"synthetic-beneficiary-eur\",\n          bank_key: \"bank-b\",\n          legal_entity_key: \"example-company\",\n          currency: \"EUR\",\n          starting_balance: { amount: \"25000.00\", currency: \"EUR\" },\n        },\n      ],\n      counterparties: [],\n    },\n    service_setup: {\n      agreements: [\n        {\n          agreement_key: \"agreement-a\",\n          bank_key: \"bank-a\",\n          legal_entity_key: \"example-company\",\n          agreement_profile_id: \"isecure.simulation.agreement\",\n          agreement_profile_version: \"1\",\n        },\n      ],\n      users: [\n        {\n          user_key: \"user-a\",\n          agreement_key: \"agreement-a\",\n          display_name: \"Synthetic WS user\",\n          user_profile_id: \"isecure.simulation.webservices_user\",\n          user_profile_version: \"1\",\n        },\n      ],\n      certificates: [\n        {\n          certificate_key: \"certificate-a\",\n          user_key: \"user-a\",\n          certificate_profile_id: \"isecure.simulation.certificate\",\n          certificate_profile_version: \"1\",\n          valid_from: \"2026-01-01T00:00:00Z\",\n          valid_until: \"2036-01-01T00:00:00Z\",\n        },\n      ],\n      connections: [\n        {\n          connection_key: \"connection-a\",\n          agreement_key: \"agreement-a\",\n          user_key: \"user-a\",\n          certificate_key: \"certificate-a\",\n          connection_profile_id: \"isecure.simulation.connection\",\n          connection_profile_version: \"1\",\n        },\n      ],\n      file_permissions: [\n        {\n          permission_key: \"pain001-outbound\",\n          connection_key: \"connection-a\",\n          file_type_code: \"pain.001.001.09\",\n          direction: \"customer_to_bank\",\n          message_namespace: profile.message_namespace,\n          profile_id: profile.profile_id,\n          profile_version: profile.profile_version,\n        },\n      ],\n      schedules: [\n        {\n          schedule_key: \"weekday-processing\",\n          permission_key: \"pain001-outbound\",\n          schedule_profile_id: \"isecure.simulation.schedule\",\n          schedule_profile_version: \"1\",\n          business_timezone: \"Europe/Helsinki\",\n        },\n      ],\n      cutoffs: [\n        {\n          cutoff_key: \"eur-cutoff\",\n          permission_key: \"pain001-outbound\",\n          cutoff_profile_id: \"isecure.simulation.cutoff\",\n          cutoff_profile_version: \"1\",\n          business_timezone: \"Europe/Helsinki\",\n          currency: \"EUR\",\n        },\n      ],\n    },\n  },\n  { idempotencyKey: commandKeys.workspaceCreate },\n);\n```\n\nThe result is a draft Workspace. Keep its exact resource version and revision ID. Configuration\nchanges append a new revision; they do not edit the old one.\n\n```ts\nfunction workspaceReference(workspace: typeof workspaceCreated.workspace) {\n  return {\n    resource_type: \"simulation_workspace\",\n    resource_id: workspace.workspace_id,\n    resource_version: workspace.resource_version,\n    revision_id: workspace.revision_id,\n  };\n}\n\nconst draftReference = workspaceReference(workspaceCreated.workspace);\nconst activated = await simulation.simulationWorkspaces.activate(\n  {\n    workspace_reference: draftReference,\n    expected_resource_version: workspaceCreated.workspace.resource_version,\n  },\n  {\n    idempotencyKey: commandKeys.workspaceActivate,\n    expectedResourceVersion: `\"${workspaceCreated.workspace.resource_version}\"`,\n  },\n);\nconst activeWorkspace = workspaceReference(activated.workspace);\n```\n\nIf another command revised the Workspace first, activation returns `412`. Read the current revision\nand decide again instead of forcing an overwrite.\n\n### 3. Describe the bank behavior\n\nA Scenario is an immutable list of typed directives. Start with one clear outcome.\n\n```ts\nconst scenarioCreated = await simulation.simulationScenarios.create(\n  {\n    workspace_revision_reference: activeWorkspace,\n    scenario_profile_id: profile.profile_id,\n    scenario_profile_version: profile.profile_version,\n    name: \"Accept one synthetic payment\",\n    directives: [{ directive_ordinal: 1, outcome: \"accept\" }],\n  },\n  { idempotencyKey: commandKeys.scenarioCreate },\n);\n\nconst scenarioReference = {\n  resource_type: \"simulation_scenario\",\n  resource_id: scenarioCreated.scenario.scenario_id,\n  resource_version: scenarioCreated.scenario.resource_version,\n  revision_id: scenarioCreated.scenario.revision_id,\n};\n```\n\nUseful follow-up experiments include:\n\n| Question                                              | Directive idea                                          |\n| ----------------------------------------------------- | ------------------------------------------------------- |\n| Does the client explain a bank rejection?             | `outcome: 'reject'` with a stable synthetic reason code |\n| Does polling tolerate delayed processing?             | `outcome: 'delay'` with bounded `delay_seconds`         |\n| Does reconciliation handle a returned payment?        | `outcome: 'return'`                                     |\n| Does recovery avoid assuming success after a timeout? | `fault_kind: 'timeout_after_acceptance'`                |\n| Does event handling reject contradictory evidence?    | `fault_kind: 'contradictory_status'`                    |\n\nCreate a new Scenario revision for a changed experiment. Do not hide behavior in payment values,\nfile names or remittance text.\n\n### 4. Start and observe an asynchronous Run\n\nThis example assumes `paymentOrderRevisionReference` is an exact synthetic payment-order revision\nprepared through the [Processing API](https://www.isecure.fi/apis/processing/).\n\n```ts\nconst started = await simulation.simulationRuns.start(\n  {\n    workspace_revision_reference: activeWorkspace,\n    scenario_revision_reference: scenarioReference,\n    data_admission_mode: \"synthetic\",\n    input: {\n      input_type: \"payment_order_revision\",\n      payment_order_revision_reference: paymentOrderRevisionReference,\n    },\n  },\n  { idempotencyKey: commandKeys.runStart },\n);\n\nlet current = await simulation.simulationRuns.get({\n  resource_reference: {\n    resource_type: \"simulation_run\",\n    resource_id: started.run.run_id,\n  },\n});\n\nfor (\n  let poll = 0;\n  [\"accepted\", \"running\", \"paused\"].includes(current.run.state) && poll < 30;\n  poll += 1\n) {\n  await new Promise((resolve) => setTimeout(resolve, 3_000));\n  current = await simulation.simulationRuns.get({\n    resource_reference: {\n      resource_type: \"simulation_run\",\n      resource_id: started.run.run_id,\n    },\n  });\n}\nif ([\"accepted\", \"running\", \"paused\"].includes(current.run.state)) {\n  throw new Error(\"Run did not finish inside the bounded observation window\");\n}\nif (current.run.state !== \"succeeded\") {\n  throw new Error(\n    `Run ended in ${current.run.state}; inspect its events before continuing`,\n  );\n}\n```\n\nStarting a Run returns acceptance, not its final outcome. The API request Lambda does not keep\nrunning in the background after it returns. Instead, acceptance records durable work that a later,\nseparately invoked and lease-bounded worker attempt can continue. After response loss or timeout,\nlist Runs and events using the same Workspace and reconcile the original idempotency key before\nissuing anything new.\n\n### 5. Move business time deliberately\n\nSimulation time controls cutoffs, schedules and Scenario events. Security-token expiry, audit time\nand retention still use real time.\n\n```ts\nconst clock = await simulation.simulationClocks.control(\n  {\n    workspace_reference: activeWorkspace,\n    expected_clock_revision: current.run.clock.clock_revision,\n    control_kind: \"step_duration\",\n    step_seconds: \"60\",\n  },\n  {\n    idempotencyKey: commandKeys.clockControl,\n    expectedResourceVersion: `\"${current.run.clock.clock_revision}\"`,\n  },\n);\n```\n\nUse `step_event` when you want the next scheduled event, `set_acceleration` for bounded faster\npacing, and `advance_to_instant` for an exact future business instant. Use only modes and limits\nreturned by capability discovery.\n\n### 6. Inspect events and exact Artifact references\n\nEvents explain what the Run did without returning exact file bytes.\n\n```ts\nconst events = await simulation.simulationEvents.list({\n  workspace_reference: activeWorkspace,\n  run_reference: {\n    resource_type: \"simulation_run\",\n    resource_id: current.run.run_id,\n    resource_version: current.run.resource_version,\n    revision_id: current.run.revision_id,\n  },\n  page: { page_size: 100 },\n});\n\nconst artifacts = await simulation.simulationArtifacts.list({\n  run_reference: {\n    resource_type: \"simulation_run\",\n    resource_id: current.run.run_id,\n    resource_version: current.run.resource_version,\n    revision_id: current.run.revision_id,\n  },\n  page: { page_size: 100 },\n});\n```\n\nEach Artifact includes a `file_exchange_occurrence_reference`. Use that reference with the\nseparately authenticated, permanent [File Exchange API](https://www.isecure.fi/wsapi_v2/) to download exact\nbytes. The Simulation API never provides another download endpoint. Verify the expected media type,\nnamespace and profile before parsing a file.\n\nThe event list is the recovery authority. SSE is a bounded notification convenience: tolerate\nduplicates and reconcile list/get state after a gap or reconnect.\n\n### 7. Checkpoint, branch and compare\n\nTake a checkpoint only after reading the exact Run revision you intend to preserve.\n\n```ts\nconst runReference = {\n  resource_type: \"simulation_run\",\n  resource_id: current.run.run_id,\n  resource_version: current.run.resource_version,\n  revision_id: current.run.revision_id,\n};\n\nconst checkpoint = await simulation.simulationCheckpoints.create(\n  {\n    run_reference: runReference,\n    expected_resource_version: current.run.resource_version,\n  },\n  {\n    idempotencyKey: commandKeys.checkpointCreate,\n    expectedResourceVersion: `\"${current.run.resource_version}\"`,\n  },\n);\n\nconst branch = await simulation.simulationBranches.create(\n  {\n    checkpoint_reference: {\n      resource_type: \"simulation_checkpoint\",\n      resource_id: checkpoint.checkpoint.checkpoint_id,\n      resource_version: \"1\",\n      revision_id: checkpoint.checkpoint.checkpoint_id,\n    },\n    scenario_revision_reference: scenarioReference,\n  },\n  { idempotencyKey: commandKeys.branchCreate },\n);\n```\n\nCreate or select another Scenario revision and start the next Run with the Branch reference. Compare\nevents, terminal state and artifact roles. Do not compare only HTTP status codes.\n\n### 8. Reset or close with intent\n\nReset is a governed revision, not deletion. Choose the narrowest scope that matches the experiment:\n\n- `runtime_state` keeps configured balances and active Scenarios;\n- `runtime_state_and_balances` also restores balances; and\n- `runtime_state_balances_and_active_scenarios` also clears the active Scenario selection.\n\nSupply the current Workspace version, an idempotency key and a stable reason code. Prior revisions,\nRuns, events and Artifacts remain evidence.\n\n```ts\nconst reset = await simulation.simulationWorkspaces.reset(\n  {\n    workspace_reference: activeWorkspace,\n    branch_reference: {\n      resource_type: \"simulation_branch\",\n      resource_id: branch.branch.branch_id,\n      resource_version: \"1\",\n      revision_id: branch.branch.branch_id,\n    },\n    expected_resource_version: activated.workspace.resource_version,\n    reset_scope: \"runtime_state_and_balances\",\n    reason_code: \"repeat_synthetic_test\",\n  },\n  {\n    idempotencyKey: commandKeys.workspaceReset,\n    expectedResourceVersion: `\"${activated.workspace.resource_version}\"`,\n  },\n);\n```\n\nClose the Workspace only when no more experiments should run; close is terminal.\n\n```ts\nawait simulation.simulationWorkspaces.close(\n  {\n    workspace_reference: workspaceReference(reset.workspace),\n    expected_resource_version: reset.workspace.resource_version,\n  },\n  {\n    idempotencyKey: commandKeys.workspaceClose,\n    expectedResourceVersion: `\"${reset.workspace.resource_version}\"`,\n  },\n);\n```\n\n### Common mistakes\n\n| Symptom                      | Likely cause                                                   | What to do                                                                   |\n| ---------------------------- | -------------------------------------------------------------- | ---------------------------------------------------------------------------- |\n| `401`                        | Processing session is missing or expired                       | Re-authenticate and exchange a new Processing session                        |\n| `403`                        | Permission or entitlement is absent                            | Stop and request an explicit assignment or entitlement                       |\n| `409`                        | One idempotency key was reused for different input             | Reconcile the original command; use a new key only for a new logical command |\n| `412`                        | The exact resource version is stale                            | Read the latest revision and re-evaluate the change                          |\n| Run stays accepted/running   | Work is asynchronous or business time has not reached an event | Read the Run and events; inspect the Clock before advancing it               |\n| Artifact has no inline bytes | This is intentional                                            | Follow its File Exchange occurrence reference with a separate session        |\n| Timeout after acceptance     | The result may already exist                                   | Reconcile Runs and events; never assume failure and submit a duplicate       |\n","contact":{"name":"ISECure developer support","email":"support@isecure.fi","url":"https://www.isecure.fi/en/products/"},"license":{"name":"Proprietary - all rights reserved"}},"servers":[{"url":"https://processing-api.test.isecure.fi","description":"ISECure test environment — Experimental; access by request"}],"tags":[{"name":"Session"},{"name":"Notifications"},{"name":"File references"},{"name":"Branches"},{"name":"Capabilities"},{"name":"Checkpoints"},{"name":"Business time"},{"name":"Events"},{"name":"Runs"},{"name":"Scenarios"},{"name":"Workspaces and accounts"}],"paths":{"/session":{"post":{"operationId":"processing_session.exchange","summary":"Create a Processing session","tags":["Session"],"description":"Exchange the current File Exchange ID token for a separate, audience-bound Processing session. Send the ID token without a prefix in Authorization and the tenant API key in x-api-key. There is no request body. Complete any login verification or MFA first. The session expires after 15 minutes.","security":[{"bootstrapIdToken":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Keep processingSession private; validate the audience and expiry before use.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingSession"}}}},"400":{"description":"Invalid session exchange request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"401":{"description":"Invalid or expired ID token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"403":{"description":"Tenant access is not enabled.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"503":{"description":"Session service is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"const session = await transport.exchangeProcessingSession();\n// Returns expiry and audience metadata; the transport keeps the token private."}]}},"/stream":{"get":{"operationId":"processing_events.stream","summary":"Read event notifications","tags":["Notifications"],"description":"Receive a bounded text/event-stream connection. The current lease is at most 20 seconds. Event and task items contain an opaque id and JSON data; heartbeats keep the connection active. Reconnect deliberately with the last completely handled ID, and reconcile resource state after a gap. Additional event/task read authority is required. This is not complete audit history.","security":[{"processingSession":[],"tenantApiKey":[]}],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"schema":{"type":"integer","enum":[1]}},{"name":"Last-Event-ID","in":"header","required":false,"description":"Opaque cursor from the last completely handled stream item.","schema":{"type":"string","maxLength":2048}}],"responses":{"200":{"description":"Finite SSE lease. Cache-Control: private, no-store, no-cache.","content":{"text/event-stream":{"schema":{"type":"string"},"example":": heartbeat\n\n"}}},"400":{"description":"Invalid cursor or request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"401":{"description":"Processing session is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"403":{"description":"Required read authority is missing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"503":{"description":"Notifications are unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"for await (const item of transport.streamProcessingEvents()) {\n  if (item.kind === \"heartbeat\") continue;\n  // Handle item.data, then save item.id for your next connection.\n}"}]}},"/v1/simulation-artifacts":{"get":{"operationId":"simulation_artifacts.list","summary":"List simulation file references","description":"Find references to exact synthetic input and output files. Download their bytes through the independently authorized [File Exchange API](https://www.isecure.fi/wsapi_v2/#operation/DownloadFile).\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 3`. This operation does not accept an Idempotency-Key. \n\nSDK: `client.simulationArtifacts.list`. Input type: [SimulationArtifactListInput](#schema/isecure.bankfiles.simulation.SimulationArtifactListInput).","tags":["File references"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[3]}},{"name":"run_reference","in":"query","required":true,"style":"deepObject","explode":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"}},{"name":"role","in":"query","required":false,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationArtifactRole"}},{"name":"page","in":"query","required":true,"style":"deepObject","explode":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageRequest"}}],"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationArtifactListResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in SimulationArtifactListInput.\ndeclare const input: Parameters<typeof client.simulationArtifacts.list>[0];\nconst result = await client.simulationArtifacts.list(input);"}],"x-isecure-contract-version":3,"x-isecure-contract-digest":"sha256:d1812e62ef688b7c85570774600e775d9ba8bc9522fd43e1299c98ca42aadce3","x-isecure-permission":"manage_simulation"}},"/v1/simulation-branches:create":{"post":{"operationId":"simulation_branches.create","summary":"Create a branch","description":"Start a separate experiment from an eligible checkpoint while keeping the original evidence distinct.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. Persist an Idempotency-Key for this command. \n\nSDK: `client.simulationBranches.create`. Input type: [CreateSimulationBranchInput](#schema/isecure.bankfiles.simulation.CreateSimulationBranchInput).","tags":["Branches"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated key scoped to tenant and operation; reuse with different normalized input is rejected.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[!-~]+(?![\\s\\S])"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.CreateSimulationBranchInput"}}}},"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationBranchResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"409":{"description":"Idempotency input mismatch or command already in flight.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"410":{"description":"The idempotency retention or command acceptance window expired.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in CreateSimulationBranchInput.\ndeclare const input: Parameters<typeof client.simulationBranches.create>[0];\n// Persist one key per intended command; reuse it only for that same command.\ndeclare const savedCommandKey: string;\nconst result = await client.simulationBranches.create(input, { idempotencyKey: savedCommandKey });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:0269ca0f855c23a90212cc8ca2c1869b371cb8833d6f2bfb0c63fec61aa9c20a","x-isecure-permission":"manage_simulation"}},"/v1/simulation-capabilities":{"get":{"operationId":"simulation_capabilities.list","summary":"List simulator capabilities","description":"Discover supported profiles, clock modes and quotas before configuring a synthetic test.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 5`. This operation does not accept an Idempotency-Key. \n\nSDK: `client.simulationCapabilities.list`. Input type: [SimulationCapabilityListInput](#schema/isecure.bankfiles.simulation.SimulationCapabilityListInput).","tags":["Capabilities"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[5]}},{"name":"data_admission_mode","in":"query","required":false,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationDataAdmissionMode"}},{"name":"page","in":"query","required":true,"style":"deepObject","explode":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageRequest"}}],"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationCapabilityListResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"const result = await client.simulationCapabilities.list({\n  data_admission_mode: \"synthetic\",\n  page: { page_size: 25 },\n});"}],"x-isecure-contract-version":5,"x-isecure-contract-digest":"sha256:59a9facecbb74ab6ec54e16f2e5f5a93d749974c29550047d9f24ae23b06febd","x-isecure-permission":"manage_simulation"}},"/v1/simulation-checkpoints:create":{"post":{"operationId":"simulation_checkpoints.create","summary":"Create a checkpoint","description":"Save an eligible simulation state for a repeatable comparison. The returned checkpoint is an opaque reference.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. Persist an Idempotency-Key for this command. Send the current resource version in If-Match.\n\nSDK: `client.simulationCheckpoints.create`. Input type: [CreateSimulationCheckpointInput](#schema/isecure.bankfiles.simulation.CreateSimulationCheckpointInput).","tags":["Checkpoints"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated key scoped to tenant and operation; reuse with different normalized input is rejected.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[!-~]+(?![\\s\\S])"}},{"name":"If-Match","in":"header","required":true,"description":"Quoted exact resource version required for optimistic concurrency.","schema":{"type":"string","pattern":"^\"(?:0|[1-9][0-9]*)\"$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.CreateSimulationCheckpointInput"}}}},"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationCheckpointResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"409":{"description":"Idempotency input mismatch or command already in flight.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"410":{"description":"The idempotency retention or command acceptance window expired.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"412":{"description":"The expected resource version does not match.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in CreateSimulationCheckpointInput.\ndeclare const input: Parameters<typeof client.simulationCheckpoints.create>[0];\n// Persist one key per intended command; reuse it only for that same command.\ndeclare const savedCommandKey: string;\n// Use the version returned by your latest authorized read.\ndeclare const currentResourceVersion: string;\nconst result = await client.simulationCheckpoints.create(input, { idempotencyKey: savedCommandKey, expectedResourceVersion: JSON.stringify(currentResourceVersion) });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:97fdef985c5897e19f0b43aec41a0e539cb5edc8aa292740c777efe14029d5ac","x-isecure-permission":"manage_simulation"}},"/v1/simulation-clocks:control":{"post":{"operationId":"simulation_clocks.control","summary":"Control simulated business time","description":"Apply a supported clock action for schedules and cutoffs. This clock cannot change authentication or subscription expiry.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. Persist an Idempotency-Key for this command. Send the current resource version in If-Match.\n\nSDK: `client.simulationClocks.control`. Input type: [ControlSimulationClockInput](#schema/isecure.bankfiles.simulation.ControlSimulationClockInput).","tags":["Business time"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated key scoped to tenant and operation; reuse with different normalized input is rejected.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[!-~]+(?![\\s\\S])"}},{"name":"If-Match","in":"header","required":true,"description":"Quoted exact resource version required for optimistic concurrency.","schema":{"type":"string","pattern":"^\"(?:0|[1-9][0-9]*)\"$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.ControlSimulationClockInput"}}}},"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationClockControlResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"409":{"description":"Idempotency input mismatch or command already in flight.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"410":{"description":"The idempotency retention or command acceptance window expired.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"412":{"description":"The expected resource version does not match.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in ControlSimulationClockInput.\ndeclare const input: Parameters<typeof client.simulationClocks.control>[0];\n// Persist one key per intended command; reuse it only for that same command.\ndeclare const savedCommandKey: string;\n// Use the version returned by your latest authorized read.\ndeclare const currentResourceVersion: string;\nconst result = await client.simulationClocks.control(input, { idempotencyKey: savedCommandKey, expectedResourceVersion: JSON.stringify(currentResourceVersion) });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:d683043752ece7bd18c0c834bdeccd3a75ffee86177a0579b4babb2ef0b776e5","x-isecure-permission":"manage_simulation"}},"/v1/simulation-events":{"get":{"operationId":"simulation_events.list","summary":"Read simulation events","description":"Read recorded observations for the selected scope. Paginate through the returned snapshot to reconcile a run.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 3`. This operation does not accept an Idempotency-Key. \n\nSDK: `client.simulationEvents.list`. Input type: [SimulationEventListInput](#schema/isecure.bankfiles.simulation.SimulationEventListInput).","tags":["Events"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[3]}},{"name":"workspace_reference","in":"query","required":true,"style":"deepObject","explode":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"}},{"name":"run_reference","in":"query","required":false,"style":"deepObject","explode":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"}},{"name":"event_kind","in":"query","required":false,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationEventKind"}},{"name":"page","in":"query","required":true,"style":"deepObject","explode":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageRequest"}}],"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationEventListResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in SimulationEventListInput.\ndeclare const input: Parameters<typeof client.simulationEvents.list>[0];\nconst result = await client.simulationEvents.list(input);"}],"x-isecure-contract-version":3,"x-isecure-contract-digest":"sha256:5d1e2eaa5d72e5d5baadf070dd6fdb14f1c97ea4f9bd01fd33a6b7c7c99c9412","x-isecure-permission":"manage_simulation"}},"/v1/simulation-runs":{"get":{"operationId":"simulation_runs.list","summary":"List runs","description":"Find runs and inspect their current state using the available filters.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. This operation does not accept an Idempotency-Key. \n\nSDK: `client.simulationRuns.list`. Input type: [SimulationRunListInput](#schema/isecure.bankfiles.simulation.SimulationRunListInput).","tags":["Runs"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"workspace_reference","in":"query","required":true,"style":"deepObject","explode":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"}},{"name":"scenario_reference","in":"query","required":false,"style":"deepObject","explode":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"}},{"name":"state","in":"query","required":false,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunState"}},{"name":"page","in":"query","required":true,"style":"deepObject","explode":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageRequest"}}],"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunListResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in SimulationRunListInput.\ndeclare const input: Parameters<typeof client.simulationRuns.list>[0];\nconst result = await client.simulationRuns.list(input);"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:cf3c94d2af1a0bfd15a8b2a31899b3fc9003cf614d5d4556d56f6d2bed18a0ca","x-isecure-permission":"manage_simulation"}},"/v1/simulation-runs/{resource_reference}":{"get":{"operationId":"simulation_runs.get","summary":"Read a run","description":"Read a run to follow accepted work to completion or failure. A start response alone does not mean the work has finished.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. This operation does not accept an Idempotency-Key. \n\nSDK: `client.simulationRuns.get`. Input type: [SimulationResourceGetInput](#schema/isecure.bankfiles.simulation.SimulationResourceGetInput).","tags":["Runs"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"resource_reference","in":"path","required":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"}}],"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunGetResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in SimulationResourceGetInput.\ndeclare const input: Parameters<typeof client.simulationRuns.get>[0];\nconst result = await client.simulationRuns.get(input);"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:2d90360c4ad64bdd8cd35c1aadc4e8bddd1e00304412a4896c191f4cc87c691a","x-isecure-permission":"manage_simulation"}},"/v1/simulation-runs:start":{"post":{"operationId":"simulation_runs.start","summary":"Start a simulation run","description":"Start work using exact workspace and scenario references plus admitted synthetic input. Persist the command key before sending.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. Persist an Idempotency-Key for this command. \n\nSDK: `client.simulationRuns.start`. Input type: [StartSimulationRunInput](#schema/isecure.bankfiles.simulation.StartSimulationRunInput).","tags":["Runs"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated key scoped to tenant and operation; reuse with different normalized input is rejected.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[!-~]+(?![\\s\\S])"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.StartSimulationRunInput"}}}},"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"202":{"description":"Durable task accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunMutationResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"409":{"description":"Idempotency input mismatch or command already in flight.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"410":{"description":"The idempotency retention or command acceptance window expired.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in StartSimulationRunInput.\ndeclare const input: Parameters<typeof client.simulationRuns.start>[0];\n// Persist one key per intended command; reuse it only for that same command.\ndeclare const savedCommandKey: string;\nconst result = await client.simulationRuns.start(input, { idempotencyKey: savedCommandKey });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:4431e600655c7d1fd79e9434f846ead09783dbb6aa512d6c9db2dad9ecfc06be","x-isecure-permission":"manage_simulation"}},"/v1/simulation-scenarios":{"get":{"operationId":"simulation_scenarios.list","summary":"List scenarios","description":"Find reusable synthetic response scenarios visible to your user.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 3`. This operation does not accept an Idempotency-Key. \n\nSDK: `client.simulationScenarios.list`. Input type: [SimulationScenarioListInput](#schema/isecure.bankfiles.simulation.SimulationScenarioListInput).","tags":["Scenarios"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[3]}},{"name":"workspace_reference","in":"query","required":true,"style":"deepObject","explode":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"}},{"name":"state","in":"query","required":false,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioState"}},{"name":"page","in":"query","required":true,"style":"deepObject","explode":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageRequest"}}],"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioListResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in SimulationScenarioListInput.\ndeclare const input: Parameters<typeof client.simulationScenarios.list>[0];\nconst result = await client.simulationScenarios.list(input);"}],"x-isecure-contract-version":3,"x-isecure-contract-digest":"sha256:fed6e0dda70a1ce7e0ce4d92cfe2d3e7ba4f510dc45e77afe296d509e07e780e","x-isecure-permission":"manage_simulation"}},"/v1/simulation-scenarios/{resource_reference}":{"get":{"operationId":"simulation_scenarios.get","summary":"Read a scenario","description":"Read the exact scenario reference selected for a test.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 3`. This operation does not accept an Idempotency-Key. \n\nSDK: `client.simulationScenarios.get`. Input type: [SimulationResourceGetInput](#schema/isecure.bankfiles.simulation.SimulationResourceGetInput).","tags":["Scenarios"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[3]}},{"name":"resource_reference","in":"path","required":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"}}],"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioGetResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in SimulationResourceGetInput.\ndeclare const input: Parameters<typeof client.simulationScenarios.get>[0];\nconst result = await client.simulationScenarios.get(input);"}],"x-isecure-contract-version":3,"x-isecure-contract-digest":"sha256:60e576c8a33bca289e8d8bd8d2410bbed37a1a4ace14cc852b1bd141764cc1d3","x-isecure-permission":"manage_simulation"}},"/v1/simulation-scenarios:create":{"post":{"operationId":"simulation_scenarios.create","summary":"Create a scenario","description":"Define supported synthetic responses, timing and behavior using the discovered capabilities.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. Persist an Idempotency-Key for this command. \n\nSDK: `client.simulationScenarios.create`. Input type: [CreateSimulationScenarioInput](#schema/isecure.bankfiles.simulation.CreateSimulationScenarioInput).","tags":["Scenarios"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated key scoped to tenant and operation; reuse with different normalized input is rejected.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[!-~]+(?![\\s\\S])"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.CreateSimulationScenarioInput"}}}},"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioMutationResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"409":{"description":"Idempotency input mismatch or command already in flight.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"410":{"description":"The idempotency retention or command acceptance window expired.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in CreateSimulationScenarioInput.\ndeclare const input: Parameters<typeof client.simulationScenarios.create>[0];\n// Persist one key per intended command; reuse it only for that same command.\ndeclare const savedCommandKey: string;\nconst result = await client.simulationScenarios.create(input, { idempotencyKey: savedCommandKey });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:25c2467181466e705ce673083355d784670873b779dcc2d29abebfab100b7667","x-isecure-permission":"manage_simulation"}},"/v1/simulation-scenarios:revise":{"post":{"operationId":"simulation_scenarios.revise","summary":"Revise a scenario","description":"Create a new scenario revision. Existing runs remain associated with the exact revision they selected.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. Persist an Idempotency-Key for this command. Send the current resource version in If-Match.\n\nSDK: `client.simulationScenarios.revise`. Input type: [ReviseSimulationScenarioInput](#schema/isecure.bankfiles.simulation.ReviseSimulationScenarioInput).","tags":["Scenarios"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated key scoped to tenant and operation; reuse with different normalized input is rejected.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[!-~]+(?![\\s\\S])"}},{"name":"If-Match","in":"header","required":true,"description":"Quoted exact resource version required for optimistic concurrency.","schema":{"type":"string","pattern":"^\"(?:0|[1-9][0-9]*)\"$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.ReviseSimulationScenarioInput"}}}},"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioMutationResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"409":{"description":"Idempotency input mismatch or command already in flight.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"410":{"description":"The idempotency retention or command acceptance window expired.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"412":{"description":"The expected resource version does not match.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in ReviseSimulationScenarioInput.\ndeclare const input: Parameters<typeof client.simulationScenarios.revise>[0];\n// Persist one key per intended command; reuse it only for that same command.\ndeclare const savedCommandKey: string;\n// Use the version returned by your latest authorized read.\ndeclare const currentResourceVersion: string;\nconst result = await client.simulationScenarios.revise(input, { idempotencyKey: savedCommandKey, expectedResourceVersion: JSON.stringify(currentResourceVersion) });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:964dbf7234178c1a70f679afadc7cca15a3be538ac97a14f6e4a27488bf24767","x-isecure-permission":"manage_simulation"}},"/v1/simulation-workspaces":{"get":{"operationId":"simulation_workspaces.list","summary":"List workspaces","description":"List synthetic workspaces visible to your user with optional state filters and pagination.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. This operation does not accept an Idempotency-Key. \n\nSDK: `client.simulationWorkspaces.list`. Input type: [SimulationWorkspaceListInput](#schema/isecure.bankfiles.simulation.SimulationWorkspaceListInput).","tags":["Workspaces and accounts"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"state","in":"query","required":false,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceState"}},{"name":"page","in":"query","required":true,"style":"deepObject","explode":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageRequest"}}],"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceListResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"const result = await client.simulationWorkspaces.list({ page: { page_size: 25 } });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:44198d17e8c85bb22c36c68ddf35c2789ca96d345588a67118a0d9c227efcf16","x-isecure-permission":"manage_simulation"}},"/v1/simulation-workspaces/{resource_reference}":{"get":{"operationId":"simulation_workspaces.get","summary":"Read a workspace","description":"Read a workspace using its complete resource reference, including a revision when selecting an exact historical revision.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. This operation does not accept an Idempotency-Key. \n\nSDK: `client.simulationWorkspaces.get`. Input type: [SimulationResourceGetInput](#schema/isecure.bankfiles.simulation.SimulationResourceGetInput).","tags":["Workspaces and accounts"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"resource_reference","in":"path","required":true,"schema":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"}}],"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceGetResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in SimulationResourceGetInput.\ndeclare const input: Parameters<typeof client.simulationWorkspaces.get>[0];\nconst result = await client.simulationWorkspaces.get(input);"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:9f02dd9041a9571cba758cb375bf40e762f66f5512d68a8875e2ba6aaae3d5b3","x-isecure-permission":"manage_simulation"}},"/v1/simulation-workspaces:activate":{"post":{"operationId":"simulation_workspaces.activate","summary":"Activate a workspace","description":"Make an eligible draft workspace available for simulation runs after reviewing its configuration.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. Persist an Idempotency-Key for this command. Send the current resource version in If-Match.\n\nSDK: `client.simulationWorkspaces.activate`. Input type: [TransitionSimulationWorkspaceInput](#schema/isecure.bankfiles.simulation.TransitionSimulationWorkspaceInput).","tags":["Workspaces and accounts"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated key scoped to tenant and operation; reuse with different normalized input is rejected.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[!-~]+(?![\\s\\S])"}},{"name":"If-Match","in":"header","required":true,"description":"Quoted exact resource version required for optimistic concurrency.","schema":{"type":"string","pattern":"^\"(?:0|[1-9][0-9]*)\"$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.TransitionSimulationWorkspaceInput"}}}},"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceMutationResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"409":{"description":"Idempotency input mismatch or command already in flight.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"410":{"description":"The idempotency retention or command acceptance window expired.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"412":{"description":"The expected resource version does not match.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in TransitionSimulationWorkspaceInput.\ndeclare const input: Parameters<typeof client.simulationWorkspaces.activate>[0];\n// Persist one key per intended command; reuse it only for that same command.\ndeclare const savedCommandKey: string;\n// Use the version returned by your latest authorized read.\ndeclare const currentResourceVersion: string;\nconst result = await client.simulationWorkspaces.activate(input, { idempotencyKey: savedCommandKey, expectedResourceVersion: JSON.stringify(currentResourceVersion) });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:be864cfd6800ab2068c844c4ef1dbe0767184d6073bcaed0291ce24679a9086f","x-isecure-permission":"manage_simulation"}},"/v1/simulation-workspaces:close":{"post":{"operationId":"simulation_workspaces.close","summary":"Close a workspace","description":"Close the selected workspace through its lifecycle. This is not an instruction to erase past test evidence.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. Persist an Idempotency-Key for this command. Send the current resource version in If-Match.\n\nSDK: `client.simulationWorkspaces.close`. Input type: [TransitionSimulationWorkspaceInput](#schema/isecure.bankfiles.simulation.TransitionSimulationWorkspaceInput).","tags":["Workspaces and accounts"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated key scoped to tenant and operation; reuse with different normalized input is rejected.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[!-~]+(?![\\s\\S])"}},{"name":"If-Match","in":"header","required":true,"description":"Quoted exact resource version required for optimistic concurrency.","schema":{"type":"string","pattern":"^\"(?:0|[1-9][0-9]*)\"$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.TransitionSimulationWorkspaceInput"}}}},"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceMutationResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"409":{"description":"Idempotency input mismatch or command already in flight.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"410":{"description":"The idempotency retention or command acceptance window expired.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"412":{"description":"The expected resource version does not match.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in TransitionSimulationWorkspaceInput.\ndeclare const input: Parameters<typeof client.simulationWorkspaces.close>[0];\n// Persist one key per intended command; reuse it only for that same command.\ndeclare const savedCommandKey: string;\n// Use the version returned by your latest authorized read.\ndeclare const currentResourceVersion: string;\nconst result = await client.simulationWorkspaces.close(input, { idempotencyKey: savedCommandKey, expectedResourceVersion: JSON.stringify(currentResourceVersion) });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:1fcc04f9ab15e4c46c1e8d44a30cc374f8b1c243d3e455586dfa9bca49254282","x-isecure-permission":"manage_simulation"}},"/v1/simulation-workspaces:create":{"post":{"operationId":"simulation_workspaces.create","summary":"Create a workspace and accounts","description":"Define synthetic banks, legal entities, accounts, opening balances, currencies and service setup in a new draft workspace.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. Persist an Idempotency-Key for this command. \n\nSDK: `client.simulationWorkspaces.create`. Input type: [CreateSimulationWorkspaceInput](#schema/isecure.bankfiles.simulation.CreateSimulationWorkspaceInput).","tags":["Workspaces and accounts"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated key scoped to tenant and operation; reuse with different normalized input is rejected.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[!-~]+(?![\\s\\S])"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.CreateSimulationWorkspaceInput"}}}},"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceMutationResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"409":{"description":"Idempotency input mismatch or command already in flight.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"410":{"description":"The idempotency retention or command acceptance window expired.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in CreateSimulationWorkspaceInput.\ndeclare const input: Parameters<typeof client.simulationWorkspaces.create>[0];\n// Persist one key per intended command; reuse it only for that same command.\ndeclare const savedCommandKey: string;\nconst result = await client.simulationWorkspaces.create(input, { idempotencyKey: savedCommandKey });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:f5ead670aa55bdd04c26c3a5dc9bf3f2807d2a8dbcaaf014f39d2ff82809fe34","x-isecure-permission":"manage_simulation"}},"/v1/simulation-workspaces:reset":{"post":{"operationId":"simulation_workspaces.reset","summary":"Reset a workspace","description":"Apply the requested supported reset to the exact workspace version. Review the reset mode and retained evidence before sending.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. Persist an Idempotency-Key for this command. Send the current resource version in If-Match.\n\nSDK: `client.simulationWorkspaces.reset`. Input type: [ResetSimulationWorkspaceInput](#schema/isecure.bankfiles.simulation.ResetSimulationWorkspaceInput).","tags":["Workspaces and accounts"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated key scoped to tenant and operation; reuse with different normalized input is rejected.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[!-~]+(?![\\s\\S])"}},{"name":"If-Match","in":"header","required":true,"description":"Quoted exact resource version required for optimistic concurrency.","schema":{"type":"string","pattern":"^\"(?:0|[1-9][0-9]*)\"$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.ResetSimulationWorkspaceInput"}}}},"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceResetResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"409":{"description":"Idempotency input mismatch or command already in flight.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"410":{"description":"The idempotency retention or command acceptance window expired.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"412":{"description":"The expected resource version does not match.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in ResetSimulationWorkspaceInput.\ndeclare const input: Parameters<typeof client.simulationWorkspaces.reset>[0];\n// Persist one key per intended command; reuse it only for that same command.\ndeclare const savedCommandKey: string;\n// Use the version returned by your latest authorized read.\ndeclare const currentResourceVersion: string;\nconst result = await client.simulationWorkspaces.reset(input, { idempotencyKey: savedCommandKey, expectedResourceVersion: JSON.stringify(currentResourceVersion) });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:04236b103473b279c6a42a83294c98227e7761836631471e7ba45cf2b54ddab3","x-isecure-permission":"manage_simulation"}},"/v1/simulation-workspaces:revise":{"post":{"operationId":"simulation_workspaces.revise","summary":"Revise workspace configuration","description":"Create a new workspace revision with updated synthetic configuration. Supply the current version to avoid overwriting another change.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. Persist an Idempotency-Key for this command. Send the current resource version in If-Match.\n\nSDK: `client.simulationWorkspaces.revise`. Input type: [ReviseSimulationWorkspaceInput](#schema/isecure.bankfiles.simulation.ReviseSimulationWorkspaceInput).","tags":["Workspaces and accounts"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated key scoped to tenant and operation; reuse with different normalized input is rejected.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[!-~]+(?![\\s\\S])"}},{"name":"If-Match","in":"header","required":true,"description":"Quoted exact resource version required for optimistic concurrency.","schema":{"type":"string","pattern":"^\"(?:0|[1-9][0-9]*)\"$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.ReviseSimulationWorkspaceInput"}}}},"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceMutationResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"409":{"description":"Idempotency input mismatch or command already in flight.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"410":{"description":"The idempotency retention or command acceptance window expired.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"412":{"description":"The expected resource version does not match.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in ReviseSimulationWorkspaceInput.\ndeclare const input: Parameters<typeof client.simulationWorkspaces.revise>[0];\n// Persist one key per intended command; reuse it only for that same command.\ndeclare const savedCommandKey: string;\n// Use the version returned by your latest authorized read.\ndeclare const currentResourceVersion: string;\nconst result = await client.simulationWorkspaces.revise(input, { idempotencyKey: savedCommandKey, expectedResourceVersion: JSON.stringify(currentResourceVersion) });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:838ec9b30941405400f26fbbaa7623048b31ad4dc2cf2fee3914a27f799cc1ef","x-isecure-permission":"manage_simulation"}},"/v1/simulation-workspaces:suspend":{"post":{"operationId":"simulation_workspaces.suspend","summary":"Suspend a workspace","description":"Suspend the selected workspace through its governed lifecycle. Check the returned state before starting further work.\n\nRequired permission: `manage_simulation`, plus an active Bank Simulation subscription. The server checks account/resource scope on every call.\n\nSend `ISECure-Contract-Version: 4`. Persist an Idempotency-Key for this command. Send the current resource version in If-Match.\n\nSDK: `client.simulationWorkspaces.suspend`. Input type: [TransitionSimulationWorkspaceInput](#schema/isecure.bankfiles.simulation.TransitionSimulationWorkspaceInput).","tags":["Workspaces and accounts"],"parameters":[{"name":"ISECure-Contract-Version","in":"header","required":true,"description":"Explicit generated operation-contract version; omission never selects mutable latest.","schema":{"type":"integer","enum":[4]}},{"name":"Idempotency-Key","in":"header","required":true,"description":"Caller-generated key scoped to tenant and operation; reuse with different normalized input is rejected.","schema":{"type":"string","minLength":1,"maxLength":256,"pattern":"^[!-~]+(?![\\s\\S])"}},{"name":"If-Match","in":"header","required":true,"description":"Quoted exact resource version required for optimistic concurrency.","schema":{"type":"string","pattern":"^\"(?:0|[1-9][0-9]*)\"$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.TransitionSimulationWorkspaceInput"}}}},"security":[{"processingSession":[],"tenantApiKey":[]}],"responses":{"200":{"description":"Successful task result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceMutationResult"}}}},"400":{"description":"Typed request or validation issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"401":{"description":"Authentication is missing or invalid.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"403":{"description":"Typed authorization or policy issue.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"404":{"description":"The tenant-scoped resource was not found.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"409":{"description":"Idempotency input mismatch or command already in flight.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"410":{"description":"The idempotency retention or command acceptance window expired.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"412":{"description":"The expected resource version does not match.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"429":{"description":"Request rate limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"The handler violated its generated result contract.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"503":{"description":"A required runtime adapter is unavailable or the outcome is indeterminate.","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/isecure.bankfiles.operations.PlatformIssues"},{"$ref":"#/components/schemas/ProcessingError"}]}}}},"504":{"description":"Gateway timeout; the command outcome may be unknown.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"default":{"description":"An upstream gateway may return another error shape. Inspect HTTP status and do not parse it as a successful result.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"x-codeSamples":[{"lang":"ts","label":"TypeScript SDK","source":"// Use the authenticated client from the introduction.\n// Supply the fields shown in TransitionSimulationWorkspaceInput.\ndeclare const input: Parameters<typeof client.simulationWorkspaces.suspend>[0];\n// Persist one key per intended command; reuse it only for that same command.\ndeclare const savedCommandKey: string;\n// Use the version returned by your latest authorized read.\ndeclare const currentResourceVersion: string;\nconst result = await client.simulationWorkspaces.suspend(input, { idempotencyKey: savedCommandKey, expectedResourceVersion: JSON.stringify(currentResourceVersion) });"}],"x-isecure-contract-version":4,"x-isecure-contract-digest":"sha256:1255a220d8695cfb46dcdb442aadaf310456d05468b0a915b4641b4740ba5b40","x-isecure-permission":"manage_simulation"}}},"components":{"securitySchemes":{"tenantApiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Verified tenant API key; the same key used during session exchange."},"bootstrapIdToken":{"type":"apiKey","in":"header","name":"Authorization","description":"Current File Exchange ID token, without a prefix. Used only for POST /session."},"processingSession":{"type":"apiKey","in":"header","name":"Authorization","description":"Processing followed by one space and the opaque processingSession from POST /session. This is not Bearer authentication."}},"schemas":{"isecure.bankfiles.operations.ApprovalReference":{"type":"object","description":"References separately authenticated human approval evidence; presence never replaces authorization","properties":{"approval_request_id":{"type":"string","format":"uuid"},"approval_decision_id":{"type":"string","format":"uuid"},"exact_subject_digest":{"type":"string","maxLength":128}},"required":["approval_request_id","exact_subject_digest"],"additionalProperties":false},"isecure.bankfiles.operations.AttemptReference":{"type":"object","description":"Stable reference to an immutable execution or delivery attempt","properties":{"attempt_type":{"type":"string","maxLength":64},"attempt_id":{"type":"string","format":"uuid"},"attempt_ordinal":{"type":"integer","minimum":-2147483648,"maximum":2147483647}},"required":["attempt_type","attempt_id","attempt_ordinal"],"additionalProperties":false},"isecure.bankfiles.operations.AuthorizationReference":{"type":"object","description":"References the authorization decision evaluated for this exact request","properties":{"authorization_decision_id":{"type":"string","format":"uuid"},"decided_at":{"type":"string","format":"date-time"}},"required":["authorization_decision_id","decided_at"],"additionalProperties":false},"isecure.bankfiles.operations.CancellationBoundary":{"type":"string","enum":["preventable","race_possible","irreversible"],"description":"Whether cancellation can still prevent, may race with, or cannot reverse an effect"},"isecure.bankfiles.operations.ExactMoney":{"type":"object","description":"Exact decimal-string amount coupled to its explicit currency","properties":{"amount":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]{0,19})(?:\\.[0-9]{1,18})?$","maxLength":40,"x-isecure-json-representation":"decimal-string"},"currency":{"type":"string","maxLength":3}},"required":["amount","currency"],"additionalProperties":false},"isecure.bankfiles.operations.IdempotencyOutcome":{"type":"string","enum":["applied","replayed","in_progress","mismatch","expired"],"description":"Result of applying a caller idempotency key to the normalized command input; mismatch and expiry never reapply the command"},"isecure.bankfiles.operations.IdempotencyResult":{"type":"object","description":"Idempotency evidence returned without echoing the caller key or normalized customer input","properties":{"outcome":{"$ref":"#/components/schemas/isecure.bankfiles.operations.IdempotencyOutcome"},"original_request_id":{"type":"string","format":"uuid"},"retained_until":{"type":"string","format":"date-time"}},"required":["outcome","retained_until"],"additionalProperties":false},"isecure.bankfiles.operations.LifecycleTransition":{"type":"object","description":"One immutable lifecycle transition; state summary fields are never the history authority","properties":{"transition_id":{"type":"string","format":"uuid"},"transition_ordinal":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"from_state":{"type":"string","maxLength":64},"to_state":{"type":"string","maxLength":64},"reason_code":{"type":"string","maxLength":64},"occurred_at":{"type":"string","format":"date-time"}},"required":["transition_id","transition_ordinal","to_state","reason_code","occurred_at"],"additionalProperties":false},"isecure.bankfiles.operations.NextOperation":{"type":"object","description":"A possible next operation; it is guidance and never an authorization grant","properties":{"operation_id":{"type":"string","maxLength":128},"target":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"reason_code":{"type":"string","maxLength":64}},"required":["operation_id"],"additionalProperties":false},"isecure.bankfiles.operations.OperationContext":{"type":"object","description":"Common response context retained across REST, TypeScript, CLI, MCP, and admin adapters","properties":{"request_id":{"type":"string","format":"uuid"},"operation_id":{"type":"string","maxLength":128},"contract_version":{"type":"string","maxLength":128},"accepted_at":{"type":"string","format":"date-time"},"resource":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"attempt":{"$ref":"#/components/schemas/isecure.bankfiles.operations.AttemptReference"},"authorization":{"$ref":"#/components/schemas/isecure.bankfiles.operations.AuthorizationReference"},"approval_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ApprovalReference"},"idempotency_result":{"$ref":"#/components/schemas/isecure.bankfiles.operations.IdempotencyResult"},"next_operations":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.operations.NextOperation"},"minItems":0,"maxItems":32}},"required":["request_id","operation_id","contract_version","accepted_at","authorization"],"additionalProperties":false},"isecure.bankfiles.operations.OperationIssue":{"type":"object","description":"Caller-facing structured issue; safe_message must come from a governed template, and executable content-safety enforcement remains separately gated","properties":{"issue_code":{"type":"string","maxLength":64},"category":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationIssueCategory"},"severity":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationIssueSeverity"},"safe_message":{"type":"string","maxLength":2048},"field_path":{"type":"string","maxLength":1024},"rule_id":{"type":"string","maxLength":256},"retryable":{"type":"boolean"},"required_action":{"$ref":"#/components/schemas/isecure.bankfiles.operations.RequiredAction"}},"required":["issue_code","category","severity","safe_message","retryable"],"additionalProperties":false},"isecure.bankfiles.operations.OperationIssueCategory":{"type":"string","enum":["validation","authorization","policy","conflict","unsupported","external","internal"],"description":"Stable category for a caller-facing operation issue; the code remains operation-specific"},"isecure.bankfiles.operations.OperationIssueSeverity":{"type":"string","enum":["error","warning","information"],"description":"Presentation severity without changing whether the operation succeeded"},"isecure.bankfiles.operations.PageRequest":{"type":"object","description":"Snapshot-stable cursor request shared by list tasks","properties":{"page_size":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"cursor":{"type":"string","maxLength":2048}},"additionalProperties":false},"isecure.bankfiles.operations.PageResult":{"type":"object","description":"Snapshot-stable cursor result shared by list tasks","properties":{"next_cursor":{"type":"string","maxLength":2048},"snapshot_reference":{"type":"string","format":"uuid"}},"required":["snapshot_reference"],"additionalProperties":false},"isecure.bankfiles.operations.PlatformIssues":{"type":"object","description":"Common fail-closed runtime issue envelope; operation-specific issue contracts remain available for domain rejections","properties":{"issues":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationIssue"},"minItems":1,"maxItems":1}},"required":["issues"],"additionalProperties":false},"isecure.bankfiles.operations.RequiredAction":{"description":"Typed user action required to continue; no variant contains credentials or approval tokens","oneOf":[{"title":"human_review","type":"object","properties":{"action_type":{"enum":["human_review"]},"subject_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"reason_code":{"type":"string","maxLength":64}},"required":["action_type","subject_reference","reason_code"],"additionalProperties":false},{"title":"strong_authentication","type":"object","properties":{"action_type":{"enum":["strong_authentication"]},"action_reference":{"type":"string","format":"uuid"},"expires_at":{"type":"string","format":"date-time"}},"required":["action_type","action_reference"],"additionalProperties":false},{"title":"configuration","type":"object","properties":{"action_type":{"enum":["configuration"]},"configuration_code":{"type":"string","maxLength":64}},"required":["action_type","configuration_code"],"additionalProperties":false},{"title":"retry_later","type":"object","properties":{"action_type":{"enum":["retry_later"]},"retry_after_seconds":{"type":"integer","minimum":-2147483648,"maximum":2147483647}},"required":["action_type","retry_after_seconds"],"additionalProperties":false}]},"isecure.bankfiles.operations.ResourceReference":{"type":"object","description":"Stable reference to one governed customer-facing resource revision","properties":{"resource_type":{"type":"string","maxLength":64},"resource_id":{"type":"string","format":"uuid"},"resource_version":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"revision_id":{"type":"string","format":"uuid"}},"required":["resource_type","resource_id"],"additionalProperties":false},"isecure.bankfiles.operations.TaskReference":{"type":"object","description":"Reference returned for work that outlives a synchronous request","properties":{"task_id":{"type":"string","format":"uuid"},"attempt":{"$ref":"#/components/schemas/isecure.bankfiles.operations.AttemptReference"},"state":{"$ref":"#/components/schemas/isecure.bankfiles.operations.TaskState"},"poll_after_seconds":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"expires_at":{"type":"string","format":"date-time"},"cancellation_boundary":{"$ref":"#/components/schemas/isecure.bankfiles.operations.CancellationBoundary"}},"required":["task_id","attempt","state","cancellation_boundary"],"additionalProperties":false},"isecure.bankfiles.operations.TaskState":{"type":"string","enum":["queued","running","succeeded","failed","indeterminate","cancelled"],"description":"Durable task state; indeterminate is distinct from failure"},"isecure.bankfiles.simulation.ControlSimulationClockInput":{"type":"object","description":"Control only business time after a completed Module Run transition has established the selected runtime stream; irrelevant optional fields are rejected","properties":{"workspace_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"branch_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"expected_clock_revision":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"control_kind":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationClockControlKind"},"acceleration_multiplier":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]{0,19})(?:\\.[0-9]{1,18})?$","maxLength":40,"x-isecure-json-representation":"decimal-string"},"step_seconds":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"advance_to_virtual_instant":{"type":"string","format":"date-time"}},"required":["workspace_reference","expected_clock_revision","control_kind"],"additionalProperties":false},"isecure.bankfiles.simulation.CreateSimulationBranchInput":{"type":"object","properties":{"checkpoint_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"scenario_revision_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"}},"required":["checkpoint_reference","scenario_revision_reference"],"additionalProperties":false},"isecure.bankfiles.simulation.CreateSimulationCheckpointInput":{"type":"object","properties":{"run_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"expected_resource_version":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"}},"required":["run_reference","expected_resource_version"],"additionalProperties":false},"isecure.bankfiles.simulation.CreateSimulationScenarioInput":{"type":"object","description":"Create the first immutable typed Scenario revision","properties":{"workspace_revision_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"scenario_profile_id":{"type":"string","maxLength":256},"scenario_profile_version":{"type":"string","maxLength":128},"name":{"type":"string","maxLength":256},"directives":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioDirective"},"minItems":0,"maxItems":1024}},"required":["workspace_revision_reference","scenario_profile_id","scenario_profile_version","name","directives"],"additionalProperties":false},"isecure.bankfiles.simulation.CreateSimulationWorkspaceInput":{"type":"object","description":"Create the first immutable synthetic-only workspace revision","properties":{"capability_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"data_admission_mode":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationDataAdmissionMode"},"topology":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationTopology"},"service_setup":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationServiceSetup"}},"required":["capability_reference","data_admission_mode","topology","service_setup"],"additionalProperties":false},"isecure.bankfiles.simulation.ResetSimulationWorkspaceInput":{"type":"object","description":"Append one governed reset revision without deleting or rewriting retained evidence. A completed Module Run transition must already have established the selected runtime stream","properties":{"workspace_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"branch_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"expected_resource_version":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"reset_scope":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceResetScope"},"reason_code":{"type":"string","maxLength":64}},"required":["workspace_reference","expected_resource_version","reset_scope","reason_code"],"additionalProperties":false},"isecure.bankfiles.simulation.ReviseSimulationScenarioInput":{"type":"object","description":"Create a replacement immutable Scenario revision","properties":{"scenario_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"expected_resource_version":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"scenario_profile_id":{"type":"string","maxLength":256},"scenario_profile_version":{"type":"string","maxLength":128},"name":{"type":"string","maxLength":256},"directives":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioDirective"},"minItems":0,"maxItems":1024}},"required":["scenario_reference","expected_resource_version","scenario_profile_id","scenario_profile_version","name","directives"],"additionalProperties":false},"isecure.bankfiles.simulation.ReviseSimulationWorkspaceInput":{"type":"object","description":"Create a replacement immutable workspace revision with optimistic concurrency","properties":{"workspace_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"expected_resource_version":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"capability_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"data_admission_mode":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationDataAdmissionMode"},"topology":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationTopology"},"service_setup":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationServiceSetup"}},"required":["workspace_reference","expected_resource_version","capability_reference","data_admission_mode","topology","service_setup"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationArtifactAccessMode":{"type":"string","enum":["file_exchange"],"description":"Exact Artifact access remains on the permanent File Exchange API"},"isecure.bankfiles.simulation.SimulationArtifactListInput":{"type":"object","properties":{"run_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"role":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationArtifactRole"},"page":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageRequest"}},"required":["run_reference","page"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationArtifactListResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"artifacts":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationArtifactReference"},"minItems":0,"maxItems":200},"page":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageResult"}},"required":["context","artifacts","page"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationArtifactReference":{"type":"object","description":"Exact Artifact identity is transferred through File Exchange; bytes, paths, filenames and payload digests are absent","properties":{"artifact_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"file_exchange_occurrence_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"role":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationArtifactRole"},"media_type":{"type":"string","maxLength":256},"schema_namespace":{"type":"string","maxLength":512},"profile_id":{"type":"string","maxLength":256},"profile_version":{"type":"string","maxLength":128},"produced_at_virtual_instant":{"type":"string","format":"date-time"}},"required":["artifact_reference","file_exchange_occurrence_reference","role","media_type","profile_id","profile_version"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationArtifactRole":{"type":"string","enum":["input","status_report","debit_credit_notification","statement","validation_report"],"description":"Role of one exact File Exchange Artifact in a Simulation Run"},"isecure.bankfiles.simulation.SimulationBehaviorScope":{"type":"string","enum":["synthetic_only"],"description":"Non-production behavior scope advertised by a Simulation capability; this is not a support claim"},"isecure.bankfiles.simulation.SimulationBranchResource":{"type":"object","description":"Immutable branch rooted at one checkpoint and scenario revision","properties":{"branch_id":{"type":"string","format":"uuid"},"parent_checkpoint_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"scenario_revision_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"initial_run_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"created_at":{"type":"string","format":"date-time"}},"required":["branch_id","parent_checkpoint_reference","scenario_revision_reference","created_at"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationBranchResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"branch":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationBranchResource"}},"required":["context","branch"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationCapability":{"type":"object","description":"Discoverable Simulation contract and quota surface; availability never grants entitlement or support","properties":{"capability_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"capability_id":{"type":"string","maxLength":256},"capability_version":{"type":"string","maxLength":128},"available_data_admission_modes":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationDataAdmissionMode"},"minItems":1,"maxItems":1},"clock_modes":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationClockMode"},"minItems":1,"maxItems":3},"profile_capabilities":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationProfileCapability"},"minItems":0,"maxItems":64},"runtime_policy_profiles":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRuntimePolicyProfile"},"minItems":1,"maxItems":64},"quota":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationQuota"},"exact_artifact_access":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationArtifactAccessMode"},"runtime_availability":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRuntimeAvailability"},"behavior_scope":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationBehaviorScope"}},"required":["capability_reference","capability_id","capability_version","available_data_admission_modes","clock_modes","profile_capabilities","runtime_policy_profiles","quota","exact_artifact_access","runtime_availability","behavior_scope"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationCapabilityListInput":{"type":"object","properties":{"data_admission_mode":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationDataAdmissionMode"},"page":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageRequest"}},"required":["page"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationCapabilityListResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationCapability"},"minItems":0,"maxItems":64},"page":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageResult"}},"required":["context","capabilities","page"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationCheckpointResource":{"type":"object","description":"Immutable opaque checkpoint of one run and pending event queue; internal state bytes are not a public bank Artifact","properties":{"checkpoint_id":{"type":"string","format":"uuid"},"run_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"checkpoint_ordinal":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"clock":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationClockSnapshot"},"pending_event_count":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"created_at":{"type":"string","format":"date-time"}},"required":["checkpoint_id","run_reference","checkpoint_ordinal","clock","pending_event_count","created_at"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationCheckpointResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"checkpoint":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationCheckpointResource"}},"required":["context","checkpoint"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationClockControlKind":{"type":"string","enum":["pause","use_real_time_pacing","set_acceleration","step_duration","step_event","advance_to_instant"],"description":"One typed business-clock control without an executable clock implementation"},"isecure.bankfiles.simulation.SimulationClockControlResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"clock":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationClockSnapshot"},"lifecycle":{"$ref":"#/components/schemas/isecure.bankfiles.operations.LifecycleTransition"}},"required":["context","clock","lifecycle"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationClockMode":{"type":"string","enum":["paused","real_time","accelerated"],"description":"Business-clock pacing; it never changes authenticated platform time"},"isecure.bankfiles.simulation.SimulationClockSnapshot":{"type":"object","description":"Business-clock snapshot; virtual time is never an authentication or retention timestamp","properties":{"clock_revision":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"mode":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationClockMode"},"virtual_instant":{"type":"string","format":"date-time"},"acceleration_multiplier":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]{0,19})(?:\\.[0-9]{1,18})?$","maxLength":40,"x-isecure-json-representation":"decimal-string"},"next_event_instant":{"type":"string","format":"date-time"},"pending_event_count":{"type":"integer","minimum":-2147483648,"maximum":2147483647}},"required":["clock_revision","mode","virtual_instant","pending_event_count"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationDataAdmissionMode":{"type":"string","enum":["synthetic"],"description":"Closed synthetic-only admission posture; governed replay remains a separate later contract"},"isecure.bankfiles.simulation.SimulationEventKind":{"type":"string","enum":["run_accepted","payment_accepted","payment_rejected","payment_booked","payment_returned","payment_reversed","artifact_produced","clock_advanced","run_completed","run_indeterminate"],"description":"Stable simulation event kind; exact bank-file content stays in referenced Artifacts"},"isecure.bankfiles.simulation.SimulationEventListInput":{"type":"object","properties":{"workspace_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"run_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"event_kind":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationEventKind"},"page":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageRequest"}},"required":["workspace_reference","page"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationEventListResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"events":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationEventResource"},"minItems":0,"maxItems":200},"page":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageResult"}},"required":["context","events","page"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationEventResource":{"type":"object","description":"Business-readable event; exact generated files are separately authorized Artifacts","properties":{"event_id":{"type":"string","format":"uuid"},"event_sequence":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"event_kind":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationEventKind"},"workspace_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"run_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"subject_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"artifact_references":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationArtifactReference"},"minItems":0,"maxItems":16},"reason_code":{"type":"string","maxLength":64},"virtual_occurred_at":{"type":"string","format":"date-time"},"recorded_at":{"type":"string","format":"date-time"}},"required":["event_id","event_sequence","event_kind","workspace_reference","artifact_references","recorded_at"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationFaultKind":{"type":"string","enum":["duplicate_evidence","out_of_order_evidence","missing_response","malformed_response","timeout_after_acceptance","contradictory_status"],"description":"Closed fault posture; values are scenario controls and never bank-bound fields"},"isecure.bankfiles.simulation.SimulationFileDirection":{"type":"string","enum":["customer_to_bank","bank_to_customer"],"description":"Direction of one synthetic bank-file service permission; it is relative to the corporate customer"},"isecure.bankfiles.simulation.SimulationFileServicePermission":{"type":"object","description":"One explicit synthetic file-service permission bound to a connection and exact profile","properties":{"permission_key":{"type":"string","maxLength":64},"connection_key":{"type":"string","maxLength":64},"file_type_code":{"type":"string","maxLength":64},"direction":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationFileDirection"},"message_namespace":{"type":"string","maxLength":512},"profile_id":{"type":"string","maxLength":256},"profile_version":{"type":"string","maxLength":128}},"required":["permission_key","connection_key","file_type_code","direction","message_namespace","profile_id","profile_version"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationLifecycleTransition":{"type":"object","description":"One immutable lifecycle transition in a Simulation result","properties":{"transition_id":{"type":"string","format":"uuid"},"transition_ordinal":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"from_state":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunState"},"to_state":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunState"},"reason_code":{"type":"string","maxLength":64},"virtual_occurred_at":{"type":"string","format":"date-time"},"recorded_at":{"type":"string","format":"date-time"}},"required":["transition_id","transition_ordinal","to_state","reason_code","recorded_at"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationProfileCapability":{"type":"object","description":"One exact synthetic profile accepted by the contract; this is not real-bank support","properties":{"profile_id":{"type":"string","maxLength":256},"profile_version":{"type":"string","maxLength":128},"message_namespace":{"type":"string","maxLength":512},"accepted_input_media_types":{"type":"array","items":{"type":"string","maxLength":256},"minItems":1,"maxItems":16},"generated_output_media_types":{"type":"array","items":{"type":"string","maxLength":256},"minItems":1,"maxItems":16}},"required":["profile_id","profile_version","message_namespace","accepted_input_media_types","generated_output_media_types"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationQuota":{"type":"object","description":"Discoverable product limits; all counts and durations are explicit and bounded","properties":{"maximum_banks":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_legal_entities":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_accounts":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_counterparties":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_currencies":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_scenarios":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_runs":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_artifacts_per_run":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_pending_events":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_agreements":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_service_users":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_certificates":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_connections":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_file_permissions":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_schedules":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_cutoffs":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"maximum_acceleration_multiplier":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]{0,19})(?:\\.[0-9]{1,18})?$","maxLength":40,"x-isecure-json-representation":"decimal-string"},"maximum_step_seconds":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"}},"required":["maximum_banks","maximum_legal_entities","maximum_accounts","maximum_counterparties","maximum_currencies","maximum_scenarios","maximum_runs","maximum_artifacts_per_run","maximum_pending_events","maximum_agreements","maximum_service_users","maximum_certificates","maximum_connections","maximum_file_permissions","maximum_schedules","maximum_cutoffs","maximum_acceleration_multiplier","maximum_step_seconds"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationResourceGetInput":{"type":"object","properties":{"resource_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"}},"required":["resource_reference"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationRunGetResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"run":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunResource"}},"required":["context","run"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationRunInput":{"description":"Typed run input; discriminator prevents simultaneous structured and Artifact inputs","oneOf":[{"title":"payment_order_revision","type":"object","properties":{"input_type":{"enum":["payment_order_revision"]},"payment_order_revision_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"}},"required":["input_type","payment_order_revision_reference"],"additionalProperties":false},{"title":"exact_artifact","type":"object","properties":{"input_type":{"enum":["exact_artifact"]},"artifact":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationArtifactReference"}},"required":["input_type","artifact"],"additionalProperties":false}]},"isecure.bankfiles.simulation.SimulationRunListInput":{"type":"object","properties":{"workspace_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"scenario_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"state":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunState"},"page":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageRequest"}},"required":["workspace_reference","page"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationRunListResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"runs":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunResource"},"minItems":0,"maxItems":200},"page":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageResult"}},"required":["context","runs","page"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationRunMutationResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"task":{"$ref":"#/components/schemas/isecure.bankfiles.operations.TaskReference"},"run":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunResource"}},"required":["context","task","run"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationRunResource":{"type":"object","description":"Immutable Simulation Run revision and exact evidence references","properties":{"run_id":{"type":"string","format":"uuid"},"resource_version":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"revision_id":{"type":"string","format":"uuid"},"revision_number":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"state":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunState"},"workspace_revision_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"scenario_revision_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"branch_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"data_admission_mode":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationDataAdmissionMode"},"input":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunInput"},"clock":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationClockSnapshot"},"input_artifacts":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationArtifactReference"},"minItems":0,"maxItems":64},"output_artifacts":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationArtifactReference"},"minItems":0,"maxItems":256},"transitions":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationLifecycleTransition"},"minItems":1,"maxItems":4096},"simulator_release_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"accepted_at":{"type":"string","format":"date-time"},"completed_at":{"type":"string","format":"date-time"}},"required":["run_id","resource_version","revision_id","revision_number","state","workspace_revision_reference","scenario_revision_reference","data_admission_mode","input","clock","input_artifacts","output_artifacts","transitions","simulator_release_reference","accepted_at"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationRunState":{"type":"string","enum":["accepted","running","paused","succeeded","failed","indeterminate","cancelled"],"description":"Lifecycle of one immutable Simulation Run revision"},"isecure.bankfiles.simulation.SimulationRuntimeAvailability":{"type":"string","enum":["contract_only","hosted"],"description":"Current runtime availability; a generated contract alone remains contract-only"},"isecure.bankfiles.simulation.SimulationRuntimeCurrencyPolicy":{"type":"object","description":"One exact per-debit-currency booking cutoff and fixed synthetic charge","properties":{"currency":{"type":"string","maxLength":3},"booking_cutoff":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRuntimePolicyLocalTime"},"fixed_charge":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ExactMoney"}},"required":["currency","booking_cutoff","fixed_charge"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationRuntimeFxPair":{"description":"Closed support decision for one directional currency pair","oneOf":[{"title":"supported","type":"object","properties":{"support_status":{"enum":["supported"]},"source_currency":{"type":"string","maxLength":3},"target_currency":{"type":"string","maxLength":3},"target_units_per_source_unit":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]{0,19})(?:\\.[0-9]{1,18})?$","maxLength":40,"x-isecure-json-representation":"decimal-string"}},"required":["support_status","source_currency","target_currency","target_units_per_source_unit"],"additionalProperties":false},{"title":"unsupported","type":"object","properties":{"support_status":{"enum":["unsupported"]},"source_currency":{"type":"string","maxLength":3},"target_currency":{"type":"string","maxLength":3},"reason_code":{"type":"string","maxLength":64}},"required":["support_status","source_currency","target_currency","reason_code"],"additionalProperties":false}]},"isecure.bankfiles.simulation.SimulationRuntimePolicyLocalTime":{"type":"object","description":"Typed local synthetic-bank cutoff interpreted only in the profile's exact business time zone","properties":{"hour":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"minute":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"second":{"type":"integer","minimum":-2147483648,"maximum":2147483647}},"required":["hour","minute","second"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationRuntimePolicyProfile":{"type":"object","description":"One immutable discoverable synthetic-bank runtime policy; it is not a real-bank behavior or support claim","properties":{"runtime_policy_profile_id":{"type":"string","maxLength":256},"runtime_policy_profile_version":{"type":"string","maxLength":128},"calendar_profile_id":{"type":"string","maxLength":256},"calendar_profile_version":{"type":"string","maxLength":128},"holiday_release_id":{"type":"string","maxLength":256},"holiday_release_version":{"type":"string","maxLength":128},"holiday_release_digest_algorithm":{"type":"string","maxLength":64},"holiday_release_digest":{"type":"string","maxLength":128},"business_timezone":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRuntimeTimeZone"},"calendar_valid_from":{"type":"string","format":"date"},"calendar_valid_until":{"type":"string","format":"date"},"weekend_rule":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRuntimeWeekendRule"},"holiday_dates":{"type":"array","items":{"type":"string","format":"date"},"minItems":0,"maxItems":3660},"currency_policies":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRuntimeCurrencyPolicy"},"minItems":1,"maxItems":32},"directional_fx_pairs":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRuntimeFxPair"},"minItems":0,"maxItems":992}},"required":["runtime_policy_profile_id","runtime_policy_profile_version","calendar_profile_id","calendar_profile_version","holiday_release_id","holiday_release_version","holiday_release_digest_algorithm","holiday_release_digest","business_timezone","calendar_valid_from","calendar_valid_until","weekend_rule","holiday_dates","currency_policies","directional_fx_pairs"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationRuntimeTimeZone":{"type":"string","enum":["utc","europe_helsinki","europe_tallinn","europe_stockholm","europe_oslo","europe_copenhagen","europe_berlin"],"description":"Closed deterministic time-zone rules shipped by the synthetic bank runtime"},"isecure.bankfiles.simulation.SimulationRuntimeWeekendRule":{"type":"string","enum":["saturday_and_sunday"],"description":"Closed non-business weekday rule implemented by the synthetic bank runtime"},"isecure.bankfiles.simulation.SimulationScenarioDirective":{"type":"object","description":"One closed scenario instruction; it cannot carry raw bank payload or field overrides","properties":{"directive_ordinal":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"outcome":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioOutcome"},"fault_kind":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationFaultKind"},"target_reference":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationTopologyReference"},"scheduled_virtual_instant":{"type":"string","format":"date-time"},"delay_seconds":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"reason_code":{"type":"string","maxLength":64}},"required":["directive_ordinal","outcome"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationScenarioGetResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"scenario":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioResource"}},"required":["context","scenario"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationScenarioListInput":{"type":"object","properties":{"workspace_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"state":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioState"},"page":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageRequest"}},"required":["workspace_reference","page"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationScenarioListResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioResource"},"minItems":0,"maxItems":200},"page":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageResult"}},"required":["context","scenarios","page"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationScenarioMutationResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"scenario":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioResource"},"lifecycle":{"$ref":"#/components/schemas/isecure.bankfiles.operations.LifecycleTransition"}},"required":["context","scenario","lifecycle"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationScenarioOutcome":{"type":"string","enum":["accept","reject","partially_reject","delay","return","reverse","cancel","indeterminate"],"description":"Closed synthetic behavior requested by a scenario revision"},"isecure.bankfiles.simulation.SimulationScenarioResource":{"type":"object","description":"Immutable typed Scenario revision; no directive can mutate a bank-bound field","properties":{"scenario_id":{"type":"string","format":"uuid"},"resource_version":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"revision_id":{"type":"string","format":"uuid"},"revision_number":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"state":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioState"},"workspace_revision_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"scenario_profile_id":{"type":"string","maxLength":256},"scenario_profile_version":{"type":"string","maxLength":128},"name":{"type":"string","maxLength":256},"directives":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationScenarioDirective"},"minItems":0,"maxItems":1024},"created_at":{"type":"string","format":"date-time"}},"required":["scenario_id","resource_version","revision_id","revision_number","state","workspace_revision_reference","scenario_profile_id","scenario_profile_version","name","directives","created_at"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationScenarioState":{"type":"string","enum":["draft","active","superseded"],"description":"Immutable scenario-revision lifecycle"},"isecure.bankfiles.simulation.SimulationServiceCutoffDefinition":{"type":"object","description":"One versioned synthetic cutoff profile binding with an optional exact currency scope","properties":{"cutoff_key":{"type":"string","maxLength":64},"permission_key":{"type":"string","maxLength":64},"cutoff_profile_id":{"type":"string","maxLength":256},"cutoff_profile_version":{"type":"string","maxLength":128},"business_timezone":{"type":"string","maxLength":64},"currency":{"type":"string","maxLength":3}},"required":["cutoff_key","permission_key","cutoff_profile_id","cutoff_profile_version","business_timezone"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationServiceScheduleDefinition":{"type":"object","description":"One versioned schedule profile binding; arbitrary cron expressions are inadmissible","properties":{"schedule_key":{"type":"string","maxLength":64},"permission_key":{"type":"string","maxLength":64},"schedule_profile_id":{"type":"string","maxLength":256},"schedule_profile_version":{"type":"string","maxLength":128},"business_timezone":{"type":"string","maxLength":64}},"required":["schedule_key","permission_key","schedule_profile_id","schedule_profile_version","business_timezone"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationServiceSetup":{"type":"object","description":"Bounded WebServices-style synthetic service setup; every reference is workspace-local","properties":{"agreements":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SyntheticBankAgreementDefinition"},"minItems":0,"maxItems":256},"users":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SyntheticWebServicesUserDefinition"},"minItems":0,"maxItems":1024},"certificates":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SyntheticCertificateDefinition"},"minItems":0,"maxItems":2048},"connections":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SyntheticBankConnectionDefinition"},"minItems":0,"maxItems":1024},"file_permissions":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationFileServicePermission"},"minItems":0,"maxItems":4096},"schedules":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationServiceScheduleDefinition"},"minItems":0,"maxItems":2048},"cutoffs":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationServiceCutoffDefinition"},"minItems":0,"maxItems":2048}},"required":["agreements","users","certificates","connections","file_permissions","schedules","cutoffs"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationTopology":{"type":"object","description":"One bounded topology revision; references are workspace-local and cannot resolve production objects","properties":{"banks":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SyntheticBankDefinition"},"minItems":1,"maxItems":64},"legal_entities":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SyntheticLegalEntityDefinition"},"minItems":1,"maxItems":256},"currencies":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SyntheticCurrencyDefinition"},"minItems":1,"maxItems":32},"accounts":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SyntheticAccountDefinition"},"minItems":1,"maxItems":2048},"counterparties":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SyntheticCounterpartyDefinition"},"minItems":0,"maxItems":4096}},"required":["banks","legal_entities","currencies","accounts","counterparties"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationTopologyReference":{"type":"object","description":"Typed workspace-local target for one Scenario directive","properties":{"subject_kind":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationTopologySubjectKind"},"subject_key":{"type":"string","maxLength":64}},"required":["subject_kind","subject_key"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationTopologySubjectKind":{"type":"string","enum":["bank","legal_entity","account","currency","counterparty"],"description":"Workspace-local Scenario target; it cannot resolve a production resource"},"isecure.bankfiles.simulation.SimulationWorkspaceGetResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"workspace":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceResource"}},"required":["context","workspace"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationWorkspaceListInput":{"type":"object","properties":{"state":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceState"},"page":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageRequest"}},"required":["page"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationWorkspaceListResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"workspaces":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceResource"},"minItems":0,"maxItems":200},"page":{"$ref":"#/components/schemas/isecure.bankfiles.operations.PageResult"}},"required":["context","workspaces","page"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationWorkspaceMutationResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"workspace":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceResource"},"lifecycle":{"$ref":"#/components/schemas/isecure.bankfiles.operations.LifecycleTransition"}},"required":["context","workspace","lifecycle"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationWorkspaceResetResource":{"type":"object","description":"Immutable evidence of one governed reset; prior revisions, Runs, events and Artifacts remain retained","properties":{"reset_id":{"type":"string","format":"uuid"},"source_workspace_revision_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"result_workspace_revision_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"reset_scope":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceResetScope"},"reason_code":{"type":"string","maxLength":64},"superseded_scenario_revision_references":{"type":"array","items":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"minItems":0,"maxItems":10000},"recorded_at":{"type":"string","format":"date-time"}},"required":["reset_id","source_workspace_revision_reference","result_workspace_revision_reference","reset_scope","reason_code","superseded_scenario_revision_references","recorded_at"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationWorkspaceResetResult":{"type":"object","properties":{"context":{"$ref":"#/components/schemas/isecure.bankfiles.operations.OperationContext"},"workspace":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceResource"},"reset":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceResetResource"},"lifecycle":{"$ref":"#/components/schemas/isecure.bankfiles.operations.LifecycleTransition"}},"required":["context","workspace","reset","lifecycle"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationWorkspaceResetScope":{"type":"string","enum":["runtime_state","runtime_state_and_balances","runtime_state_balances_and_active_scenarios"],"description":"Bounded governed reset scope; every value creates a new runtime stream and retains every prior stream, revision, Run, event and Artifact. runtime_state preserves exact balances and virtual instant but clears the pending queue, pacing anchor and runtime idempotency cache and starts paused. runtime_state_and_balances additionally restores exact workspace opening balances. runtime_state_balances_and_active_scenarios also appends immutable Superseded revisions for every active Scenario"},"isecure.bankfiles.simulation.SimulationWorkspaceResource":{"type":"object","description":"Immutable Simulation Workspace revision returned through the generated Processing contracts","properties":{"workspace_id":{"type":"string","format":"uuid"},"resource_version":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"revision_id":{"type":"string","format":"uuid"},"revision_number":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"},"state":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationWorkspaceState"},"data_admission_mode":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationDataAdmissionMode"},"capability_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"topology":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationTopology"},"service_setup":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationServiceSetup"},"created_at":{"type":"string","format":"date-time"},"transitioned_at":{"type":"string","format":"date-time"}},"required":["workspace_id","resource_version","revision_id","revision_number","state","data_admission_mode","capability_reference","topology","service_setup","created_at","transitioned_at"],"additionalProperties":false},"isecure.bankfiles.simulation.SimulationWorkspaceState":{"type":"string","enum":["draft","active","suspended","closed"],"description":"Lifecycle of one isolated non-production Simulation Workspace"},"isecure.bankfiles.simulation.StartSimulationRunInput":{"type":"object","description":"Start one immutable run from exact workspace, scenario and payment input revisions","properties":{"workspace_revision_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"scenario_revision_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"branch_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"data_admission_mode":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationDataAdmissionMode"},"input":{"$ref":"#/components/schemas/isecure.bankfiles.simulation.SimulationRunInput"}},"required":["workspace_revision_reference","scenario_revision_reference","data_admission_mode","input"],"additionalProperties":false},"isecure.bankfiles.simulation.SyntheticAccountDefinition":{"type":"object","description":"Synthetic account and exact starting balance; the money currency must equal account currency","properties":{"account_key":{"type":"string","maxLength":64},"bank_key":{"type":"string","maxLength":64},"legal_entity_key":{"type":"string","maxLength":64},"currency":{"type":"string","maxLength":3},"starting_balance":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ExactMoney"}},"required":["account_key","bank_key","legal_entity_key","currency","starting_balance"],"additionalProperties":false},"isecure.bankfiles.simulation.SyntheticBankAgreementDefinition":{"type":"object","description":"Workspace-local synthetic bank service agreement; it grants no real-bank authority","properties":{"agreement_key":{"type":"string","maxLength":64},"bank_key":{"type":"string","maxLength":64},"legal_entity_key":{"type":"string","maxLength":64},"agreement_profile_id":{"type":"string","maxLength":256},"agreement_profile_version":{"type":"string","maxLength":128},"valid_from":{"type":"string","format":"date-time"},"valid_until":{"type":"string","format":"date-time"}},"required":["agreement_key","bank_key","legal_entity_key","agreement_profile_id","agreement_profile_version"],"additionalProperties":false},"isecure.bankfiles.simulation.SyntheticBankConnectionDefinition":{"type":"object","description":"Workspace-local bank connection binding without an endpoint, network route or credential","properties":{"connection_key":{"type":"string","maxLength":64},"agreement_key":{"type":"string","maxLength":64},"user_key":{"type":"string","maxLength":64},"certificate_key":{"type":"string","maxLength":64},"connection_profile_id":{"type":"string","maxLength":256},"connection_profile_version":{"type":"string","maxLength":128}},"required":["connection_key","agreement_key","user_key","certificate_key","connection_profile_id","connection_profile_version"],"additionalProperties":false},"isecure.bankfiles.simulation.SyntheticBankDefinition":{"type":"object","description":"Bounded synthetic bank definition bound to one exact discoverable runtime policy; bank identifiers are workspace-local and never production connections","properties":{"bank_key":{"type":"string","maxLength":64},"display_name":{"type":"string","maxLength":256},"domicile_country":{"type":"string","maxLength":2},"runtime_policy_profile_id":{"type":"string","maxLength":256},"runtime_policy_profile_version":{"type":"string","maxLength":128},"supported_currencies":{"type":"array","items":{"type":"string","maxLength":3},"minItems":1,"maxItems":32}},"required":["bank_key","display_name","domicile_country","runtime_policy_profile_id","runtime_policy_profile_version","supported_currencies"],"additionalProperties":false},"isecure.bankfiles.simulation.SyntheticCertificateDefinition":{"type":"object","description":"Synthetic certificate posture only; key material, certificate bytes and production fingerprints are inadmissible","properties":{"certificate_key":{"type":"string","maxLength":64},"user_key":{"type":"string","maxLength":64},"certificate_profile_id":{"type":"string","maxLength":256},"certificate_profile_version":{"type":"string","maxLength":128},"valid_from":{"type":"string","format":"date-time"},"valid_until":{"type":"string","format":"date-time"}},"required":["certificate_key","user_key","certificate_profile_id","certificate_profile_version","valid_from","valid_until"],"additionalProperties":false},"isecure.bankfiles.simulation.SyntheticCounterpartyDefinition":{"type":"object","description":"Synthetic counterparty with an optional workspace-local settlement account","properties":{"counterparty_key":{"type":"string","maxLength":64},"display_name":{"type":"string","maxLength":256},"domicile_country":{"type":"string","maxLength":2},"settlement_account_key":{"type":"string","maxLength":64}},"required":["counterparty_key","display_name","domicile_country"],"additionalProperties":false},"isecure.bankfiles.simulation.SyntheticCurrencyDefinition":{"type":"object","description":"One explicit currency in a workspace topology; no implicit default currency exists","properties":{"currency":{"type":"string","maxLength":3},"fraction_digits":{"type":"integer","minimum":-32768,"maximum":32767}},"required":["currency","fraction_digits"],"additionalProperties":false},"isecure.bankfiles.simulation.SyntheticLegalEntityDefinition":{"type":"object","description":"Bounded synthetic legal entity; it has no production agreement or credential","properties":{"legal_entity_key":{"type":"string","maxLength":64},"display_name":{"type":"string","maxLength":256},"domicile_country":{"type":"string","maxLength":2}},"required":["legal_entity_key","display_name","domicile_country"],"additionalProperties":false},"isecure.bankfiles.simulation.SyntheticWebServicesUserDefinition":{"type":"object","description":"Workspace-local WebServices-style user identity without a password, token or production identifier","properties":{"user_key":{"type":"string","maxLength":64},"agreement_key":{"type":"string","maxLength":64},"display_name":{"type":"string","maxLength":256},"user_profile_id":{"type":"string","maxLength":256},"user_profile_version":{"type":"string","maxLength":128}},"required":["user_key","agreement_key","display_name","user_profile_id","user_profile_version"],"additionalProperties":false},"isecure.bankfiles.simulation.TransitionSimulationWorkspaceInput":{"type":"object","description":"Append one authorized Workspace lifecycle revision with optimistic concurrency","properties":{"workspace_reference":{"$ref":"#/components/schemas/isecure.bankfiles.operations.ResourceReference"},"expected_resource_version":{"type":"string","pattern":"^-?(?:0|[1-9][0-9]*)$","maxLength":20,"x-isecure-minimum":"-9223372036854775808","x-isecure-maximum":"9223372036854775807","x-isecure-json-representation":"decimal-string"}},"required":["workspace_reference","expected_resource_version"],"additionalProperties":false},"ProcessingError":{"type":"object","description":"Safe host or gateway failure. Code values identify the failure without exposing customer data.","properties":{"code":{"type":"string"},"schemaVersion":{"type":"integer","enum":[1]}},"required":["code","schemaVersion"],"additionalProperties":false},"ProcessingSession":{"type":"object","properties":{"audience":{"type":"string","enum":["isecure-processing-gpgtest-v1"]},"expiresAtEpochSeconds":{"type":"integer","description":"UTC expiry as Unix seconds."},"processingSession":{"type":"string","readOnly":true,"description":"Secret opaque credential. Use only in the Authorization header with the Processing prefix."},"schemaVersion":{"type":"integer","enum":[1]},"tokenType":{"type":"string","enum":["Processing"]}},"required":["audience","expiresAtEpochSeconds","processingSession","schemaVersion","tokenType"],"additionalProperties":false}}},"externalDocs":{"description":"Official TypeScript SDK","url":"https://github.com/isecurefi/isecure-ts-client"},"x-isecure-source":{"revision":"e24fc78ffd2c6c3cb564433b910a27da930dfd41","sha256":"5b6fa8753178e8f66fcb1bc9b9bae52d1cff591dab655276e673019cc8223057","deployment":"processing-2fb9a78a9ef95b7405a4537d","verifiedAt":"2026-09-20"},"x-tagGroups":[{"name":"Getting started","tags":["Session"]},{"name":"Bank Simulator API","tags":["File references","Branches","Capabilities","Checkpoints","Business time","Events","Runs","Scenarios","Workspaces and accounts"]},{"name":"Notifications","tags":["Notifications"]}]}