{"openapi":"3.1.0","info":{"title":"FLIP V3 Public User API","version":"3.0.0-source","summary":"Source-derived public HTTP contract for FLIP V3.","description":"This document is derived from services/indexer/src/api.ts, protocol-v3-user-api.ts, and community-market-api.ts. It deliberately publishes no server URL until an accepted Testnet release provides an HTTPS publicApiBaseUrl. Source implementation is not an acceptance claim; Mainnet remains NO-GO."},"jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","tags":[{"name":"Readiness","description":"Liveness, operational readiness, and release identity."},{"name":"Admission","description":"Signed settlement quotes and advisory atomic-admission capacity."},{"name":"Rewards","description":"Reward Catalog, Mystery access, Holding evidence, and Holder epochs."},{"name":"History","description":"Finalized player, ticket, liability, and raw event history."},{"name":"Launchpad","description":"Indexed Community RWA identities and markets."}],"x-flip-release-status":{"testnet":"IN_PROGRESS_NO_ACCEPTED_V3_PUBLIC_API","mainnet":"NOT_DEPLOYED_NO_GO","serverPublicationRule":"Resolve the API base URL only from an accepted Evidence-B-derived release projection."},"paths":{"/health":{"get":{"tags":["Readiness"],"operationId":"getHealth","summary":"Read liveness and all readiness layers","description":"Returns HTTP 200 when the handler runs even if operationalReady, mysteryReady, or fullAcceptanceReady is false. Use the corresponding /ready route as a gate.","responses":{"200":{"description":"Health snapshot. Inspect every readiness boolean and check.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}},"x-source":"services/indexer/src/api.ts"}},"/ready":{"get":{"tags":["Readiness"],"operationId":"getOperationalReadiness","summary":"Gate operational readiness","responses":{"200":{"description":"Operational readiness is true.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}},"503":{"description":"Operational readiness is false; response still contains Health detail.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}},"x-source":"services/indexer/src/api.ts"}},"/ready/mystery":{"get":{"tags":["Readiness"],"operationId":"getMysteryReadiness","summary":"Gate Mystery readiness","responses":{"200":{"description":"Mystery readiness is true.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}},"503":{"description":"Mystery readiness is false; response still contains Health detail.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}},"x-source":"services/indexer/src/api.ts"}},"/ready/full-acceptance":{"get":{"tags":["Readiness"],"operationId":"getFullAcceptanceReadiness","summary":"Gate the complete acceptance stack","responses":{"200":{"description":"Full-acceptance readiness is true.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}},"503":{"description":"Full-acceptance readiness is false; response still contains Health detail.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}},"x-source":"services/indexer/src/api.ts"}},"/v3/recovery/direct-chain":{"get":{"tags":["Readiness"],"operationId":"probeProtocolV3DirectChainRecovery","summary":"Probe the bounded direct-chain recovery path","description":"Checks application PostgreSQL first. After two consecutive database failures, the service reads one finalized block and the accepted Game runtime code directly from chain. This is a read-only recovery probe; it does not submit a transaction or replace normal database readiness.","responses":{"200":{"description":"The database is available, or the bounded finalized direct-chain proof succeeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DirectChainRecovery"}}}},"503":{"description":"The database is unavailable but has not reached the recovery threshold, direct-chain proof failed, or the recovery path is not configured.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/DirectChainRecovery"},{"$ref":"#/components/schemas/ApiError"}]}}}}},"x-source":"services/indexer/src/api.ts"}},"/v3/status":{"get":{"tags":["Readiness"],"operationId":"getProtocolV3Status","summary":"Read release identity, freshness, checks, and evidence routes","responses":{"200":{"description":"Protocol V3 is configured and healthy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProtocolStatus"}}}},"503":{"description":"Protocol V3 is not configured or Health is unhealthy. An unhealthy configured runtime returns the same ProtocolStatus shape with healthy=false.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProtocolStatus"},{"$ref":"#/components/schemas/ApiError"}]}}}}},"x-source":"services/indexer/src/api.ts"}},"/v3/accounting":{"get":{"tags":["Readiness"],"operationId":"getProtocolV3Accounting","summary":"Read the finalized replay and invariant state","responses":{"200":{"description":"Replay exists, invariantOk is true, and unknownEventCount is zero.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Accounting"}}}},"503":{"description":"Protocol V3 is disabled, replay has not completed, the invariant is false, or unknown events exist. A failing replay returns its Accounting body with HTTP 503.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Accounting"},{"$ref":"#/components/schemas/ApiError"}]}}}}},"x-source":"services/indexer/src/api.ts"}},"/v3/settlement-quotes":{"post":{"tags":["Admission"],"operationId":"createSettlementQuote","summary":"Create a signed one-time FLIP-to-USDG settlement quote","description":"The player authorizes this request with EIP-712 domain name `FLIP Settlement Quote Request`, version `1`, chain ID `46630`, and the accepted gameKind-specific Gateway as verifyingContract. `gameKindHash` is keccak256 of the UTF-8 gameKind bytes. The message also binds the accepted manifestHash/addressSetHash. The service never accepts a private key and does not submit a Bet. Quote and request nonces are one-time identities.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettlementQuoteRequest"}}}},"responses":{"201":{"description":"A signed settlement quote was allocated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettlementQuoteResponse"}}}},"400":{"description":"Malformed request or invalid/expired player authorization.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"The authorization nonce conflicts with prior state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"The per-player quote issuance limit was exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3, signer, runtime code, PoolKey, Quoter, or dependency evidence is unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/api.ts"}},"/v3/evidence/events":{"get":{"tags":["History"],"operationId":"listProtocolV3Events","summary":"List finalized raw protocol events","parameters":[{"name":"txHash","in":"query","required":false,"description":"Optional transaction hash.","schema":{"$ref":"#/components/schemas/Bytes32"}},{"name":"betId","in":"query","required":false,"description":"Optional unsigned Bet/Ticket ID.","schema":{"$ref":"#/components/schemas/UintString"}},{"name":"liabilityKey","in":"query","required":false,"description":"Optional liability key.","schema":{"$ref":"#/components/schemas/Bytes32"}},{"name":"eventName","in":"query","required":false,"description":"Optional namespaced indexed event name.","schema":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{1,63}\\.[A-Za-z][A-Za-z0-9_:.-]{1,127}$"}},{"name":"beforeBlock","in":"query","required":false,"description":"Return events before this block.","schema":{"$ref":"#/components/schemas/UintString"}},{"name":"limit","in":"query","required":false,"description":"Positive integer; defaults to 100 and is capped at 500.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Newest-first finalized event rows.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventList"}}}},"400":{"description":"A filter or limit is malformed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/api.ts"}},"/v3/evidence/parity/{game}/{ticketId}":{"get":{"tags":["History"],"operationId":"getParityEvidence","summary":"Read a stored Parity worker artifact","parameters":[{"name":"game","in":"path","required":true,"description":"Parity game contract address.","schema":{"$ref":"#/components/schemas/Address"}},{"name":"ticketId","in":"path","required":true,"description":"Receipt-derived Ticket ID.","schema":{"$ref":"#/components/schemas/UintString"}}],"responses":{"200":{"description":"Stored worker artifact JSON.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"game or ticketId is malformed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Parity evidence is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/api.ts"}},"/v3/evidence/jit/{liabilityKey}":{"get":{"tags":["History"],"operationId":"getJitEvidence","summary":"Read the latest stored JIT quote artifact","parameters":[{"name":"liabilityKey","in":"path","required":true,"description":"Receipt-derived JIT liability key.","schema":{"$ref":"#/components/schemas/Bytes32"}}],"responses":{"200":{"description":"Latest stored JIT quote artifact JSON.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"liabilityKey is malformed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"JIT quote evidence is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/api.ts"}},"/v3/rewards/catalog":{"get":{"tags":["Rewards"],"operationId":"getRewardCatalog","summary":"Read the one ordered finalized Reward Catalog","responses":{"200":{"description":"Finalized response whose catalog field contains configured/active versions and ordered assets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizedUserResponse"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/protocol-v3-user-api.ts"}},"/v3/capacity":{"get":{"tags":["Admission"],"operationId":"getGameCapacity","summary":"Read advisory admission and JIT capacity","description":"A successful read is not a reservation or promise. The exact Gateway transaction must still pass its atomic Game, Reserve, Bond, Catalog, and JIT checks.","parameters":[{"name":"game","in":"query","required":true,"description":"Game family.","schema":{"type":"string","enum":["coin","parity"]}},{"name":"mode","in":"query","required":true,"description":"Reward mode.","schema":{"type":"string","enum":["manual","mystery"]}},{"name":"allInRaw","in":"query","required":true,"description":"Positive USDG raw-unit uint256 string.","schema":{"$ref":"#/components/schemas/PositiveUintString"}},{"name":"asset","in":"query","required":false,"description":"Required for manual mode and forbidden for mystery mode.","schema":{"$ref":"#/components/schemas/Address"}}],"responses":{"200":{"description":"Finalized quote/capacity response with advisoryOnly=true and atomicAdmissionRequired=true.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapacityResponse"}}}},"400":{"description":"game, mode, allInRaw, or mode-specific asset input is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/protocol-v3-user-api.ts"}},"/v3/players/{player}/mystery-access":{"get":{"tags":["Rewards"],"operationId":"getMysteryAccess","summary":"Read finalized seven-day Holding/TWAB Mystery access","parameters":[{"name":"player","in":"path","required":true,"description":"Player address.","schema":{"$ref":"#/components/schemas/Address"}}],"responses":{"200":{"description":"Finalized Mystery status, reason, report, pending slot, and evidence identity.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizedUserResponse"}}}},"400":{"description":"player is not an EVM address.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/protocol-v3-user-api.ts"}},"/v3/players/{player}/holding-evidence/{nonce}":{"get":{"tags":["Rewards"],"operationId":"getHoldingEvidence","summary":"Read one verified Holding submission artifact","parameters":[{"name":"player","in":"path","required":true,"description":"Player address.","schema":{"$ref":"#/components/schemas/Address"}},{"name":"nonce","in":"path","required":true,"description":"Positive Holding Oracle nonce.","schema":{"$ref":"#/components/schemas/UintString"}}],"responses":{"200":{"description":"Verified Holding evidence and submission envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizedUserResponse"}}}},"400":{"description":"player or nonce is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"Finalized Holding evidence was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/protocol-v3-user-api.ts"}},"/v3/holder/epochs/current":{"get":{"tags":["Rewards"],"operationId":"getCurrentHolderEpoch","summary":"Read the latest published Holder epoch","responses":{"200":{"description":"Latest finalized Funded, Active, or Exhausted Holder epoch.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizedUserResponse"}}}},"404":{"description":"No finalized Holder epoch was found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/protocol-v3-user-api.ts"}},"/v3/holder/epochs/{epochId}":{"get":{"tags":["Rewards"],"operationId":"getHolderEpoch","summary":"Read a Holder epoch and optional account entitlement","parameters":[{"name":"epochId","in":"path","required":true,"description":"Positive uint256 Epoch ID.","schema":{"$ref":"#/components/schemas/UintString"}},{"name":"account","in":"query","required":false,"description":"Optional account whose entitlement and proof should be returned.","schema":{"$ref":"#/components/schemas/Address"}}],"responses":{"200":{"description":"Finalized epoch and optional account entitlement/proof state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizedUserResponse"}}}},"400":{"description":"epochId or account is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The Holder epoch was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/protocol-v3-user-api.ts"}},"/v3/holder/epochs/{epochId}/evidence":{"get":{"tags":["Rewards"],"operationId":"getHolderEpochEvidence","summary":"Read the complete Holder epoch artifact and reconciled journal","parameters":[{"name":"epochId","in":"path","required":true,"description":"Positive uint256 Epoch ID.","schema":{"$ref":"#/components/schemas/UintString"}}],"responses":{"200":{"description":"Full verified artifact, chain projection, and journal.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizedUserResponse"}}}},"400":{"description":"epochId is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The Holder epoch was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/protocol-v3-user-api.ts"}},"/v3/players/{player}/holder-rewards":{"get":{"tags":["Rewards"],"operationId":"listPlayerHolderRewards","summary":"List a player's Holder entitlements","parameters":[{"name":"player","in":"path","required":true,"description":"Player address.","schema":{"$ref":"#/components/schemas/Address"}},{"name":"limit","in":"query","required":false,"description":"Positive integer; defaults to 25 and is capped at 100.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}}],"responses":{"200":{"description":"Newest-first finalized Holder rewards; an empty array is a valid result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizedUserResponse"}}}},"400":{"description":"player or limit is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/protocol-v3-user-api.ts"}},"/v3/players/{player}/history":{"get":{"tags":["History"],"operationId":"listPlayerHistory","summary":"List receipt-derived V3 tickets for one player","parameters":[{"name":"player","in":"path","required":true,"description":"Player address.","schema":{"$ref":"#/components/schemas/Address"}},{"name":"limit","in":"query","required":false,"description":"Positive integer; defaults to 25 and is capped at 100.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}},{"name":"beforeBlock","in":"query","required":false,"description":"Return Tickets accepted before this block.","schema":{"$ref":"#/components/schemas/UintString"}}],"responses":{"200":{"description":"Newest-first finalized accepted Ticket lifecycles.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizedUserResponse"}}}},"400":{"description":"player, limit, or beforeBlock is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/protocol-v3-user-api.ts"}},"/v3/tickets/{game}/{ticketId}":{"get":{"tags":["History"],"operationId":"getTicket","summary":"Read one receipt-derived V3 Ticket","parameters":[{"name":"game","in":"path","required":true,"description":"Game contract address.","schema":{"$ref":"#/components/schemas/Address"}},{"name":"ticketId","in":"path","required":true,"description":"Receipt-derived Bet or Ticket ID.","schema":{"$ref":"#/components/schemas/UintString"}}],"responses":{"200":{"description":"Finalized Ticket lifecycle and any linked liability.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizedUserResponse"}}}},"400":{"description":"game or ticketId is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The V3 Ticket was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Protocol V3 is disabled, or the finalized chain/database/artifact evidence cannot be reconciled. This must not be interpreted as a zero balance, negative eligibility, or permission to transact.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/protocol-v3-user-api.ts"}},"/v3/liabilities/{liabilityKey}":{"get":{"tags":["History"],"operationId":"getLiability","summary":"Read one complete winner-liability lifecycle","parameters":[{"name":"liabilityKey","in":"path","required":true,"description":"Receipt-derived liability key.","schema":{"$ref":"#/components/schemas/Bytes32"}}],"responses":{"200":{"description":"Finalized PurchasePending, StockDelivered, CashClaimable, or CashClaimed state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizedUserResponse"}}}},"400":{"description":"liabilityKey is malformed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The V3 liability was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Finalized data is unavailable or the liability journal lacks LiabilityCreated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/protocol-v3-user-api.ts"}},"/v3/launchpad/assets":{"get":{"tags":["Launchpad"],"operationId":"listCommunityAssets","summary":"List indexed Community RWA launches","description":"This current endpoint returns chainId and event-provenance blocks but not the common release/finalized envelope. Bind it to /v3/status before treating it as release-scoped data.","parameters":[{"name":"limit","in":"query","required":false,"description":"Positive integer; defaults to 50 and is capped at 200.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}},{"name":"beforeBlock","in":"query","required":false,"description":"Return launches before this block.","schema":{"$ref":"#/components/schemas/UintString"}}],"responses":{"200":{"description":"Newest-first Community assets.","content":{"application/json":{"schema":{"type":"object","required":["chainId","assets"],"properties":{"chainId":{"type":"integer"},"assets":{"type":"array","items":{"$ref":"#/components/schemas/CommunityAsset"}}},"additionalProperties":false}}}},"400":{"description":"limit or beforeBlock is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"The Protocol V3 launch market is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/community-market-api.ts"}},"/v3/launchpad/assets/{token}":{"get":{"tags":["Launchpad"],"operationId":"getCommunityAsset","summary":"Read one indexed Community RWA launch","description":"The current detail response is a CommunityAsset object and does not include chainId, release, manifestHash, or finalizedBlock. Cross-check /v3/status and provenance.blockNumber.","parameters":[{"name":"token","in":"path","required":true,"description":"Community token address.","schema":{"$ref":"#/components/schemas/Address"}}],"responses":{"200":{"description":"Indexed Community asset.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityAsset"}}}},"400":{"description":"token is not an EVM address.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The Community asset is not indexed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"The Protocol V3 launch market is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/community-market-api.ts"}},"/v3/launchpad/assets/{token}/trades":{"get":{"tags":["Launchpad"],"operationId":"listCommunityTrades","summary":"List receipt-derived Community swaps","parameters":[{"name":"token","in":"path","required":true,"description":"Community token address.","schema":{"$ref":"#/components/schemas/Address"}},{"name":"limit","in":"query","required":false,"description":"Positive integer; defaults to 100 and is capped at 500.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}},{"name":"beforeBlock","in":"query","required":false,"description":"Return swaps before this block.","schema":{"$ref":"#/components/schemas/UintString"}}],"responses":{"200":{"description":"Newest-first Community trade envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityTrades"}}}},"400":{"description":"token, limit, or beforeBlock is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The Community asset is not indexed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"The Protocol V3 launch market is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/community-market-api.ts"}},"/v3/launchpad/assets/{token}/candles":{"get":{"tags":["Launchpad"],"operationId":"listCommunityCandles","summary":"Read Community OHLCV buckets","parameters":[{"name":"token","in":"path","required":true,"description":"Community token address.","schema":{"$ref":"#/components/schemas/Address"}},{"name":"interval","in":"query","required":false,"description":"Bucket size; defaults to 1m.","schema":{"type":"string","enum":["1m","5m","1h","1d"]}},{"name":"limit","in":"query","required":false,"description":"Positive integer; defaults to 100 and is capped at 500.","schema":{"type":"string","pattern":"^[1-9][0-9]*$"}},{"name":"before","in":"query","required":false,"description":"Return buckets before these unsigned epoch seconds.","schema":{"$ref":"#/components/schemas/UintString"}}],"responses":{"200":{"description":"Chronological Community candle envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommunityCandles"}}}},"400":{"description":"token, interval, limit, or before is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"The Community asset is not indexed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"The Protocol V3 launch market is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}},"x-source":"services/indexer/src/community-market-api.ts"}}},"components":{"schemas":{"Address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x0000000000000000000000000000000000000001"]},"Bytes32":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$"},"UintString":{"type":"string","pattern":"^(0|[1-9][0-9]*)$","description":"Exact non-negative integer encoded as a decimal string."},"PositiveUintString":{"type":"string","pattern":"^[1-9][0-9]*$","description":"Exact positive integer encoded as a decimal string."},"NonzeroBytes32":{"type":"string","pattern":"^0x(?!0{64}$)[0-9a-fA-F]{64}$","description":"Exactly 32 bytes of hex data, excluding the all-zero value."},"PositiveUint64String":{"type":"string","pattern":"^(?:[1-9][0-9]{0,18}|1[0-7][0-9]{18}|18[0-3][0-9]{17}|184[0-3][0-9]{16}|1844[0-5][0-9]{15}|18446[0-6][0-9]{14}|184467[0-3][0-9]{13}|1844674[0-3][0-9]{12}|184467440[0-6][0-9]{10}|1844674407[0-2][0-9]{9}|18446744073[0-6][0-9]{8}|1844674407370[0-8][0-9]{6}|18446744073709[0-4][0-9]{5}|184467440737095[0-4][0-9]{4}|18446744073709550[0-9]{3}|18446744073709551[0-5][0-9]{2}|1844674407370955160[0-9]|1844674407370955161[0-4]|18446744073709551615)$","description":"Exact positive uint64 encoded as a decimal string (maximum 18446744073709551615)."},"ManualAllInUsdRaw":{"type":"string","pattern":"^(?:[1-9][0-9]{6,7}|1[0-9]{8}|200000000)$","description":"Manual Coin or ODD · EVEN all-in amount in 6-decimal USDG raw units; inclusive range 1–200 USDG (1000000–200000000).","examples":["1000000","200000000"]},"MysteryAllInUsdRaw":{"type":"string","pattern":"^(?:[1-9][0-9]{6}|10000000)$","description":"Mystery Coin or ODD · EVEN all-in amount in 6-decimal USDG raw units; inclusive range 1–10 USDG (1000000–10000000).","examples":["1000000","10000000"]},"ApiError":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"reasonCode":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":false},"DirectChainRecovery":{"oneOf":[{"type":"object","required":["source","consecutiveDatabaseFailures","chainId","recoveryRequired"],"properties":{"source":{"const":"database"},"consecutiveDatabaseFailures":{"type":"integer","const":0},"chainId":{"type":"integer","const":46630},"recoveryRequired":{"type":"boolean","const":false}},"additionalProperties":false},{"type":"object","required":["source","consecutiveDatabaseFailures","chainId","recoveryRequired"],"properties":{"source":{"const":"database-unavailable"},"consecutiveDatabaseFailures":{"type":"integer","minimum":1},"chainId":{"type":"integer","const":46630},"recoveryRequired":{"type":"boolean","const":true}},"additionalProperties":false},{"type":"object","required":["source","consecutiveDatabaseFailures","chainId","contractRole","contractAddress","blockNumber","blockHash"],"properties":{"source":{"const":"direct-chain"},"consecutiveDatabaseFailures":{"type":"integer","minimum":2},"chainId":{"type":"integer","const":46630},"contractRole":{"type":"string","const":"game"},"contractAddress":{"$ref":"#/components/schemas/Address"},"blockNumber":{"$ref":"#/components/schemas/UintString"},"blockHash":{"$ref":"#/components/schemas/Bytes32"}},"additionalProperties":false}]},"FinalityIdentity":{"type":"object","required":["chainId","release","manifestHash","finalizedBlock","finalizedHash","finalizedTimestamp"],"properties":{"chainId":{"type":"integer","const":46630},"release":{"type":"string"},"manifestHash":{"$ref":"#/components/schemas/Bytes32"},"finalizedBlock":{"$ref":"#/components/schemas/UintString"},"finalizedHash":{"$ref":"#/components/schemas/Bytes32"},"finalizedTimestamp":{"$ref":"#/components/schemas/UintString"}}},"FinalizedUserResponse":{"allOf":[{"$ref":"#/components/schemas/FinalityIdentity"},{"type":"object","additionalProperties":true}]},"CapacityResponse":{"allOf":[{"$ref":"#/components/schemas/FinalityIdentity"},{"type":"object","required":["advisoryOnly","atomicAdmissionRequired","capacity"],"properties":{"advisoryOnly":{"type":"boolean","const":true,"description":"This finalized read does not reserve funds, exposure, a route, or a Ticket ID."},"atomicAdmissionRequired":{"type":"boolean","const":true,"description":"The exact Gateway transaction must repeat every state-changing admission check."},"capacity":{"$ref":"#/components/schemas/CapacitySnapshot"}}}],"unevaluatedProperties":false},"CapacitySnapshot":{"type":"object","required":["game","mode","gameRole","gameAddress","rulesVersion","paused","minimumAllInRaw","maximumAllInRaw","pendingTicketCount","quote","catalog","reserve","admission","assetCapacities"],"properties":{"game":{"type":"string","enum":["coin","parity"]},"mode":{"type":"string","enum":["manual","mystery"]},"gameRole":{"type":"string","enum":["game","parityGame","parityMysteryGame"]},"gameAddress":{"$ref":"#/components/schemas/Address"},"rulesVersion":{"$ref":"#/components/schemas/Bytes32"},"paused":{"type":"boolean"},"minimumAllInRaw":{"$ref":"#/components/schemas/UintString"},"maximumAllInRaw":{"$ref":"#/components/schemas/UintString"},"pendingTicketCount":{"$ref":"#/components/schemas/UintString"},"quote":{"$ref":"#/components/schemas/CapacityQuote"},"catalog":{"$ref":"#/components/schemas/CapacityCatalog"},"reserve":{"$ref":"#/components/schemas/CapacityReserve"},"admission":{"$ref":"#/components/schemas/CapacityAdmission"},"assetCapacities":{"type":"array","items":{"$ref":"#/components/schemas/CapacityAsset"},"description":"Manual contains the selected reward; Mystery contains every member of the active ordered Catalog. An inactive or empty Catalog can produce an empty array alongside explicit admission blockers."}},"additionalProperties":false},"CapacityQuote":{"type":"object","required":["allInRaw","principalRaw","feeRaw","settlementUsdRaw","prizeNotionalRaw","additionalReserveRaw","bonusRaw","feeBps","multiplierBps"],"properties":{"allInRaw":{"$ref":"#/components/schemas/UintString"},"principalRaw":{"$ref":"#/components/schemas/UintString"},"feeRaw":{"$ref":"#/components/schemas/UintString"},"settlementUsdRaw":{"$ref":"#/components/schemas/UintString"},"prizeNotionalRaw":{"$ref":"#/components/schemas/UintString"},"additionalReserveRaw":{"$ref":"#/components/schemas/UintString"},"bonusRaw":{"$ref":"#/components/schemas/UintString"},"feeBps":{"type":"integer","const":350},"multiplierBps":{"type":"integer","enum":[20000,25000]}},"additionalProperties":false},"CapacityCatalog":{"type":"object","required":["configuredActiveVersion","activeVersion","catalogVersion","assetsHash"],"properties":{"configuredActiveVersion":{"$ref":"#/components/schemas/UintString"},"activeVersion":{"$ref":"#/components/schemas/UintString"},"catalogVersion":{"$ref":"#/components/schemas/Bytes32"},"assetsHash":{"$ref":"#/components/schemas/Bytes32"}},"additionalProperties":false},"CapacityReserve":{"type":"object","required":["availableGeneralRaw","safetyFloorRaw","maxProtectedExposureRaw","totalPendingPrizeNotionalRaw","totalLiabilityRaw","activeReservations","maxActiveReservations","requiresBootstrap","mystery"],"properties":{"availableGeneralRaw":{"$ref":"#/components/schemas/UintString"},"safetyFloorRaw":{"$ref":"#/components/schemas/UintString"},"maxProtectedExposureRaw":{"$ref":"#/components/schemas/UintString"},"totalPendingPrizeNotionalRaw":{"$ref":"#/components/schemas/UintString"},"totalLiabilityRaw":{"$ref":"#/components/schemas/UintString"},"activeReservations":{"$ref":"#/components/schemas/UintString"},"maxActiveReservations":{"$ref":"#/components/schemas/UintString"},"requiresBootstrap":{"type":"boolean","description":"True adds RESERVE_REQUIRES_BOOTSTRAP and makes admission.ready false."},"mystery":{"type":"object","required":["epochOpen","epochId","endsAt","generalStakeCapacityRaw","bonusStakeCapacityRaw","maxStakeRaw"],"properties":{"epochOpen":{"type":"boolean"},"epochId":{"$ref":"#/components/schemas/UintString"},"endsAt":{"$ref":"#/components/schemas/UintString"},"generalStakeCapacityRaw":{"$ref":"#/components/schemas/UintString"},"bonusStakeCapacityRaw":{"$ref":"#/components/schemas/UintString"},"maxStakeRaw":{"$ref":"#/components/schemas/UintString"}},"additionalProperties":false}},"additionalProperties":false},"CapacityAdmission":{"type":"object","required":["amountWithinLimits","catalogActive","rewardSupported","gamePaused","reserveAcceptingGame","jitAcceptingGame","reservationSlotAvailable","protectedExposureAvailable","generalReserveAvailable","mysteryReserveAvailable","jitCapacityAvailable","ready","blockers"],"properties":{"amountWithinLimits":{"type":"boolean"},"catalogActive":{"type":"boolean"},"rewardSupported":{"type":"boolean"},"gamePaused":{"type":"boolean","description":"This field reports the actual paused state; false is the passing value."},"reserveAcceptingGame":{"type":"boolean"},"jitAcceptingGame":{"type":"boolean"},"reservationSlotAvailable":{"type":"boolean"},"protectedExposureAvailable":{"type":"boolean"},"generalReserveAvailable":{"type":"boolean"},"mysteryReserveAvailable":{"type":"boolean"},"jitCapacityAvailable":{"type":"boolean"},"ready":{"type":"boolean","description":"True exactly when every admission check passes and blockers is empty."},"blockers":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["AMOUNT_OUT_OF_RANGE","CATALOG_INACTIVE","REWARD_UNSUPPORTED","GAME_PAUSED","RESERVE_GAME_DISABLED","JIT_GAME_DISABLED","RESERVATION_CAP_REACHED","PROTECTED_EXPOSURE_CAP","GENERAL_RESERVE_INSUFFICIENT","MYSTERY_RESERVE_INSUFFICIENT","JIT_CAPACITY_INSUFFICIENT","RESERVE_REQUIRES_BOOTSTRAP"]}}},"additionalProperties":false},"CapacityAsset":{"type":"object","required":["asset","routeEnabled","routeLive","validUntil","routeCapacityRaw","inventoryRaw","inventoryCapacityRaw","effectiveCapacityRaw","manualLockedRaw","selectedMysteryLockedRaw","unassignedMysteryLockedRaw","requiredExposureRaw","availableCapacityRaw"],"properties":{"asset":{"$ref":"#/components/schemas/Address"},"routeEnabled":{"type":"boolean"},"routeLive":{"type":"boolean","description":"Enabled nonzero route whose validUntil covers the Guard minimum TTL."},"validUntil":{"$ref":"#/components/schemas/UintString"},"routeCapacityRaw":{"$ref":"#/components/schemas/UintString"},"inventoryRaw":{"$ref":"#/components/schemas/UintString"},"inventoryCapacityRaw":{"$ref":"#/components/schemas/UintString"},"effectiveCapacityRaw":{"$ref":"#/components/schemas/UintString","description":"min(routeCapacityRaw, inventoryCapacityRaw)."},"manualLockedRaw":{"$ref":"#/components/schemas/UintString"},"selectedMysteryLockedRaw":{"$ref":"#/components/schemas/UintString"},"unassignedMysteryLockedRaw":{"$ref":"#/components/schemas/UintString"},"requiredExposureRaw":{"$ref":"#/components/schemas/UintString","description":"manualLockedRaw + selectedMysteryLockedRaw + unassignedMysteryLockedRaw."},"availableCapacityRaw":{"$ref":"#/components/schemas/UintString","description":"routeLive ? max(effectiveCapacityRaw - requiredExposureRaw, 0) : 0."}},"additionalProperties":false},"Readiness":{"type":"object","required":["operationalReady","mysteryReady","fullAcceptanceReady"],"properties":{"operationalReady":{"type":"boolean"},"mysteryReady":{"type":"boolean"},"fullAcceptanceReady":{"type":"boolean"}},"additionalProperties":false},"Health":{"type":"object","required":["healthy","readiness","chainId","head","finalized","lag","checks","protocolV3"],"properties":{"healthy":{"type":"boolean"},"readiness":{"$ref":"#/components/schemas/Readiness"},"chainId":{"type":["integer","null"]},"head":{"type":["string","null"]},"finalized":{"$ref":"#/components/schemas/UintString"},"lag":{"type":["string","null"]},"cursorUpdatedAt":{"type":["string","null"],"format":"date-time"},"cursorAgeMs":{"type":["integer","null"]},"checks":{"type":"object","additionalProperties":{"type":"boolean"}},"protocolV3":{"type":["object","null"],"additionalProperties":true}},"additionalProperties":false},"ProtocolStatus":{"type":"object","required":["chainId","release","rulesVersion","sourceCommit","manifestHash","configHash","deploymentBlock","freshness","healthy","readiness","checks","evidence"],"properties":{"chainId":{"type":"integer","const":46630},"release":{"type":"string"},"rulesVersion":{"$ref":"#/components/schemas/Bytes32"},"sourceCommit":{"type":"string","pattern":"^[0-9a-f]{40}$"},"manifestHash":{"$ref":"#/components/schemas/Bytes32"},"configHash":{"$ref":"#/components/schemas/Bytes32"},"deploymentBlock":{"$ref":"#/components/schemas/UintString"},"freshness":{"type":"object","additionalProperties":true},"healthy":{"type":"boolean"},"readiness":{"$ref":"#/components/schemas/Readiness"},"checks":{"type":"object","additionalProperties":{"type":"boolean"}},"replay":{"type":["object","null"],"additionalProperties":true},"services":{"type":"array","items":{"type":"object","additionalProperties":true}},"evidence":{"type":"object","additionalProperties":{"type":"string"}}},"additionalProperties":false},"Accounting":{"type":"object","required":["chainId","release","rulesVersion","manifestHash","finalizedBlock","finalizedHash","replayHash","unknownEventCount","invariantOk","generatedAt","state"],"properties":{"chainId":{"type":"integer","const":46630},"release":{"type":"string"},"rulesVersion":{"$ref":"#/components/schemas/Bytes32"},"manifestHash":{"$ref":"#/components/schemas/Bytes32"},"finalizedBlock":{"$ref":"#/components/schemas/UintString"},"finalizedHash":{"$ref":"#/components/schemas/Bytes32"},"replayHash":{"$ref":"#/components/schemas/Bytes32"},"unknownEventCount":{"type":"integer","minimum":0},"invariantOk":{"type":"boolean"},"generatedAt":{"type":"string","format":"date-time"},"state":{"type":"object","additionalProperties":true}},"additionalProperties":false},"SettlementQuoteRequest":{"type":"object","required":["gameKind","player","allInUsdRaw","authorization"],"properties":{"gameKind":{"type":"string","enum":["coin-manual","coin-mystery","parity-manual","parity-mystery"]},"player":{"$ref":"#/components/schemas/Address"},"allInUsdRaw":{"allOf":[{"$ref":"#/components/schemas/UintString"}],"description":"All-in amount in 6-decimal USDG raw units. The gameKind-specific oneOf below enforces the service's inclusive manual or Mystery range."},"authorization":{"$ref":"#/components/schemas/SettlementQuoteRequestAuthorization"}},"oneOf":[{"title":"Manual Coin","properties":{"gameKind":{"const":"coin-manual"},"allInUsdRaw":{"$ref":"#/components/schemas/ManualAllInUsdRaw"}}},{"title":"Mystery Coin","properties":{"gameKind":{"const":"coin-mystery"},"allInUsdRaw":{"$ref":"#/components/schemas/MysteryAllInUsdRaw"}}},{"title":"Manual ODD · EVEN","properties":{"gameKind":{"const":"parity-manual"},"allInUsdRaw":{"$ref":"#/components/schemas/ManualAllInUsdRaw"}}},{"title":"Mystery ODD · EVEN","properties":{"gameKind":{"const":"parity-mystery"},"allInUsdRaw":{"$ref":"#/components/schemas/MysteryAllInUsdRaw"}}}],"additionalProperties":false,"x-eip712":{"domain":{"name":"FLIP Settlement Quote Request","version":"1","chainId":46630,"verifyingContract":"Accepted Gateway selected by gameKind"},"primaryType":"SettlementQuoteRequestAuthorization","gameKindHash":"keccak256(UTF-8 bytes(gameKind))","types":[{"name":"player","type":"address"},{"name":"gameKindHash","type":"bytes32"},{"name":"allInUsdRaw","type":"uint256"},{"name":"manifestHash","type":"bytes32"},{"name":"addressSetHash","type":"bytes32"},{"name":"requestNonce","type":"bytes32"},{"name":"deadline","type":"uint64"}]}},"SettlementQuoteRequestAuthorization":{"type":"object","required":["requestNonce","deadline","signature"],"properties":{"requestNonce":{"$ref":"#/components/schemas/NonzeroBytes32","description":"Fresh nonzero random bytes32; consumed once per runtime/player."},"deadline":{"$ref":"#/components/schemas/PositiveUint64String","description":"Unix seconds encoded as a nonzero uint64. At verification time it must not be expired and must be no more than 60 seconds in the future for the reviewed Functional application baseline."},"signature":{"type":"string","pattern":"^0x(?:[0-9a-fA-F]{2}){1,2048}$","description":"EOA EIP-712 signature or ERC-1271 wallet-defined signature bytes."}},"additionalProperties":false},"SettlementQuoteRuntime":{"type":"object","required":["chainId","release","sourceCommit","manifestHash","addressSetHash"],"properties":{"chainId":{"type":"integer","const":46630},"release":{"type":"string","pattern":"^[0-9a-f]{12}$"},"sourceCommit":{"type":"string","pattern":"^[0-9a-f]{40}$"},"manifestHash":{"$ref":"#/components/schemas/Bytes32"},"addressSetHash":{"$ref":"#/components/schemas/Bytes32"}},"additionalProperties":false},"SettlementQuoteRequestEcho":{"type":"object","required":["gameKind","player","allInUsdRaw"],"properties":{"gameKind":{"type":"string","enum":["coin-manual","coin-mystery","parity-manual","parity-mystery"]},"player":{"$ref":"#/components/schemas/Address"},"allInUsdRaw":{"$ref":"#/components/schemas/UintString"}},"additionalProperties":false},"SettlementQuote":{"type":"object","required":["chainId","router","game","payer","exactUsdOut","exactFlipIn","policyHash","expiry","nonce"],"properties":{"chainId":{"type":"string","const":"46630"},"router":{"$ref":"#/components/schemas/Address"},"game":{"allOf":[{"$ref":"#/components/schemas/Address"}],"description":"The accepted gameKind-specific Gateway, not the core Game."},"payer":{"$ref":"#/components/schemas/Address"},"exactUsdOut":{"$ref":"#/components/schemas/PositiveUintString"},"exactFlipIn":{"$ref":"#/components/schemas/PositiveUintString"},"policyHash":{"$ref":"#/components/schemas/Bytes32"},"expiry":{"$ref":"#/components/schemas/PositiveUint64String"},"nonce":{"$ref":"#/components/schemas/UintString"}},"additionalProperties":false},"SettlementQuoteResponse":{"type":"object","required":["schemaVersion","runtime","request","quote","quoteId","signature","signer","allowanceTarget","validForSeconds","createdAt"],"properties":{"schemaVersion":{"const":"flip-settlement-quote-v3/1"},"runtime":{"$ref":"#/components/schemas/SettlementQuoteRuntime"},"request":{"$ref":"#/components/schemas/SettlementQuoteRequestEcho"},"quote":{"$ref":"#/components/schemas/SettlementQuote"},"quoteId":{"$ref":"#/components/schemas/Bytes32"},"signature":{"type":"string","pattern":"^0x(?:[0-9a-fA-F]{2}){1,2048}$","description":"Authorized settlement signer EIP-712 signature over `quote`."},"signer":{"$ref":"#/components/schemas/Address"},"allowanceTarget":{"$ref":"#/components/schemas/Address"},"validForSeconds":{"type":"integer","minimum":1},"createdAt":{"type":"string","format":"date-time"}},"additionalProperties":false},"EventList":{"type":"object","required":["chainId","release","manifestHash","events"],"properties":{"chainId":{"type":"integer","const":46630},"release":{"type":"string"},"manifestHash":{"$ref":"#/components/schemas/Bytes32"},"events":{"type":"array","items":{"type":"object","required":["contract","transactionHash","logIndex","blockNumber","blockHash","eventName","payload"],"properties":{"contract":{"$ref":"#/components/schemas/Address"},"transactionHash":{"$ref":"#/components/schemas/Bytes32"},"logIndex":{"type":"integer","minimum":0},"blockNumber":{"$ref":"#/components/schemas/UintString"},"blockHash":{"$ref":"#/components/schemas/Bytes32"},"blockTimestamp":{"type":["string","null"],"format":"date-time"},"eventName":{"type":"string"},"payload":{"type":"object","additionalProperties":true}},"additionalProperties":false}}},"additionalProperties":false},"CommunityAsset":{"type":"object","required":["launchId","poolId","token","creator","identityId","itemId","identity","pool","economics","market","provenance"],"properties":{"launchId":{"$ref":"#/components/schemas/Bytes32"},"poolId":{"$ref":"#/components/schemas/Bytes32"},"token":{"$ref":"#/components/schemas/Address"},"creator":{"$ref":"#/components/schemas/Address"},"identityId":{"$ref":"#/components/schemas/Bytes32"},"itemId":{"$ref":"#/components/schemas/Bytes32"},"identity":{"type":"object","additionalProperties":true},"pool":{"type":"object","required":["tokenIsCurrency0","tokenDecimals","quoteDecimals","fee","tickSpacing","positionTokenId","permanentLocker","actualLiquidity","initialSqrtPriceX96"],"properties":{"tokenIsCurrency0":{"type":"boolean"},"tokenDecimals":{"type":"integer","minimum":0,"maximum":255},"quoteDecimals":{"type":"integer","minimum":0,"maximum":255},"fee":{"type":"integer","const":3000,"description":"0.30% Uniswap V4 LP fee."},"tickSpacing":{"type":"integer"},"positionTokenId":{"$ref":"#/components/schemas/UintString"},"permanentLocker":{"$ref":"#/components/schemas/Address"},"actualLiquidity":{"$ref":"#/components/schemas/UintString"},"initialSqrtPriceX96":{"$ref":"#/components/schemas/UintString"}},"additionalProperties":false},"economics":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/UintString"}},"market":{"type":"object","required":["state","initialPriceE8","initialPriceUsd","lastPriceE8","lastPriceUsd","tradeCount","lastTradeAt"],"properties":{"state":{"type":"string","enum":["initialized-no-trades","trading"]},"initialPriceE8":{"$ref":"#/components/schemas/UintString"},"initialPriceUsd":{"type":"string"},"lastPriceE8":{"$ref":"#/components/schemas/UintString"},"lastPriceUsd":{"type":"string"},"tradeCount":{"type":"integer","minimum":0},"lastTradeAt":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false},"provenance":{"type":"object","additionalProperties":true}},"additionalProperties":false},"CommunityTrades":{"type":"object","required":["chainId","token","marketState","initialPriceE8","initialPriceUsd","trades"],"properties":{"chainId":{"type":"integer","const":46630},"token":{"$ref":"#/components/schemas/Address"},"marketState":{"type":"string","enum":["initialized-no-trades","trading"]},"initialPriceE8":{"$ref":"#/components/schemas/UintString"},"initialPriceUsd":{"type":"string"},"trades":{"type":"array","items":{"type":"object","additionalProperties":true}}},"additionalProperties":false},"CommunityCandles":{"type":"object","required":["chainId","token","interval","marketState","initialPriceE8","initialPriceUsd","candles"],"properties":{"chainId":{"type":"integer","const":46630},"token":{"$ref":"#/components/schemas/Address"},"interval":{"type":"string","enum":["1m","5m","1h","1d"]},"marketState":{"type":"string","enum":["initialized-no-trades","trading"]},"initialPriceE8":{"$ref":"#/components/schemas/UintString"},"initialPriceUsd":{"type":"string"},"candles":{"type":"array","items":{"type":"object","additionalProperties":true}}},"additionalProperties":false}}}}