[{"data":1,"prerenderedAt":763},["ShallowReactive",2],{"navigation_docs":3,"-docs-testing-and-staging-simulator":352,"-docs-testing-and-staging-simulator-surround":758},[4,22,35,60,81,137,223,254,282,306,327],{"title":5,"path":6,"stem":7,"children":8,"page":21},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[9,13,17],{"title":10,"path":11,"stem":12},"Overview","\u002Fdocs\u002Fgetting-started\u002Foverview","docs\u002F1.getting-started\u002F1.overview",{"title":14,"path":15,"stem":16},"Integration checklist","\u002Fdocs\u002Fgetting-started\u002Fintegration-checklist","docs\u002F1.getting-started\u002F2.integration-checklist",{"title":18,"path":19,"stem":20},"Environments and base URLs","\u002Fdocs\u002Fgetting-started\u002Fenvironments-and-base-urls","docs\u002F1.getting-started\u002F3.environments-and-base-urls",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"Troubleshooting","\u002Fdocs\u002Ftroubleshooting","docs\u002F10.troubleshooting",[27,31],{"title":28,"path":29,"stem":30},"Common errors","\u002Fdocs\u002Ftroubleshooting\u002Fcommon-errors","docs\u002F10.troubleshooting\u002F1.common-errors",{"title":32,"path":33,"stem":34},"Support escalation","\u002Fdocs\u002Ftroubleshooting\u002Fsupport-escalation","docs\u002F10.troubleshooting\u002F2.support-escalation",{"title":36,"path":37,"stem":38,"children":39,"page":21},"Polyflight","\u002Fdocs\u002Fpolyflight","docs\u002F11.polyflight",[40,44,48,52,56],{"title":41,"path":42,"stem":43},"Polyflight overview and launch","\u002Fdocs\u002Fpolyflight\u002Foverview-and-launch","docs\u002F11.polyflight\u002F1.overview-and-launch",{"title":45,"path":46,"stem":47},"Native wallet contract","\u002Fdocs\u002Fpolyflight\u002Fnative-wallet-contract","docs\u002F11.polyflight\u002F2.native-wallet-contract",{"title":49,"path":50,"stem":51},"API, events, and proof","\u002Fdocs\u002Fpolyflight\u002Fapi-events-and-proof","docs\u002F11.polyflight\u002F3.api-events-and-proof",{"title":53,"path":54,"stem":55},"Terms, statements, and settlement","\u002Fdocs\u002Fpolyflight\u002Fterms-statements-and-settlement","docs\u002F11.polyflight\u002F4.terms-statements-and-settlement",{"title":57,"path":58,"stem":59},"Operations, reconciliation, and rollback","\u002Fdocs\u002Fpolyflight\u002Foperations-reconciliation-and-rollback","docs\u002F11.polyflight\u002F5.operations-reconciliation-and-rollback",{"title":61,"path":62,"stem":63,"children":64,"page":21},"Integration Flow","\u002Fdocs\u002Fintegration-flow","docs\u002F2.integration-flow",[65,69,73,77],{"title":66,"path":67,"stem":68},"Architecture","\u002Fdocs\u002Fintegration-flow\u002Farchitecture","docs\u002F2.integration-flow\u002F1.architecture",{"title":70,"path":71,"stem":72},"Launch session model","\u002Fdocs\u002Fintegration-flow\u002Flaunch-session-model","docs\u002F2.integration-flow\u002F2.launch-session-model",{"title":74,"path":75,"stem":76},"Order and wallet saga","\u002Fdocs\u002Fintegration-flow\u002Forder-and-wallet-saga","docs\u002F2.integration-flow\u002F3.order-and-wallet-saga",{"title":78,"path":79,"stem":80},"FX fees and rounding","\u002Fdocs\u002Fintegration-flow\u002Ffx-fees-and-rounding","docs\u002F2.integration-flow\u002F4.fx-fees-and-rounding",{"title":82,"path":83,"stem":84,"children":85,"page":21},"Dashboard","\u002Fdocs\u002Fdashboard","docs\u002F3.dashboard",[86,89,93,97,101,105,109,113,117,121,125,129,133],{"title":10,"path":87,"stem":88},"\u002Fdocs\u002Fdashboard\u002Foverview","docs\u002F3.dashboard\u002F1.overview",{"title":90,"path":91,"stem":92},"Webhook Deliveries","\u002Fdocs\u002Fdashboard\u002Fwebhook-deliveries","docs\u002F3.dashboard\u002F10.webhook-deliveries",{"title":94,"path":95,"stem":96},"Staffs","\u002Fdocs\u002Fdashboard\u002Fstaffs","docs\u002F3.dashboard\u002F11.staffs",{"title":98,"path":99,"stem":100},"Simulator","\u002Fdocs\u002Fdashboard\u002Fsimulator","docs\u002F3.dashboard\u002F12.simulator",{"title":102,"path":103,"stem":104},"API Playground","\u002Fdocs\u002Fdashboard\u002Fapi-playground","docs\u002F3.dashboard\u002F13.api-playground",{"title":106,"path":107,"stem":108},"API keys","\u002Fdocs\u002Fdashboard\u002Fapi-keys","docs\u002F3.dashboard\u002F2.api-keys",{"title":110,"path":111,"stem":112},"Wallet adapter settings","\u002Fdocs\u002Fdashboard\u002Fwallet-adapter-settings","docs\u002F3.dashboard\u002F3.wallet-adapter-settings",{"title":114,"path":115,"stem":116},"Webhook endpoints","\u002Fdocs\u002Fdashboard\u002Fwebhook-endpoints","docs\u002F3.dashboard\u002F4.webhook-endpoints",{"title":118,"path":119,"stem":120},"Markets and visibility","\u002Fdocs\u002Fdashboard\u002Fmarket-visibility","docs\u002F3.dashboard\u002F5.market-visibility",{"title":122,"path":123,"stem":124},"Users","\u002Fdocs\u002Fdashboard\u002Fusers","docs\u002F3.dashboard\u002F6.users",{"title":126,"path":127,"stem":128},"Trades","\u002Fdocs\u002Fdashboard\u002Ftrades","docs\u002F3.dashboard\u002F7.trades",{"title":130,"path":131,"stem":132},"Resolutions","\u002Fdocs\u002Fdashboard\u002Fresolutions","docs\u002F3.dashboard\u002F8.resolutions",{"title":134,"path":135,"stem":136},"Balance Operations","\u002Fdocs\u002Fdashboard\u002Fbalance-operations","docs\u002F3.dashboard\u002F9.balance-operations",{"title":138,"path":139,"stem":140,"children":141,"page":21},"Operator Api","\u002Fdocs\u002Foperator-api","docs\u002F4.operator-api",[142,146,149,153,156,160,163,167,171,175,179,183,186,190,194,198,202,206,209,213,216,219],{"title":143,"path":144,"stem":145},"Authentication","\u002Fdocs\u002Foperator-api\u002Fauthentication","docs\u002F4.operator-api\u002F1.authentication",{"title":114,"path":147,"stem":148},"\u002Fdocs\u002Foperator-api\u002Fwebhook-endpoints","docs\u002F4.operator-api\u002F10.webhook-endpoints",{"title":150,"path":151,"stem":152},"Webhook deliveries","\u002Fdocs\u002Foperator-api\u002Fwebhook-deliveries","docs\u002F4.operator-api\u002F11.webhook-deliveries",{"title":98,"path":154,"stem":155},"\u002Fdocs\u002Foperator-api\u002Fsimulator","docs\u002F4.operator-api\u002F12.simulator",{"title":157,"path":158,"stem":159},"Wallet adapter","\u002Fdocs\u002Foperator-api\u002Fwallet-adapter","docs\u002F4.operator-api\u002F13.wallet-adapter",{"title":94,"path":161,"stem":162},"\u002Fdocs\u002Foperator-api\u002Fstaffs","docs\u002F4.operator-api\u002F14.staffs",{"title":164,"path":165,"stem":166},"Error codes","\u002Fdocs\u002Foperator-api\u002Ferror-codes","docs\u002F4.operator-api\u002F15.error-codes",{"title":168,"path":169,"stem":170},"Redemptions","\u002Fdocs\u002Foperator-api\u002Fredemptions","docs\u002F4.operator-api\u002F16.redemptions",{"title":172,"path":173,"stem":174},"Polyflight overview","\u002Fdocs\u002Foperator-api\u002Fpolyflight","docs\u002F4.operator-api\u002F17.polyflight",{"title":176,"path":177,"stem":178},"Polyflight flights","\u002Fdocs\u002Foperator-api\u002Fpolyflight-flights","docs\u002F4.operator-api\u002F18.polyflight-flights",{"title":180,"path":181,"stem":182},"Polyflight tickets","\u002Fdocs\u002Foperator-api\u002Fpolyflight-tickets","docs\u002F4.operator-api\u002F19.polyflight-tickets",{"title":106,"path":184,"stem":185},"\u002Fdocs\u002Foperator-api\u002Fapi-keys","docs\u002F4.operator-api\u002F2.api-keys",{"title":187,"path":188,"stem":189},"Polyflight balance operations","\u002Fdocs\u002Foperator-api\u002Fpolyflight-balance-operations","docs\u002F4.operator-api\u002F20.polyflight-balance-operations",{"title":191,"path":192,"stem":193},"Polyflight terms","\u002Fdocs\u002Foperator-api\u002Fpolyflight-terms","docs\u002F4.operator-api\u002F21.polyflight-terms",{"title":195,"path":196,"stem":197},"Polyflight settlement reports","\u002Fdocs\u002Foperator-api\u002Fpolyflight-settlement-reports","docs\u002F4.operator-api\u002F22.polyflight-settlement-reports",{"title":199,"path":200,"stem":201},"Session","\u002Fdocs\u002Foperator-api\u002Fsession","docs\u002F4.operator-api\u002F3.session",{"title":203,"path":204,"stem":205},"Launch","\u002Fdocs\u002Foperator-api\u002Flaunch","docs\u002F4.operator-api\u002F4.launch",{"title":122,"path":207,"stem":208},"\u002Fdocs\u002Foperator-api\u002Fusers","docs\u002F4.operator-api\u002F5.users",{"title":210,"path":211,"stem":212},"Markets","\u002Fdocs\u002Foperator-api\u002Fmarkets","docs\u002F4.operator-api\u002F6.markets",{"title":126,"path":214,"stem":215},"\u002Fdocs\u002Foperator-api\u002Ftrades","docs\u002F4.operator-api\u002F7.trades",{"title":130,"path":217,"stem":218},"\u002Fdocs\u002Foperator-api\u002Fresolutions","docs\u002F4.operator-api\u002F8.resolutions",{"title":220,"path":221,"stem":222},"Balance operations","\u002Fdocs\u002Foperator-api\u002Fbalance-operations","docs\u002F4.operator-api\u002F9.balance-operations",{"title":224,"path":225,"stem":226,"children":227,"page":21},"Wallet Adapter","\u002Fdocs\u002Fwallet-adapter","docs\u002F5.wallet-adapter",[228,231,234,238,242,246,250],{"title":10,"path":229,"stem":230},"\u002Fdocs\u002Fwallet-adapter\u002Foverview","docs\u002F5.wallet-adapter\u002F1.overview",{"title":143,"path":232,"stem":233},"\u002Fdocs\u002Fwallet-adapter\u002Fauthentication","docs\u002F5.wallet-adapter\u002F2.authentication",{"title":235,"path":236,"stem":237},"Balance","\u002Fdocs\u002Fwallet-adapter\u002Fbalance","docs\u002F5.wallet-adapter\u002F3.balance",{"title":239,"path":240,"stem":241},"Debit","\u002Fdocs\u002Fwallet-adapter\u002Fdebit","docs\u002F5.wallet-adapter\u002F4.debit",{"title":243,"path":244,"stem":245},"Credit","\u002Fdocs\u002Fwallet-adapter\u002Fcredit","docs\u002F5.wallet-adapter\u002F5.credit",{"title":247,"path":248,"stem":249},"Debit reversal","\u002Fdocs\u002Fwallet-adapter\u002Fdebit-reversal","docs\u002F5.wallet-adapter\u002F6.debit-reversal",{"title":251,"path":252,"stem":253},"Idempotency","\u002Fdocs\u002Fwallet-adapter\u002Fidempotency","docs\u002F5.wallet-adapter\u002F7.idempotency",{"title":255,"path":256,"stem":257,"children":258,"page":21},"Webhooks","\u002Fdocs\u002Fwebhooks","docs\u002F6.webhooks",[259,262,266,270,274,278],{"title":10,"path":260,"stem":261},"\u002Fdocs\u002Fwebhooks\u002Foverview","docs\u002F6.webhooks\u002F1.overview",{"title":263,"path":264,"stem":265},"Signatures","\u002Fdocs\u002Fwebhooks\u002Fsignatures","docs\u002F6.webhooks\u002F2.signatures",{"title":267,"path":268,"stem":269},"Event envelope","\u002Fdocs\u002Fwebhooks\u002Fevent-envelope","docs\u002F6.webhooks\u002F3.event-envelope",{"title":271,"path":272,"stem":273},"Event types","\u002Fdocs\u002Fwebhooks\u002Fevent-types","docs\u002F6.webhooks\u002F4.event-types",{"title":275,"path":276,"stem":277},"Retry and replay","\u002Fdocs\u002Fwebhooks\u002Fretry-and-replay","docs\u002F6.webhooks\u002F5.retry-and-replay",{"title":279,"path":280,"stem":281},"Receiver examples","\u002Fdocs\u002Fwebhooks\u002Freceiver-examples","docs\u002F6.webhooks\u002F6.receiver-examples",{"title":283,"path":284,"stem":285,"children":286,"page":21},"Testing And Staging","\u002Fdocs\u002Ftesting-and-staging","docs\u002F7.testing-and-staging",[287,291,294,298,302],{"title":288,"path":289,"stem":290},"Staging overview","\u002Fdocs\u002Ftesting-and-staging\u002Fstaging-overview","docs\u002F7.testing-and-staging\u002F1.staging-overview",{"title":98,"path":292,"stem":293},"\u002Fdocs\u002Ftesting-and-staging\u002Fsimulator","docs\u002F7.testing-and-staging\u002F2.simulator",{"title":295,"path":296,"stem":297},"Wallet failure drills","\u002Fdocs\u002Ftesting-and-staging\u002Fwallet-failure-drills","docs\u002F7.testing-and-staging\u002F3.wallet-failure-drills",{"title":299,"path":300,"stem":301},"Webhook drills","\u002Fdocs\u002Ftesting-and-staging\u002Fwebhook-drills","docs\u002F7.testing-and-staging\u002F4.webhook-drills",{"title":303,"path":304,"stem":305},"Production cutover rehearsal","\u002Fdocs\u002Ftesting-and-staging\u002Fproduction-cutover-rehearsal","docs\u002F7.testing-and-staging\u002F5.production-cutover-rehearsal",{"title":307,"path":308,"stem":309,"children":310,"page":21},"Production Readiness","\u002Fdocs\u002Fproduction-readiness","docs\u002F8.production-readiness",[311,315,319,323],{"title":312,"path":313,"stem":314},"Checklist","\u002Fdocs\u002Fproduction-readiness\u002Fchecklist","docs\u002F8.production-readiness\u002F1.checklist",{"title":316,"path":317,"stem":318},"Operational runbook","\u002Fdocs\u002Fproduction-readiness\u002Foperational-runbook","docs\u002F8.production-readiness\u002F2.operational-runbook",{"title":320,"path":321,"stem":322},"Security","\u002Fdocs\u002Fproduction-readiness\u002Fsecurity","docs\u002F8.production-readiness\u002F3.security",{"title":324,"path":325,"stem":326},"Rollback","\u002Fdocs\u002Fproduction-readiness\u002Frollback","docs\u002F8.production-readiness\u002F4.rollback",{"title":328,"path":329,"stem":330,"children":331,"page":21},"Reference","\u002Fdocs\u002Freference","docs\u002F9.reference",[332,336,340,344,348],{"title":333,"path":334,"stem":335},"Statuses","\u002Fdocs\u002Freference\u002Fstatuses","docs\u002F9.reference\u002F1.statuses",{"title":337,"path":338,"stem":339},"Scopes","\u002Fdocs\u002Freference\u002Fscopes","docs\u002F9.reference\u002F2.scopes",{"title":341,"path":342,"stem":343},"Units and money","\u002Fdocs\u002Freference\u002Funits-and-money","docs\u002F9.reference\u002F3.units-and-money",{"title":345,"path":346,"stem":347},"Changelog","\u002Fdocs\u002Freference\u002Fchangelog","docs\u002F9.reference\u002F4.changelog",{"title":349,"path":350,"stem":351},"Virtual AMM","\u002Fdocs\u002Freference\u002Fvirtual-amm","docs\u002F9.reference\u002F5.virtual-amm",{"id":353,"title":98,"body":354,"description":751,"extension":752,"links":753,"meta":754,"navigation":755,"path":292,"seo":756,"stem":293,"__hash__":757},"docs\u002Fdocs\u002F7.testing-and-staging\u002F2.simulator.md",{"type":355,"value":356,"toc":742},"minimark",[357,361,365,370,373,406,410,452,461,465,499,503,601,605,691,695,710,714,738],[358,359,98],"h1",{"id":360},"simulator",[362,363,364],"p",{},"Simulator tools let operators test launch, trade, redemption, webhook, and wallet-adjustment flows in staging without touching the real operator wallet for simulator-tagged users.",[366,367,369],"h2",{"id":368},"when-simulator-works-now","When simulator works now",[362,371,372],{},"Simulator is staging\u002Flocal only and user-scoped.",[374,375,376,388,394,397,400],"ul",{},[377,378,379,380,384,385],"li",{},"normal staging users still use the operator's real ",[381,382,383],"code",{},"balance_adapter_type",", usually ",[381,386,387],{},"rest_v1",[377,389,390,391],{},"dedicated simulator-user APIs set and preserve ",[381,392,393],{},"metadata.simulator = true",[377,395,396],{},"launch metadata cannot set, clear, or override simulator classification",[377,398,399],{},"simulator endpoints operate only on server-classified simulator users",[377,401,402,403],{},"production returns ",[381,404,405],{},"404 SIMULATOR_DISABLED",[366,407,409],{"id":408},"main-endpoints","Main endpoints",[374,411,412,417,422,427,432,437,442,447],{},[377,413,414],{},[381,415,416],{},"GET \u002Fapi\u002Foperator\u002Fsimulator\u002Fusers",[377,418,419],{},[381,420,421],{},"POST \u002Fapi\u002Foperator\u002Fsimulator\u002Fusers",[377,423,424],{},[381,425,426],{},"GET \u002Fapi\u002Foperator\u002Fsimulator\u002Fusers\u002F{id}",[377,428,429],{},[381,430,431],{},"PATCH \u002Fapi\u002Foperator\u002Fsimulator\u002Fusers\u002F{id}",[377,433,434],{},[381,435,436],{},"POST \u002Fapi\u002Foperator\u002Fsimulator\u002Fusers\u002F{id}\u002Foperations",[377,438,439],{},[381,440,441],{},"GET \u002Fapi\u002Foperator\u002Fsimulator\u002Fwallets\u002F{externalUserId}",[377,443,444],{},[381,445,446],{},"PUT \u002Fapi\u002Foperator\u002Fsimulator\u002Fwallets\u002F{externalUserId}",[377,448,449],{},[381,450,451],{},"POST \u002Fapi\u002Foperator\u002Fsimulator\u002Foperations",[362,453,454,455,460],{},"See full contract at ",[456,457,458],"a",{"href":154},[381,459,154],{},".",[366,462,464],{"id":463},"recommended-flow","Recommended flow",[466,467,468,476,479,490,493,496],"ol",{},[377,469,470,471,475],{},"Create the simulator user through ",[472,473,474],"strong",{},"Simulator Users"," or the dedicated simulator-user API; it forces the server-side classification.",[377,477,478],{},"Set the starting simulator wallet balance.",[377,480,481,482,485,486,489],{},"Launch the same ",[381,483,484],{},"external_user_id","; do not send ",[381,487,488],{},"metadata.simulator"," as a routing control.",[377,491,492],{},"Choose Opinion or enabled Polyflight and follow the real launch URL.",[377,494,495],{},"Confirm product, wallet-operation, ticket\u002Ftrade, and webhook evidence.",[377,497,498],{},"Run the required payout\u002Frefund\u002Fcompensation or Opinion sell\u002Fredemption flow.",[366,500,502],{"id":501},"example-wallet-setup","Example wallet setup",[504,505,510],"pre",{"className":506,"code":507,"language":508,"meta":509,"style":509},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X PUT \"$BASE_URL\u002Fapi\u002Foperator\u002Fsimulator\u002Fwallets\u002Ftest-user-001\" \\\n  -H \"Authorization: Bearer ***\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"balance_minor\": 500000\n  }'\n","bash","",[381,511,512,545,560,574,586,592],{"__ignoreMap":509},[513,514,517,521,525,528,532,536,539,542],"span",{"class":515,"line":516},"line",1,[513,518,520],{"class":519},"sBMFI","curl",[513,522,524],{"class":523},"sfazB"," -X",[513,526,527],{"class":523}," PUT",[513,529,531],{"class":530},"sMK4o"," \"",[513,533,535],{"class":534},"sTEyZ","$BASE_URL",[513,537,538],{"class":523},"\u002Fapi\u002Foperator\u002Fsimulator\u002Fwallets\u002Ftest-user-001",[513,540,541],{"class":530},"\"",[513,543,544],{"class":534}," \\\n",[513,546,548,551,553,556,558],{"class":515,"line":547},2,[513,549,550],{"class":523},"  -H",[513,552,531],{"class":530},[513,554,555],{"class":523},"Authorization: Bearer ***",[513,557,541],{"class":530},[513,559,544],{"class":534},[513,561,563,565,567,570,572],{"class":515,"line":562},3,[513,564,550],{"class":523},[513,566,531],{"class":530},[513,568,569],{"class":523},"Content-Type: application\u002Fjson",[513,571,541],{"class":530},[513,573,544],{"class":534},[513,575,577,580,583],{"class":515,"line":576},4,[513,578,579],{"class":523},"  -d",[513,581,582],{"class":530}," '",[513,584,585],{"class":523},"{\n",[513,587,589],{"class":515,"line":588},5,[513,590,591],{"class":523},"    \"balance_minor\": 500000\n",[513,593,595,598],{"class":515,"line":594},6,[513,596,597],{"class":523},"  }",[513,599,600],{"class":530},"'\n",[366,602,604],{"id":603},"example-simulator-mutation","Example simulator mutation",[504,606,608],{"className":506,"code":607,"language":508,"meta":509,"style":509},"curl -X POST \"$BASE_URL\u002Fapi\u002Foperator\u002Fsimulator\u002Foperations\" \\\n  -H \"Authorization: Bearer ***\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"external_user_id\": \"test-user-001\",\n    \"direction\": \"debit\",\n    \"amount_minor\": 10000,\n    \"idempotency_key\": \"simulator:drill:001\"\n  }'\n",[381,609,610,630,642,654,662,667,672,678,684],{"__ignoreMap":509},[513,611,612,614,616,619,621,623,626,628],{"class":515,"line":516},[513,613,520],{"class":519},[513,615,524],{"class":523},[513,617,618],{"class":523}," POST",[513,620,531],{"class":530},[513,622,535],{"class":534},[513,624,625],{"class":523},"\u002Fapi\u002Foperator\u002Fsimulator\u002Foperations",[513,627,541],{"class":530},[513,629,544],{"class":534},[513,631,632,634,636,638,640],{"class":515,"line":547},[513,633,550],{"class":523},[513,635,531],{"class":530},[513,637,555],{"class":523},[513,639,541],{"class":530},[513,641,544],{"class":534},[513,643,644,646,648,650,652],{"class":515,"line":562},[513,645,550],{"class":523},[513,647,531],{"class":530},[513,649,569],{"class":523},[513,651,541],{"class":530},[513,653,544],{"class":534},[513,655,656,658,660],{"class":515,"line":576},[513,657,579],{"class":523},[513,659,582],{"class":530},[513,661,585],{"class":523},[513,663,664],{"class":515,"line":588},[513,665,666],{"class":523},"    \"external_user_id\": \"test-user-001\",\n",[513,668,669],{"class":515,"line":594},[513,670,671],{"class":523},"    \"direction\": \"debit\",\n",[513,673,675],{"class":515,"line":674},7,[513,676,677],{"class":523},"    \"amount_minor\": 10000,\n",[513,679,681],{"class":515,"line":680},8,[513,682,683],{"class":523},"    \"idempotency_key\": \"simulator:drill:001\"\n",[513,685,687,689],{"class":515,"line":686},9,[513,688,597],{"class":523},[513,690,600],{"class":530},[366,692,694],{"id":693},"what-to-confirm","What to confirm",[374,696,697,700,707],{},[377,698,699],{},"idempotent repeat with same key returns same operation",[377,701,702,703],{},"resulting statuses match docs in ",[456,704,705],{"href":334},[381,706,334],{},[377,708,709],{},"webhook events arrive for completed business actions",[366,711,713],{"id":712},"safe-usage-rules","Safe usage rules",[374,715,716,719,725,732,735],{},[377,717,718],{},"use dedicated staging users only",[377,720,721,722,724],{},"do not switch the whole operator off ",[381,723,387],{}," just to use simulator drills",[377,726,727,728,731],{},"keep deterministic ",[381,729,730],{},"idempotency_key"," per drill step",[377,733,734],{},"reset wallet state between drills when needed",[377,736,737],{},"do not use simulator evidence as proof of real operator wallet readiness",[739,740,741],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":509,"searchDepth":547,"depth":547,"links":743},[744,745,746,747,748,749,750],{"id":368,"depth":547,"text":369},{"id":408,"depth":547,"text":409},{"id":463,"depth":547,"text":464},{"id":501,"depth":547,"text":502},{"id":603,"depth":547,"text":604},{"id":693,"depth":547,"text":694},{"id":712,"depth":547,"text":713},"Use simulator tools to exercise wallet and webhook flows safely.","md",null,{},true,{"title":98,"description":751},"9J9OwCL7WSGWADo0lSrtNpjV9allLkmm5QAGpVP4FWs",[759,761],{"title":288,"path":289,"stem":290,"description":760,"children":-1},"Use staging to validate the same integration contract before production.",{"title":295,"path":296,"stem":297,"description":762,"children":-1},"Required wallet mutation failure drills before production.",1789570133663]