Skip to content
API reference Source 9e38b931

Work and system dataLink to this section

TL;DRLink to this section

  • Read accepted Hamster Miner measurements, module health, and observation history without authentication.
  • Use process data to distinguish measured work, Oracle acceptance, optimistic progress, and settlement submission state.
  • Treat missing coverage and unavailable projections as unknown, not zero work or failed settlement.
  • These source-defined endpoints do not establish a live deployment or Mining5 API compatibility.

Endpoints and versionsLink to this section

  • Telemetry: GET /v1/public/telemetry and GET /v1/public/installations/:installationId/telemetry.
  • Modules: GET /v1/public/modules.
  • Observations: GET /v1/public/installations/:installationId/observations.
  • Process: GET /v4/public/process.
  • Statistics: GET /v2/public/stats.

Set API_BASE_URL to the API origin supplied for your integration. Shared timestamp, decimal-string and unit rules are in response conventions.

TelemetryLink to this section

Read the latest accepted measurement for the configured public installation or an installation identity you supply. Acceptance here is not proof that its work has settled on Ethereum.

RequestLink to this section

curl --fail-with-body --include \
  "${API_BASE_URL:?Set API_BASE_URL}/v1/public/telemetry"

curl --fail-with-body --include \
  "${API_BASE_URL:?Set API_BASE_URL}/v1/public/installations/example-installation/telemetry"

ParametersLink to this section

Parameter Meaning
installationId — path string Required only on the installation-specific route; 1–128 characters from A–Z, a–z, 0–9, ., _, :, and -.

The default route uses the configured public installation. Neither handler reads query parameters.

ResponseLink to this section

Complete response schema.

Field and type Meaning
schemaVersion — integer 1; installationId — string Response version and requested installation identity.
revision — string or null Opaque revision of the accepted receipt; null when there is no accepted measurement.
status — online, stale, or offline Receipt-age classification, not hardware connectivity or settlement status.
observedAt, receivedAt — timestamp or null Measurement time and API receipt time.
softwareVersion — string or null Software version reported with the accepted measurement.
measurement — object or null counterEpoch UUID, cumulativeWorkUnits uint256 decimal string, provenance, and coreStatus.
measurement.provenance — enum hardware, simulated, replay, or derived; retain this distinction when displaying work.
measurement.coreStatus — enum IDLE, ACTIVE, or COUNTER_FAULT; this describes measurement state, not the onchain contract.

The structural schema permits nullable fields independently; the producer returns all measurement metadata as null together when status is offline.

Illustrative response with accepted telemetry, not deployed or observed data:

{
  "schemaVersion": 1,
  "installationId": "example-installation",
  "revision": "MQ",
  "status": "online",
  "observedAt": "2026-10-03T12:10:00.000Z",
  "receivedAt": "2026-10-03T12:10:01.000Z",
  "softwareVersion": "1.0.0",
  "measurement": {
    "counterEpoch": "11111111-1111-4111-8111-111111111111",
    "cumulativeWorkUnits": "1",
    "provenance": "hardware",
    "coreStatus": "ACTIVE"
  }
}

Illustrative response without an accepted measurement, not deployed or observed data:

{
  "schemaVersion": 1,
  "installationId": "example-installation",
  "revision": null,
  "status": "offline",
  "observedAt": null,
  "receivedAt": null,
  "softwareVersion": null,
  "measurement": null
}

Freshness and unavailable statesLink to this section

  • A receipt is stale when its receivedAt is more than 120 seconds old; at exactly 120 seconds it remains online.
  • offline means no accepted measurement exists, including for an unknown but syntactically valid installation identity. This returns HTTP 200, not 404.
  • A non-null revision produces a quoted ETag. These handlers do not evaluate If-None-Match or return conditional 304 responses; they also set no route-specific Cache-Control policy.
  • The revision identifies the receipt, not its age classification. The same revision can therefore appear first as online and later as stale.

ErrorsLink to this section

The installation-specific route returns HTTP 400 with error: "invalid_installation_id" for a malformed identity. Neither route rejects extra query parameters; dependency and capacity failures follow common errors.

ModulesLink to this section

