---
title: "GET /diagnostics/network"
method: GET
path: "/diagnostics/network"
tags: ["system"]
---

# GET /diagnostics/network

`GET /diagnostics/network`

## Request

- The document declares no server URL.
- Auth: one of:
  - API key in query parameter `auth`
  - API key in header `Authorization`

## Response `200`

State, budget and drop counters of the independent network-library log; `availability` is `notConfigured` when the daemon runs without it

- NetworkLogStatusEnvelope: Canonical success envelope: `{ "data": T, "ts": <unix millis i64> }`. `ts` is `chrono::Utc::now().timestamp_millis()`, set in the webserver handler via [`ApiEnvelope::now`] (the contract carries only the type + the clock helper, not a hard dependency on when the handler reads the clock). `rename_all = "camelCase"` is a no-op for the single-word fields here but is declared for forward-compat. IMPORTANT (utoipa v4): every concrete `ApiEnvelope<X>` that needs a named OpenAPI component is declared in the `#[aliases(...)]` block below. Add a new alias line whenever a new payload type needs enveloping. NEVER register the bare `ApiEnvelope` in `components(schemas(...))` — utoipa errors on a bare generic, and an un-aliased generic inlines an anonymous schema.
  - `data` NetworkLogStatusDto, required: State, budget and drop information of the network-library log. Only the `availability` field is present when the log is not configured.
    - `availability` 'notConfigured' | 'configured', required: Whether this process records the network-library log at all. `NotConfigured` is a statement about configuration, never "no network activity".
    - `budget` NetworkLogBudgetDto: Capacity the daemon passed to the Engine. Byte and count values are decimal strings, like every other counter on this API.
      - `fileBytes` string, required
      - `queueRecords` string, required
      - `recordBytes` string, required
      - `retentionSeconds` string, required
      - `rootBytes` string, required
      - `runBytes` string, required
    - `captureId` string, nullable: Identifier of the open detailed window, needed to stop it. The Engine does not report it; the daemon remembers the one its own start call returned.
    - `captureLinkFailure` 'startFailed' | 'stopFailed'
    - `counters` NetworkLogCountersDto: Monotonic counters of this run. A missing or zero counter never proves the network was quiet: compare the drop counters before reading an empty log.
      - `accepted` string, required
      - `closedDropped` string, required
      - `oversized` string, required
      - `pathRecovered` string, required
      - `policyFiltered` string, required
      - `queueDropped` string, required
      - `rateLimited` string, required
      - `rotatedOutFiles` string, required
      - `unreviewedCallsites` string, required
      - `writeFailed` string, required
      - `written` string, required
    - `detailedRemainingMs` integer, nullable
    - `libraries` NetworkLibraryStatusDto[], required
      - `approvedRules` integer, required
      - `library` string, required
      - `observedRecords` string, required
      - `versionDir` string, nullable
    - `mode` 'standard' | 'detailed'
    - `role` 'daemon' | 'mobileApp' | 'keyboardExtension' | 'shareExtension' | 'backgroundService'
    - `runId` string, nullable
    - `sampledAtUtc` string, nullable
    - `state` 'starting' | 'ready' | 'unavailable' | 'closed'
  - `ts` integer, required: Server time when the response was built (unix epoch milliseconds).

## Other responses

- `503`: Local Engine diagnostics unavailable

## Changes

- **2026-10-20** `4f98bb5824b9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/uniclipboard/apis/uniclipboard-daemon-api/changes/diagnostics/network/get.md)

---

[API](https://skmtc.dev/uniclipboard/apis/uniclipboard-daemon-api.md) - [All operations](https://skmtc.dev/uniclipboard/apis/uniclipboard-daemon-api/llms.txt) - [OpenAPI document](https://skmtc.dev/uniclipboard/apis/uniclipboard-daemon-api/revisions/48a01cf04e4c?raw)
