Skip to content

Camera and recording fields

NovaVMS stores camera metadata in two tables: cameras (one row per camera) and camera_streams (one row per stream profile). This page lists every field.

cameras table

FieldTypeDefaultDescription
iduuidgen_random_uuid()Primary key.
org_iduuid-Owning organisation. Composite key with id.
site_iduuid-Site the camera belongs to.
gateway_iduuid-Gateway the camera connects through. NULL for direct-mode cameras.
connection_modeenum-One of direct, gateway.
nametext-Operator-chosen display name.
typeenum-One of onvif, rtsp.
statusenumpendingOne of pending, online, offline, error, disabled.
enabledbooleantrueWhen false, streaming and recording are suspended.
hosttext-IP or hostname for ONVIF cameras.
portinteger80ONVIF HTTP port.
rtsp_main_uritext-RTSP URI for the main profile.
rtsp_sub_uritext-RTSP URI for the sub profile.
rtsp_urltext-Full RTSP URL for direct-mode cameras.
codecenum-One of h264, h265.
resolution_widthinteger-Pixels.
resolution_heightinteger-Pixels.
fpsinteger-Frames per second reported by the camera.
has_audioboolean-True if the camera advertises an audio track.
has_ptzboolean-True if the camera advertises PTZ controls (ContinuousMove + Stop only in v1 — no presets).
supports_backchannelbooleanfalseTrue if the camera supports ONVIF talkdown (audio backchannel). Detected via 3-layer probe: Media1 GetAudioOutputs, vendor allowlist, RTSP DESCRIBE per Profile T §A.4. Migration 000056.
recording_duration_secinteger15Clip length. Range 5 - 120.
pre_event_buffer_secinteger5Seconds recorded before the trigger. Range 0 - 10.
post_event_buffer_secinteger3Seconds recorded after the trigger. Range 0 - 10.
ai_analysis_modeenumsnapshot_onlyOne of snapshot_only, multi_frame, full_video, disabled.
ai_pass_modeenumone_passOne of one_pass, two_pass.
prompt_pack_iduuid-Per-camera prompt pack override.
ai_provider_overridetext-Overrides org default provider for this camera.
ai_model_overridetext-Overrides org default model for this camera.
motion_sensitivityenummediumOne of low, medium, high. Persisted but not active (D12-REV — software motion detection unimplemented).
motion_zones_jsonjsonb-Polygon zones for motion detection. Persisted + validated but not active in v1 (D12-REV).
detection_streamenumsubWhich profile the AI samples. One of sub, main. See D21. Persisted but not yet wired at runtime — AI pipeline pulls from main regardless.
recording_streamenummainWhich profile is recorded. One of main, sub. See D21.
stream_transporttext-RTSP transport override (e.g., tcp or udp).
stream_modetextsinglesingle or dual — controls whether the gateway registers both main + sub with go2rtc or just main with sub as a fallback URL.
analysis_focustext""Free-form natural-language focus directive consumed by the prompt pack at AI analysis time. Max 1000 chars.
ignore_guidancetext""Free-form natural-language guidance describing things to ignore. Max 1000 chars.
monitoring_schedulejsonb[]Time-window JSON array describing when analysis is active.
analysis_focus_versioninteger0Auto-incrementing version; updated on every analysis_focus / ignore_guidance / monitoring_schedule PATCH.
nbd_overridejsonb-Per-camera “No Big Deal” suppression knobs that override the per-rule defaults. Migration 000080. Subset of {enabled, window_seconds, similarity_threshold, novelty_threshold, evidence_confidence_floor, allow_suppress_importance_4}.
thumbnail_pathtext-Object storage key for the latest thumbnail.
modeltext-Free-text hardware model string.
last_event_attimestamptz-Most recent event recorded on this camera.
last_errortext-Most recent error string, if any.
deleted_attimestamptz-Soft-delete timestamp. NULL for live cameras.
created_attimestamptznow()Row creation time.
updated_attimestamptznow()Last update time.

Retention in days is set at the site level, not per camera. See Retention policy.

camera_streams table (internal)

The camera_streams table is an internal bookkeeping table populated by ONVIF discovery. It is not part of the public API surface.

The admin-facing fields that matter — detection_stream and recording_stream on the cameras table — name which row of this table the AI pipeline and the recorder read from. See Detection vs recording stream for the model.

FieldTypeDefaultDescription
iduuidgen_random_uuid()Primary key.
org_iduuid-Owning organisation.
camera_iduuid-Parent camera.
stream_typeenum-One of main, sub. One row of each per camera.
uritext-RTSP URI for this profile.
codectext-Codec reported by ONVIF probe (h264, h265).
widthinteger-Pixels.
heightinteger-Pixels.
fpsinteger-Frames per second.
bitrate_kbpsinteger-Reported bitrate.
created_attimestamptznow()Row creation time.
updated_attimestamptznow()Last update time.