Read the public module snapshots for the configured installation. This is a sanitized health view, not an interface for configuring or controlling the Hamster Miner.

RequestLink to this section

curl --fail-with-body --include \
  "${API_BASE_URL:?Set API_BASE_URL}/v1/public/modules"

ParametersLink to this section

This route has no path parameters and reads no query parameters. It always uses the configured public installation.

ResponseLink to this section

Complete response schema.

Field and type Meaning
schemaVersion — integer 1; installationId — string Envelope version and configured installation identity.
modules — array of objects Stored module snapshots; an empty array means no stored snapshots.
modules[].instanceId, moduleType, driverId — strings Module instance, type, and driver identities.
modules[].moduleVersion — version string; schemaVersion — positive integer Module version and module payload schema version, distinct from the envelope version.
modules[].state — enum disabled, starting, ready, degraded, faulted, or stopped.
modules[].observedAt — timestamp; provenance — enum Snapshot time and hardware, simulated, replay, or derived origin.
modules[].health — object The public producer emits only checkedAt, a timestamp. The structural schema also permits optional nullable message and code.
modules[].data — object The public producer emits {}; module-specific data is stripped.

Sanitization also removes configuration version, enabled flags, and resource details. Do not infer those values from the public schema's generic object shapes.

Illustrative response, not deployed or observed data:

{
  "schemaVersion": 1,
  "installationId": "example-installation",
  "modules": [
    {
      "instanceId": "example-module",
      "moduleType": "example-sensor",
      "driverId": "example-driver",
      "moduleVersion": "1.0.0",
      "schemaVersion": 1,
      "state": "ready",
      "observedAt": "2026-10-03T12:10:00.000Z",
      "provenance": "hardware",
      "health": { "checkedAt": "2026-10-03T12:10:00.000Z" },
      "data": {}
    }
  ]
}

Freshness and unavailable statesLink to this section

There is no aggregate availability flag or age-based state conversion. Read observedAt and health.checkedAt; a stored ready state is not a guarantee of current connectivity.

The handler sets no ETag, conditional 304 behavior, or route-specific cache policy. An empty modules array is a normal HTTP 200 response, not a dependency-error fallback.

ErrorsLink to this section

The handler performs no query validation and has no route-specific client error. Dependency and capacity failures follow common errors; they are not converted into an empty module list.

ObservationsLink to this section

Page through accepted telemetry observations for an installation in ascending receipt order. These are measurement receipts, not a list of settled rounds or Ethereum transactions.

RequestLink to this section

curl --fail-with-body --include \
  "${API_BASE_URL:?Set API_BASE_URL}/v1/public/installations/example-installation/observations?limit=20"

For the next page, pass the returned nextCursor as the cursor query parameter without interpreting or modifying it.

ParametersLink to this section

Parameter Meaning
installationId — path string Required; the same 1–128-character identifier syntax as Telemetry.
cursor — optional query string Opaque exclusive cursor: only receipts after it are returned. Omit it for the beginning of the history.
limit — optional query value Defaults to 100; integer inputs are clamped to 1–100. Noninteger or nonnumeric inputs use 100.

The limit parser first applies JavaScript Number conversion, not a strict decimal-integer grammar. Thus limit=0 or an empty value becomes 1, limit=101 becomes 100, and limit=2.5 uses 100 rather than rounding or returning an error.

The handler reads cursor and limit without enforcing an allowlist or uniqueness for query names. Avoid repeated parameters rather than relying on them as a portable interface.

ResponseLink to this section

Complete response schema.

Field and type Meaning
schemaVersion — integer 1; installationId — string Envelope version and requested installation identity.
items — array of observations Accepted receipts in ascending cursor order, at most the effective limit.
items[].cursor — string; telemetryId, bootId, counterEpoch — UUID strings Pagination identity, telemetry identity, boot identity, and measurement-counter epoch.
items[].installationId — string; sequence — nonnegative integer Receipt's installation identity and telemetry sequence.
items[].observedAt, receivedAt — timestamps Measurement time and receipt time.
items[].cumulativeWorkUnits — uint256 decimal string Cumulative counter value in the stated epoch, not work settled by this receipt.
items[].provenance — enum; softwareVersion — string hardware, simulated, replay, or derived origin and reported software version.
nextCursor — string or null Last returned item's cursor only when another item exists; null at the current end.

