[{"data":1,"prerenderedAt":1511},["ShallowReactive",2],{"navigation_docs":3,"-docs-polyflight-native-wallet-contract":352,"-docs-polyflight-native-wallet-contract-surround":1506},[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":45,"body":354,"description":1499,"extension":1500,"links":1501,"meta":1502,"navigation":1503,"path":46,"seo":1504,"stem":47,"__hash__":1505},"docs\u002Fdocs\u002F11.polyflight\u002F2.native-wallet-contract.md",{"type":355,"value":356,"toc":1490},"minimark",[357,361,365,370,481,488,492,979,982,1133,1159,1165,1169,1192,1195,1199,1202,1337,1360,1369,1373,1376,1411,1419,1423,1426,1454,1469,1473,1483,1486],[358,359,45],"h1",{"id":360},"native-wallet-contract",[362,363,364],"p",{},"Polyflight uses the existing REST v1 wallet paths and response contract. Do not create separate credentials or Polyflight-only endpoints.",[366,367,369],"h2",{"id":368},"request-matrix","Request matrix",[371,372,373,398],"table",{},[374,375,376],"thead",{},[377,378,379,383,386,392],"tr",{},[380,381,382],"th",{},"Effect",[380,384,385],{},"Method and path",[380,387,388],{},[389,390,391],"code",{},"reason",[380,393,394,395],{},"Stable ",[389,396,397],{},"idempotency_key",[399,400,401,422,442,462],"tbody",{},[377,402,403,407,412,417],{},[404,405,406],"td",{},"Ticket purchase",[404,408,409],{},[389,410,411],{},"POST \u002Fdebit",[404,413,414],{},[389,415,416],{},"mini_app_polyflight_purchase",[404,418,419],{},[389,420,421],{},"mini_app_polyflight_purchase:{purchaseRequestId}:debit",[377,423,424,427,432,437],{},[404,425,426],{},"Debit applied but no ticket admitted",[404,428,429],{},[389,430,431],{},"POST \u002Fdebit-reversal",[404,433,434],{},[389,435,436],{},"mini_app_polyflight_purchase_compensation",[404,438,439],{},[389,440,441],{},"mini_app_polyflight_purchase:{purchaseRequestId}:debit_reversal",[377,443,444,447,452,457],{},[404,445,446],{},"Winning payout",[404,448,449],{},[389,450,451],{},"POST \u002Fcredit",[404,453,454],{},[389,455,456],{},"mini_app_polyflight_win",[404,458,459],{},[389,460,461],{},"mini_app_polyflight_ticket:{ticketId}:win",[377,463,464,467,471,476],{},[404,465,466],{},"Cancelled-ticket refund",[404,468,469],{},[389,470,451],{},[404,472,473],{},[389,474,475],{},"mini_app_polyflight_refund",[404,477,478],{},[389,479,480],{},"mini_app_polyflight_ticket:{ticketId}:refund",[362,482,483,484,487],{},"The endpoint determines direction; there is no ",[389,485,486],{},"direction"," field in the REST v1 mutation body. A losing ticket creates no zero-value credit request.",[366,489,491],{"id":490},"request-shape","Request shape",[493,494,499],"pre",{"className":495,"code":496,"language":497,"meta":498,"style":498},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"external_user_id\": \"operator-user-123\",\n  \"amount_minor\": 10000,\n  \"currency_code\": \"IDR\",\n  \"idempotency_key\": \"mini_app_polyflight_purchase:6f9f6d61-3ac7-47d2-aa42-6ab39e492931:debit\",\n  \"reason\": \"mini_app_polyflight_purchase\",\n  \"metadata\": {\n    \"product\": \"polyflight\",\n    \"operation\": \"purchase\",\n    \"walletTransport\": \"rest_v1\",\n    \"purchaseRequestId\": \"6f9f6d61-3ac7-47d2-aa42-6ab39e492931\",\n    \"flightId\": \"1df82a79-f8e2-4729-bced-07ca6387524f\",\n    \"flightCode\": \"PF-EXAMPLE\",\n    \"choiceKind\": \"fixed\",\n    \"choiceIndex\": 2,\n    \"currencyCode\": \"IDR\",\n    \"stakeMinor\": 10000,\n    \"feeMinor\": 500,\n    \"netStakeMinor\": 9500,\n    \"potentialPayoutMinor\": 38000,\n    \"opensAt\": \"2026-09-16T10:00:00.000Z\",\n    \"locksAt\": \"2026-09-16T10:50:00.000Z\",\n    \"landsAt\": \"2026-09-16T11:00:00.000Z\",\n    \"economyVersion\": \"polyflight-economy-v1\"\n  }\n}\n","json","",[389,500,501,510,538,556,577,597,616,631,654,675,696,717,738,759,780,797,817,833,850,867,884,905,926,947,967,973],{"__ignoreMap":498},[502,503,506],"span",{"class":504,"line":505},"line",1,[502,507,509],{"class":508},"sMK4o","{\n",[502,511,513,516,520,523,526,529,533,535],{"class":504,"line":512},2,[502,514,515],{"class":508},"  \"",[502,517,519],{"class":518},"spNyl","external_user_id",[502,521,522],{"class":508},"\"",[502,524,525],{"class":508},":",[502,527,528],{"class":508}," \"",[502,530,532],{"class":531},"sfazB","operator-user-123",[502,534,522],{"class":508},[502,536,537],{"class":508},",\n",[502,539,541,543,546,548,550,554],{"class":504,"line":540},3,[502,542,515],{"class":508},[502,544,545],{"class":518},"amount_minor",[502,547,522],{"class":508},[502,549,525],{"class":508},[502,551,553],{"class":552},"sbssI"," 10000",[502,555,537],{"class":508},[502,557,559,561,564,566,568,570,573,575],{"class":504,"line":558},4,[502,560,515],{"class":508},[502,562,563],{"class":518},"currency_code",[502,565,522],{"class":508},[502,567,525],{"class":508},[502,569,528],{"class":508},[502,571,572],{"class":531},"IDR",[502,574,522],{"class":508},[502,576,537],{"class":508},[502,578,580,582,584,586,588,590,593,595],{"class":504,"line":579},5,[502,581,515],{"class":508},[502,583,397],{"class":518},[502,585,522],{"class":508},[502,587,525],{"class":508},[502,589,528],{"class":508},[502,591,592],{"class":531},"mini_app_polyflight_purchase:6f9f6d61-3ac7-47d2-aa42-6ab39e492931:debit",[502,594,522],{"class":508},[502,596,537],{"class":508},[502,598,600,602,604,606,608,610,612,614],{"class":504,"line":599},6,[502,601,515],{"class":508},[502,603,391],{"class":518},[502,605,522],{"class":508},[502,607,525],{"class":508},[502,609,528],{"class":508},[502,611,416],{"class":531},[502,613,522],{"class":508},[502,615,537],{"class":508},[502,617,619,621,624,626,628],{"class":504,"line":618},7,[502,620,515],{"class":508},[502,622,623],{"class":518},"metadata",[502,625,522],{"class":508},[502,627,525],{"class":508},[502,629,630],{"class":508}," {\n",[502,632,634,637,641,643,645,647,650,652],{"class":504,"line":633},8,[502,635,636],{"class":508},"    \"",[502,638,640],{"class":639},"sBMFI","product",[502,642,522],{"class":508},[502,644,525],{"class":508},[502,646,528],{"class":508},[502,648,649],{"class":531},"polyflight",[502,651,522],{"class":508},[502,653,537],{"class":508},[502,655,657,659,662,664,666,668,671,673],{"class":504,"line":656},9,[502,658,636],{"class":508},[502,660,661],{"class":639},"operation",[502,663,522],{"class":508},[502,665,525],{"class":508},[502,667,528],{"class":508},[502,669,670],{"class":531},"purchase",[502,672,522],{"class":508},[502,674,537],{"class":508},[502,676,678,680,683,685,687,689,692,694],{"class":504,"line":677},10,[502,679,636],{"class":508},[502,681,682],{"class":639},"walletTransport",[502,684,522],{"class":508},[502,686,525],{"class":508},[502,688,528],{"class":508},[502,690,691],{"class":531},"rest_v1",[502,693,522],{"class":508},[502,695,537],{"class":508},[502,697,699,701,704,706,708,710,713,715],{"class":504,"line":698},11,[502,700,636],{"class":508},[502,702,703],{"class":639},"purchaseRequestId",[502,705,522],{"class":508},[502,707,525],{"class":508},[502,709,528],{"class":508},[502,711,712],{"class":531},"6f9f6d61-3ac7-47d2-aa42-6ab39e492931",[502,714,522],{"class":508},[502,716,537],{"class":508},[502,718,720,722,725,727,729,731,734,736],{"class":504,"line":719},12,[502,721,636],{"class":508},[502,723,724],{"class":639},"flightId",[502,726,522],{"class":508},[502,728,525],{"class":508},[502,730,528],{"class":508},[502,732,733],{"class":531},"1df82a79-f8e2-4729-bced-07ca6387524f",[502,735,522],{"class":508},[502,737,537],{"class":508},[502,739,741,743,746,748,750,752,755,757],{"class":504,"line":740},13,[502,742,636],{"class":508},[502,744,745],{"class":639},"flightCode",[502,747,522],{"class":508},[502,749,525],{"class":508},[502,751,528],{"class":508},[502,753,754],{"class":531},"PF-EXAMPLE",[502,756,522],{"class":508},[502,758,537],{"class":508},[502,760,762,764,767,769,771,773,776,778],{"class":504,"line":761},14,[502,763,636],{"class":508},[502,765,766],{"class":639},"choiceKind",[502,768,522],{"class":508},[502,770,525],{"class":508},[502,772,528],{"class":508},[502,774,775],{"class":531},"fixed",[502,777,522],{"class":508},[502,779,537],{"class":508},[502,781,783,785,788,790,792,795],{"class":504,"line":782},15,[502,784,636],{"class":508},[502,786,787],{"class":639},"choiceIndex",[502,789,522],{"class":508},[502,791,525],{"class":508},[502,793,794],{"class":552}," 2",[502,796,537],{"class":508},[502,798,800,802,805,807,809,811,813,815],{"class":504,"line":799},16,[502,801,636],{"class":508},[502,803,804],{"class":639},"currencyCode",[502,806,522],{"class":508},[502,808,525],{"class":508},[502,810,528],{"class":508},[502,812,572],{"class":531},[502,814,522],{"class":508},[502,816,537],{"class":508},[502,818,820,822,825,827,829,831],{"class":504,"line":819},17,[502,821,636],{"class":508},[502,823,824],{"class":639},"stakeMinor",[502,826,522],{"class":508},[502,828,525],{"class":508},[502,830,553],{"class":552},[502,832,537],{"class":508},[502,834,836,838,841,843,845,848],{"class":504,"line":835},18,[502,837,636],{"class":508},[502,839,840],{"class":639},"feeMinor",[502,842,522],{"class":508},[502,844,525],{"class":508},[502,846,847],{"class":552}," 500",[502,849,537],{"class":508},[502,851,853,855,858,860,862,865],{"class":504,"line":852},19,[502,854,636],{"class":508},[502,856,857],{"class":639},"netStakeMinor",[502,859,522],{"class":508},[502,861,525],{"class":508},[502,863,864],{"class":552}," 9500",[502,866,537],{"class":508},[502,868,870,872,875,877,879,882],{"class":504,"line":869},20,[502,871,636],{"class":508},[502,873,874],{"class":639},"potentialPayoutMinor",[502,876,522],{"class":508},[502,878,525],{"class":508},[502,880,881],{"class":552}," 38000",[502,883,537],{"class":508},[502,885,887,889,892,894,896,898,901,903],{"class":504,"line":886},21,[502,888,636],{"class":508},[502,890,891],{"class":639},"opensAt",[502,893,522],{"class":508},[502,895,525],{"class":508},[502,897,528],{"class":508},[502,899,900],{"class":531},"2026-09-16T10:00:00.000Z",[502,902,522],{"class":508},[502,904,537],{"class":508},[502,906,908,910,913,915,917,919,922,924],{"class":504,"line":907},22,[502,909,636],{"class":508},[502,911,912],{"class":639},"locksAt",[502,914,522],{"class":508},[502,916,525],{"class":508},[502,918,528],{"class":508},[502,920,921],{"class":531},"2026-09-16T10:50:00.000Z",[502,923,522],{"class":508},[502,925,537],{"class":508},[502,927,929,931,934,936,938,940,943,945],{"class":504,"line":928},23,[502,930,636],{"class":508},[502,932,933],{"class":639},"landsAt",[502,935,522],{"class":508},[502,937,525],{"class":508},[502,939,528],{"class":508},[502,941,942],{"class":531},"2026-09-16T11:00:00.000Z",[502,944,522],{"class":508},[502,946,537],{"class":508},[502,948,950,952,955,957,959,961,964],{"class":504,"line":949},24,[502,951,636],{"class":508},[502,953,954],{"class":639},"economyVersion",[502,956,522],{"class":508},[502,958,525],{"class":508},[502,960,528],{"class":508},[502,962,963],{"class":531},"polyflight-economy-v1",[502,965,966],{"class":508},"\"\n",[502,968,970],{"class":504,"line":969},25,[502,971,972],{"class":508},"  }\n",[502,974,976],{"class":504,"line":975},26,[502,977,978],{"class":508},"}\n",[362,980,981],{},"Every Polyflight request carries the common native-ticket context below. Treat metadata fields as additive; do not reject an otherwise valid request because a later version adds a field.",[371,983,984,994],{},[374,985,986],{},[377,987,988,991],{},[380,989,990],{},"Metadata field",[380,992,993],{},"Meaning",[399,995,996,1008,1029,1045,1054,1064,1075,1086,1096,1111,1124],{},[377,997,998,1002],{},[404,999,1000],{},[389,1001,640],{},[404,1003,1004,1005,1007],{},"Always ",[389,1006,649],{},".",[377,1009,1010,1014],{},[404,1011,1012],{},[389,1013,661],{},[404,1015,1016,1018,1019,1018,1022,1025,1026,1007],{},[389,1017,670],{},", ",[389,1020,1021],{},"compensation",[389,1023,1024],{},"win",", or ",[389,1027,1028],{},"refund",[377,1030,1031,1035],{},[404,1032,1033],{},[389,1034,682],{},[404,1036,1037,1038,1041,1042,1044],{},"Immutable ",[389,1039,1040],{},"simulator"," or ",[389,1043,691],{}," transport pinned under the live purchase claim before the debit is sent.",[377,1046,1047,1051],{},[404,1048,1049],{},[389,1050,703],{},[404,1052,1053],{},"Stable purchase intent UUID.",[377,1055,1056,1061],{},[404,1057,1058],{},[389,1059,1060],{},"ticketId",[404,1062,1063],{},"Ticket UUID; present for admitted-ticket effects and absent when compensation occurs before admission.",[377,1065,1066,1072],{},[404,1067,1068,1018,1070],{},[389,1069,724],{},[389,1071,745],{},[404,1073,1074],{},"Flight identifiers.",[377,1076,1077,1083],{},[404,1078,1079,1018,1081],{},[389,1080,766],{},[389,1082,787],{},[404,1084,1085],{},"Selected option group and index.",[377,1087,1088,1092],{},[404,1089,1090],{},[389,1091,804],{},[404,1093,1094,1007],{},[389,1095,572],{},[377,1097,1098,1108],{},[404,1099,1100,1018,1102,1018,1104,1018,1106],{},[389,1101,824],{},[389,1103,840],{},[389,1105,857],{},[389,1107,874],{},[404,1109,1110],{},"Immutable ticket quote amounts.",[377,1112,1113,1121],{},[404,1114,1115,1018,1117,1018,1119],{},[389,1116,891],{},[389,1118,912],{},[389,1120,933],{},[404,1122,1123],{},"ISO-8601 flight times.",[377,1125,1126,1130],{},[404,1127,1128],{},[389,1129,954],{},[404,1131,1132],{},"Economy version committed to the ticket.",[362,1134,1135,1136,1139,1140,1143,1144,1148,1149,1041,1152,1155,1156,1007],{},"Refund and compensation metadata both include ",[389,1137,1138],{},"originalDebitOperationId"," and ",[389,1141,1142],{},"originalDebitIdempotencyKey","; win metadata does not. Polyflight metadata does ",[1145,1146,1147],"strong",{},"not"," contain fake ",[389,1150,1151],{},"marketId",[389,1153,1154],{},"orderId"," values, an operator Credits balance, or a purchase ",[389,1157,1158],{},"fxRateSnapshotId",[362,1160,1161,1162,1164],{},"The admitted ticket and every later win, refund, or compensation inherit the purchase's pinned ",[389,1163,682],{},". Lease renewal or recovery cannot overwrite it with a different transport. This prevents an existing real-wallet obligation from being redirected through the simulator, or the reverse.",[366,1166,1168],{"id":1167},"amount-by-effect","Amount by effect",[1170,1171,1172,1178,1183,1189],"ul",{},[1173,1174,1175,1176,1007],"li",{},"Purchase debit: exact ",[389,1177,824],{},[1173,1179,1180,1181,1007],{},"Win credit: exact stored ",[389,1182,874],{},[1173,1184,1185,1186,1188],{},"Cancelled-ticket refund credit: exact original ",[389,1187,824],{},", including the ticket fee.",[1173,1190,1191],{},"Unadmitted-purchase debit reversal: exact original purchase debit.",[362,1193,1194],{},"No request recalculates an amount from a current FX rate or current commercial terms.",[366,1196,1198],{"id":1197},"existing-response-contract","Existing response contract",[362,1200,1201],{},"The response is unchanged from the existing debit\u002Fcredit\u002Freversal adapter:",[493,1203,1205],{"className":495,"code":1204,"language":497,"meta":498,"style":498},"{\n  \"external_user_id\": \"operator-user-123\",\n  \"status\": \"succeeded\",\n  \"currency_code\": \"IDR\",\n  \"amount_minor\": 10000,\n  \"idempotency_key\": \"mini_app_polyflight_purchase:6f9f6d61-3ac7-47d2-aa42-6ab39e492931:debit\",\n  \"remote_reference\": \"wallet-op-123\",\n  \"balance_minor\": 90000\n}\n",[389,1206,1207,1211,1229,1249,1267,1281,1299,1319,1333],{"__ignoreMap":498},[502,1208,1209],{"class":504,"line":505},[502,1210,509],{"class":508},[502,1212,1213,1215,1217,1219,1221,1223,1225,1227],{"class":504,"line":512},[502,1214,515],{"class":508},[502,1216,519],{"class":518},[502,1218,522],{"class":508},[502,1220,525],{"class":508},[502,1222,528],{"class":508},[502,1224,532],{"class":531},[502,1226,522],{"class":508},[502,1228,537],{"class":508},[502,1230,1231,1233,1236,1238,1240,1242,1245,1247],{"class":504,"line":540},[502,1232,515],{"class":508},[502,1234,1235],{"class":518},"status",[502,1237,522],{"class":508},[502,1239,525],{"class":508},[502,1241,528],{"class":508},[502,1243,1244],{"class":531},"succeeded",[502,1246,522],{"class":508},[502,1248,537],{"class":508},[502,1250,1251,1253,1255,1257,1259,1261,1263,1265],{"class":504,"line":558},[502,1252,515],{"class":508},[502,1254,563],{"class":518},[502,1256,522],{"class":508},[502,1258,525],{"class":508},[502,1260,528],{"class":508},[502,1262,572],{"class":531},[502,1264,522],{"class":508},[502,1266,537],{"class":508},[502,1268,1269,1271,1273,1275,1277,1279],{"class":504,"line":579},[502,1270,515],{"class":508},[502,1272,545],{"class":518},[502,1274,522],{"class":508},[502,1276,525],{"class":508},[502,1278,553],{"class":552},[502,1280,537],{"class":508},[502,1282,1283,1285,1287,1289,1291,1293,1295,1297],{"class":504,"line":599},[502,1284,515],{"class":508},[502,1286,397],{"class":518},[502,1288,522],{"class":508},[502,1290,525],{"class":508},[502,1292,528],{"class":508},[502,1294,592],{"class":531},[502,1296,522],{"class":508},[502,1298,537],{"class":508},[502,1300,1301,1303,1306,1308,1310,1312,1315,1317],{"class":504,"line":618},[502,1302,515],{"class":508},[502,1304,1305],{"class":518},"remote_reference",[502,1307,522],{"class":508},[502,1309,525],{"class":508},[502,1311,528],{"class":508},[502,1313,1314],{"class":531},"wallet-op-123",[502,1316,522],{"class":508},[502,1318,537],{"class":508},[502,1320,1321,1323,1326,1328,1330],{"class":504,"line":633},[502,1322,515],{"class":508},[502,1324,1325],{"class":518},"balance_minor",[502,1327,522],{"class":508},[502,1329,525],{"class":508},[502,1331,1332],{"class":552}," 90000\n",[502,1334,1335],{"class":504,"line":656},[502,1336,978],{"class":508},[362,1338,1339,1341,1342,1018,1344,1025,1347,1350,1351,1018,1353,1355,1356,1359],{},[389,1340,1235],{}," is required and must be ",[389,1343,1244],{},[389,1345,1346],{},"failed",[389,1348,1349],{},"pending",". ",[389,1352,1305],{},[389,1354,1325],{},", echoed identity\u002Fkey fields, and ",[389,1357,1358],{},"failure_reason"," are optional under the existing adapter contract. OpenPoly preserves the immutable request amount and currency; response echoes do not replace them.",[362,1361,1362,1365,1366,1368],{},[389,1363,1364],{},"X-Polynion-Request-Id"," identifies one HTTP attempt for tracing. It is ",[1145,1367,1147],{}," the financial idempotency key.",[366,1370,1372],{"id":1371},"idempotency-and-ambiguous-outcomes","Idempotency and ambiguous outcomes",[362,1374,1375],{},"The operator wallet must enforce all of these rules:",[1170,1377,1378,1381,1384,1399,1402,1405,1408],{},[1173,1379,1380],{},"The same idempotency key and same parameters return the same effective result without applying money twice.",[1173,1382,1383],{},"Reusing a key with different user, amount, currency, reason, or material metadata is a conflict.",[1173,1385,1386,1387,1018,1390,1025,1393,1018,1396,1398],{},"Timeout, network failure, HTTP ",[389,1388,1389],{},"408",[389,1391,1392],{},"429",[389,1394,1395],{},"5xx",[389,1397,1349],{},", and an invalid response are ambiguous outcomes.",[1173,1400,1401],{},"OpenPoly does not blindly resend an ambiguous primary debit or credit.",[1173,1403,1404],{},"An ambiguous purchase is not admitted as a ticket until authoritative evidence proves the debit applied.",[1173,1406,1407],{},"A known applied debit that can no longer be admitted is returned through the dedicated debit-reversal key.",[1173,1409,1410],{},"A known non-applied debit can be resolved without inventing a compensating money movement.",[362,1412,1413,1414,1350,1416,1418],{},"Operators must retain ledger evidence keyed by ",[389,1415,397],{},[389,1417,1305],{}," is useful when returned but remains optional. Manual resolution requires authenticated operator-ledger evidence even when no remote reference was returned.",[366,1420,1422],{"id":1421},"durable-lifecycle-values","Durable lifecycle values",[362,1424,1425],{},"The purchase wallet lifecycle is separate from purchase\u002Fadmission status:",[362,1427,1428,1431,1432,1431,1435,1041,1437,1439,1440,1439,1443,1446,1447,1450,1451,1007],{},[389,1429,1430],{},"planned"," → ",[389,1433,1434],{},"sent",[389,1436,1244],{},[389,1438,1346],{}," \u002F ",[389,1441,1442],{},"unknown",[389,1444,1445],{},"manual_review","; an applied debit that cannot produce a ticket moves through ",[389,1448,1449],{},"compensation_pending"," to ",[389,1452,1453],{},"compensated",[362,1455,1456,1457,1018,1460,1018,1463,1025,1466,1468],{},"Winning\u002Frefund\u002Fcompensation obligations use the separate payment states ",[389,1458,1459],{},"owed",[389,1461,1462],{},"in_flight",[389,1464,1465],{},"paid",[389,1467,1445],{},". Do not infer ticket outcome from payment state.",[366,1470,1472],{"id":1471},"purchase-result-and-cancellation-boundaries","Purchase, result, and cancellation boundaries",[362,1474,1475,1476,1479,1480,1007],{},"A successful remote debit and an admitted ticket are two separate durable steps. If debit succeeds after the flight gate closes, OpenPoly schedules exact compensation rather than forcing a late ticket. If the ticket was admitted and the flight is later cancelled, OpenPoly uses ",[389,1477,1478],{},"\u002Fcredit"," with the refund key instead of ",[389,1481,1482],{},"\u002Fdebit-reversal",[362,1484,1485],{},"A resolved winning ticket can show payout pending or manual review while the public result remains final. External wallet delay does not change the winner. A cancelled ticket can show refund owed before the wallet credit completes. Operator or user suspension blocks new admission but does not block money already owed.",[1487,1488,1489],"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 pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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":498,"searchDepth":512,"depth":512,"links":1491},[1492,1493,1494,1495,1496,1497,1498],{"id":368,"depth":512,"text":369},{"id":490,"depth":512,"text":491},{"id":1167,"depth":512,"text":1168},{"id":1197,"depth":512,"text":1198},{"id":1371,"depth":512,"text":1372},{"id":1421,"depth":512,"text":1422},{"id":1471,"depth":512,"text":1472},"Polyflight debit, payout, refund, and compensation requests on the existing REST v1 adapter.","md",null,{},true,{"title":45,"description":1499},"PSHiK4U0L4jvyzGd3l4A-N21tUeny5qYKqMf4tBx36E",[1507,1509],{"title":41,"path":42,"stem":43,"description":1508,"children":-1},"Enable and launch the native-IDR Polyflight product without changing the existing Opinion default.",{"title":49,"path":50,"stem":51,"description":1510,"children":-1},"Polyflight operator resources, webhook catalogue, and public v5 mixed-money verification.",1789570129132]