[{"data":1,"prerenderedAt":612},["ShallowReactive",2],{"navigation_docs":3,"-docs-dashboard-api-playground":303,"-docs-dashboard-api-playground-surround":607},[4,22,35,56,112,174,205,233,257,278],{"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},"Integration Flow","\u002Fdocs\u002Fintegration-flow","docs\u002F2.integration-flow",[40,44,48,52],{"title":41,"path":42,"stem":43},"Architecture","\u002Fdocs\u002Fintegration-flow\u002Farchitecture","docs\u002F2.integration-flow\u002F1.architecture",{"title":45,"path":46,"stem":47},"Launch session model","\u002Fdocs\u002Fintegration-flow\u002Flaunch-session-model","docs\u002F2.integration-flow\u002F2.launch-session-model",{"title":49,"path":50,"stem":51},"Order and wallet saga","\u002Fdocs\u002Fintegration-flow\u002Forder-and-wallet-saga","docs\u002F2.integration-flow\u002F3.order-and-wallet-saga",{"title":53,"path":54,"stem":55},"FX fees and rounding","\u002Fdocs\u002Fintegration-flow\u002Ffx-fees-and-rounding","docs\u002F2.integration-flow\u002F4.fx-fees-and-rounding",{"title":57,"path":58,"stem":59,"children":60,"page":21},"Dashboard","\u002Fdocs\u002Fdashboard","docs\u002F3.dashboard",[61,64,68,72,76,80,84,88,92,96,100,104,108],{"title":10,"path":62,"stem":63},"\u002Fdocs\u002Fdashboard\u002Foverview","docs\u002F3.dashboard\u002F1.overview",{"title":65,"path":66,"stem":67},"Webhook Deliveries","\u002Fdocs\u002Fdashboard\u002Fwebhook-deliveries","docs\u002F3.dashboard\u002F10.webhook-deliveries",{"title":69,"path":70,"stem":71},"Staffs","\u002Fdocs\u002Fdashboard\u002Fstaffs","docs\u002F3.dashboard\u002F11.staffs",{"title":73,"path":74,"stem":75},"Simulator","\u002Fdocs\u002Fdashboard\u002Fsimulator","docs\u002F3.dashboard\u002F12.simulator",{"title":77,"path":78,"stem":79},"API Playground","\u002Fdocs\u002Fdashboard\u002Fapi-playground","docs\u002F3.dashboard\u002F13.api-playground",{"title":81,"path":82,"stem":83},"API keys","\u002Fdocs\u002Fdashboard\u002Fapi-keys","docs\u002F3.dashboard\u002F2.api-keys",{"title":85,"path":86,"stem":87},"Wallet adapter settings","\u002Fdocs\u002Fdashboard\u002Fwallet-adapter-settings","docs\u002F3.dashboard\u002F3.wallet-adapter-settings",{"title":89,"path":90,"stem":91},"Webhook endpoints","\u002Fdocs\u002Fdashboard\u002Fwebhook-endpoints","docs\u002F3.dashboard\u002F4.webhook-endpoints",{"title":93,"path":94,"stem":95},"Markets and visibility","\u002Fdocs\u002Fdashboard\u002Fmarket-visibility","docs\u002F3.dashboard\u002F5.market-visibility",{"title":97,"path":98,"stem":99},"Users","\u002Fdocs\u002Fdashboard\u002Fusers","docs\u002F3.dashboard\u002F6.users",{"title":101,"path":102,"stem":103},"Trades","\u002Fdocs\u002Fdashboard\u002Ftrades","docs\u002F3.dashboard\u002F7.trades",{"title":105,"path":106,"stem":107},"Resolutions","\u002Fdocs\u002Fdashboard\u002Fresolutions","docs\u002F3.dashboard\u002F8.resolutions",{"title":109,"path":110,"stem":111},"Balance Operations","\u002Fdocs\u002Fdashboard\u002Fbalance-operations","docs\u002F3.dashboard\u002F9.balance-operations",{"title":113,"path":114,"stem":115,"children":116,"page":21},"Operator Api","\u002Fdocs\u002Foperator-api","docs\u002F4.operator-api",[117,121,124,128,131,135,138,142,146,149,153,157,160,164,167,170],{"title":118,"path":119,"stem":120},"Authentication","\u002Fdocs\u002Foperator-api\u002Fauthentication","docs\u002F4.operator-api\u002F1.authentication",{"title":89,"path":122,"stem":123},"\u002Fdocs\u002Foperator-api\u002Fwebhook-endpoints","docs\u002F4.operator-api\u002F10.webhook-endpoints",{"title":125,"path":126,"stem":127},"Webhook deliveries","\u002Fdocs\u002Foperator-api\u002Fwebhook-deliveries","docs\u002F4.operator-api\u002F11.webhook-deliveries",{"title":73,"path":129,"stem":130},"\u002Fdocs\u002Foperator-api\u002Fsimulator","docs\u002F4.operator-api\u002F12.simulator",{"title":132,"path":133,"stem":134},"Wallet adapter","\u002Fdocs\u002Foperator-api\u002Fwallet-adapter","docs\u002F4.operator-api\u002F13.wallet-adapter",{"title":69,"path":136,"stem":137},"\u002Fdocs\u002Foperator-api\u002Fstaffs","docs\u002F4.operator-api\u002F14.staffs",{"title":139,"path":140,"stem":141},"Error codes","\u002Fdocs\u002Foperator-api\u002Ferror-codes","docs\u002F4.operator-api\u002F15.error-codes",{"title":143,"path":144,"stem":145},"Redemptions","\u002Fdocs\u002Foperator-api\u002Fredemptions","docs\u002F4.operator-api\u002F16.redemptions",{"title":81,"path":147,"stem":148},"\u002Fdocs\u002Foperator-api\u002Fapi-keys","docs\u002F4.operator-api\u002F2.api-keys",{"title":150,"path":151,"stem":152},"Session","\u002Fdocs\u002Foperator-api\u002Fsession","docs\u002F4.operator-api\u002F3.session",{"title":154,"path":155,"stem":156},"Launch","\u002Fdocs\u002Foperator-api\u002Flaunch","docs\u002F4.operator-api\u002F4.launch",{"title":97,"path":158,"stem":159},"\u002Fdocs\u002Foperator-api\u002Fusers","docs\u002F4.operator-api\u002F5.users",{"title":161,"path":162,"stem":163},"Markets","\u002Fdocs\u002Foperator-api\u002Fmarkets","docs\u002F4.operator-api\u002F6.markets",{"title":101,"path":165,"stem":166},"\u002Fdocs\u002Foperator-api\u002Ftrades","docs\u002F4.operator-api\u002F7.trades",{"title":105,"path":168,"stem":169},"\u002Fdocs\u002Foperator-api\u002Fresolutions","docs\u002F4.operator-api\u002F8.resolutions",{"title":171,"path":172,"stem":173},"Balance operations","\u002Fdocs\u002Foperator-api\u002Fbalance-operations","docs\u002F4.operator-api\u002F9.balance-operations",{"title":175,"path":176,"stem":177,"children":178,"page":21},"Wallet Adapter","\u002Fdocs\u002Fwallet-adapter","docs\u002F5.wallet-adapter",[179,182,185,189,193,197,201],{"title":10,"path":180,"stem":181},"\u002Fdocs\u002Fwallet-adapter\u002Foverview","docs\u002F5.wallet-adapter\u002F1.overview",{"title":118,"path":183,"stem":184},"\u002Fdocs\u002Fwallet-adapter\u002Fauthentication","docs\u002F5.wallet-adapter\u002F2.authentication",{"title":186,"path":187,"stem":188},"Balance","\u002Fdocs\u002Fwallet-adapter\u002Fbalance","docs\u002F5.wallet-adapter\u002F3.balance",{"title":190,"path":191,"stem":192},"Debit","\u002Fdocs\u002Fwallet-adapter\u002Fdebit","docs\u002F5.wallet-adapter\u002F4.debit",{"title":194,"path":195,"stem":196},"Credit","\u002Fdocs\u002Fwallet-adapter\u002Fcredit","docs\u002F5.wallet-adapter\u002F5.credit",{"title":198,"path":199,"stem":200},"Debit reversal","\u002Fdocs\u002Fwallet-adapter\u002Fdebit-reversal","docs\u002F5.wallet-adapter\u002F6.debit-reversal",{"title":202,"path":203,"stem":204},"Idempotency","\u002Fdocs\u002Fwallet-adapter\u002Fidempotency","docs\u002F5.wallet-adapter\u002F7.idempotency",{"title":206,"path":207,"stem":208,"children":209,"page":21},"Webhooks","\u002Fdocs\u002Fwebhooks","docs\u002F6.webhooks",[210,213,217,221,225,229],{"title":10,"path":211,"stem":212},"\u002Fdocs\u002Fwebhooks\u002Foverview","docs\u002F6.webhooks\u002F1.overview",{"title":214,"path":215,"stem":216},"Signatures","\u002Fdocs\u002Fwebhooks\u002Fsignatures","docs\u002F6.webhooks\u002F2.signatures",{"title":218,"path":219,"stem":220},"Event envelope","\u002Fdocs\u002Fwebhooks\u002Fevent-envelope","docs\u002F6.webhooks\u002F3.event-envelope",{"title":222,"path":223,"stem":224},"Event types","\u002Fdocs\u002Fwebhooks\u002Fevent-types","docs\u002F6.webhooks\u002F4.event-types",{"title":226,"path":227,"stem":228},"Retry and replay","\u002Fdocs\u002Fwebhooks\u002Fretry-and-replay","docs\u002F6.webhooks\u002F5.retry-and-replay",{"title":230,"path":231,"stem":232},"Receiver examples","\u002Fdocs\u002Fwebhooks\u002Freceiver-examples","docs\u002F6.webhooks\u002F6.receiver-examples",{"title":234,"path":235,"stem":236,"children":237,"page":21},"Testing And Staging","\u002Fdocs\u002Ftesting-and-staging","docs\u002F7.testing-and-staging",[238,242,245,249,253],{"title":239,"path":240,"stem":241},"Staging overview","\u002Fdocs\u002Ftesting-and-staging\u002Fstaging-overview","docs\u002F7.testing-and-staging\u002F1.staging-overview",{"title":73,"path":243,"stem":244},"\u002Fdocs\u002Ftesting-and-staging\u002Fsimulator","docs\u002F7.testing-and-staging\u002F2.simulator",{"title":246,"path":247,"stem":248},"Wallet failure drills","\u002Fdocs\u002Ftesting-and-staging\u002Fwallet-failure-drills","docs\u002F7.testing-and-staging\u002F3.wallet-failure-drills",{"title":250,"path":251,"stem":252},"Webhook drills","\u002Fdocs\u002Ftesting-and-staging\u002Fwebhook-drills","docs\u002F7.testing-and-staging\u002F4.webhook-drills",{"title":254,"path":255,"stem":256},"Production cutover rehearsal","\u002Fdocs\u002Ftesting-and-staging\u002Fproduction-cutover-rehearsal","docs\u002F7.testing-and-staging\u002F5.production-cutover-rehearsal",{"title":258,"path":259,"stem":260,"children":261,"page":21},"Production Readiness","\u002Fdocs\u002Fproduction-readiness","docs\u002F8.production-readiness",[262,266,270,274],{"title":263,"path":264,"stem":265},"Checklist","\u002Fdocs\u002Fproduction-readiness\u002Fchecklist","docs\u002F8.production-readiness\u002F1.checklist",{"title":267,"path":268,"stem":269},"Operational runbook","\u002Fdocs\u002Fproduction-readiness\u002Foperational-runbook","docs\u002F8.production-readiness\u002F2.operational-runbook",{"title":271,"path":272,"stem":273},"Security","\u002Fdocs\u002Fproduction-readiness\u002Fsecurity","docs\u002F8.production-readiness\u002F3.security",{"title":275,"path":276,"stem":277},"Rollback","\u002Fdocs\u002Fproduction-readiness\u002Frollback","docs\u002F8.production-readiness\u002F4.rollback",{"title":279,"path":280,"stem":281,"children":282,"page":21},"Reference","\u002Fdocs\u002Freference","docs\u002F9.reference",[283,287,291,295,299],{"title":284,"path":285,"stem":286},"Statuses","\u002Fdocs\u002Freference\u002Fstatuses","docs\u002F9.reference\u002F1.statuses",{"title":288,"path":289,"stem":290},"Scopes","\u002Fdocs\u002Freference\u002Fscopes","docs\u002F9.reference\u002F2.scopes",{"title":292,"path":293,"stem":294},"Units and money","\u002Fdocs\u002Freference\u002Funits-and-money","docs\u002F9.reference\u002F3.units-and-money",{"title":296,"path":297,"stem":298},"Changelog","\u002Fdocs\u002Freference\u002Fchangelog","docs\u002F9.reference\u002F4.changelog",{"title":300,"path":301,"stem":302},"Virtual AMM","\u002Fdocs\u002Freference\u002Fvirtual-amm","docs\u002F9.reference\u002F5.virtual-amm",{"id":304,"title":77,"body":305,"description":600,"extension":601,"links":602,"meta":603,"navigation":604,"path":78,"seo":605,"stem":79,"__hash__":606},"docs\u002Fdocs\u002F3.dashboard\u002F13.api-playground.md",{"type":306,"value":307,"toc":590},"minimark",[308,312,316,321,328,358,370,374,431,434,438,441,483,490,493,497,500,523,526,530,540,561,567,571,577,587],[309,310,77],"h1",{"id":311},"api-playground",[313,314,315],"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.",[317,318,320],"h2",{"id":319},"navigation","Navigation",[313,322,323,324,327],{},"The ",[325,326,77],"strong",{}," sidebar group contains scoped submenus:",[329,330,331,334,336,338,340,342,344,346,349,351,353,355],"ul",{},[332,333,150],"li",{},[332,335,154],{},[332,337,97],{},[332,339,161],{},[332,341,101],{},[332,343,105],{},[332,345,109],{},[332,347,348],{},"API Keys",[332,350,206],{},[332,352,175],{},[332,354,69],{},[332,356,357],{},"Simulator, staging only",[313,359,360,361,365,366,369],{},"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 ",[362,363,364],"code",{},"users:read"," and ",[362,367,368],{},"launch:write",".",[317,371,373],{"id":372},"request-workflow","Request workflow",[375,376,377,380,386,393,406,421,424],"ol",{},[332,378,379],{},"Select a submenu and request.",[332,381,382,383,369],{},"Fill required path params and optional query params under ",[325,384,385],{},"Params",[332,387,388,389,392],{},"Review inherited auth type, operator, and required scopes under ",[325,390,391],{},"Authorization",". Authorization is read-only.",[332,394,395,396,365,399,402,403,369],{},"Adjust only the safe ",[362,397,398],{},"Accept",[362,400,401],{},"Content-Type"," headers under ",[325,404,405],{},"Headers",[332,407,408,409,412,413,416,417,420],{},"Edit raw JSON under ",[325,410,411],{},"Body",", then use ",[325,414,415],{},"Format JSON"," or ",[325,418,419],{},"Reset example"," when needed.",[332,422,423],{},"Review the fixed environment and final URL.",[332,425,426,427,430],{},"Select ",[325,428,429],{},"Send",". Write, destructive, and external-mutation requests require confirmation.",[313,432,433],{},"The base host and HTTP method come from the source-backed request catalog and cannot be changed. Unsaved request edits are not stored.",[317,435,437],{"id":436},"response-workspace","Response workspace",[313,439,440],{},"Every response shows:",[329,442,443,446,449,452,455,468,474],{},[332,444,445],{},"HTTP status",[332,447,448],{},"elapsed time",[332,450,451],{},"displayed response size",[332,453,454],{},"content type",[332,456,457,460,461,464,465,467],{},[325,458,459],{},"Pretty",", ",[325,462,463],{},"Raw",", and ",[325,466,405],{}," views",[332,469,470,473],{},[325,471,472],{},"Preview"," only for the Portfolio HTML response",[332,475,476,365,479,482],{},[325,477,478],{},"Copy response",[325,480,481],{},"Copy cURL"," actions",[313,484,485,486,489],{},"Copied cURL uses ",[362,487,488],{},"Authorization: Bearer ${OPERATOR_TOKEN}",". It never contains the active staff token.",[313,491,492],{},"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.",[317,494,496],{"id":495},"request-safety","Request safety",[313,498,499],{},"Read requests send directly. Confirmations summarize method, final path, environment, and side effect for:",[329,501,502,505,508,511,514,517,520],{},[332,503,504],{},"launch and Portfolio HTML generation",[332,506,507],{},"API-key creation and revocation",[332,509,510],{},"market visibility changes",[332,512,513],{},"webhook creation, update, deletion, and replay",[332,515,516],{},"Wallet Adapter update and tests",[332,518,519],{},"staff creation, update, and password reset",[332,521,522],{},"simulator mutations",[313,524,525],{},"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.",[317,527,529],{"id":528},"html-preview-isolation","HTML preview isolation",[313,531,532,533,535,536,539],{},"Portfolio ",[325,534,472],{}," uses ",[362,537,538],{},"iframe srcdoc"," with:",[329,541,542,547,553,558],{},[332,543,544],{},[362,545,546],{},"sandbox=\"allow-scripts allow-popups allow-popups-to-escape-sandbox\"",[332,548,549,550],{},"no ",[362,551,552],{},"allow-same-origin",[332,554,555],{},[362,556,557],{},"referrerpolicy=\"no-referrer\"",[332,559,560],{},"a preview-only CSP that blocks network subresources by default",[313,562,563,564,566],{},"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. ",[325,565,463],{}," remains the exact upstream body.",[317,568,570],{"id":569},"intentionally-unavailable-actions","Intentionally unavailable actions",[313,572,573,574,576],{},"The superseded legacy resolution-listing route is omitted in favor of ",[325,575,105],{},". Staff login, password change, and logout are also omitted because they own the dashboard session lifecycle and cannot safely run through inherited authorization.",[313,578,579,580,416,583,586],{},"Staff management requests remain available to staff sessions with ",[362,581,582],{},"staffs:read",[362,584,585],{},"staffs:write","; only the three auth-lifecycle actions are excluded.",[313,588,589],{},"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":591,"searchDepth":592,"depth":592,"links":593},"",2,[594,595,596,597,598,599],{"id":319,"depth":592,"text":320},{"id":372,"depth":592,"text":373},{"id":436,"depth":592,"text":437},{"id":495,"depth":592,"text":496},{"id":528,"depth":592,"text":529},{"id":569,"depth":592,"text":570},"Run allowlisted Operator API requests from the dashboard with inherited staff-session authorization.","md",null,{},true,{"title":77,"description":600},"q2q3HMpaT0jGGzFv0ELbInBmSKnXghh99zlfamEoFIA",[608,610],{"title":73,"path":74,"stem":75,"description":609,"children":-1},"Use staging-only simulator launch and wallet tools.",{"title":81,"path":82,"stem":83,"description":611,"children":-1},"Create, scope, rotate, and revoke operator API keys.",1785840662837]