print-agent

Telemetry

The live SNMP link (Frederick, 2026-09-30): the agent posts one snapshot per change, plus a heartbeat every ten minutes -- see print_agent.py's own polling loop. Read-only toward the printer: this route never sends the agent anything to act on.

⛔AUTH RUNS AS A DEPENDENCY (_require_agent), NOT A CALL INSIDE THIS BODY -- fixed 2026-09-30, main red since #2555/#2584. An anonymous POST used to answer 422 (missing body) before _agent(conn, authorization) ever ran, because FastAPI validates the Pydantic body in the same pass as an ordinary handler statement only gets to run AFTER -- see _require_agent's own docstring. The returned Agent is unused here (same as every other print-agent route's own _agent(...) call site that ignores the return past auth, except claim/report/heartbeat, which read .name/.capabilities off it) -- this route's whole contract is the snapshot, never anything scoped by which agent posted it.

404 for a host equipment_endpoints has no row for; 409 when more than one equipment row claims it (AmbiguousTelemetryHost -- refusing rather than inventing which machine an address belongs to).

⛔ATOMIC, AND ACTS ONLY AFTER COMMIT (Fable's design review of PR #2555, R16). ingest_snapshot itself does around ten writes on this same connection with no transaction of its own -- wrapping the WHOLE call here means a failure partway through rolls back cleanly instead of leaving, say, an issue filed with no matching machine_telemetry row. The Slack DM only fires once that transaction has actually committed, using the OUTCOME the call returned, never from inside it.

post/api/print/agent/telemetry

Request

  • Base URL: https://api.pigeonly.com (the document declares no server; this is the origin it was published from)
  • URL: https://api.pigeonly.com/api/print/agent/telemetry
  • Auth: none declared

Headers

authorizationstring nullable

Request body

hoststring required
reachableboolean
device_statusinteger nullable
printer_statusinteger nullable
error_state_bitsinteger nullable
lifetime_pagesinteger nullable
suppliesobject
serial_numberstring nullable
agent_versionstring nullable

Response

Successful Response

object required

Changes

No recorded changes to this operation across all 1 revision of this API.