[{"data":1,"prerenderedAt":671},["ShallowReactive",2],{"navigation_docs":3,"-docs-dashboard-api-playground":352,"-docs-dashboard-api-playground-surround":666},[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":102,"body":354,"description":659,"extension":660,"links":661,"meta":662,"navigation":663,"path":103,"seo":664,"stem":104,"__hash__":665},"docs\u002Fdocs\u002F3.dashboard\u002F13.api-playground.md",{"type":355,"value":356,"toc":649},"minimark",[357,361,365,370,377,410,422,429,433,490,493,497,500,542,549,552,556,559,582,585,589,599,620,626,630,636,646],[358,359,102],"h1",{"id":360},"api-playground",[362,363,364],"p",{},"The API Playground is a dashboard-only troubleshooting workspace for the documented Operator API. It sends requests through the dashboard server, which injects the active staff-session bearer token. The browser never receives that token.",[366,367,369],"h2",{"id":368},"navigation","Navigation",[362,371,372,373,376],{},"The ",[374,375,102],"strong",{}," sidebar group contains scoped submenus:",[378,379,380,383,385,387,389,391,393,395,398,400,402,404,407],"ul",{},[381,382,199],"li",{},[381,384,203],{},[381,386,122],{},[381,388,210],{},[381,390,126],{},[381,392,130],{},[381,394,134],{},[381,396,397],{},"API Keys",[381,399,255],{},[381,401,224],{},[381,403,94],{},[381,405,406],{},"Polyflight (overview, flights, tickets, operations, terms, statements, exports, and payment history according to scope)",[381,408,409],{},"Simulator, staging only",[362,411,412,413,417,418,421],{},"A submenu is hidden when none of its requests are available to the current staff scopes. An individual request can require more scopes than its submenu; Portfolio HTML, for example, requires both ",[414,415,416],"code",{},"users:read"," and ",[414,419,420],{},"launch:write",".",[362,423,424,425,428],{},"Open the Polyflight catalogue directly at ",[414,426,427],{},"\u002Fapi-playground\u002Fpolyflight",". Entries are generated from the same allowlisted operator routes; use them instead of guessing a detail or export path.",[366,430,432],{"id":431},"request-workflow","Request workflow",[434,435,436,439,445,452,465,480,483],"ol",{},[381,437,438],{},"Select a submenu and request.",[381,440,441,442,421],{},"Fill required path params and optional query params under ",[374,443,444],{},"Params",[381,446,447,448,451],{},"Review inherited auth type, operator, and required scopes under ",[374,449,450],{},"Authorization",". Authorization is read-only.",[381,453,454,455,417,458,461,462,421],{},"Adjust only the safe ",[414,456,457],{},"Accept",[414,459,460],{},"Content-Type"," headers under ",[374,463,464],{},"Headers",[381,466,467,468,471,472,475,476,479],{},"Edit raw JSON under ",[374,469,470],{},"Body",", then use ",[374,473,474],{},"Format JSON"," or ",[374,477,478],{},"Reset example"," when needed.",[381,481,482],{},"Review the fixed environment and final URL.",[381,484,485,486,489],{},"Select ",[374,487,488],{},"Send",". Write, destructive, and external-mutation requests require confirmation.",[362,491,492],{},"The base host and HTTP method come from the source-backed request catalog and cannot be changed. Unsaved request edits are not stored.",[366,494,496],{"id":495},"response-workspace","Response workspace",[362,498,499],{},"Every response shows:",[378,501,502,505,508,511,514,527,533],{},[381,503,504],{},"HTTP status",[381,506,507],{},"elapsed time",[381,509,510],{},"displayed response size",[381,512,513],{},"content type",[381,515,516,519,520,523,524,526],{},[374,517,518],{},"Pretty",", ",[374,521,522],{},"Raw",", and ",[374,525,464],{}," views",[381,528,529,532],{},[374,530,531],{},"Preview"," only for the Portfolio HTML response",[381,534,535,417,538,541],{},[374,536,537],{},"Copy response",[374,539,540],{},"Copy cURL"," actions",[362,543,544,545,548],{},"Copied cURL uses ",[414,546,547],{},"Authorization: Bearer ${OPERATOR_TOKEN}",". It never contains the active staff token.",[362,550,551],{},"Response bodies are kept in memory only and clear when the request changes. API-key creation and staff onboarding\u002Freset responses show a copy-now warning because one-time values are not persisted by the Playground. Bodies over 2 MiB are truncated with an explicit warning.",[366,553,555],{"id":554},"request-safety","Request safety",[362,557,558],{},"Read requests send directly. Confirmations summarize method, final path, environment, and side effect for:",[378,560,561,564,567,570,573,576,579],{},[381,562,563],{},"launch and Portfolio HTML generation",[381,565,566],{},"API-key creation and revocation",[381,568,569],{},"market visibility changes",[381,571,572],{},"webhook creation, update, deletion, and replay",[381,574,575],{},"Wallet Adapter update and tests",[381,577,578],{},"staff creation, update, and password reset",[381,580,581],{},"simulator mutations",[362,583,584],{},"Cancel stops the in-flight browser request. The dashboard server also enforces a 30-second upstream timeout, a 256 KiB request-body limit, an allowlisted route catalog, safe request headers, current scopes, staff-only restrictions, and staging-only restrictions. Beacon remains the final authorization authority.",[366,586,588],{"id":587},"html-preview-isolation","HTML preview isolation",[362,590,591,592,594,595,598],{},"Portfolio ",[374,593,531],{}," uses ",[414,596,597],{},"iframe srcdoc"," with:",[378,600,601,606,612,617],{},[381,602,603],{},[414,604,605],{},"sandbox=\"allow-scripts allow-popups allow-popups-to-escape-sandbox\"",[381,607,608,609],{},"no ",[414,610,611],{},"allow-same-origin",[381,613,614],{},[414,615,616],{},"referrerpolicy=\"no-referrer\"",[381,618,619],{},"a preview-only CSP that blocks network subresources by default",[362,621,622,623,625],{},"The frame cannot access dashboard cookies or parent DOM. Open\u002FResolved\u002FTrade History scripts can run inside the isolated document, and Trade links can open normal new tabs. ",[374,624,522],{}," remains the exact upstream body.",[366,627,629],{"id":628},"intentionally-unavailable-actions","Intentionally unavailable actions",[362,631,632,633,635],{},"The superseded legacy resolution-listing route is omitted in favor of ",[374,634,130],{},". Staff login, password change, and logout are also omitted because they own the dashboard session lifecycle and cannot safely run through inherited authorization.",[362,637,638,639,475,642,645],{},"Staff management requests remain available to staff sessions with ",[414,640,641],{},"staffs:read",[414,643,644],{},"staffs:write","; only the three auth-lifecycle actions are excluded.",[362,647,648],{},"The Playground is an operator troubleshooting tool. It does not make browser-side API-key integration safe; external applications must call the Operator API from their backend.",{"title":650,"searchDepth":651,"depth":651,"links":652},"",2,[653,654,655,656,657,658],{"id":368,"depth":651,"text":369},{"id":431,"depth":651,"text":432},{"id":495,"depth":651,"text":496},{"id":554,"depth":651,"text":555},{"id":587,"depth":651,"text":588},{"id":628,"depth":651,"text":629},"Run allowlisted Operator API requests from the dashboard with inherited staff-session authorization.","md",null,{},true,{"title":102,"description":659},"Y89ETV2taFG-kDTuv2d9HM4k383XjFHvF0DTewyISD8",[667,669],{"title":98,"path":99,"stem":100,"description":668,"children":-1},"Use staging-only simulator launch and wallet tools.",{"title":106,"path":107,"stem":108,"description":670,"children":-1},"Create, scope, rotate, and revoke operator API keys.",1789570129132]