OpenPoly logo
Reference

Changelog

Public contract changes for operators.

Changelog

Use this page to track operator-facing contract changes only.

What belongs here

  • new operator API endpoints
  • removed or deprecated operator API endpoints
  • new webhook event types
  • payload shape changes
  • wallet adapter contract changes
  • status or error-code changes

What does not belong here

  • internal refactors with no contract impact
  • infrastructure-only deploy notes
  • design-only content edits with no integration impact

Entry template

## YYYY-MM-DD

### Added
- item

### Changed
- item

### Deprecated
- item

### Removed
- item

### Operator action
- required migration or "none"

2026-10-05

Changed

  • Opinion settlement now separates activity-date trade fees and successful reconciled payout cash from recognition-date immutable closed-market principal and realized trading P&L; Polynion owns Opinion principal profits and losses as well as its allocated fee share
  • net due is Polynion activity-month fee share plus recognized closed-market principal minus activity-month redemption payout cash; principal removes all gross trade fees, and trading P&L is displayed separately without deducting payouts twice
  • historical principal closures first recognized in October are October catch-up, not new October bets or cash received; prior and frozen Finance history is preserved
  • reports disclose currently resolved markets awaiting principal closure, exclude open/unreconciled principal, and block exports for missing fee history or unreconciled period payout cash; an exported report is not confirmation of bank payment or final all-time performance
  • current-month reports are read-only previews; completed-month export and Finance posting rules remain enforced
  • committed sell/redemption payouts retain their original request identity and valuation; unknown/sent operations are held, succeeded operations are not paid again, and contradictory receipt fields are rejected
  • Polyflight commercial terms, signed-position allocation, and native-IDR statements are unchanged

Operator action

  • reconcile original Opinion execution, wallet-operation, and winning-share payout evidence before principal closure; never retry an unknown wallet credit with a new key
  • compare all-time totals across activity and principal-recognition months using the Opinion economics formulas, rather than treating gross volume or closed-market P&L as an extra settlement amount

2026-10-03

Changed

  • newly settled native operator-wallet Polyflight losses create durable zero-amount /credit deliveries with reason mini_app_polyflight_loss, ticket key mini_app_polyflight_ticket:{ticketId}:loss, metadata.operation: "loss", and metadata.result: "lost"; newly planned wins include metadata.result: "won"
  • loss acknowledgements preserve balance and ticket context, use the existing idempotency/manual-reconciliation lifecycle, and create no monetary accounting entries or liabilities; outstanding loss delivery does not block flight financial settlement
  • new loss ticket.resolved payloads include the delivery obligationId; ticket APIs expose the existing payment lifecycle with effect loss and amount 0
  • the eight-event webhook catalogue is unchanged; no loss payout pending/processed callbacks are emitted
  • the native wallet contract now includes complete Win and Lost credit request/response examples, exact case-sensitive won / lost values, and zero-safe parsing guidance
  • simulator replay parameter conflicts surface as unknown wallet outcomes for manual reconciliation, rather than escaping the existing Opinion redemption review path or applying another credit

Operator action

  • allow exactly zero only for the valid Polyflight loss-credit contract, durably record acknowledgements under the :loss key, and keep monetary mutation amounts positive; remote_reference remains optional
  • distinguish loss acknowledgement from payout in support and reconciliation; the result remains final regardless of delivery status
  • do not replay historical losses or rewrite older planned/dispatched request metadata, keys, amounts, transport, or evidence

2026-09-30

Changed

  • dashboard callback endpoint editor offers ten Opinion and eight Polyflight subscriptions and preserves existing selections/secret when patching other fields
  • callback settings show mixed recent rows only with polyflight:read; UAT selects the chosen product and external user, reports uncovered event subscriptions, and compares Polyflight ticket, wallet-operation, and callback evidence under their respective read scopes; omitted API product still defaults to Opinion
  • simulator receiver setup synchronizes its signing secret without overwriting existing event selections or disabling other endpoint URLs; new simulator subscriptions include the canonical eighteen events
  • simulator delivery monitoring falls back to Opinion attempts when its Beacon API key lacks polyflight:read and explicitly labels the limitation; previously accepted callbacks remain visible
  • callback displays identify exact unscaled IDR minor amounts, distinguish included user ticket fee from operator commercial fee/position shares, full refund/compensation from fees, owed obligations from confirmed wallet credits, and reconstructed envelope previews from original signed bytes
  • Polyflight lifecycle callbacks capture external-user identity, gross stake, included fee, net stake, potential payout, and admitted-ticket commercial terms when the event is created; old sparse events remain unknown rather than borrowing current terms
  • Polyflight ticket and wallet-operation lists/exports accept an exact external_user_id filter so UAT evidence cannot mix users with similar IDs

Operator action

  • review Polyflight event subscriptions, grant polyflight:read for mixed delivery inspection, and maintain durable event_id deduplication before replaying any previously accepted 2xx

2026-09-16

Added

  • product: "polyflight" launch selection while omitted product remains Opinion
  • native-IDR Polyflight wallet reasons, stable keys, and additive metadata on existing REST v1 paths
  • eight mini_app.polyflight.* webhook events with camelCase data
  • read-only Polyflight overview, flight, ticket, wallet-operation, terms, signed-statement, payment-history, and export routes
  • scopes polyflight:read, polyflight_terms:read, and polyflight_settlements:read
  • v5 mixed-money anonymous proof and comparison-only frozen Indodax evidence

Operator action

  • update wallet allowlists/idempotency handling and webhook subscriptions before Polyflight enablement
  • grant new read scopes explicitly; existing restricted grants are unchanged
  • validate dashboard-hosted simulation and the separate real REST v1 contract in staging
  • obtain separate production authorization before production deployment, enablement, or wallet activity

2026-07-11

Added

  • GET /api/operator/trades/{marketId}/{externalUserId} for operator-scoped market/user trade-history HTML
  • GET /api/operator/redemptions in the documented Operator API and Playground catalog
  • required wallet mutation metadata matrices for buy, sell, compensation, and redemption flows

Changed

  • ambiguous primary wallet mutations now require manual review instead of remote lookup or automatic replay
  • buy compensation includes marketId and may retry only with its original idempotency key
  • full-contract wallet testing keeps balance and mutation coverage without operation-lookup steps

Removed

  • REST v1 operation-lookup configuration and runtime APIs
  • staging simulator operation-lookup route

Operator action

  • continue durable same-key mutation deduplication and stop implementing or calling lookup-by-key
  • persist marketId from all trade mutation metadata
  • use Balance Ops, operator wallet logs, remote_reference, and UTC timestamps for ambiguous reconciliation
  • never replay the same business action with a new idempotency key

Initial release

2026-06-20

Added

  • operator documentation app initial structure
  • operator API reference
  • wallet adapter reference
  • webhook reference

Operator action

  • use current pages as source of truth for v1 integration
Copyright © 2026