[{"data":1,"prerenderedAt":994},["ShallowReactive",2],{"navigation_docs":3,"-docs-operator-api-launch":352,"-docs-operator-api-launch-surround":989},[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":203,"body":354,"description":982,"extension":983,"links":984,"meta":985,"navigation":986,"path":204,"seo":987,"stem":205,"__hash__":988},"docs\u002Fdocs\u002F4.operator-api\u002F4.launch.md",{"type":355,"value":356,"toc":972},"minimark",[357,361,365,370,376,382,386,510,652,659,664,670,674,878,904,908,950,954,968],[358,359,203],"h1",{"id":360},"launch",[362,363,364],"p",{},"Generate single-use Mini App launch URL from operator backend.",[366,367,369],"h2",{"id":368},"path","Path",[362,371,372],{},[373,374,375],"code",{},"POST \u002Fapi\u002Foperator\u002Flaunch",[362,377,378,379],{},"Required scope: ",[373,380,381],{},"launch:write",[366,383,385],{"id":384},"request-body","Request body",[387,388,393],"pre",{"className":389,"code":390,"language":391,"meta":392,"style":392},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"external_user_id\": \"operator-user-123\",\n  \"display_name\": \"Rina\",\n  \"locale\": \"id\",\n  \"product\": \"polyflight\",\n  \"metadata\": {}\n","json","",[373,394,395,404,432,453,474,495],{"__ignoreMap":392},[396,397,400],"span",{"class":398,"line":399},"line",1,[396,401,403],{"class":402},"sMK4o","{\n",[396,405,407,410,414,417,420,423,427,429],{"class":398,"line":406},2,[396,408,409],{"class":402},"  \"",[396,411,413],{"class":412},"spNyl","external_user_id",[396,415,416],{"class":402},"\"",[396,418,419],{"class":402},":",[396,421,422],{"class":402}," \"",[396,424,426],{"class":425},"sfazB","operator-user-123",[396,428,416],{"class":402},[396,430,431],{"class":402},",\n",[396,433,435,437,440,442,444,446,449,451],{"class":398,"line":434},3,[396,436,409],{"class":402},[396,438,439],{"class":412},"display_name",[396,441,416],{"class":402},[396,443,419],{"class":402},[396,445,422],{"class":402},[396,447,448],{"class":425},"Rina",[396,450,416],{"class":402},[396,452,431],{"class":402},[396,454,456,458,461,463,465,467,470,472],{"class":398,"line":455},4,[396,457,409],{"class":402},[396,459,460],{"class":412},"locale",[396,462,416],{"class":402},[396,464,419],{"class":402},[396,466,422],{"class":402},[396,468,469],{"class":425},"id",[396,471,416],{"class":402},[396,473,431],{"class":402},[396,475,477,479,482,484,486,488,491,493],{"class":398,"line":476},5,[396,478,409],{"class":402},[396,480,481],{"class":412},"product",[396,483,416],{"class":402},[396,485,419],{"class":402},[396,487,422],{"class":402},[396,489,490],{"class":425},"polyflight",[396,492,416],{"class":402},[396,494,431],{"class":402},[396,496,498,500,503,505,507],{"class":398,"line":497},6,[396,499,409],{"class":402},[396,501,502],{"class":412},"metadata",[396,504,416],{"class":402},[396,506,419],{"class":402},[396,508,509],{"class":402}," {}\n",[511,512,513,532],"table",{},[514,515,516],"thead",{},[517,518,519,523,526,529],"tr",{},[520,521,522],"th",{},"Field",[520,524,525],{},"Type",[520,527,528],{},"Requirement",[520,530,531],{},"Notes",[533,534,535,554,568,595,613,638],"tbody",{},[517,536,537,542,545,551],{},[538,539,540],"td",{},[373,541,413],{},[538,543,544],{},"string",[538,546,547],{},[548,549,550],"strong",{},"Required",[538,552,553],{},"Non-empty, stable ID in the operator system.",[517,555,556,560,562,565],{},[538,557,558],{},[373,559,439],{},[538,561,544],{},[538,563,564],{},"Optional",[538,566,567],{},"Stored as the latest display-name snapshot.",[517,569,570,574,576,578],{},[538,571,572],{},[373,573,460],{},[538,575,544],{},[538,577,564],{},[538,579,580,581,584,585,584,587,590,591,594],{},"Stored as the user's locale preference. Use a Mini App-supported locale such as ",[373,582,583],{},"en",", ",[373,586,469],{},[373,588,589],{},"es",", or ",[373,592,593],{},"zh-CN",".",[517,596,597,601,604,606],{},[538,598,599],{},[373,600,502],{},[538,602,603],{},"object",[538,605,564],{},[538,607,608,609,612],{},"Merged into ordinary operator-user metadata. ",[373,610,611],{},"metadata.simulator"," is ignored and cannot change wallet routing.",[517,614,615,619,627,629],{},[538,616,617],{},[373,618,481],{},[538,620,621,624,625],{},[373,622,623],{},"opinion"," or ",[373,626,490],{},[538,628,564],{},[538,630,631,632,634,635,637],{},"Defaults to ",[373,633,623],{},". ",[373,636,490],{}," requires Polyflight to be enabled for the authenticated operator.",[517,639,640,645,647,649],{},[538,641,642],{},[373,643,644],{},"host",[538,646,544],{},[538,648,564],{},[538,650,651],{},"Environment-specific launch host. Omit unless the Provider assigned one.",[653,654,656,657],"h3",{"id":655},"optional-host","Optional ",[373,658,644],{},[362,660,661,663],{},[373,662,644],{}," is the active domain or subdomain allowed for Mini App operations. The allowed value can differ between deployment environments.",[362,665,666,667,594],{},"Unless your Provider explicitly assigns a host, omit this field. OpenPoly will resolve the active allowed host for the authenticated operator and current environment. Sending a host that is not active and allowed for that operator returns ",[373,668,669],{},"INVALID_OPERATOR_HOST",[366,671,673],{"id":672},"response","Response",[387,675,677],{"className":389,"code":676,"language":391,"meta":392,"style":392},"{\n  \"product\": \"polyflight\",\n  \"enabled_products\": [\"opinion\", \"polyflight\"],\n  \"redirect_path\": \"\u002Fpolyflight\",\n  \"launch_url\": \"https:\u002F\u002Fyour-launch-host\u002Fpolyflight?token=...\",\n  \"expires_at\": \"2026-06-18T00:01:00.000Z\",\n  \"operator_user\": {\n    \"id\": 1,\n    \"external_user_id\": \"operator-user-123\",\n    \"status\": \"active\"\n  }\n}\n",[373,678,679,683,701,733,753,773,793,808,827,846,866,872],{"__ignoreMap":392},[396,680,681],{"class":398,"line":399},[396,682,403],{"class":402},[396,684,685,687,689,691,693,695,697,699],{"class":398,"line":406},[396,686,409],{"class":402},[396,688,481],{"class":412},[396,690,416],{"class":402},[396,692,419],{"class":402},[396,694,422],{"class":402},[396,696,490],{"class":425},[396,698,416],{"class":402},[396,700,431],{"class":402},[396,702,703,705,708,710,712,715,717,719,721,724,726,728,730],{"class":398,"line":434},[396,704,409],{"class":402},[396,706,707],{"class":412},"enabled_products",[396,709,416],{"class":402},[396,711,419],{"class":402},[396,713,714],{"class":402}," [",[396,716,416],{"class":402},[396,718,623],{"class":425},[396,720,416],{"class":402},[396,722,723],{"class":402},",",[396,725,422],{"class":402},[396,727,490],{"class":425},[396,729,416],{"class":402},[396,731,732],{"class":402},"],\n",[396,734,735,737,740,742,744,746,749,751],{"class":398,"line":455},[396,736,409],{"class":402},[396,738,739],{"class":412},"redirect_path",[396,741,416],{"class":402},[396,743,419],{"class":402},[396,745,422],{"class":402},[396,747,748],{"class":425},"\u002Fpolyflight",[396,750,416],{"class":402},[396,752,431],{"class":402},[396,754,755,757,760,762,764,766,769,771],{"class":398,"line":476},[396,756,409],{"class":402},[396,758,759],{"class":412},"launch_url",[396,761,416],{"class":402},[396,763,419],{"class":402},[396,765,422],{"class":402},[396,767,768],{"class":425},"https:\u002F\u002Fyour-launch-host\u002Fpolyflight?token=...",[396,770,416],{"class":402},[396,772,431],{"class":402},[396,774,775,777,780,782,784,786,789,791],{"class":398,"line":497},[396,776,409],{"class":402},[396,778,779],{"class":412},"expires_at",[396,781,416],{"class":402},[396,783,419],{"class":402},[396,785,422],{"class":402},[396,787,788],{"class":425},"2026-06-18T00:01:00.000Z",[396,790,416],{"class":402},[396,792,431],{"class":402},[396,794,796,798,801,803,805],{"class":398,"line":795},7,[396,797,409],{"class":402},[396,799,800],{"class":412},"operator_user",[396,802,416],{"class":402},[396,804,419],{"class":402},[396,806,807],{"class":402}," {\n",[396,809,811,814,817,819,821,825],{"class":398,"line":810},8,[396,812,813],{"class":402},"    \"",[396,815,469],{"class":816},"sBMFI",[396,818,416],{"class":402},[396,820,419],{"class":402},[396,822,824],{"class":823},"sbssI"," 1",[396,826,431],{"class":402},[396,828,830,832,834,836,838,840,842,844],{"class":398,"line":829},9,[396,831,813],{"class":402},[396,833,413],{"class":816},[396,835,416],{"class":402},[396,837,419],{"class":402},[396,839,422],{"class":402},[396,841,426],{"class":425},[396,843,416],{"class":402},[396,845,431],{"class":402},[396,847,849,851,854,856,858,860,863],{"class":398,"line":848},10,[396,850,813],{"class":402},[396,852,853],{"class":816},"status",[396,855,416],{"class":402},[396,857,419],{"class":402},[396,859,422],{"class":402},[396,861,862],{"class":425},"active",[396,864,865],{"class":402},"\"\n",[396,867,869],{"class":398,"line":868},11,[396,870,871],{"class":402},"  }\n",[396,873,875],{"class":398,"line":874},12,[396,876,877],{"class":402},"}\n",[362,879,880,881,883,884,886,887,889,890,892,893,896,897,900,901,903],{},"The product-aware launch\u002Fsession contract exposes selected ",[373,882,481],{},", operator ",[373,885,707],{},", and validated ",[373,888,739],{},". Polyflight is fixed to ",[373,891,748],{},". Opinion normally uses ",[373,894,895],{},"\u002F","; only server-generated legacy portfolio Trade links preserve ",[373,898,899],{},"\u002Fmarkets\u002F{encoded-slug}",". Missing, invalid, or absolute redirect metadata falls back to ",[373,902,895],{},". Clients must follow the returned path and never construct one from caller-controlled metadata.",[366,905,907],{"id":906},"contract-rules","Contract rules",[909,910,911,915,918,923,926,932,935,941,947],"ul",{},[912,913,914],"li",{},"Launch token is single-use.",[912,916,917],{},"Token TTL is runtime-configured, defaults to 60 seconds, and is never shorter than 30 seconds.",[912,919,920,922],{},[373,921,413],{}," must be stable per operator user.",[912,924,925],{},"Operator user is upserted on launch request.",[912,927,928,929,931],{},"If ",[373,930,644],{}," is provided, it must match an active host configured for the authenticated operator.",[912,933,934],{},"Repeated launch calls may issue new launch tokens for same operator user.",[912,936,937,938,940],{},"Omitting ",[373,939,481],{}," preserves the existing Opinion launch.",[912,942,943,944,946],{},"A disabled ",[373,945,490],{}," launch is rejected; it never falls back to Opinion.",[912,948,949],{},"Simulator classification is managed only by dedicated simulator-user APIs and is preserved across launches; never attempt to enable it through launch metadata.",[366,951,953],{"id":952},"integration-rules","Integration rules",[909,955,956,959,965],{},[912,957,958],{},"Call this endpoint only from operator backend.",[912,960,961,962,964],{},"Redirect or hand off returned ",[373,963,759],{}," to operator client.",[912,966,967],{},"Never generate or inspect launch token on client.",[969,970,971],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":392,"searchDepth":406,"depth":406,"links":973},[974,975,979,980,981],{"id":368,"depth":406,"text":369},{"id":384,"depth":406,"text":385,"children":976},[977],{"id":655,"depth":434,"text":978},"Optional host",{"id":672,"depth":406,"text":673},{"id":906,"depth":406,"text":907},{"id":952,"depth":406,"text":953},"Generate a launch URL for an operator user.","md",null,{},true,{"title":203,"description":982},"QuQsFoshkRvq-pqdi1xReKMqotmiQg_ntgraQ_A4biI",[990,992],{"title":199,"path":200,"stem":201,"description":991,"children":-1},"Inspect the current operator API key or staff session context.",{"title":122,"path":207,"stem":208,"description":993,"children":-1},"Query operator users created through the Mini App integration.",1789570133025]