Cursor ordering, installation consistency, and the relationship between nextCursor and the page are producer rules beyond the structural schema. nextCursor: null does not promise that no later observations will arrive.

Illustrative response

This complete one-item page is illustrative, not deployed or observed data.

{
  "schemaVersion": 1,
  "installationId": "example-installation",
  "items": [
    {
      "cursor": "MQ",
      "telemetryId": "22222222-2222-4222-8222-222222222222",
      "installationId": "example-installation",
      "bootId": "33333333-3333-4333-8333-333333333333",
      "sequence": 1,
      "observedAt": "2026-10-03T12:10:00.000Z",
      "receivedAt": "2026-10-03T12:10:01.000Z",
      "counterEpoch": "11111111-1111-4111-8111-111111111111",
      "cumulativeWorkUnits": "1",
      "provenance": "hardware",
      "softwareVersion": "1.0.0"
    }
  ],
  "nextCursor": null
}

Freshness and unavailable statesLink to this section

The route has no stale or unavailable response variant. No matching accepted receipts, including for an unknown valid installation identity, produces items: [] and nextCursor: null with HTTP 200.

The handler sets no ETag, conditional 304 behavior, or route-specific cache policy. Receipt timestamps describe the records; a successful request does not imply recent activity.

ErrorsLink to this section

Malformed installation identities return HTTP 400 with error: "invalid_installation_id"; an undecodable observation cursor returns HTTP 400 with error: "invalid_cursor". The cursor must decode to a positive decimal receipt position, but clients should treat returned cursors as opaque.

Out-of-range and noninteger limits are normalized as described above, not rejected. See common errors for dependency and capacity failures.

ProcessLink to this section

Read measurement freshness, optimistic work progress, Oracle validation, and the settlement queue together. An optimistic completed Squeek block is not an Ethereum-confirmed settlement or an SQK reward allocation.

RequestLink to this section

curl --fail-with-body --include \
  "${API_BASE_URL:?Set API_BASE_URL}/v4/public/process"

ParametersLink to this section

No path or query parameters are accepted. The route uses the configured public installation and rejects every query parameter, including an empty-valued parameter.

For conditional polling, send the previous response's quoted ETag in If-None-Match.

ResponseLink to this section

Complete response schema.

Field and type Meaning
schemaVersion — integer 4; installationId — string Response version and configured installation identity.
revision — string; generatedAt — timestamp Opaque snapshot revision and generation time.
measurement — object or null Accepted measurement with freshness, timestamps, staleAfterSeconds: 120, counter epoch, uint64 decimal cumulativeWorkUnits, provenance, measurement status, and numeric motion values.
measurement.rpmMilli, speedMmPerSecond, distanceMm — nonnegative safe integers Milli-RPM, millimetres per second, and millimetres; these are JSON numbers, unlike work counters.
builder — available or unavailable object Available: anchor, queued, and projected. Unavailable: status and reason only.
builder.anchor — object Settled frontier: round, cumulative work, block height, current work, work per block, and nullable confirmation timestamp and transaction hash.
builder.queued — object Decimal-string closedRoundCount, closedWorkUnits, and openRoundWorkUnits; the builder projects both closed and open work.
builder.projected — object lifecycle: "optimistic", cumulative work, block height, current work, work per block, nullable first/last completed blocks, and completed-block count.
oracle — object state, nullable reason, nullable latestAcceptedAt, and nullable latestClosure with inclusive round bounds, count, and acceptance time.
settlementQueue — available or unavailable object Available: state, enablement flags, buffered rounds, optimistic projection, incident state, nullable last run, and nullable latest submission. Unavailable: status and reason only.
settlementQueue.buffered — object Nullable first/last round plus decimal-string round count, active-round count, and work units. The queue projects closed rounds only.
settlementQueue.latestSubmission — object or null Submission UUID, lifecycle, previous/new frontier, round counts, expected result, nullable transaction hash, lifecycle timestamps, and nullable outcome code. See the schema for every required field.

