analytics

Post Camera Health Recheck

The Camera Health tab's "Re-check cameras" button: ask every in-scope motion_clip camera for a fresh health sample now instead of at the next hourly tick.

Exactly the tab's own scope, by construction: the same filter checks as the GET above (one shared helper), and the same TenantScope handed to the service, which bounds the write with the very predicate list the read uses. Whoever can see a camera on the tab can re-check it, and nobody can re-check a camera they cannot see.

Who may press it is NARROWER than who may read the tab: the require_camera_health_recheck role allowlist above (ops-view's canMutate) refuses the end-customer logins and read_only, which the GET admits. What an admitted caller may reach is NOT narrower: once past the role gate the scope is the tab's own, so a site manager re-checks only its granted sites. Not activity-logged: a re-check changes no configuration, it only asks for one more sample, and the service's per-camera cooldown bounds how many.

post/analytics/camera-health/recheck

Request

  • Base URL
    https://api.verdun.ai (the document declares no server; this is the origin it was published from)
  • URL
    https://api.verdun.ai/analytics/camera-health/recheck
  • Auth
    HTTP bearer

Request body

parent_idstring uuid nullable

Re-check only this client's cameras. A client outside the caller's grants is a 403, never a silent no-op.

site_idstring uuid nullable

Re-check only this site's cameras. A site outside a site-narrowed caller's grants is a 403.

Example request

{
  "parent_id": "11111111-1111-1111-1111-111111111111",
  "site_id": "33333333-3333-3333-3333-333333333333"
}

Response

Successful Response

requested_atstring date-time required

The server time stamped on every camera this call requested. Matches health_sample_requested_at on those rows in the next GET /analytics/camera-health.

requestedinteger required

motion_clip cameras asked for a sample by this call. The ingestor picks the request up on its next config poll (about 30 s) and posts one on-demand sample.

already_pendinginteger required

motion_clip cameras already asked within the last cooldown_seconds. Left as they were: one sample per camera per cooldown window, however many times anyone clicks.

unsupportedinteger required

In-scope cameras that cannot take an on-demand sample because they are not motion_clip (continuous ingest has no health sampler).

cooldown_secondsinteger required

The cooldown window, in seconds. Same value as recheck_cooldown_seconds on GET /analytics/camera-health.

Example response

{
  "requested": 12,
  "already_pending": 3,
  "unsupported": 2,
  "cooldown_seconds": 120
}

Changes

No recorded changes to this operation across all 2 revisions of this API.