{
  "cameras": [
    {
      "active_pipeline": false,
      "assigned_hostname": "ecdsa-selftest",
      "bound_at": "2026-07-04T03:26:17.581522+00:00",
      "build_id": "test-build",
      "chunk_seconds": 10,
      "device_id": "02:00:00:00:ec:02",
      "display_name": "ecdsa-selftest",
      "enrollment_card_id": "ptcard_ecdsa_selftest_py",
      "health": "standby",
      "image_id": "test-image",
      "kvs": {
        "hls_ok": false,
        "service": "inactive",
        "state": "standby",
        "stream_name": "mono-staging-ecdsa-selftest"
      },
      "kvs_stream_name": "mono-staging-ecdsa-selftest",
      "lan_ip": "192.0.2.10",
      "last_configured_at": "2026-07-04T03:26:17.581522+00:00",
      "last_online": "2026-07-04T03:26:17.581522+00:00",
      "location": "selftest",
      "mac": "02:00:00:00:ec:02",
      "model": "test-model",
      "registration_client_ip": "127.0.0.1",
      "requested_hostname": "ecdsa-selftest",
      "rtsp_latency_ms": "1000",
      "rtsp_url_redacted": "rtsp://thingino:***@10.77.0.2:554/ch0",
      "s3": {
        "service": "inactive",
        "state": "standby"
      },
      "source_id": "ecdsa-selftest",
      "source_type": "thingino_wireguard",
      "wireguard_address": "10.77.0.2/32",
      "wireguard_public_key": "selftestwg="
    }
  ],
  "enrollments": [
    {
      "card_id": "ptcard_20260704_ANvVWBHPJs",
      "customer": "Playtag lab",
      "expires_at": "2026-08-03T03:22:47.017902+00:00",
      "issued_at": "2026-07-04T03:22:47.017902+00:00",
      "key_alg": "ecdsa-p256-sha256-der-base64",
      "order": "dev-ecdsa-iteration",
      "public_key_sha256": "faaa356a748f77da9505e89245d8cef3b49e9e6a306e95f2da609720a033dfc8",
      "requested_hostname": "mono-dev-camera",
      "rtsp_user": "thingino",
      "site": "current-ecdsa-dev-card",
      "status": "issued",
      "used_nonces": []
    },
    {
      "card_id": "ptcard_20260704_AnsbbaKKPM",
      "customer": "Playtag lab",
      "expires_at": "2026-08-03T02:58:59.700129+00:00",
      "issued_at": "2026-07-04T02:58:59.700129+00:00",
      "order": "dev-iteration",
      "requested_hostname": "mono-dev-camera",
      "rtsp_user": "thingino",
      "site": "current-dev-card",
      "status": "issued",
      "used_nonces": []
    },
    {
      "card_id": "ptcard_dev_20260704_015511",
      "customer": "Playtag lab/dev",
      "expires_at": "2026-07-18T01:55:11.664220+00:00",
      "issued_at": "2026-07-04T01:55:11.664220+00:00",
      "order": "dev-iteration",
      "requested_hostname": "",
      "rtsp_user": "thingino",
      "site": "fresh-camera-dev-run",
      "status": "issued",
      "used_nonces": []
    },
    {
      "card_id": "ptcard_ecdsa_selftest_222534",
      "expires_at": "2026-07-04T04:25:34.339118+00:00",
      "issued_at": "2026-07-04T03:25:34.339118+00:00",
      "key_alg": "ecdsa-p256-sha256-der-base64",
      "public_key_sha256": "c85403ac35e75a71368b95926a410d397e397addd995b0f4d62d283af3c5db97",
      "requested_hostname": "ecdsa-selftest",
      "rtsp_user": "thingino",
      "status": "issued",
      "used_nonces": []
    },
    {
      "bound_device_id": "02:00:00:00:ec:02",
      "bound_mac": "02:00:00:00:ec:02",
      "bound_source_id": "ecdsa-selftest",
      "bound_wireguard_address": "10.77.0.2/32",
      "bound_wireguard_public_key": "selftestwg=",
      "card_id": "ptcard_ecdsa_selftest_py",
      "consumed_at": "2026-07-04T03:26:17.592816+00:00",
      "expires_at": "2026-07-04T04:26:15.640130+00:00",
      "issued_at": "2026-07-04T03:26:15.640130+00:00",
      "key_alg": "ecdsa-p256-sha256-der-base64",
      "last_registration_at": "2026-07-04T03:26:17.592816+00:00",
      "last_registration_client_ip": "127.0.0.1",
      "public_key_sha256": "46d9cb1795539e9a26b29e71b22dbd4d88c07d124e45d9cb0564b8ffc158435b",
      "requested_hostname": "ecdsa-selftest",
      "rtsp_user": "thingino",
      "status": "consumed",
      "used_nonces": [
        "nonce-ptcard_ecdsa_selftest_py"
      ]
    },
    {
      "card_id": "ptcard_https_selftest_023129",
      "customer": "selftest",
      "expires_at": "2026-07-04T03:31:29.719996+00:00",
      "issued_at": "2026-07-04T02:31:29.719987+00:00",
      "order": "selftest",
      "rtsp_user": "thingino",
      "site": "https",
      "status": "issued",
      "used_nonces": []
    },
    {
      "bound_device_id": "02:00:00:00:99:01",
      "bound_mac": "02:00:00:00:99:01",
      "bound_source_id": "https-selftest",
      "bound_wireguard_address": "10.77.0.2/32",
      "bound_wireguard_public_key": "XCVrRo9XMztx4rTYOKl2j4e4W7OLnq+IkzKgEJfpbQw=",
      "card_id": "ptcard_https_selftest_023214",
      "consumed_at": "2026-07-04T02:32:14.754414+00:00",
      "customer": "selftest",
      "expires_at": "2026-07-04T03:32:14.700648+00:00",
      "issued_at": "2026-07-04T02:32:14.700639+00:00",
      "last_registration_at": "2026-07-04T02:32:14.754414+00:00",
      "last_registration_client_ip": "127.0.0.1",
      "order": "selftest",
      "rtsp_user": "thingino",
      "site": "https",
      "status": "consumed",
      "used_nonces": [
        "a188e289d2632aac3acf60b2"
      ]
    }
  ],
  "events": [
    {
      "details": {
        "image_id": "test-image",
        "lan_ip": "192.0.2.10",
        "mac": "02:00:00:00:ec:02",
        "rtsp_url": "rtsp://thingino:***@10.77.0.2:554/ch0",
        "wireguard_address": "10.77.0.2/32"
      },
      "message": "Camera ecdsa-selftest self-registered",
      "source_id": "ecdsa-selftest",
      "timestamp": "2026-07-04T03:26:17.593248+00:00",
      "type": "camera_registered"
    },
    {
      "details": {
        "wireguard_address": "10.77.0.2/32"
      },
      "message": "Camera ecdsa-selftest bound",
      "source_id": "ecdsa-selftest",
      "timestamp": "2026-07-04T03:26:17.592339+00:00",
      "type": "camera_bound"
    },
    {
      "details": {
        "card_id": "ptcard_ecdsa_selftest_222534",
        "client_ip": "127.0.0.1",
        "reason": "invalid enrollment signature"
      },
      "message": "Camera registration rejected",
      "source_id": "ecdsa-selftest",
      "timestamp": "2026-07-04T03:25:36.122975+00:00",
      "type": "camera_registration_rejected"
    },
    {
      "details": {
        "card_id": "",
        "client_ip": "127.0.0.1",
        "reason": "missing enrollment card id"
      },
      "message": "Camera registration rejected",
      "source_id": "unsigned-test",
      "timestamp": "2026-07-04T03:02:35.423468+00:00",
      "type": "camera_registration_rejected"
    },
    {
      "details": {
        "card_id": "",
        "client_ip": "127.0.0.1",
        "reason": "missing enrollment card id"
      },
      "message": "Camera registration rejected",
      "source_id": "unsigned-test",
      "timestamp": "2026-07-04T02:43:11.031415+00:00",
      "type": "camera_registration_rejected"
    },
    {
      "details": {
        "card_id": "",
        "client_ip": "127.0.0.1",
        "reason": "missing enrollment card id"
      },
      "message": "Camera registration rejected",
      "source_id": "legacy-test",
      "timestamp": "2026-07-04T02:41:59.828436+00:00",
      "type": "camera_registration_rejected"
    },
    {
      "details": {
        "card_id": "",
        "client_ip": "127.0.0.1",
        "reason": "missing enrollment card id"
      },
      "message": "Camera registration rejected",
      "source_id": "unsigned-test",
      "timestamp": "2026-07-04T02:41:58.529475+00:00",
      "type": "camera_registration_rejected"
    },
    {
      "details": {
        "card_id": "",
        "client_ip": "127.0.0.1",
        "reason": "missing enrollment card id"
      },
      "message": "Camera registration rejected",
      "source_id": "unsigned-test",
      "timestamp": "2026-07-04T02:33:54.480250+00:00",
      "type": "camera_registration_rejected"
    },
    {
      "details": {
        "image_id": "selftest",
        "lan_ip": "192.0.2.10",
        "mac": "02:00:00:00:99:01",
        "rtsp_url": "rtsp://thingino:***@10.77.0.2:554/ch0",
        "wireguard_address": "10.77.0.2/32"
      },
      "message": "Camera https-selftest self-registered",
      "source_id": "https-selftest",
      "timestamp": "2026-07-04T02:32:14.754697+00:00",
      "type": "camera_registered"
    },
    {
      "details": {
        "wireguard_address": "10.77.0.2/32"
      },
      "message": "Camera https-selftest bound",
      "source_id": "https-selftest",
      "timestamp": "2026-07-04T02:32:14.753844+00:00",
      "type": "camera_bound"
    },
    {
      "details": {
        "card_id": "",
        "client_ip": "127.0.0.1",
        "reason": "missing enrollment card id"
      },
      "message": "Camera registration rejected",
      "source_id": "unknown",
      "timestamp": "2026-07-04T02:31:45.104945+00:00",
      "type": "camera_registration_rejected"
    },
    {
      "details": {
        "card_id": "",
        "client_ip": "100.78.239.5",
        "reason": "missing enrollment card id"
      },
      "message": "Camera registration rejected",
      "source_id": "unsigned-test",
      "timestamp": "2026-07-04T02:03:24.412852+00:00",
      "type": "camera_registration_rejected"
    },
    {
      "details": {
        "card_id": "",
        "client_ip": "100.78.239.5",
        "reason": "missing enrollment card id"
      },
      "message": "Camera registration rejected",
      "source_id": "unsigned-test",
      "timestamp": "2026-07-04T02:02:14.590941+00:00",
      "type": "camera_registration_rejected"
    },
    {
      "details": {
        "card_id": "",
        "client_ip": "100.78.239.5",
        "reason": "missing enrollment card id"
      },
      "message": "Camera registration rejected",
      "source_id": "unsigned-test",
      "timestamp": "2026-07-04T01:55:59.106833+00:00",
      "type": "camera_registration_rejected"
    },
    {
      "details": {
        "image_id": "wyze_cam3_t31x_gc2053_atbm6031",
        "lan_ip": "192.168.0.74",
        "mac": "02:75:3d:6d:26:5c",
        "rtsp_url": "rtsp://thingino:***@10.77.0.3:554/ch0",
        "wireguard_address": "10.77.0.3/32"
      },
      "message": "Camera testing22 self-registered",
      "source_id": "testing22",
      "timestamp": "2026-07-02T00:32:34.304823+00:00",
      "type": "camera_registered"
    },
    {
      "details": {},
      "message": "Started start all for testing22",
      "source_id": "testing22",
      "timestamp": "2026-07-02T00:12:54.200676+00:00",
      "type": "camera_started"
    },
    {
      "details": {},
      "message": "Stopped stop all for lorcam1-vpn-resilient",
      "source_id": "lorcam1-vpn-resilient",
      "timestamp": "2026-07-02T00:05:11.311852+00:00",
      "type": "camera_stopped"
    },
    {
      "details": {},
      "message": "Stopped stop all for thingino-wyze-v3-lab",
      "source_id": "thingino-wyze-v3-lab",
      "timestamp": "2026-07-01T23:47:05.120935+00:00",
      "type": "camera_stopped"
    },
    {
      "details": {},
      "message": "Stopped stop all for thingino-wyze-v3-e8",
      "source_id": "thingino-wyze-v3-e8",
      "timestamp": "2026-07-01T23:47:00.362765+00:00",
      "type": "camera_stopped"
    },
    {
      "details": {},
      "message": "Stopped stop all for lorcam1-vpn-resilient",
      "source_id": "lorcam1-vpn-resilient",
      "timestamp": "2026-07-01T23:46:57.258274+00:00",
      "type": "camera_stopped"
    },
    {
      "details": {},
      "message": "Stopped stop all for testing22",
      "source_id": "testing22",
      "timestamp": "2026-07-01T23:46:53.107602+00:00",
      "type": "camera_stopped"
    },
    {
      "details": {},
      "message": "Started start all for testing22",
      "source_id": "testing22",
      "timestamp": "2026-06-28T12:49:26.444962+00:00",
      "type": "camera_started"
    },
    {
      "details": {},
      "message": "Stopped stop all for testing22",
      "source_id": "testing22",
      "timestamp": "2026-06-28T12:49:24.230804+00:00",
      "type": "camera_stopped"
    },
    {
      "details": {
        "image_id": "wyze_cam3_t31x_gc2053_atbm6031",
        "lan_ip": "10.0.0.215",
        "mac": "02:75:3d:6d:26:5c",
        "rtsp_url": "rtsp://thingino:***@10.77.0.3:554/ch0",
        "wireguard_address": "10.77.0.3/32"
      },
      "message": "Camera testing22 self-registered",
      "source_id": "testing22",
      "timestamp": "2026-06-28T12:49:01.050294+00:00",
      "type": "camera_registered"
    },
    {
      "details": {
        "image_id": "wyze_cam3_t31x_gc2053_atbm6031",
        "lan_ip": "10.0.0.215",
        "mac": "02:75:3d:6d:26:5c",
        "rtsp_url": "rtsp://thingino:***@10.77.0.3:554/ch0",
        "wireguard_address": "10.77.0.3/32"
      },
      "message": "Camera testing22 self-registered",
      "source_id": "testing22",
      "timestamp": "2026-06-28T12:48:27.841306+00:00",
      "type": "camera_registered"
    },
    {
      "details": {},
      "message": "Started start all for testing22",
      "source_id": "testing22",
      "timestamp": "2026-06-28T02:50:06.497502+00:00",
      "type": "camera_started"
    },
    {
      "details": {},
      "message": "Stopped stop all for testing22",
      "source_id": "testing22",
      "timestamp": "2026-06-28T02:50:02.527002+00:00",
      "type": "camera_stopped"
    },
    {
      "details": {
        "image_id": "wyze_cam3_t31x_gc2053_atbm6031",
        "lan_ip": "10.0.0.215",
        "mac": "02:75:3d:6d:26:5c",
        "rtsp_url": "rtsp://thingino:***@100.78.239.5:8554/ch0"
      },
      "message": "Camera testing22 self-registered",
      "source_id": "testing22",
      "timestamp": "2026-06-28T02:49:40.046938+00:00",
      "type": "camera_registered"
    },
    {
      "details": {},
      "message": "Started start all for testing22",
      "source_id": "testing22",
      "timestamp": "2026-06-28T02:37:17.387657+00:00",
      "type": "camera_started"
    },
    {
      "details": {
        "image_id": "wyze_cam3_t31x_gc2053_atbm6031",
        "lan_ip": "10.0.0.215",
        "mac": "02:75:3d:6d:26:5c",
        "rtsp_url": "rtsp://thingino:***@10.0.0.215:554/ch0"
      },
      "message": "Camera testing22 self-registered",
      "source_id": "testing22",
      "timestamp": "2026-06-28T02:35:08.603685+00:00",
      "type": "camera_registered"
    },
    {
      "details": {
        "wireguard_address": null
      },
      "message": "Camera testing22 bound",
      "source_id": "testing22",
      "timestamp": "2026-06-28T02:35:08.602535+00:00",
      "type": "camera_bound"
    },
    {
      "details": {
        "image_id": "wyze_cam3_t31x_gc2053_atbm6031",
        "lan_ip": "10.0.0.139",
        "mac": "02:32:ab:08:e8:d0",
        "rtsp_url": "rtsp://thingino:***@10.0.0.139:554/ch0"
      },
      "message": "Camera thingino-wyze-v3-e8 self-registered",
      "source_id": "thingino-wyze-v3-e8",
      "timestamp": "2026-06-26T02:12:51.784803+00:00",
      "type": "camera_registered"
    },
    {
      "details": {
        "wireguard_address": null
      },
      "message": "Camera thingino-wyze-v3-e8 bound",
      "source_id": "thingino-wyze-v3-e8",
      "timestamp": "2026-06-26T02:12:51.784370+00:00",
      "type": "camera_bound"
    },
    {
      "details": {},
      "message": "Started start all for lorcam1-vpn-resilient",
      "source_id": "lorcam1-vpn-resilient",
      "timestamp": "2026-06-26T01:29:02.200365+00:00",
      "type": "camera_started"
    },
    {
      "details": {},
      "message": "Stopped stop all for lorcam1-vpn-resilient",
      "source_id": "lorcam1-vpn-resilient",
      "timestamp": "2026-06-25T11:06:19.133426+00:00",
      "type": "camera_stopped"
    },
    {
      "details": {},
      "message": "Stopped stop all for thingino-wyze-v3-lab",
      "source_id": "thingino-wyze-v3-lab",
      "timestamp": "2026-06-25T11:06:15.810731+00:00",
      "type": "camera_stopped"
    },
    {
      "details": {
        "kvs_stream_name": "mono-staging-thingino-wyze-v3-lab",
        "source_type": "thingino",
        "wireguard_address": "tailnet relay 100.78.239.5:8554 to 10.0.0.241:554"
      },
      "message": "Camera thingino-wyze-v3-lab saved from command center",
      "source_id": "thingino-wyze-v3-lab",
      "timestamp": "2026-06-25T01:51:51.301207+00:00",
      "type": "camera_configured"
    },
    {
      "details": {
        "wireguard_address": "tailnet relay 100.78.239.5:8554 to 10.0.0.241:554"
      },
      "message": "Camera thingino-wyze-v3-lab bound",
      "source_id": "thingino-wyze-v3-lab",
      "timestamp": "2026-06-25T01:51:51.300813+00:00",
      "type": "camera_bound"
    },
    {
      "details": {},
      "message": "Started start all for lorcam1-vpn-resilient",
      "source_id": "lorcam1-vpn-resilient",
      "timestamp": "2026-06-25T00:02:31.418697+00:00",
      "type": "camera_started"
    },
    {
      "details": {},
      "message": "Started start all for lorcam1-vpn-resilient",
      "source_id": "lorcam1-vpn-resilient",
      "timestamp": "2026-06-24T23:58:05.828589+00:00",
      "type": "camera_started"
    },
    {
      "details": {},
      "message": "Started start all for lorcam1-vpn-resilient",
      "source_id": "lorcam1-vpn-resilient",
      "timestamp": "2026-06-24T23:55:41.054548+00:00",
      "type": "camera_started"
    },
    {
      "details": {},
      "message": "Started start all for lorcam1-vpn-resilient",
      "source_id": "lorcam1-vpn-resilient",
      "timestamp": "2026-06-24T23:15:23.998502+00:00",
      "type": "camera_started"
    },
    {
      "details": {},
      "message": "Stopped stop all for lorcam1-vpn-resilient",
      "source_id": "lorcam1-vpn-resilient",
      "timestamp": "2026-06-24T23:15:19.252005+00:00",
      "type": "camera_stopped"
    },
    {
      "details": {},
      "message": "Started start all for lorcam1-vpn-resilient",
      "source_id": "lorcam1-vpn-resilient",
      "timestamp": "2026-06-24T23:14:38.278518+00:00",
      "type": "camera_started"
    },
    {
      "details": {
        "kvs_stream_name": "mono-staging-lorcam1-vpn-resilient",
        "wireguard_address": "10.77.0.2/32"
      },
      "message": "Seeded existing camera lorcam1-vpn-resilient into operations center",
      "source_id": "lorcam1-vpn-resilient",
      "timestamp": "2026-06-24T22:53:21.198572+00:00",
      "type": "camera_bound"
    }
  ],
  "generated_at": "2026-07-04T06:22:33.407546+00:00",
  "kvs": {
    "console_url": "https://us-east-2.console.aws.amazon.com/kinesisvideo/home?region=us-east-2#/streams/streamName/mono-staging-source/mediaPlayback",
    "hls": {
      "error": "An error occurred (ResourceNotFoundException) when calling the GetDataEndpoint operation: The requested stream is not found or not active.",
      "ok": false,
      "stream_name": "mono-staging-source",
      "url": null
    },
    "producer_status": {
      "message": "source cleared by operator request",
      "state": "cleared"
    },
    "region": "us-east-2",
    "stream_name": "mono-staging-source"
  },
  "message": null,
  "message_kind": "ok",
  "routing": [
    {
      "label": "1. RTSP source",
      "value": ": not configured"
    },
    {
      "label": "2. Mono KVS producer",
      "value": "RTSP -> GStreamer kvssink -> KVS stream mono-staging-source"
    },
    {
      "label": "3. Mono S3 recorder",
      "value": "RTSP -> ffmpeg MP4 chunks -> s3://ptcapture/mono/staging"
    },
    {
      "label": "4. Demo app",
      "value": "KVS HLS live preview + S3/KVS status/debug telemetry"
    }
  ],
  "s3": {
    "bucket": "ptcapture",
    "latest_status": {
      "message": "source cleared by operator request",
      "state": "cleared"
    },
    "prefix": "s3://ptcapture/mono/staging"
  },
  "services": {
    "command_center": {
      "active": "active",
      "enabled": "enabled",
      "name": "mono-link-demo.service"
    },
    "kvs_producer": {
      "active": "inactive",
      "enabled": "disabled",
      "name": "mono-link-kvs.service"
    },
    "s3_chunk_worker": {
      "active": "inactive",
      "enabled": "disabled",
      "name": "mono-link-ingest.service"
    }
  },
  "source": {
    "chunk_seconds": "600",
    "kvs_stream_name": "",
    "rtsp_latency_ms": "1000",
    "rtsp_url": "",
    "source_env_path": "/var/lib/mono-link/source.env",
    "source_id": "",
    "source_type": ""
  }
}