Polyflight terms
Polyflight terms
GET /api/operator/polyflight/terms
Authorization: Bearer {operator_api_key_or_staff_session}
Required scope: polyflight_terms:read.
The authenticated operator is the tenant. The route is read-only, including for a key with * scope, and returns Cache-Control: private, no-store. Operator staff can inspect terms; only authorized Polynion administrators can enable or suspend the product or schedule a terms revision.
Representative response
{
"operatorId": 42,
"operatorSlug": "example-air",
"operatorName": "Example Air",
"currencyCode": "IDR",
"status": "enabled",
"settlementTimezone": "Asia/Jakarta",
"enabledAt": "2026-07-01T00:00:00.000Z",
"current": {
"id": "018f4f92-acde-79e3-9a11-26e38cb73582",
"revisionNumber": 1,
"revisionKind": "initial_enablement",
"ticketFeeShareBps": 10000,
"positionShareBps": 8000,
"effectiveAt": "2026-07-01T00:00:00.000Z",
"recordedAt": "2026-06-30T08:15:00.000Z",
"actorAdminId": 17,
"reason": "Initial commercial terms",
"supersedesTermsVersionId": null,
"supersededByTermsVersionId": null,
"oldTerms": null,
"newTerms": {
"ticketFeeShareBps": 10000,
"positionShareBps": 8000
}
},
"scheduled": null,
"history": [
{
"id": "018f4f92-acde-79e3-9a11-26e38cb73582",
"revisionNumber": 1,
"revisionKind": "initial_enablement",
"ticketFeeShareBps": 10000,
"positionShareBps": 8000,
"effectiveAt": "2026-07-01T00:00:00.000Z",
"recordedAt": "2026-06-30T08:15:00.000Z",
"actorAdminId": 17,
"reason": "Initial commercial terms",
"supersedesTermsVersionId": null,
"supersededByTermsVersionId": null,
"oldTerms": null,
"newTerms": {
"ticketFeeShareBps": 10000,
"positionShareBps": 8000
}
}
]
}
Interpret the states
| Field | Meaning |
|---|---|
status | disabled, enabled, or purchases_suspended |
current | Latest revision whose effectiveAt has arrived |
scheduled | Latest non-superseded future revision, or null |
history | Every revision in ascending revision order, including replaced schedules |
A known IDR operator with no Polyflight enablement returns status: "disabled", settlementTimezone: null, enabledAt: null, current: null, scheduled: null, and an empty history. A missing operator returns 404 POLYFLIGHT_TERMS_NOT_FOUND. Polyflight terms are an IDR-only contract; do not assume the disabled-response shape for an unsupported operator currency.
Revision kinds are initial_enablement, scheduled_change, and schedule_replacement. When a future schedule is replaced, the old revision remains in history; supersedesTermsVersionId and supersededByTermsVersionId show the chain.
Basis points divide by 100 to display percent: 10000 is 100% and 8000 is 80%. Terms are captured on each admitted ticket, so changing current later does not reprice historical tickets.
Both shares must be 5000–10000 BPS on a 100-BPS grid; defaults are 10000 fee share and 8000 position share. They allocate the included ticket fee and signed fee-exclusive position result, not extra player charges. The same captured terms apply to Classic and Pro.
Initial enablement is effective immediately and freezes the operator's then-current timezone as settlementTimezone. Later changes are scheduled for the next month boundary in that fixed timezone. Replacing a future schedule preserves its old history row; the existing current revision continues to apply until the boundary. Changing the operator's dashboard timezone does not change this settlement timezone.
In the dashboard, open Polyflight → Commercial terms for current, scheduled, and historical revisions. For the allocation formulas and signed examples, see Terms, statements, and settlement. For ticket-level captured versions, use Tickets.
Playground: /api-playground/polyflight?request=polyflight-terms.
