parents

Get All Cameras For Parent

get/parents/{parent_id}/cameras

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/parents/{parent_id}/cameras
  • Auth
    API key in header X-API-Key

Path parameters

parent_idstring required

Response

Successful Response

idstring uuid required

Camera UUID

kvs_stream_namestring nullable

Kinesis Video Streams stream name for this camera

rtsp_arnstring nullable

AWS Secrets Manager ARN storing the RTSP URL

adapter'generic_onvif' | 'hanwha_onvif'
brand'hanwha' | 'dahua'
model'ANV-L7012R'
metadata_format'onvif'
ingest_mode'continuous' | 'motion_clip'
motion_configobject nullable

Extensible motion settings with bounded known keys (timings, thresholds, detector geometry/rate and RTSP buffer mode); see app/services/motion_config_validation.py. Unknown keys are preserved.

analytics_provider'none' | 'deepalert'
analytics_configobject nullable

Opaque per-vendor analytics settings interpreted by the ingestor

ii_enabledboolean

Incident intelligence on/off: when false motion events still record and alert in the UI, but clips are not sent to the AI pipeline for classification

fire_watchboolean

Per-camera fire-screen gate; when false the ingestor must not call /screen/fire for this camera

detection_modestring nullable

'legacy' | 'ii_gated' | null (null means legacy). Only meaningful when analytics_provider == 'deepalert'.

live_view_untilstring nullable

ISO-8601 deadline: push to KVS for live view while now() < this (motion_clip cameras)

health_sample_requested_atstring nullable

ISO-8601 time an operator last asked for an on-demand health sample (Analytics -> Camera Health -> Re-check). A value the ingestor has not answered yet means: take one health sample now and post it with on_demand=true. Null when never requested. Not configuration: must not restart the runner.

monitoring_activeboolean

Schedule gate, resolved server-side at request time in the site's timezone (camera override, else site schedule, else always-on). False = off-schedule: the ingestor must not run this camera except to serve an active live-view intent.

display_rotationinteger

Degrees counter-clockwise the RECORDED frame must be turned to look upright (0 or 180 today; 90/270 reserved). When non-zero the ingestor stamps each clip's display-matrix tag inside its stream-copy remux (no re-encode) and inverse-rotates ignore_zones for its raw, untagged detector frames, because ignore_zones are stored in the ROTATED (upright) space. An ingestor that predates this field ignores the key and keeps producing untagged clips; a newer one reads a missing key as 0.

Example response

[
  {
    "id": "2b1d3f2e-6e78-4d9b-93d6-3c1f9e40a1d4",
    "kvs_stream_name": "site-123/cam-001",
    "rtsp_arn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:verdun/site/..",
    "motion_config": {
      "debounce_seconds": 30,
      "post_roll_seconds": 5,
      "pre_roll_seconds": 5
    },
    "ii_enabled": true,
    "fire_watch": true,
    "detection_mode": "ii_gated",
    "live_view_until": "2026-07-03T21:15:00+00:00",
    "health_sample_requested_at": "2026-10-09T09:30:00+00:00",
    "monitoring_active": true,
    "display_rotation": 180,
    "ignore_zones": [
      {
        "points": [
          {
            "x": 10,
            "y": 20
          },
          {
            "x": 80,
            "y": 20
          },
          {
            "x": 80,
            "y": 90
          }
        ]
      }
    ]
  }
]

Changes

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