All process round and work quantities are decimal strings. Cumulative projected and anchor work use uint256; round IDs, work-per-block values, and block counters use uint64, with work per block strictly positive.

The structural download does not express all cross-field rules:

  • Completed-block bounds exist for a nonzero completed-block count and describe an inclusive suffix ending at the projected block height; currentWork remains below workPerBlock.
  • Closure and buffered round counts match inclusive bounds. Submission roundCount equals the new frontier minus the previous frontier; activeRoundCount cannot exceed that count or 16.
  • Oracle latestAcceptedAt is null exactly when unavailable; accepted/stale validation has no reason, while blocked/unavailable validation has one.
  • A queue is blocked exactly when blockedReason is non-null. Active queue states match the latest submission lifecycle; empty has zero buffered rounds and ready has positive buffered rounds, even if those rounds contain zero work.
  • Submitted, confirmed, and reverted submissions have submittedAt; terminal lifecycles have terminalAt; only confirmed submissions have confirmedAt. Reverts and supersessions have matching outcome codes; nonterminal submissions have none.
Illustrative response

This complete available response is illustrative, not deployed or observed data. One closed round is accepted and ready; its work is still optimistic relative to the settled anchor.

{
  "schemaVersion": 4,
  "installationId": "example-installation",
  "revision": "example-process-revision",
  "generatedAt": "2026-10-03T12:11:00.000Z",
  "measurement": {
    "freshness": "online",
    "observedAt": "2026-10-03T12:10:00.000Z",
    "receivedAt": "2026-10-03T12:10:01.000Z",
    "staleAfterSeconds": 120,
    "counterEpoch": "11111111-1111-4111-8111-111111111111",
    "cumulativeWorkUnits": "1",
    "provenance": "hardware",
    "coreStatus": "IDLE",
    "rpmMilli": 0,
    "speedMmPerSecond": 0,
    "distanceMm": 0
  },
  "builder": {
    "status": "available",
    "anchor": {
      "settledThroughRound": "0",
      "cumulativeWork": "0",
      "blockHeight": "0",
      "currentWork": "0",
      "workPerBlock": "10",
      "confirmedAt": null,
      "transactionHash": null
    },
    "queued": { "closedRoundCount": "1", "closedWorkUnits": "1", "openRoundWorkUnits": "0" },
    "projected": {
      "lifecycle": "optimistic",
      "cumulativeWork": "1",
      "blockHeight": "0",
      "currentWork": "1",
      "workPerBlock": "10",
      "firstCompletedBlock": null,
      "lastCompletedBlock": null,
      "completedBlockCount": "0"
    }
  },
  "oracle": {
    "state": "accepted",
    "reason": null,
    "latestAcceptedAt": "2026-10-03T12:10:01.000Z",
    "latestClosure": {
      "firstRound": "1",
      "lastRound": "1",
      "roundCount": "1",
      "acceptedAt": "2026-10-03T12:10:01.000Z"
    }
  },
  "settlementQueue": {
    "status": "available",
    "state": "ready",
    "settlementEnabled": true,
    "reporterEnvironmentEnabled": true,
    "buffered": {
      "firstRound": "1",
      "lastRound": "1",
      "roundCount": "1",
      "activeRoundCount": "1",
      "workUnits": "1"
    },
    "projected": {
      "lifecycle": "optimistic",
      "cumulativeWork": "1",
      "blockHeight": "0",
      "currentWork": "1",
      "workPerBlock": "10",
      "firstCompletedBlock": null,
      "lastCompletedBlock": null,
      "completedBlockCount": "0"
    },
    "incidentOpen": false,
    "blockedReason": null,
    "lastRun": {
      "startedAt": "2026-10-03T12:10:20.000Z",
      "finishedAt": "2026-10-03T12:10:30.000Z",
      "result": "no_new_rounds"
    },
    "latestSubmission": null
  }
}

Illustrative response without measurement or an available settlement frontier, not deployed or observed data:

