{"openapi":"3.1.0","info":{"title":"Riggles Community API","version":"1.0.0","description":"A read-only API over everything the riggles contracts put onchain. GET only, no writes, ever, apart from the key routes a holder uses to issue their own key.\n\nThree sources, and every answer says which: the decoded chain history in Postgres; the live chain read (ownerOf, tierOf and the GLD sitting in a riggle wallet right now, Multicall3 batched behind a ten second cache), which appears as `live` and never overwrites an indexed value; and OpenSea for listings, which is off-chain and labelled as off-chain wherever it appears.\n\nThe art routes answer bytes: the render, the onchain SVG echo, the onchain engine page and a social card, all from api.riggles.xyz itself rather than a redirect. /v1/art/render will render any 32 byte hash, in the collection or not, and carries its own quota of 30 a minute and 500 a day.\n\nHOW DISTRIBUTIONS ARE COUNTED. A distribution is one gold drop to every riggle that was not excluded from it, and they are numbered from 1. The FeeRouter's own round counter runs one ahead: its round 1 was a rehearsal, the dev wallet paying its own 204 riggles with every other active riggle excluded, to prove the router worked before real money went through it, so its round 2 is Distribution 1. /v1/rounds and /v1/rounds/:n speak the distribution number; add ?router=1 to address a FeeRouter round instead, which is the only way to reach the rehearsal. A gift is gold sent straight into a riggle's own wallet outside any round, listed at /v1/gifts, and it counts toward earnings. The rehearsal never does.\n\nEVERY ROUTE NEEDS A KEY except GET /v1/health, GET /v1/openapi.json, the page at GET /keys and the key routes that page drives. The art routes are keyed too; a public preview with no session is riggles.xyz/i.\n\nEvery JSON answer carries chainId (4663), block (the block the data is good as of) and asOf (that block as an ISO timestamp), alongside the fields listed for the route. Amounts are objects of { wei, display }: wei is the base-unit string, display is the same number already formatted. Addresses are lowercase. Lists carry items, count and nextCursor.\n\nA key is issued to a wallet that holds at least one riggle, and lapses when that wallet no longer holds one. Get one yourself: POST /v1/keys/nonce for a message, sign it with the wallet, POST /v1/keys with the nonce and the signature, and the key comes back once. Send it as Authorization: Bearer <key>. A browser-only tool cannot hide its key: put a small proxy in front with your key, or accept that the quota on it is public."},"servers":[{"url":"https://api.riggles.xyz"}],"tags":[{"name":"Riggles"},{"name":"Holders"},{"name":"Distributions"},{"name":"Market"},{"name":"Auction"},{"name":"Token"},{"name":"Traits"},{"name":"Stats"},{"name":"Events"},{"name":"Art"},{"name":"Meta"},{"name":"Keys"},{"name":"Gold"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]},"Amount":{"type":"object","properties":{"wei":{"type":"string"},"display":{"type":"string"}},"required":["wei","display"]},"KeyNonceRequest":{"type":"object","properties":{"wallet":{"type":"string","description":"the wallet the key is for, 0x address"}},"required":["wallet"]},"KeyNonce":{"type":"object","properties":{"wallet":{"type":"string"},"nonce":{"type":"string","description":"32 hex characters, single use. Send it back with the signature."},"typedData":{"type":"object","description":"SIGN THIS. The EIP-712 payload for eth_signTypedData_v4, exactly as returned: domain \"Riggles Community API\" version 1 on chain 4663 with the NFT as verifyingContract, primary type KeyRequest { wallet, nonce, issuedAt, purpose }. The domain is what stops a signature farmed by another site being usable here, and it is what the wallet shows the holder as fields rather than as prose."},"message":{"type":"string","description":"THE FALLBACK, for a wallet that will not do typed data: the exact text to sign with personal_sign. \"Riggles API key\", then domain, uri, purpose, wallet, nonce and expires on their own lines."},"issuedAt":{"type":"string","format":"date-time","description":"part of the signed KeyRequest"},"purpose":{"type":"string","description":"the sentence the wallet shows, part of the signed KeyRequest"},"expiresAt":{"type":"string","format":"date-time"}},"required":["wallet","nonce","typedData","message","issuedAt","purpose","expiresAt"]},"KeyProof":{"type":"object","properties":{"wallet":{"type":"string","description":"the wallet that signed, 0x address"},"nonce":{"type":"string","description":"the nonce from POST /v1/keys/nonce, which names the message that was signed"},"signature":{"type":"string","description":"65 byte secp256k1 signature, 0x prefixed. Either over the typedData with eth_signTypedData_v4 (preferred) or over the message with personal_sign. Both are accepted; typed data is what the /keys page sends."}},"required":["wallet","nonce","signature"]},"KeyIssued":{"type":"object","properties":{"wallet":{"type":"string"},"key":{"type":"string","description":"the key itself, returned exactly once and never recoverable"},"createdAt":{"type":"string","format":"date-time"},"perMinute":{"type":"integer"},"perDay":{"type":"integer"}},"required":["wallet","key","createdAt","perMinute","perDay"]},"KeyRevoked":{"type":"object","properties":{"wallet":{"type":"string"},"revoked":{"type":"boolean"},"revokedAt":{"type":"string","format":"date-time"}},"required":["wallet","revoked","revokedAt"]},"KeyStatus":{"type":"object","properties":{"wallet":{"type":"string"},"hasLiveKey":{"type":"boolean"},"createdAt":{"type":["string","null"],"format":"date-time"}},"required":["wallet","hasLiveKey","createdAt"]},"GoldClaimRequest":{"type":"object","properties":{"tokenId":{"type":"integer","description":"the riggle whose wallet paid out, 1 to 2222"},"txHash":{"type":"string","description":"the RiggleWallet.execute transaction that moved the gold, 32 bytes"}},"required":["tokenId","txHash"]},"GoldClaim":{"type":"object","properties":{"id":{"type":"integer"},"tokenId":{"type":"integer"},"wallet":{"type":"string","description":"the holder the GLD was transferred to, decoded off the receipt"},"amount":{"type":"string","description":"base units (wei), decoded off the receipt's Transfer log"},"tx":{"type":"string"},"block":{"type":["integer","null"]},"claimedAt":{"type":"string","format":"date-time"}},"required":["id","tokenId","wallet","amount","tx","block","claimedAt"]}}},"paths":{"/v1/riggles":{"get":{"tags":["Riggles"],"summary":"The collection, filtered and sorted.","description":"The collection, filtered and sorted.\n\nCache: 15 seconds. Key: required (Authorization: Bearer).","operationId":"v1_riggles","security":[{"bearerAuth":[]}],"parameters":[{"name":"tier","in":"query","required":false,"description":"0 inactive, 1 to 5","schema":{"type":"integer"}},{"name":"active","in":"query","required":false,"description":"true for tier above 0","schema":{"type":"boolean"}},{"name":"owner","in":"query","required":false,"description":"holder address","schema":{"type":"string"}},{"name":"minGold","in":"query","required":false,"description":"minimum lifetime gold earned, in base units","schema":{"type":"string"}},{"name":"legendary","in":"query","required":false,"description":"true, false, or a kind: inverted, outline, duotone","schema":{"type":"string"}},{"name":"treatment","in":"query","required":false,"description":"Continuous, Soft Facet, Hard Facet","schema":{"type":"string"}},{"name":"spectrum","in":"query","required":false,"description":"Normal, Greyscale, Hyper Rainbow","schema":{"type":"string"}},{"name":"listed","in":"query","required":false,"description":"true for riggles with a live OpenSea listing, false for the rest. Answered from the listings refresher, off-chain.","schema":{"type":"boolean"}},{"name":"sort","in":"query","required":false,"description":"sort field: id, tier, gold, weight (default id)","schema":{"type":"string","enum":["id","tier","gold","weight"]}},{"name":"dir","in":"query","required":false,"description":"asc or desc","schema":{"type":"string","enum":["asc","desc"]}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/riggles/batch":{"get":{"tags":["Riggles"],"summary":"Up to 100 riggles in one call.","description":"Up to 100 riggles in one call.\n\nCache: 15 seconds. Key: required (Authorization: Bearer).","operationId":"v1_riggles_batch","security":[{"bearerAuth":[]}],"parameters":[{"name":"ids","in":"query","required":true,"description":"comma separated token ids, at most 100","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/riggles/random":{"get":{"tags":["Riggles"],"summary":"One random riggle, with the same filters as /riggles.","description":"One random riggle, with the same filters as /riggles.\n\nCache: 5 seconds. Key: required (Authorization: Bearer).","operationId":"v1_riggles_random","security":[{"bearerAuth":[]}],"parameters":[{"name":"tier","in":"query","required":false,"description":"0 inactive, 1 to 5","schema":{"type":"integer"}},{"name":"active","in":"query","required":false,"description":"true for tier above 0","schema":{"type":"boolean"}},{"name":"legendary","in":"query","required":false,"description":"true, false, or a kind","schema":{"type":"string"}},{"name":"treatment","in":"query","required":false,"description":"trait filter","schema":{"type":"string"}},{"name":"spectrum","in":"query","required":false,"description":"trait filter","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/riggles/{id}":{"get":{"tags":["Riggles"],"summary":"One riggle: birth, ownership, tier, wallet, gold, traits.","description":"One riggle: birth, ownership, tier, wallet, gold, traits.\n\nCache: 15 seconds. Key: required (Authorization: Bearer).","operationId":"v1_riggles_id","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"token id 1 to 2222","schema":{"type":"integer"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/riggles/{id}/history":{"get":{"tags":["Riggles"],"summary":"Everything that ever happened to this riggle, oldest first.","description":"Everything that ever happened to this riggle, oldest first.\n\nCache: 15 seconds. Key: required (Authorization: Bearer).","operationId":"v1_riggles_id_history","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"token id","schema":{"type":"integer"}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/riggles/{id}/gold":{"get":{"tags":["Riggles"],"summary":"One riggle's gold: every line it was ever sent, labelled, plus what is in its wallet now.","description":"One riggle's gold: every line it was ever sent, labelled, plus what is in its wallet now.\n\nCache: 15 seconds. Key: required (Authorization: Bearer).","operationId":"v1_riggles_id_gold","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"token id","schema":{"type":"integer"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/riggles/{id}/traits":{"get":{"tags":["Riggles"],"summary":"The traits of one riggle with the count of how many share each.","description":"The traits of one riggle with the count of how many share each.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_riggles_id_traits","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"token id","schema":{"type":"integer"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/holders":{"get":{"tags":["Holders"],"summary":"Every address that holds a riggle.","description":"Every address that holds a riggle.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_holders","security":[{"bearerAuth":[]}],"parameters":[{"name":"minCount","in":"query","required":false,"description":"minimum riggles held","schema":{"type":"integer"}},{"name":"hasLegendary","in":"query","required":false,"description":"only holders of at least one legendary","schema":{"type":"boolean"}},{"name":"includePast","in":"query","required":false,"description":"include addresses that hold none today","schema":{"type":"boolean"}},{"name":"sort","in":"query","required":false,"description":"sort field: count, weight, gold, address (default count)","schema":{"type":"string","enum":["count","weight","gold","address"]}},{"name":"dir","in":"query","required":false,"description":"asc or desc","schema":{"type":"string","enum":["asc","desc"]}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/holders/{address}":{"get":{"tags":["Holders"],"summary":"One holder: their ids and totals.","description":"One holder: their ids and totals.\n\nCache: 15 seconds. Key: required (Authorization: Bearer).","operationId":"v1_holders_address","security":[{"bearerAuth":[]}],"parameters":[{"name":"address","in":"path","required":true,"description":"holder address","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/holders/{address}/gold":{"get":{"tags":["Holders"],"summary":"Gold across the riggles this address holds, and every round they were paid in.","description":"Gold across the riggles this address holds, and every round they were paid in.\n\nCache: 15 seconds. Key: required (Authorization: Bearer).","operationId":"v1_holders_address_gold","security":[{"bearerAuth":[]}],"parameters":[{"name":"address","in":"path","required":true,"description":"holder address","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/holders/{address}/history":{"get":{"tags":["Holders"],"summary":"Every indexed event this address appears in, newest first.","description":"Every indexed event this address appears in, newest first.\n\nCache: 15 seconds. Key: required (Authorization: Bearer).","operationId":"v1_holders_address_history","security":[{"bearerAuth":[]}],"parameters":[{"name":"address","in":"path","required":true,"description":"holder address","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/rounds":{"get":{"tags":["Distributions"],"summary":"Every gold distribution, newest first. The rehearsal is hidden unless include=rehearsal.","description":"Every gold distribution, newest first. The rehearsal is hidden unless include=rehearsal.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_rounds","security":[{"bearerAuth":[]}],"parameters":[{"name":"include","in":"query","required":false,"description":"rehearsal, to include the rehearsal round in the list","schema":{"type":"string","enum":["rehearsal"]}},{"name":"sort","in":"query","required":false,"description":"sort field: number, round (default number)","schema":{"type":"string","enum":["number","round"]}},{"name":"dir","in":"query","required":false,"description":"asc or desc","schema":{"type":"string","enum":["asc","desc"]}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/rounds/next":{"get":{"tags":["Distributions"],"summary":"What the index knows about the distribution that is open now.","description":"What the index knows about the distribution that is open now.\n\nCache: 10 seconds. Key: required (Authorization: Bearer).","operationId":"v1_rounds_next","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/rounds/{n}":{"get":{"tags":["Distributions"],"summary":"One distribution with its totals. n is the distribution number, so /v1/rounds/1 is the first real drop.","description":"One distribution with its totals. n is the distribution number, so /v1/rounds/1 is the first real drop.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_rounds_n","security":[{"bearerAuth":[]}],"parameters":[{"name":"n","in":"path","required":true,"description":"distribution number, or the FeeRouter round number with router=1","schema":{"type":"integer"}},{"name":"router","in":"query","required":false,"description":"read n as the FeeRouter's own round counter instead of the distribution number","schema":{"type":"boolean"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/rounds/{n}/payouts":{"get":{"tags":["Distributions"],"summary":"Every riggle paid in a distribution, with amount and weight.","description":"Every riggle paid in a distribution, with amount and weight.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_rounds_n_payouts","security":[{"bearerAuth":[]}],"parameters":[{"name":"n","in":"path","required":true,"description":"distribution number, or the FeeRouter round number with router=1","schema":{"type":"integer"}},{"name":"router","in":"query","required":false,"description":"read n as the FeeRouter's own round counter instead of the distribution number","schema":{"type":"boolean"}},{"name":"sort","in":"query","required":false,"description":"sort field: tokenId, amount (default tokenId)","schema":{"type":"string","enum":["tokenId","amount"]}},{"name":"dir","in":"query","required":false,"description":"asc or desc","schema":{"type":"string","enum":["asc","desc"]}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/rounds/{n}/excluded":{"get":{"tags":["Distributions"],"summary":"The exclusion list for a distribution, with who held each riggle then and who holds it now.","description":"The exclusion list for a distribution, with who held each riggle then and who holds it now.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_rounds_n_excluded","security":[{"bearerAuth":[]}],"parameters":[{"name":"n","in":"path","required":true,"description":"distribution number, or the FeeRouter round number with router=1","schema":{"type":"integer"}},{"name":"router","in":"query","required":false,"description":"read n as the FeeRouter's own round counter instead of the distribution number","schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/gifts":{"get":{"tags":["Distributions"],"summary":"Every gift of gold sent outside a distribution, newest first.","description":"Every gift of gold sent outside a distribution, newest first.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_gifts","security":[{"bearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/gifts/{id}":{"get":{"tags":["Distributions"],"summary":"One gift, with every riggle it went to.","description":"One gift, with every riggle it went to.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_gifts_id","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"gift id","schema":{"type":"integer"}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/listings":{"get":{"tags":["Market"],"summary":"Every active OpenSea listing on the collection, from the refresher snapshot.","description":"Every active OpenSea listing on the collection, from the refresher snapshot.\n\nCache: 10 seconds. Key: required (Authorization: Bearer).","operationId":"v1_listings","security":[{"bearerAuth":[]}],"parameters":[{"name":"fresh","in":"query","required":false,"description":"ask for a refresh before answering. Throttled to one a minute across the whole service, and it costs 20 requests out of your key's quota.","schema":{"type":"boolean"}},{"name":"sort","in":"query","required":false,"description":"sort field: id, price (default id)","schema":{"type":"string","enum":["id","price"]}},{"name":"dir","in":"query","required":false,"description":"asc or desc","schema":{"type":"string","enum":["asc","desc"]}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lots":{"get":{"tags":["Auction"],"summary":"Every auction lot that settled.","description":"Every auction lot that settled.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_lots","security":[{"bearerAuth":[]}],"parameters":[{"name":"winner","in":"query","required":false,"description":"settle winner address","schema":{"type":"string"}},{"name":"minAmount","in":"query","required":false,"description":"minimum settle amount in wei","schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"description":"sort field: tokenId, amount, time (default tokenId)","schema":{"type":"string","enum":["tokenId","amount","time"]}},{"name":"dir","in":"query","required":false,"description":"asc or desc","schema":{"type":"string","enum":["asc","desc"]}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lots/{id}":{"get":{"tags":["Auction"],"summary":"One lot with every bid that was placed on it.","description":"One lot with every bid that was placed on it.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_lots_id","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"token id of the lot","schema":{"type":"integer"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/bids":{"get":{"tags":["Auction"],"summary":"Bids, filtered by bidder or lot.","description":"Bids, filtered by bidder or lot.\n\nCache: 15 seconds. Key: required (Authorization: Bearer).","operationId":"v1_bids","security":[{"bearerAuth":[]}],"parameters":[{"name":"bidder","in":"query","required":false,"description":"bidder address","schema":{"type":"string"}},{"name":"tokenId","in":"query","required":false,"description":"the lot the bid belongs to","schema":{"type":"integer"}},{"name":"sort","in":"query","required":false,"description":"sort field: block, amount (default block)","schema":{"type":"string","enum":["block","amount"]}},{"name":"dir","in":"query","required":false,"description":"asc or desc","schema":{"type":"string","enum":["asc","desc"]}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/tributes":{"get":{"tags":["Auction"],"summary":"Every tribute mint.","description":"Every tribute mint.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_tributes","security":[{"bearerAuth":[]}],"parameters":[{"name":"minter","in":"query","required":false,"description":"minter address","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/token":{"get":{"tags":["Token"],"summary":"$RIGGLE supply, burned, holders.","description":"$RIGGLE supply, burned, holders.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_token","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/token/burns":{"get":{"tags":["Token"],"summary":"Every $RIGGLE burn with the source that caused it.","description":"Every $RIGGLE burn with the source that caused it.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_token_burns","security":[{"bearerAuth":[]}],"parameters":[{"name":"source","in":"query","required":false,"description":"burn source as the index labels it","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/traits":{"get":{"tags":["Traits"],"summary":"Every trait and every value, with counts across the collection.","description":"Every trait and every value, with counts across the collection.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_traits","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/traits/{name}/{value}":{"get":{"tags":["Traits"],"summary":"The riggles that carry one trait value.","description":"The riggles that carry one trait value.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_traits_name_value","security":[{"bearerAuth":[]}],"parameters":[{"name":"name","in":"path","required":true,"description":"trait name or slug, for example color-family","schema":{"type":"string"}},{"name":"value","in":"path","required":true,"description":"trait value or slug, for example rainbow","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/legendaries":{"get":{"tags":["Traits"],"summary":"The 46 legendaries, by kind, with owner, tier and gold.","description":"The 46 legendaries, by kind, with owner, tier and gold.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_legendaries","security":[{"bearerAuth":[]}],"parameters":[{"name":"kind","in":"query","required":false,"description":"inverted, outline or duotone","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/stats":{"get":{"tags":["Stats"],"summary":"One call for a dashboard.","description":"One call for a dashboard.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_stats","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/leaderboards/gold":{"get":{"tags":["Stats"],"summary":"Holders by gold earned across their riggles. Earned is distributions plus gifts; the rehearsal is not counted.","description":"Holders by gold earned across their riggles. Earned is distributions plus gifts; the rehearsal is not counted.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_leaderboards_gold","security":[{"bearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/leaderboards/tiers":{"get":{"tags":["Stats"],"summary":"Holders by total weight.","description":"Holders by total weight.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_leaderboards_tiers","security":[{"bearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/leaderboards/diamond":{"get":{"tags":["Stats"],"summary":"Holders by how long since any of their riggles last moved.","description":"Holders by how long since any of their riggles last moved.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_leaderboards_diamond","security":[{"bearerAuth":[]}],"parameters":[{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/events":{"get":{"tags":["Events"],"summary":"The raw event feed, newest first.","description":"The raw event feed, newest first.\n\nCache: 5 seconds. Key: required (Authorization: Bearer).","operationId":"v1_events","security":[{"bearerAuth":[]}],"parameters":[{"name":"kind","in":"query","required":false,"description":"event kind as the index labels it","schema":{"type":"string"}},{"name":"tokenId","in":"query","required":false,"description":"only events carrying this token id","schema":{"type":"integer"}},{"name":"address","in":"query","required":false,"description":"only events whose decoded params mention this address","schema":{"type":"string"}},{"name":"sinceBlock","in":"query","required":false,"description":"only events at or after this block","schema":{"type":"integer"}},{"name":"sort","in":"query","required":false,"description":"sort field: block (default block)","schema":{"type":"string","enum":["block"]}},{"name":"dir","in":"query","required":false,"description":"asc or desc","schema":{"type":"string","enum":["asc","desc"]}},{"name":"limit","in":"query","required":false,"description":"page size, 1 to 1000, default 100","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"nextCursor from the previous page","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/events/stream":{"get":{"tags":["Events"],"summary":"Server-sent events, live. One shared poller, two streams per key.","description":"Server-sent events, live. One shared poller, two streams per key.\n\nCache: not cached. Key: required (Authorization: Bearer).","operationId":"v1_events_stream","security":[{"bearerAuth":[]}],"parameters":[{"name":"sinceBlock","in":"query","required":false,"description":"replay the feed from this block before the live events start, capped at 5,000","schema":{"type":"integer"}}],"responses":{"200":{"description":"ok","content":{"text/event-stream":{"schema":{"type":"string"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/riggles/{id}/image.png":{"get":{"tags":["Art"],"summary":"The render, 1920x1080, from the riggle's real onchain hash.","description":"The render, 1920x1080, from the riggle's real onchain hash.\n\nCache: not cached. Key: required (Authorization: Bearer).","operationId":"v1_riggles_id_image_png","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"token id 1 to 2222","schema":{"type":"integer"}}],"responses":{"200":{"description":"ok","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/riggles/{id}/banner.png":{"get":{"tags":["Art"],"summary":"The render on a banner canvas: 1500x500, 1200x630, 1920x1080, from the riggle's real onchain hash.","description":"The render on a banner canvas: 1500x500, 1200x630, 1920x1080, from the riggle's real onchain hash.\n\nCache: not cached. Key: required (Authorization: Bearer).","operationId":"v1_riggles_id_banner_png","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"token id 1 to 2222","schema":{"type":"integer"}},{"name":"size","in":"query","required":false,"description":"banner size: 1500x500 for an X header, 1200x630 for a link preview, 1920x1080 for 16:9 (default 1500x500)","schema":{"type":"string","enum":["1500x500","1200x630","1920x1080"]}}],"responses":{"200":{"description":"ok","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/riggles/{id}/image.svg":{"get":{"tags":["Art"],"summary":"The onchain SVG echo, exactly as RigglesRenderer draws it.","description":"The onchain SVG echo, exactly as RigglesRenderer draws it.\n\nCache: not cached. Key: required (Authorization: Bearer).","operationId":"v1_riggles_id_image_svg","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"token id","schema":{"type":"integer"}}],"responses":{"200":{"description":"ok","content":{"image/svg+xml":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/riggles/{id}/animation":{"get":{"tags":["Art"],"summary":"The onchain engine page: the whole artwork, read off the chain.","description":"The onchain engine page: the whole artwork, read off the chain.\n\nCache: not cached. Key: required (Authorization: Bearer).","operationId":"v1_riggles_id_animation","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"token id","schema":{"type":"integer"}}],"responses":{"200":{"description":"ok","content":{"text/html":{"schema":{"type":"string"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/riggles/{id}/card.png":{"get":{"tags":["Art"],"summary":"A social card: the render plus tier, weight and the gold in its wallet right now.","description":"A social card: the render plus tier, weight and the gold in its wallet right now.\n\nCache: not cached. Key: required (Authorization: Bearer).","operationId":"v1_riggles_id_card_png","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"token id","schema":{"type":"integer"}}],"responses":{"200":{"description":"ok","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/art/render":{"get":{"tags":["Art"],"summary":"Render ANY 32 byte hash with the real engine, in the collection or not.","description":"Render ANY 32 byte hash with the real engine, in the collection or not.\n\nCache: not cached. Key: required (Authorization: Bearer).","operationId":"v1_art_render","security":[{"bearerAuth":[]}],"parameters":[{"name":"hash","in":"query","required":true,"description":"0x followed by 64 hex characters","schema":{"type":"string"}},{"name":"bg","in":"query","required":false,"description":"background index: 0 black, 1 Robinhood green. Default is the hash's own bit.","schema":{"type":"integer"}},{"name":"size","in":"query","required":false,"description":"canvas: 1500x500, 1200x630, 1920x1080 (default 1920x1080, the size this route has always answered)","schema":{"type":"string","enum":["1500x500","1200x630","1920x1080"]}}],"responses":{"200":{"description":"ok","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/art/engine.js":{"get":{"tags":["Art"],"summary":"The animation engine as one browser script, for a builder who mounts riggles on their own site.","description":"The animation engine as one browser script, for a builder who mounts riggles on their own site.\n\nCache: not cached. Key: required (Authorization: Bearer).","operationId":"v1_art_engine_js","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"ok","content":{"application/javascript":{"schema":{"type":"string"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/art/random":{"get":{"tags":["Art"],"summary":"A riggle nobody has minted: a fresh random hash, or the hash your seed always gives, with its traits.","description":"A riggle nobody has minted: a fresh random hash, or the hash your seed always gives, with its traits.\n\nCache: not cached. Key: required (Authorization: Bearer).","operationId":"v1_art_random","security":[{"bearerAuth":[]}],"parameters":[{"name":"seed","in":"query","required":false,"description":"any text up to 512 characters, an address, a name, a date. keccak256 of it is the hash, the same one every time. With a seed the filters below are ignored","schema":{"type":"string"}},{"name":"legendary","in":"query","required":false,"description":"random only: true for any legendary, false for none, or a kind (default any)","schema":{"type":"string","enum":["true","false","inverted","outline","duotone"]}},{"name":"type","in":"query","required":false,"description":"random only: a body type to reroll for, such as Thick, Corrugated, Smoking, Pixelated, Accordion, Normal (default any)","schema":{"type":"string"}},{"name":"spectrum","in":"query","required":false,"description":"random only: Normal, Greyscale or Hyper Rainbow (default any)","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/art/animation":{"get":{"tags":["Art"],"summary":"The animation for ANY 32 byte hash, as one self-contained page with the engine inside it.","description":"The animation for ANY 32 byte hash, as one self-contained page with the engine inside it.\n\nCache: not cached. Key: required (Authorization: Bearer).","operationId":"v1_art_animation","security":[{"bearerAuth":[]}],"parameters":[{"name":"hash","in":"query","required":true,"description":"0x followed by 64 hex characters","schema":{"type":"string"}},{"name":"bg","in":"query","required":false,"description":"auto, 0 black, 1 volt, or transparent (default auto, the hash's own bit)","schema":{"type":"string","enum":["auto","0","1","transparent"]}}],"responses":{"200":{"description":"ok","content":{"text/html":{"schema":{"type":"string"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/art/traits":{"get":{"tags":["Art"],"summary":"The traits any 32 byte hash derives, without rendering it.","description":"The traits any 32 byte hash derives, without rendering it.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_art_traits","security":[{"bearerAuth":[]}],"parameters":[{"name":"hash","in":"query","required":true,"description":"0x followed by 64 hex characters","schema":{"type":"string"}}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/contracts":{"get":{"tags":["Meta"],"summary":"Every mainnet address this API reads, with its ABI.","description":"Every mainnet address this API reads, with its ABI.\n\nCache: 30 seconds. Key: required (Authorization: Bearer).","operationId":"v1_contracts","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/health":{"get":{"tags":["Meta"],"summary":"Is the index up, and how far behind the chain is it.","description":"Is the index up, and how far behind the chain is it.\n\nCache: 5 seconds. Key: not required.","operationId":"v1_health","security":[],"parameters":[],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/health/detail":{"get":{"tags":["Meta"],"summary":"Everything the process knows about itself. Keyed: it names paths, budgets and upstream errors.","description":"Everything the process knows about itself. Keyed: it names paths, budgets and upstream errors.\n\nCache: 5 seconds. Key: required (Authorization: Bearer).","operationId":"v1_health_detail","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"missing or invalid key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"over quota","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"the index is not ready","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/keys/nonce":{"post":{"tags":["Keys"],"summary":"Ask for a nonce to sign.","description":"Step one of self-serve issuance. Returns a single-use nonce, the EIP-712 KeyRequest to sign with eth_signTypedData_v4, and a personal_sign message as the fallback for a wallet that refuses typed data. Ten minutes. Nonces are held by nonce, not by wallet, so asking again does not disturb one already being signed. No key needed: these routes are how a key is got. Limited by client address, and driveable from a browser only on riggles.xyz.","operationId":"v1_keys_nonce","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyNonceRequest"}}}},"responses":{"200":{"description":"a nonce and the message to sign","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyNonce"}}}},"400":{"description":"the wallet is not a 0x address, or the body is not JSON","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"403":{"description":"the request came from an origin that is not riggles.xyz","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"too many key requests from this address","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"self-serve issuance is not configured on this deployment","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/keys":{"post":{"tags":["Keys"],"summary":"Issue a key to a wallet that holds a riggle.","description":"Step two. Send the nonce back with the signature over the message it came with, and the wallet must hold at least one riggle. Any live key for the wallet is revoked and a new one is issued in the same transaction, so a wallet always has exactly one. The key is in this response and nowhere else: only its sha256 is stored, and it cannot be recovered, only replaced. Verification is ecrecover, so an EOA can issue and a smart contract wallet (ERC-1271) cannot in v1.","operationId":"v1_keys_post","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyProof"}}}},"responses":{"200":{"description":"the key, shown once","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyIssued"}}}},"400":{"description":"bad wallet, missing signature, or no live nonce for this wallet","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"the signature does not come from that wallet","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"403":{"description":"that wallet holds no riggle, or the request came from an origin that is not riggles.xyz","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"409":{"description":"another key for this wallet is being issued right now, try again","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"too many key requests from this address","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"self-serve issuance is not configured on this deployment","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"tags":["Keys"],"summary":"Revoke the live key for a wallet.","description":"The same signed-nonce proof as issuance. Revokes the wallet's live key. Ask for a new nonce and POST /v1/keys to get a replacement.","operationId":"v1_keys_delete","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyProof"}}}},"responses":{"200":{"description":"the key is revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyRevoked"}}}},"400":{"description":"bad wallet, missing signature, or no live nonce for this wallet","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"the signature does not come from that wallet","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"404":{"description":"that wallet has no live key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"too many key requests from this address","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"self-serve issuance is not configured on this deployment","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/keys/issue":{"post":{"tags":["Keys"],"summary":"Issue a key. The same handler as POST /v1/keys, under the name the key page calls.","description":"Identical to POST /v1/keys in every way: the same body, the same proof, the same answer. Two names because /v1/keys was the first and clients are written against it, and /issue says out loud what it does for a page a holder is reading. Get a key at GET /keys.","operationId":"v1_keys_issue","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyProof"}}}},"responses":{"200":{"description":"the key, shown once","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyIssued"}}}},"400":{"description":"bad wallet, missing signature, or no live nonce for this wallet","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"401":{"description":"the signature does not come from that wallet","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"403":{"description":"that wallet holds no riggle, or the chain disagrees with the index about who holds it","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"409":{"description":"another key for this wallet is being issued right now, try again","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"too many key requests from this address: five issuances an hour","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"self-serve issuance is not configured on this deployment","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/keys/status":{"get":{"tags":["Keys"],"summary":"Does this wallet have a live key.","description":"Nothing secret: whether a live key exists and when it was issued, never the key or its hash. Public by design, and it takes no signature, so a site can show a holder where they stand before asking them to open their wallet. It has its own rate budget, separate from issuance.","operationId":"v1_keys_status","security":[],"parameters":[{"name":"wallet","in":"query","required":true,"description":"0x address","schema":{"type":"string"}}],"responses":{"200":{"description":"the wallet's key status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyStatus"}}}},"400":{"description":"the wallet is not a 0x address","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"too many key requests from this address","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/gold/claims":{"post":{"tags":["Gold"],"summary":"Record a verified gold claim.","description":"Called by riggles.xyz once a holder's RiggleWallet.execute withdrawal transaction has landed. Reads that transaction's own receipt back from the chain (never a scan), confirms it succeeded, confirms it was sent to the named riggle's own wallet, and decodes the GLD Transfer log inside it for the amount and the recipient. No signature: the receipt is the proof, and this can only ever record a real, already-mined, already-successful transfer. Idempotent on txHash - posting the same one twice returns the row that is already there rather than a second one.","operationId":"v1_gold_claims","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoldClaimRequest"}}}},"responses":{"200":{"description":"the claim, recorded once","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoldClaim"}}}},"400":{"description":"bad tokenId or txHash, the transaction did not succeed, it was not sent to that riggle's wallet, it carries no GLD transfer out of it, or it is already recorded under a different tokenId","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"404":{"description":"the riggle has no wallet in the index yet, or the transaction is not mined yet","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"429":{"description":"too many claim recordings from this address","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"502":{"description":"the receipt could not be read from the chain","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}},"503":{"description":"gold claim recording is not configured on this deployment","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}}}}}}