{"openapi":"3.1.0","info":{"title":"Heads Down public traction API","version":"1.3.0","description":"Read-only metrics about Heads Down rigs, computed from on-chain data only: heads_down v1.3 program events and instruction data, ORE DeployEvents whose signer is the Heads Down Executor PDA, heads_down accounts, ORE ResetEvents and ORE Round accounts. Every metric carries `evidence` (transactions/accounts with explorer links) so it can be checked on chain. A server is bound to ONE dataset; when `dataset.simulated` is true, all numbers are generated by the indexer's deterministic simulator and no explorer links are given. Responses are wrapped in an envelope `{dataset, asOf, generatedAt, data}`, except the haul routes, whose body is the HaulSummary of shared contract B itself (the dataset is in the `X-HeadsDown-Dataset` header and the `simulated` field).","license":{"name":"MIT"}},"paths":{"/v1/health":{"get":{"summary":"Liveness and ingest health: when the last ingest pass finished and whether it succeeded (decode problems are counted, never hidden).","responses":{"200":{"description":"OK","headers":{"X-HeadsDown-Dataset":{"schema":{"type":"string"},"description":"mainnet | devnet | localnet | simulated"}},"content":{"application/json":{"schema":{"type":"object","required":["dataset","asOf","generatedAt","data"],"properties":{"dataset":{"$ref":"#/components/schemas/Dataset"},"asOf":{"type":"integer"},"generatedAt":{"type":"string"},"data":{"$ref":"#/components/schemas/Health"}}}}}},"400":{"description":"Invalid query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/summary":{"get":{"summary":"Headline traction numbers with evidence.","parameters":[{"name":"tz","in":"query","required":false,"description":"UTC offset in minutes for night/hour bucketing (default: the server's NIGHT_TZ_OFFSET_MINUTES, 60 = WAT).","schema":{"type":"integer","minimum":-720,"maximum":840}}],"responses":{"200":{"description":"OK","headers":{"X-HeadsDown-Dataset":{"schema":{"type":"string"},"description":"mainnet | devnet | localnet | simulated"}},"content":{"application/json":{"schema":{"type":"object","required":["dataset","asOf","generatedAt","data"],"properties":{"dataset":{"$ref":"#/components/schemas/Dataset"},"asOf":{"type":"integer"},"generatedAt":{"type":"string"},"data":{"$ref":"#/components/schemas/Summary"}}}}}},"400":{"description":"Invalid query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/cohorts":{"get":{"summary":"D1/D7/D14 retention by first-shift night.","parameters":[{"name":"tz","in":"query","required":false,"description":"UTC offset in minutes for night/hour bucketing (default: the server's NIGHT_TZ_OFFSET_MINUTES, 60 = WAT).","schema":{"type":"integer","minimum":-720,"maximum":840}}],"responses":{"200":{"description":"OK","headers":{"X-HeadsDown-Dataset":{"schema":{"type":"string"},"description":"mainnet | devnet | localnet | simulated"}},"content":{"application/json":{"schema":{"type":"object","required":["dataset","asOf","generatedAt","data"],"properties":{"dataset":{"$ref":"#/components/schemas/Dataset"},"asOf":{"type":"integer"},"generatedAt":{"type":"string"},"data":{"$ref":"#/components/schemas/CohortReport"}}}}}},"400":{"description":"Invalid query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/share-by-hour":{"get":{"summary":"Heads Down share of unique ORE miners per round, by hour of day.","parameters":[{"name":"tz","in":"query","required":false,"description":"UTC offset in minutes for night/hour bucketing (default: the server's NIGHT_TZ_OFFSET_MINUTES, 60 = WAT).","schema":{"type":"integer","minimum":-720,"maximum":840}},{"name":"days","in":"query","required":false,"description":"Window length in days ending at `asOf` (1-90, default 7).","schema":{"type":"integer","minimum":1,"maximum":90}}],"responses":{"200":{"description":"OK","headers":{"X-HeadsDown-Dataset":{"schema":{"type":"string"},"description":"mainnet | devnet | localnet | simulated"}},"content":{"application/json":{"schema":{"type":"object","required":["dataset","asOf","generatedAt","data"],"properties":{"dataset":{"$ref":"#/components/schemas/Dataset"},"asOf":{"type":"integer"},"generatedAt":{"type":"string"},"data":{"$ref":"#/components/schemas/ShareByHour"}}}}}},"400":{"description":"Invalid query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/digs/recent":{"get":{"summary":"Most recent digs (RigDug paired with its ORE DeployEvent).","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}}],"responses":{"200":{"description":"OK","headers":{"X-HeadsDown-Dataset":{"schema":{"type":"string"},"description":"mainnet | devnet | localnet | simulated"}},"content":{"application/json":{"schema":{"type":"object","required":["dataset","asOf","generatedAt","data"],"properties":{"dataset":{"$ref":"#/components/schemas/Dataset"},"asOf":{"type":"integer"},"generatedAt":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/FeedItem"}}}}}}},"400":{"description":"Invalid query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/skips":{"get":{"summary":"RigSkipped events, newest first, with each code's name and plain meaning, plus a histogram by code (for the rig filter, ignoring the error filter and pagination).","parameters":[{"name":"rig","in":"query","required":false,"description":"Only this rig (base58).","schema":{"type":"string"}},{"name":"error","in":"query","required":false,"description":"Skip code: decimal, 0x-hex (e.g. 0x2560000e), or a name (StaleHeartbeat, LeaseExpired, MessageMismatch, ...).","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500}},{"name":"cursor","in":"query","required":false,"description":"`nextCursor` of the previous page.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"X-HeadsDown-Dataset":{"schema":{"type":"string"},"description":"mainnet | devnet | localnet | simulated"}},"content":{"application/json":{"schema":{"type":"object","required":["dataset","asOf","generatedAt","data"],"properties":{"dataset":{"$ref":"#/components/schemas/Dataset"},"asOf":{"type":"integer"},"generatedAt":{"type":"string"},"data":{"$ref":"#/components/schemas/Skips"}}}}}},"400":{"description":"Invalid query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/rigs/{rig}/haul/latest":{"get":{"summary":"Morning haul of the rig's most recent finished shift (shared contract B). The body is the HaulSummary itself, not the envelope.","description":"404 when the rig has no finished shift, or when the shift ended but its haul is not final yet (then `Retry-After` is set): every round it dug must have been reset by ORE, and so must its end round while the shift is less than 30 minutes old. ORE mined is ORE's checkpoint arithmetic on the rig's own DeployEvents and each round's outcome (Round account, else ResetEvent): unrefined, before ORE's 10% refining fee. effective_lamports_per_ore = (SOL placed - SOL returned + fees) x 10^11 / ore_mined_atoms, rounded up. SOL returned is exact when the Round account was read (header X-HeadsDown-Haul-Checks says `sol-returned=exact`), else losing squares use 89.1% (within 2 lamports per square). explorer links are null for simulated data. `rounds` lists every round from start_round to end_round, up to 4096: a shift left open for longer lists its first 4096 rounds, and every total still covers the whole shift.","parameters":[{"name":"rig","in":"path","required":true,"description":"Rig PDA (base58)","schema":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"}}],"responses":{"200":{"description":"HaulSummary (contract B). Not enveloped: the dataset is in X-HeadsDown-Dataset and `simulated`.","headers":{"X-HeadsDown-Dataset":{"schema":{"type":"string"}},"X-HeadsDown-Haul-Checks":{"schema":{"type":"string"},"description":"dark=match|mismatch(n); sol-returned=exact|approx; deploys=match|mismatch, then `; rounds=first N of M` only when the shift spans more rounds than a haul lists."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HaulSummary"}}}},"400":{"description":"Invalid rig or shift_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No finished shift, or the haul is not final yet (Retry-After set).","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/rigs/{rig}/haul/{shift_id}":{"get":{"summary":"Morning haul of one finished shift (shared contract B).","parameters":[{"name":"rig","in":"path","required":true,"description":"Rig PDA (base58)","schema":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"}},{"name":"shift_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]{1,20}$"}}],"responses":{"200":{"description":"HaulSummary (contract B). Not enveloped: the dataset is in X-HeadsDown-Dataset and `simulated`.","headers":{"X-HeadsDown-Dataset":{"schema":{"type":"string"}},"X-HeadsDown-Haul-Checks":{"schema":{"type":"string"},"description":"dark=match|mismatch(n); sol-returned=exact|approx; deploys=match|mismatch, then `; rounds=first N of M` only when the shift spans more rounds than a haul lists."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HaulSummary"}}}},"400":{"description":"Invalid rig or shift_id","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No finished shift, or the haul is not final yet (Retry-After set).","headers":{"Retry-After":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/rigs/{rig}/shifts":{"get":{"summary":"The rig's finished shifts, newest first (for a shift picker).","parameters":[{"name":"rig","in":"path","required":true,"description":"Rig PDA (base58)","schema":{"type":"string","pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"}}],"responses":{"200":{"description":"OK","headers":{"X-HeadsDown-Dataset":{"schema":{"type":"string"},"description":"mainnet | devnet | localnet | simulated"}},"content":{"application/json":{"schema":{"type":"object","required":["dataset","asOf","generatedAt","data"],"properties":{"dataset":{"$ref":"#/components/schemas/Dataset"},"asOf":{"type":"integer"},"generatedAt":{"type":"string"},"data":{"$ref":"#/components/schemas/RigShifts"}}}}}},"400":{"description":"Invalid query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/milestones":{"get":{"summary":"ORE matched-prize milestones (docs/ORE.md section 9) against measured values.","parameters":[{"name":"tz","in":"query","required":false,"description":"UTC offset in minutes for night/hour bucketing (default: the server's NIGHT_TZ_OFFSET_MINUTES, 60 = WAT).","schema":{"type":"integer","minimum":-720,"maximum":840}}],"responses":{"200":{"description":"OK","headers":{"X-HeadsDown-Dataset":{"schema":{"type":"string"},"description":"mainnet | devnet | localnet | simulated"}},"content":{"application/json":{"schema":{"type":"object","required":["dataset","asOf","generatedAt","data"],"properties":{"dataset":{"$ref":"#/components/schemas/Dataset"},"asOf":{"type":"integer"},"generatedAt":{"type":"string"},"data":{"$ref":"#/components/schemas/Milestones"}}}}}},"400":{"description":"Invalid query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/skr/summary":{"get":{"summary":"Totals of the SKR features (INTERFACE v1.2): Stack tables, Focus Bonds, Gift a Rig and the Bury auction. Counts and sums of the program's own events; amounts are base units (SKR 6 decimals, ORE 11, gifts in lamports).","responses":{"200":{"description":"OK","headers":{"X-HeadsDown-Dataset":{"schema":{"type":"string"},"description":"mainnet | devnet | localnet | simulated"}},"content":{"application/json":{"schema":{"type":"object","required":["dataset","asOf","generatedAt","data"],"properties":{"dataset":{"$ref":"#/components/schemas/Dataset"},"asOf":{"type":"integer"},"generatedAt":{"type":"string"},"data":{"$ref":"#/components/schemas/SkrSummary"}}}}}},"400":{"description":"Invalid query parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/export/rounds.csv":{"get":{"summary":"Per ORE round: total miners (ResetEvent), Heads Down miners (DeployEvents), share, SOL, verifying signatures.","parameters":[{"name":"days","in":"query","required":false,"description":"Window length in days ending at `asOf` (1-90, default 7).","schema":{"type":"integer","minimum":1,"maximum":90}}],"responses":{"200":{"description":"RFC 4180 CSV. Every row starts with the dataset name; simulated files are named SIMULATED-*.","content":{"text/csv":{"schema":{"type":"string"}}}}}}},"/v1/export/digs.csv":{"get":{"summary":"Every dig in the window with its transaction signature.","parameters":[{"name":"days","in":"query","required":false,"description":"Window length in days ending at `asOf` (1-90, default 7).","schema":{"type":"integer","minimum":1,"maximum":90}}],"responses":{"200":{"description":"RFC 4180 CSV. Every row starts with the dataset name; simulated files are named SIMULATED-*.","content":{"text/csv":{"schema":{"type":"string"}}}}}}},"/v1/export/skips.csv":{"get":{"summary":"Every RigSkipped in the window: signature, rig, round, code (decimal and hex), name and plain meaning.","parameters":[{"name":"rig","in":"query","required":false,"description":"Only this rig (base58).","schema":{"type":"string"}},{"name":"error","in":"query","required":false,"description":"Skip code: decimal, 0x-hex (e.g. 0x2560000e), or a name (StaleHeartbeat, LeaseExpired, MessageMismatch, ...).","schema":{"type":"string"}},{"name":"days","in":"query","required":false,"description":"Window length in days ending at `asOf` (1-90, default 7).","schema":{"type":"integer","minimum":1,"maximum":90}}],"responses":{"200":{"description":"RFC 4180 CSV. Every row starts with the dataset name; simulated files are named SIMULATED-*.","content":{"text/csv":{"schema":{"type":"string"}}}}}}},"/v1/export/monthly.csv":{"get":{"summary":"Monthly milestone report (rigs, Seeker rigs, nightly actives, rounds dug, SOL, ORE mined/bought/buried).","parameters":[{"name":"tz","in":"query","required":false,"description":"UTC offset in minutes for night/hour bucketing (default: the server's NIGHT_TZ_OFFSET_MINUTES, 60 = WAT).","schema":{"type":"integer","minimum":-720,"maximum":840}}],"responses":{"200":{"description":"RFC 4180 CSV. Every row starts with the dataset name; simulated files are named SIMULATED-*.","content":{"text/csv":{"schema":{"type":"string"}}}}}}},"/openapi.json":{"get":{"summary":"This document.","responses":{"200":{"description":"OpenAPI 3.1","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}},"Dataset":{"type":"object","required":["name","simulated","programId","executorPda","simSeed"],"properties":{"name":{"type":"string","enum":["mainnet","devnet","localnet","simulated"]},"simulated":{"type":"boolean"},"programId":{"type":"string"},"executorPda":{"type":"string"},"simSeed":{"oneOf":[{"type":"string"},{"type":"null"}]}}},"Evidence":{"type":"object","required":["label","kind","id","url"],"properties":{"label":{"type":"string"},"kind":{"type":"string","enum":["tx","account"]},"id":{"type":"string"},"url":{"oneOf":[{"type":"string"},{"type":"null"}]}}},"SkrSummary":{"type":"object","required":["stack","focusBond","gift","bury","units"],"properties":{"stack":{"type":"object","required":["tablesOpened","seatsJoined","skrBonded","tablesSettled","seatsSettled","finishers","skrToFinishers","skrToBury","checkinsCounted","checkinsRefused","payouts","skrPaidOut","refunds","skrRefunded"],"properties":{"tablesOpened":{"type":"integer"},"seatsJoined":{"type":"integer"},"skrBonded":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"tablesSettled":{"type":"integer"},"seatsSettled":{"type":"integer"},"finishers":{"type":"integer"},"skrToFinishers":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"skrToBury":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"checkinsCounted":{"type":"integer"},"checkinsRefused":{"type":"integer"},"payouts":{"type":"integer"},"skrPaidOut":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"refunds":{"type":"integer"},"skrRefunded":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"}}},"focusBond":{"type":"object","required":["locked","skrLocked","released","skrReleased","forfeited","skrForfeited"],"properties":{"locked":{"type":"integer"},"skrLocked":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"released":{"type":"integer"},"skrReleased":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"forfeited":{"type":"integer"},"skrForfeited":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"}}},"gift":{"type":"object","required":["created","lamportsCreated","createdForSeeker","claimed","lamportsClaimed","claimedBySeeker","refunded","lamportsRefunded"],"properties":{"created":{"type":"integer"},"lamportsCreated":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"createdForSeeker":{"type":"integer"},"claimed":{"type":"integer"},"lamportsClaimed":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"claimedBySeeker":{"type":"integer"},"refunded":{"type":"integer"},"lamportsRefunded":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"}}},"bury":{"type":"object","required":["lots","skrIn","skrFromStack","skrFromBonds","sales","skrSold","orePaid","oreBurned","oreToStakers","lotSkr","lastPrice","startPrice","startSlot"],"properties":{"lots":{"type":"integer"},"skrIn":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"skrFromStack":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"skrFromBonds":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"sales":{"type":"integer"},"skrSold":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"orePaid":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"oreBurned":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"oreToStakers":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"lotSkr":{"oneOf":[{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},{"type":"null"}]},"lastPrice":{"oneOf":[{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},{"type":"null"}]},"startPrice":{"oneOf":[{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},{"type":"null"}]},"startSlot":{"oneOf":[{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},{"type":"null"}]}}},"units":{"type":"object","required":["skrDecimals","oreDecimals"],"properties":{"skrDecimals":{"type":"integer"},"oreDecimals":{"type":"integer"}}}}},"Health":{"type":"object","required":["status","txs","failedTxs","truncatedTxs","lastSlot","lastBlockTime","lastPollAt","lastPollOk","lastOkPollAt","problems"],"properties":{"status":{"type":"string","enum":["ok"]},"txs":{"type":"integer"},"failedTxs":{"type":"integer"},"truncatedTxs":{"type":"integer"},"lastSlot":{"oneOf":[{"type":"integer"},{"type":"null"}],"description":"Slot of the newest stored transaction (one that names the heads_down program or its Executor PDA), not the chain's slot: null before the first one, and it stands still whenever no such transaction lands. To see whether ingestion is running, use lastPollAt and lastPollOk."},"lastBlockTime":{"oneOf":[{"type":"integer"},{"type":"null"}],"description":"Block time (unix seconds) of the newest stored transaction; null like lastSlot."},"lastPollAt":{"oneOf":[{"type":"integer"},{"type":"null"}],"description":"Unix seconds at which the last ingest pass finished, whether it succeeded or failed. A pass runs every INGEST_INTERVAL_S over the configured sources: the RPC poll when RPC_URL is set, and api.ore.com. Null when no pass has finished for this dataset (always for the simulated dataset). Compare it with the envelope's asOf: a value that stops advancing means ingestion has stopped."},"lastPollOk":{"oneOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether that pass succeeded. False while, for example, the RPC is down, out of credits or on another cluster, or while api.ore.com has turned the indexer away for three passes in a row (a single HTTP 429 does not make it false); the reason is in the server log only."},"lastOkPollAt":{"oneOf":[{"type":"integer"},{"type":"null"}],"description":"Unix seconds at which the last successful pass finished; null if none has."},"problems":{"type":"array","items":{"type":"object","required":["code","count"],"properties":{"code":{"type":"string"},"count":{"type":"integer"}}}}}},"Summary":{"type":"object","required":["asOf","tzOffsetMinutes","lastCompleteNight","rigs","nightlyActive","darkHours","roundsDug","solDeployed","ore","gate","skips","crankers","programPaused","consistency"],"properties":{"asOf":{"type":"integer"},"tzOffsetMinutes":{"type":"integer"},"lastCompleteNight":{"oneOf":[{"type":"string"},{"type":"null"}]},"rigs":{"type":"object","required":["total","seeker","guest","closed","basis","everRegistered","crossCheck","evidence"],"properties":{"total":{"type":"integer"},"seeker":{"type":"integer"},"guest":{"type":"integer"},"closed":{"type":"integer"},"basis":{"type":"string","enum":["lifecycle","accounts","events"]},"everRegistered":{"oneOf":[{"type":"integer"},{"type":"null"}]},"crossCheck":{"type":"object","required":["accounts","accountsSeeker","matches"],"properties":{"accounts":{"oneOf":[{"type":"integer"},{"type":"null"}]},"accountsSeeker":{"oneOf":[{"type":"integer"},{"type":"null"}]},"matches":{"oneOf":[{"type":"boolean"},{"type":"null"}]}}},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/Evidence"}}}},"nightlyActive":{"type":"object","required":["lastNight","rigs","peak","series","evidence"],"properties":{"lastNight":{"oneOf":[{"type":"string"},{"type":"null"}]},"rigs":{"type":"integer"},"peak":{"type":"integer"},"series":{"type":"array","items":{"type":"object","required":["night","rigs","seeker"],"properties":{"night":{"type":"string"},"rigs":{"type":"integer"},"seeker":{"type":"integer"}}}},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/Evidence"}}}},"darkHours":{"type":"object","required":["hours","darkRounds","roundSeconds","roundSecondsBasis","shiftsEnded","evidence"],"properties":{"hours":{"type":"number"},"darkRounds":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"roundSeconds":{"type":"number"},"roundSecondsBasis":{"type":"string","enum":["measured","fallback"]},"shiftsEnded":{"type":"integer"},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/Evidence"}}}},"roundsDug":{"type":"object","required":["rigRounds","distinctRounds","evidence"],"properties":{"rigRounds":{"type":"integer"},"distinctRounds":{"type":"integer"},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/Evidence"}}}},"solDeployed":{"type":"object","required":["lamports","oreDeployEventLamports","consistent","evidence"],"properties":{"lamports":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"oreDeployEventLamports":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"consistent":{"type":"boolean"},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/Evidence"}}}},"ore":{"type":"object","required":["mined","bought","buried"],"properties":{"mined":{"type":"object","required":["amount","digsPendingRound","basis","evidence"],"properties":{"amount":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"digsPendingRound":{"type":"integer"},"basis":{"type":"string"},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/Evidence"}}}},"bought":{"type":"object","required":["amount","status","note"],"properties":{"amount":{"type":"null"},"status":{"type":"string","enum":["not_shipped"]},"note":{"type":"string"}}},"buried":{"type":"object","required":["amount","status","note"],"properties":{"amount":{"type":"null"},"status":{"type":"string","enum":["not_shipped"]},"note":{"type":"string"}}}}},"gate":{"type":"object","required":["openRate","opened","closedByCostGate","digShareOfDarkRounds","evidence"],"properties":{"openRate":{"oneOf":[{"type":"number"},{"type":"null"}]},"opened":{"type":"integer"},"closedByCostGate":{"type":"integer"},"digShareOfDarkRounds":{"oneOf":[{"type":"number"},{"type":"null"}]},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/Evidence"}}}},"skips":{"type":"array","items":{"type":"object","required":["code","name","range","label","count"],"properties":{"code":{"type":"integer"},"name":{"type":"string"},"range":{"$ref":"#/components/schemas/ErrorRange"},"label":{"type":"string"},"count":{"type":"integer"}}}},"crankers":{"type":"object","required":["distinct","thirdParty"],"properties":{"distinct":{"type":"integer"},"thirdParty":{"oneOf":[{"type":"integer"},{"type":"null"}]}}},"programPaused":{"oneOf":[{"type":"boolean"},{"type":"null"}]},"consistency":{"type":"object","required":["digsWithoutDeploy","deploysWithoutDig","lamportsMismatch","roundsDugExceedsDark","seekerTierWithoutSeat","hdMinersExceedTotal"],"properties":{"digsWithoutDeploy":{"type":"integer"},"deploysWithoutDig":{"type":"integer"},"lamportsMismatch":{"type":"integer"},"roundsDugExceedsDark":{"type":"integer"},"seekerTierWithoutSeat":{"type":"integer"},"hdMinersExceedTotal":{"type":"integer"}}}}},"CohortReport":{"type":"object","required":["lastCompleteNight","cohorts","average"],"properties":{"lastCompleteNight":{"oneOf":[{"type":"string"},{"type":"null"}]},"cohorts":{"type":"array","items":{"type":"object","required":["cohort","size","cells"],"properties":{"cohort":{"type":"string"},"size":{"type":"integer"},"cells":{"type":"array","items":{"type":"object","required":["day","retained","rate","mature"],"properties":{"day":{"type":"integer"},"retained":{"oneOf":[{"type":"integer"},{"type":"null"}]},"rate":{"oneOf":[{"type":"number"},{"type":"null"}]},"mature":{"type":"boolean"}}}}}}},"average":{"type":"array","items":{"type":"object","required":["day","rate","cohorts","rigs"],"properties":{"day":{"type":"integer"},"rate":{"oneOf":[{"type":"number"},{"type":"null"}]},"cohorts":{"type":"integer"},"rigs":{"type":"integer"}}}}}},"ShareByHour":{"type":"object","required":["tzOffsetMinutes","windowDays","from","to","rounds","roundsWithHd","meanShare","hours"],"properties":{"tzOffsetMinutes":{"type":"integer"},"windowDays":{"type":"integer"},"from":{"type":"integer"},"to":{"type":"integer"},"rounds":{"type":"integer"},"roundsWithHd":{"type":"integer"},"meanShare":{"oneOf":[{"type":"number"},{"type":"null"}]},"hours":{"type":"array","items":{"type":"object","required":["hour","rounds","roundsWithHd","meanShare","maxShare","meanHdMiners","meanTotalMiners","peak"],"properties":{"hour":{"type":"integer"},"rounds":{"type":"integer"},"roundsWithHd":{"type":"integer"},"meanShare":{"oneOf":[{"type":"number"},{"type":"null"}]},"maxShare":{"oneOf":[{"type":"number"},{"type":"null"}]},"meanHdMiners":{"oneOf":[{"type":"number"},{"type":"null"}]},"meanTotalMiners":{"oneOf":[{"type":"number"},{"type":"null"}]},"peak":{"oneOf":[{"type":"object","required":["roundId","share","hdMiners","totalMiners","resetSignature","sampleDig","resetUrl","digUrl"],"properties":{"roundId":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"share":{"type":"number"},"hdMiners":{"type":"integer"},"totalMiners":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"resetSignature":{"oneOf":[{"type":"string"},{"type":"null"}]},"sampleDig":{"oneOf":[{"type":"string"},{"type":"null"}]},"resetUrl":{"oneOf":[{"type":"string"},{"type":"null"}]},"digUrl":{"oneOf":[{"type":"string"},{"type":"null"}]}}},{"type":"null"}]}}}}}},"FeedItem":{"type":"object","required":["signature","blockTime","rig","authority","tier","roundId","lamports","squares","emaEv","txUrl","rigUrl"],"properties":{"signature":{"type":"string"},"blockTime":{"oneOf":[{"type":"integer"},{"type":"null"}]},"rig":{"type":"string"},"authority":{"oneOf":[{"type":"string"},{"type":"null"}]},"tier":{"oneOf":[{"type":"integer"},{"type":"null"}]},"roundId":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"lamports":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"squares":{"type":"integer"},"emaEv":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"txUrl":{"oneOf":[{"type":"string"},{"type":"null"}]},"rigUrl":{"oneOf":[{"type":"string"},{"type":"null"}]}}},"ErrorRange":{"type":"string","enum":["heads_down","p256-introspect","sgt-verify","builtin","unknown"]},"Skips":{"type":"object","required":["filter","total","histogram","items","nextCursor"],"properties":{"filter":{"type":"object","required":["rig","error"],"properties":{"rig":{"oneOf":[{"type":"string"},{"type":"null"}]},"error":{"oneOf":[{"type":"integer"},{"type":"null"}]}}},"total":{"type":"integer"},"histogram":{"type":"array","items":{"type":"object","required":["code","name","range","label","count"],"properties":{"code":{"type":"integer"},"name":{"type":"string"},"range":{"$ref":"#/components/schemas/ErrorRange"},"label":{"type":"string"},"count":{"type":"integer"}}}},"items":{"type":"array","items":{"type":"object","required":["signature","slot","blockTime","rig","roundId","error","name","range","label","txUrl"],"properties":{"signature":{"type":"string"},"slot":{"type":"integer"},"blockTime":{"oneOf":[{"type":"integer"},{"type":"null"}]},"rig":{"type":"string"},"roundId":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"error":{"type":"integer"},"name":{"type":"string"},"range":{"$ref":"#/components/schemas/ErrorRange"},"label":{"type":"string"},"txUrl":{"oneOf":[{"type":"string"},{"type":"null"}]}}}},"nextCursor":{"oneOf":[{"type":"string"},{"type":"null"}]}}},"RigShifts":{"type":"object","required":["rig","shifts"],"properties":{"rig":{"type":"string"},"shifts":{"type":"array","items":{"type":"object","required":["shiftId","endedAt","darkRounds","roundsDug","reason","mode","signature"],"properties":{"shiftId":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"endedAt":{"oneOf":[{"type":"integer"},{"type":"null"}]},"darkRounds":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"roundsDug":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"reason":{"type":"integer"},"mode":{"oneOf":[{"type":"integer"},{"type":"null"}]},"signature":{"type":"string"}}}}}},"HaulSummary":{"type":"object","required":["rig","shift_id","mode","start_ts","end_ts","start_round","end_round","rounds","dark_rounds","rounds_dug","sol_placed_lamports","fees_lamports","ore_mined_atoms","effective_lamports_per_ore","market_lamports_per_ore","market_source","streak_before","streak_after","break_reason","first_pickup_ts","simulated","explorer"],"properties":{"rig":{"type":"string"},"shift_id":{"oneOf":[{"type":"integer","minimum":0},{"type":"string","pattern":"^[0-9]{1,20}$"}],"description":"u64: a JSON number up to 2^53, a decimal string above"},"mode":{"type":"string","enum":["night","day","focus_only"]},"start_ts":{"type":"integer"},"end_ts":{"type":"integer"},"start_round":{"oneOf":[{"type":"integer","minimum":0},{"type":"string","pattern":"^[0-9]{1,20}$"}],"description":"u64: a JSON number up to 2^53, a decimal string above"},"end_round":{"oneOf":[{"type":"integer","minimum":0},{"type":"string","pattern":"^[0-9]{1,20}$"}],"description":"u64: a JSON number up to 2^53, a decimal string above"},"rounds":{"type":"array","items":{"type":"object","required":["round_id","dark","dug_mask","winning_square","motherlode","split"],"properties":{"round_id":{"oneOf":[{"type":"integer","minimum":0},{"type":"string","pattern":"^[0-9]{1,20}$"}],"description":"u64: a JSON number up to 2^53, a decimal string above"},"dark":{"type":"boolean"},"dug_mask":{"type":"integer","minimum":0,"maximum":33554431},"winning_square":{"oneOf":[{"type":"integer","minimum":0,"maximum":24},{"type":"null"}]},"motherlode":{"type":"boolean"},"split":{"type":"boolean"}}},"maxItems":4096},"dark_rounds":{"oneOf":[{"type":"integer","minimum":0},{"type":"string","pattern":"^[0-9]{1,20}$"}],"description":"u64: a JSON number up to 2^53, a decimal string above"},"rounds_dug":{"oneOf":[{"type":"integer","minimum":0},{"type":"string","pattern":"^[0-9]{1,20}$"}],"description":"u64: a JSON number up to 2^53, a decimal string above"},"sol_placed_lamports":{"oneOf":[{"type":"integer","minimum":0},{"type":"string","pattern":"^[0-9]{1,20}$"}],"description":"u64: a JSON number up to 2^53, a decimal string above"},"fees_lamports":{"oneOf":[{"type":"integer","minimum":0},{"type":"string","pattern":"^[0-9]{1,20}$"}],"description":"u64: a JSON number up to 2^53, a decimal string above"},"ore_mined_atoms":{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},"effective_lamports_per_ore":{"oneOf":[{"type":"string","pattern":"^[0-9]{1,40}$","description":"non-negative integer as a decimal string"},{"type":"null"}]},"market_lamports_per_ore":{"oneOf":[{"type":"string","pattern":"^[0-9]{1,20}$","description":"u64 as a decimal string (exact)"},{"type":"null"}]},"market_source":{"oneOf":[{"type":"string"},{"type":"null"}]},"streak_before":{"type":"integer"},"streak_after":{"type":"integer"},"break_reason":{"type":"integer"},"first_pickup_ts":{"type":"null","description":"Not observable on chain; the phone fills it locally."},"simulated":{"type":"boolean"},"explorer":{"type":"object","required":["shift_log","sample_digs"],"properties":{"shift_log":{"oneOf":[{"type":"string"},{"type":"null"}]},"sample_digs":{"type":"array","items":{"type":"string"}}}}}},"Milestones":{"type":"object","required":["tzOffsetMinutes","shareWindow","milestones"],"properties":{"tzOffsetMinutes":{"type":"integer"},"shareWindow":{"type":"object","required":["fromHour","toHour","nights"],"properties":{"fromHour":{"type":"integer"},"toHour":{"type":"integer"},"nights":{"type":"integer"}}},"milestones":{"type":"array","items":{"type":"object","required":["id","title","deadline","metrics","manual"],"properties":{"id":{"type":"string","enum":["M1","M2","M3"]},"title":{"type":"string"},"deadline":{"type":"string"},"metrics":{"type":"array","items":{"type":"object","required":["key","label","value","target","stretch","unit"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"value":{"oneOf":[{"type":"number"},{"type":"null"}]},"target":{"type":"number"},"stretch":{"oneOf":[{"type":"number"},{"type":"null"}]},"unit":{"type":"string","enum":["rigs","share"]},"note":{"type":"string"}}}},"manual":{"type":"array","items":{"type":"string"}}}}}}}}}}