{
  "schemaVersion": 4,
  "installationId": "example-installation",
  "revision": "example-unavailable-revision",
  "generatedAt": "2026-10-03T12:11:00.000Z",
  "measurement": null,
  "builder": { "status": "unavailable", "reason": "no_measurement" },
  "oracle": {
    "state": "unavailable",
    "reason": "no_measurement",
    "latestAcceptedAt": null,
    "latestClosure": null
  },
  "settlementQueue": { "status": "unavailable", "reason": "oracle_head_unavailable" }
}

Freshness and unavailable statesLink to this section

  • Measurement becomes stale more than 120 seconds after receipt. An absent measurement is null; an old measurement remains present with freshness: "stale".
  • Builder unavailability reasons are no_measurement, counter_fault, counter_epoch_unapproved, round_projection_gap, and oracle_head_unavailable. Stale measurement alone does not disable the builder.
  • Oracle state is accepted, stale, blocked, or unavailable. Accepted measurement is distinct from accepted closed-round coverage and from settlement.
  • Queue unavailability reasons are oracle_head_unavailable, round_projection_gap, and round_ineligible. Available states are disabled, empty, ready, preparing, submitted, retrying, blocked, and stale.
  • Queue state gives blocking conditions precedence over disablement, then stale Reporter status, active submission lifecycle, and finally ready/empty. Reporter status is stale when settlement is enabled and no completed run exists, its completion is over 600 seconds old, or a newer run remains unfinished.

HTTP 200 can contain unavailable subviews. The server normally reuses a shared snapshot for up to one second; relevant writes invalidate it, and concurrent readers share a computation.

Responses carry ETag and Cache-Control: public, max-age=0, must-revalidate. A matching If-None-Match returns bodyless HTTP 304; the matcher accepts the exact tag, its weak form, comma-separated candidates, or *.

The revision reflects source and freshness state, not generatedAt alone. A newly generated snapshot can therefore retain the same revision and return 304.

ErrorsLink to this section

Any query parameter returns HTTP 400 with error: "invalid_query". Unavailable builder, Oracle, or queue state is response data, not an HTTP error; dependency and capacity failures follow common errors.

StatisticsLink to this section

Read accepted-round activity, measured distance, lifetime work, and settlement submission statistics over seven or thirty universal days. Activity uses accepted rounds, not the process builder's optimistic open-round work; lifetime settled work is a separate value.

RequestLink to this section

curl --fail-with-body --include \
  "${API_BASE_URL:?Set API_BASE_URL}/v2/public/stats?range=7d"

ParametersLink to this section

Parameter Meaning
range — required query enum Exactly one 7d or 30d; no default.
If-None-Match — optional request header Previously returned ETag for conditional polling.

The query must contain exactly one parameter named range. Extra parameters, repeated parameters, missing values, and other range values are rejected.

ResponseLink to this section

Complete response schema.

Field and type Meaning
schemaVersion — integer 2; installationId, revision — strings Response version, configured installation, and opaque revision.
generatedAt — timestamp; range — enum; timezone — UTC Generation time and selected range.
window — object Start/end timestamps, day count 7 or 30, bucketSeconds: 1800, and roundSeconds: 600.
lifetime — object Decimal-string accepted work, observed distance, settled block count, settlement count, and settled work; numeric active-day count and coverage basis points; first observed timestamp. No minted-token amount.
activity — object provenance: "accepted_rounds", coverage counts/basis points, summary aggregates, daily data, and a typical day.
activity.days — 7 or 30 objects Date, coverage counts/basis points, observed work, nullable distance, and exactly 48 half-hour buckets per day.
activity.days[].buckets[] — object Numeric startMinuteUtc, coverage enum, numeric observed-round count 0–3, and nullable decimal-string work.
activity.typicalDay — 48 objects Ordered half-hour slots with total work, numeric observed-day count, and nullable meanWorkMilli; only complete daily buckets contribute.
records — object of nullable records Half-hour/day work, distance, motion, active-window and active-day-streak records; each non-null record has decimal-string value, timestamp occurredAt, and complete/partial coverage.
blocks — available or unavailable object Completion statistics or an unavailability reason. This pinned producer returns completion_boundaries_unavailable.
rounds — object Numeric observed, active, zero-work and missing counts, numeric active-rate basis points, and nullable decimal-string active-work aggregates.
oracle — available or unavailable object Available: coverage boundary, window completeness, submission/outcome counts, rates, and nullable numeric millisecond latency percentiles. Unavailable: reason.

Universal days run from noon UTC to the next noon and use the first noon's calendar date as their label. Each day's buckets remain in UTC-clock order (0, 30, …, 1410): slots before noon belong to the following calendar date within that universal day.

The structural schema does not express all aggregate relationships:

  • Day count and array length match range; dates are consecutive, the first day's noon equals window.startAt, the final day contains generatedAt, and window.endAt equals generatedAt.
  • Complete buckets contain three rounds; partial buckets contain one or two. Both have explicit work, including "0" for observed zero work; missing/future buckets contain no rounds and null work.
  • Daily totals sum buckets; response totals sum days. Coverage is the floored observed/expected ratio in basis points, or zero when expected count is zero; complete is true exactly at 10000.
  • Inactive days count only fully covered zero-work days, not missing days. Typical-day means use complete buckets only; work means with a Milli suffix are scaled by 1000.
  • Active plus zero-work rounds equals observed rounds; missing rounds equal expected minus observed. Lifetime totals cannot be below selected-range totals.
  • Oracle terminal outcomes cannot exceed submission count; outcome rates use submission count, coverage completeness follows its boundary timestamp, and the 90th percentile cannot be below the median.

The complete illustrative response below shows an initialized view with no accepted history at the start of its current universal day. It deliberately uses missing coverage and null aggregates rather than pretending the installation performed zero work throughout the range.

Illustrative response

This complete response is illustrative, not deployed or observed data.

{
  "schemaVersion": 2,
  "installationId": "example-installation",
  "revision": "example-stats-revision",
  "generatedAt": "2026-10-03T12:00:00.000Z",
  "range": "7d",
  "timezone": "UTC",
  "window": {
    "startAt": "2026-09-27T12:00:00.000Z",
    "endAt": "2026-10-03T12:00:00.000Z",
    "dayCount": 7,
    "bucketSeconds": 1800,
    "roundSeconds": 600
  },
  "lifetime": {
    "acceptedWorkUnits": "0",
    "observedDistanceMm": "0",
    "activeDayCount": 0,
    "settledBlockCount": "0",
    "settlementCount": "0",
    "settledWorkUnits": "0",
    "coverageBps": 0,
    "firstObservedAt": "2026-10-03T12:00:00.000Z"
  },
  "activity": {
    "provenance": "accepted_rounds",
    "coverage": {
      "expectedRoundCount": 864,
      "observedRoundCount": 0,
      "coverageBps": 0,
      "complete": false
    },
    "summary": {
      "observedWorkUnits": "0",
      "observedDistanceMm": "0",
      "activeDayCount": 0,
      "inactiveDayCount": 0,
      "averageWorkPerActiveDayMilli": null,
      "medianWorkPerActiveDay": null,
      "averageDistancePerActiveDayMm": null,
      "mostActiveDate": null,
      "mostActiveDateWorkUnits": null,
      "peakWindowStartMinuteUtc": null
    },
    "days": [
      {
        "date": "2026-09-27",
        "coverage": {
          "expectedRoundCount": 144,
          "observedRoundCount": 0,
          "coverageBps": 0
        },
        "observedWorkUnits": "0",
        "distanceMm": null,
        "buckets": [
          {"startMinuteUtc":0,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":30,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":60,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":90,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":120,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":150,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":180,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":210,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":240,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":270,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":300,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":330,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":360,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":390,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":420,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":450,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":480,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":510,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":540,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":570,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":600,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":630,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":660,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":690,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":720,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":750,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":780,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":810,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":840,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":870,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":900,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":930,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":960,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":990,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1020,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1050,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1080,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1110,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1140,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1170,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1200,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1230,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1260,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1290,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1320,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1350,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1380,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1410,"coverage":"missing","observedRoundCount":0,"workUnits":null}
        ]
      },
      {
        "date": "2026-09-28",
        "coverage": {
          "expectedRoundCount": 144,
          "observedRoundCount": 0,
          "coverageBps": 0
        },
        "observedWorkUnits": "0",
        "distanceMm": null,
        "buckets": [
          {"startMinuteUtc":0,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":30,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":60,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":90,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":120,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":150,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":180,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":210,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":240,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":270,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":300,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":330,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":360,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":390,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":420,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":450,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":480,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":510,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":540,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":570,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":600,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":630,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":660,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":690,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":720,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":750,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":780,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":810,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":840,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":870,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":900,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":930,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":960,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":990,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1020,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1050,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1080,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1110,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1140,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1170,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1200,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1230,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1260,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1290,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1320,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1350,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1380,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1410,"coverage":"missing","observedRoundCount":0,"workUnits":null}
        ]
      },
      {
        "date": "2026-09-29",
        "coverage": {
          "expectedRoundCount": 144,
          "observedRoundCount": 0,
          "coverageBps": 0
        },
        "observedWorkUnits": "0",
        "distanceMm": null,
        "buckets": [
          {"startMinuteUtc":0,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":30,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":60,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":90,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":120,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":150,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":180,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":210,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":240,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":270,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":300,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":330,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":360,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":390,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":420,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":450,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":480,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":510,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":540,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":570,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":600,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":630,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":660,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":690,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":720,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":750,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":780,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":810,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":840,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":870,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":900,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":930,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":960,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":990,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1020,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1050,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1080,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1110,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1140,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1170,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1200,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1230,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1260,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1290,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1320,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1350,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1380,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1410,"coverage":"missing","observedRoundCount":0,"workUnits":null}
        ]
      },
      {
        "date": "2026-09-30",
        "coverage": {
          "expectedRoundCount": 144,
          "observedRoundCount": 0,
          "coverageBps": 0
        },
        "observedWorkUnits": "0",
        "distanceMm": null,
        "buckets": [
          {"startMinuteUtc":0,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":30,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":60,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":90,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":120,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":150,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":180,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":210,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":240,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":270,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":300,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":330,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":360,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":390,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":420,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":450,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":480,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":510,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":540,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":570,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":600,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":630,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":660,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":690,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":720,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":750,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":780,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":810,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":840,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":870,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":900,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":930,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":960,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":990,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1020,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1050,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1080,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1110,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1140,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1170,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1200,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1230,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1260,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1290,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1320,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1350,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1380,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1410,"coverage":"missing","observedRoundCount":0,"workUnits":null}
        ]
      },
      {
        "date": "2026-10-01",
        "coverage": {
          "expectedRoundCount": 144,
          "observedRoundCount": 0,
          "coverageBps": 0
        },
        "observedWorkUnits": "0",
        "distanceMm": null,
        "buckets": [
          {"startMinuteUtc":0,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":30,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":60,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":90,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":120,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":150,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":180,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":210,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":240,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":270,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":300,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":330,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":360,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":390,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":420,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":450,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":480,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":510,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":540,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":570,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":600,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":630,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":660,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":690,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":720,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":750,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":780,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":810,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":840,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":870,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":900,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":930,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":960,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":990,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1020,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1050,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1080,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1110,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1140,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1170,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1200,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1230,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1260,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1290,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1320,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1350,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1380,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1410,"coverage":"missing","observedRoundCount":0,"workUnits":null}
        ]
      },
      {
        "date": "2026-10-02",
        "coverage": {
          "expectedRoundCount": 144,
          "observedRoundCount": 0,
          "coverageBps": 0
        },
        "observedWorkUnits": "0",
        "distanceMm": null,
        "buckets": [
          {"startMinuteUtc":0,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":30,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":60,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":90,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":120,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":150,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":180,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":210,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":240,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":270,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":300,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":330,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":360,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":390,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":420,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":450,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":480,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":510,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":540,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":570,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":600,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":630,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":660,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":690,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":720,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":750,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":780,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":810,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":840,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":870,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":900,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":930,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":960,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":990,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1020,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1050,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1080,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1110,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1140,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1170,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1200,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1230,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1260,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1290,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1320,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1350,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1380,"coverage":"missing","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1410,"coverage":"missing","observedRoundCount":0,"workUnits":null}
        ]
      },
      {
        "date": "2026-10-03",
        "coverage": {
          "expectedRoundCount": 0,
          "observedRoundCount": 0,
          "coverageBps": 0
        },
        "observedWorkUnits": "0",
        "distanceMm": null,
        "buckets": [
          {"startMinuteUtc":0,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":30,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":60,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":90,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":120,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":150,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":180,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":210,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":240,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":270,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":300,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":330,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":360,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":390,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":420,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":450,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":480,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":510,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":540,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":570,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":600,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":630,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":660,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":690,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":720,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":750,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":780,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":810,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":840,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":870,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":900,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":930,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":960,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":990,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1020,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1050,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1080,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1110,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1140,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1170,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1200,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1230,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1260,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1290,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1320,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1350,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1380,"coverage":"future","observedRoundCount":0,"workUnits":null},
          {"startMinuteUtc":1410,"coverage":"future","observedRoundCount":0,"workUnits":null}
        ]
      }
    ],
    "typicalDay": [
      {"startMinuteUtc":0,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":30,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":60,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":90,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":120,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":150,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":180,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":210,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":240,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":270,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":300,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":330,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":360,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":390,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":420,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":450,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":480,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":510,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":540,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":570,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":600,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":630,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":660,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":690,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":720,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":750,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":780,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":810,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":840,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":870,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":900,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":930,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":960,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":990,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1020,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1050,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1080,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1110,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1140,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1170,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1200,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1230,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1260,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1290,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1320,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1350,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1380,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null},
      {"startMinuteUtc":1410,"totalWorkUnits":"0","observedDayCount":0,"meanWorkMilli":null}
    ]
  },
  "records": {
    "mostWorkHalfHour": null,
    "mostWorkUtcDay": null,
    "maximumDailyDistanceMm": null,
    "peakObservedRpmMilli": null,
    "peakObservedSpeedMmPerSecond": null,
    "longestActiveWindowMinutes": null,
    "longestActiveDayStreak": null
  },
  "blocks": {
    "status": "unavailable",
    "reason": "completion_boundaries_unavailable"
  },
  "rounds": {
    "observedCount": 0,
    "activeCount": 0,
    "zeroWorkCount": 0,
    "missingCount": 864,
    "activeRateBps": 0,
    "averageActiveWorkMilli": null,
    "medianActiveWork": null,
    "p90ActiveWork": null,
    "mostActiveWork": null
  },
  "oracle": {
    "status": "unavailable",
    "reason": "projection_not_initialized"
  }
}

Freshness and unavailable statesLink to this section

There is no top-level status. Missing activity stays explicit in coverage, while blocks and oracle can independently be unavailable in an HTTP 200 response.

The block schema permits completion_boundaries_unavailable or insufficient_history; the pinned producer always returns the former. Oracle reasons are projection_not_initialized and insufficient_history; an available Oracle object can still have completeForWindow: false.

The server normally caches each range for 30 seconds. While any statistics computation is active, a request can receive an older cached result for its range; if no cached result exists for that range, it receives database_busy instead.

Responses carry ETag and Cache-Control: public, max-age=0, must-revalidate. Matching If-None-Match returns bodyless HTTP 304, using the same exact/weak/list/* matching as Process; a returned tag may describe a reused or older cached result, not a fresh recomputation.

Read generatedAt and coverage rather than treating receipt time as data freshness. A newly computed statistics revision includes its window end/generation time, so it can change even when no new measurements arrive.

ErrorsLink to this section

  • HTTP 400, error: "invalid_query": missing, repeated, extra, or invalid query parameters.
  • HTTP 503, error: "database_busy": a statistics computation is already active and this range has no cached result. Carries Retry-After: 2 and Cache-Control: no-store.
  • HTTP 503, error: "public_stats_rebuilding": required statistics projections are incomplete. Carries Retry-After: 2 and Cache-Control: no-store.

Failures while computing a replacement are not turned into successful empty statistics. See common errors for other dependency and capacity failures.

SourceLink to this section

Based on system/API source 9e38b931. Schema downloads describe response structure; the cross-field and producer rules above also apply. This is not deployment evidence or Mining5 compatibility; see source and release scope.