@7365admin1/core 3.32.2-staging.62 → 3.32.2-staging.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,60 @@
1
+ ---
2
+ "@7365admin1/core": minor
3
+ ---
4
+
5
+ Camera integration layer: a capability descriptor, a transport registry, and the
6
+ Dahua device HTTP adapter (written, tested, switched off).
7
+
8
+ Every camera in the wall and status responses now carries a `capabilities`
9
+ descriptor: `liveVideo`, `stillFrame`, `digitalZoom`, `ptz`, `presets`,
10
+ `playback`, `events`, `audio`, `deviceInfo`, each `supported` / `unsupported` /
11
+ `unknown` with a machine-readable reason code and one sentence. A client renders
12
+ itself from it without knowing anything about relays, recorders or networks.
13
+ `unknown` is distinct on purpose: "we have not been allowed to ask" is not the
14
+ same fact as "this camera cannot".
15
+
16
+ Capabilities resolve through a transport registry instead of the service picking
17
+ a path. `RELAY_PLAYER` is the stored player-page URL rendered in a WebView (the
18
+ live product's picture path, live video only, no control channel). `RTSP_FRAME`
19
+ is one ffmpeg still off the recorder. `DEVICE_HTTP` is the camera's own CGI API.
20
+ Registration order is preference order, so one camera serves live video over the
21
+ relay and evidence stills over RTSP at the same time, and adding a transport
22
+ later needs no service change.
23
+
24
+ `DEVICE_HTTP` covers device info/version, snapshot, PTZ (continuous, absolute,
25
+ stop), presets (list and recall), recorded-file query with playback URL
26
+ construction, and event subscription - digest auth only, values percent-encoded,
27
+ 403 treated as bad credentials and 401 as an ordinary challenge. It contacts
28
+ nothing today: the recorder in this estate answers on RTSP only. Enabling it is
29
+ configuration, not a code change.
30
+
31
+ A shared, persistent authentication failure budget is mandatory on that path. The
32
+ device locks an account for 1800 s after 3 failed logins in 30 s, so failures are
33
+ counted per device in the cache, the budget stops at 2, and once spent no request
34
+ leaves the process. Nothing retries anywhere.
35
+
36
+ Mutating operations are structurally unreachable while disabled: the adapter is
37
+ `null` without `CAMERA_DEVICE_HTTP_ENABLED`, and its `control` object is `null`
38
+ without `CAMERA_DEVICE_CONTROL_ENABLED`. Movement codes are an allow-list;
39
+ `SetPreset`, `ClearPreset`, tours, patterns, `configManager` writes and reboot are
40
+ absent.
41
+
42
+ Capability probing is read-only, cached, budget-aware, never throws, and happens
43
+ only on a deliberate single-camera status request - never as a side effect of a
44
+ list.
45
+
46
+ `host` is now returned for `type: "ip"` cameras on the wall response. It is the
47
+ video relay's player-page URL, not a device address and not a credential, and
48
+ `GET /site-cameras` already returns it to every authenticated caller. `anpr`
49
+ records, whose `host` is a real device endpoint, are excluded by the allow-list
50
+ itself.
51
+
52
+ New configuration, all optional and all off by default: `CAMERA_DEVICE_HTTP`
53
+ (JSON keyed by relay authority, credential referenced by environment variable
54
+ name), `CAMERA_DEVICE_HTTP_ENABLED`, `CAMERA_DEVICE_CONTROL_ENABLED`,
55
+ `CAMERA_DEVICE_HTTP_TIMEOUT_MS` (8000),
56
+ `CAMERA_DEVICE_HTTP_PROBE_TTL_SECONDS` (900). See
57
+ `docs/camera-integration-config.md`.
58
+
59
+ Existing responses keep every field they had, with the same wording, so current
60
+ consumers are unaffected.
@@ -0,0 +1,32 @@
1
+ ---
2
+ "@7365admin1/core": minor
3
+ ---
4
+
5
+ CCTV monitoring wall: a site-scoped camera list and a batched health sweep.
6
+
7
+ Two additions to the camera proxy so a supervisor can watch a whole site rather
8
+ than one checkpoint at a time.
9
+
10
+ `getSiteWall` returns the cameras of one site from `site.cameras` - the
11
+ collection the real cameras are in - together with the polling intervals and
12
+ fan-out caps the client should use. No device is contacted, so opening a wall is
13
+ one database read. Entitlement is by site membership, not by the id in the URL,
14
+ and a caller outside the site gets the same answer as one asking for a site that
15
+ does not exist.
16
+
17
+ `getSiteHealth` probes the cameras currently on screen with at most
18
+ `CAMERA_WALL_MAX_CONCURRENT_PROBES` in flight. Reachability is a **per-recorder**
19
+ answer, cached per recorder: twelve of this estate's cameras are twelve channels
20
+ on one device, so a full wall is one connect rather than one per tile. It never
21
+ throws for a camera that is down; unreachable is the answer, and a camera whose
22
+ relay has no configured recorder is refused with a reason instead.
23
+
24
+ Firmware version and device clock are reported as unavailable with a reason: they
25
+ are HTTP CGI facts and the recorder in use exposes RTSP only.
26
+
27
+ Snapshots now record when a camera last returned a picture, so a tile can say
28
+ "last frame 40 minutes ago" instead of "never".
29
+
30
+ New, all optional and conservative by default: `CAMERA_WALL_POLL_MS` (5000),
31
+ `CAMERA_SINGLE_POLL_MS` (2000), `CAMERA_WALL_MAX_TILES` (9),
32
+ `CAMERA_WALL_MAX_CONCURRENT_PROBES` (4), `CAMERA_HEALTH_CACHE_SECONDS` (20).
package/dist/index.d.ts CHANGED
@@ -2867,18 +2867,354 @@ declare const CAMERA_SNAPSHOT_CACHE_SECONDS = 2;
2867
2867
  /**
2868
2868
  * Fields of a camera record that may cross the wire.
2869
2869
  *
2870
- * An allow-list, not a delete-list: `host`, `username` and `password` must never
2870
+ * Still an allow-list, not a delete-list: `username` and `password` must never
2871
2871
  * reach a client or a log, and a future field added to the model must be opted
2872
2872
  * IN rather than remembered about.
2873
+ *
2874
+ * ## Why `host` is now in it, for `ip` cameras only
2875
+ *
2876
+ * For a `type: "ip"` camera the stored `host` is **not** a device address and
2877
+ * **not** a credential — it is the video relay's own player-page URL, and
2878
+ * putting it in a WebView is how the live security app has shown motion video
2879
+ * for months (traced end to end, 2026-08-10). Stripping it here is what stops a
2880
+ * client from rendering the one path that demonstrably works.
2881
+ *
2882
+ * **It is not a new disclosure.** `GET /site-cameras` already returns `host` to
2883
+ * every authenticated caller — `site-camera.repo.ts` projects `{ password: 0 }`
2884
+ * and nothing else — which is exactly where the legacy app reads it from. This
2885
+ * makes the wall consistent with the endpoint next to it rather than widening
2886
+ * anything.
2887
+ *
2888
+ * **`anpr` is excluded and that is the whole reason this is conditional.** An
2889
+ * ANPR record's `host` IS a real device endpoint, on a unit that also has a real
2890
+ * `username` beside it, so handing one to a client would be a genuine leak. No
2891
+ * patrol or CCTV path ever loads an ANPR record — but the allow-list must hold
2892
+ * on its own, not because of a filter somewhere else.
2873
2893
  */
2874
- declare function publicCameraFields(camera: Record<string, any>): {
2875
- _id: any;
2876
- name: any;
2877
- type: any;
2878
- status: any;
2879
- guardPost: any;
2880
- siteName: any;
2894
+ declare function publicCameraFields(camera: Record<string, any>): Record<string, any>;
2895
+ /**
2896
+ * Tuning for a multi-camera wall, read from the environment.
2897
+ *
2898
+ * **Every number here is a guess that must be measured against a real device**,
2899
+ * which is exactly why the client is not allowed to hold its own copy: the wall
2900
+ * endpoint hands these to the app, so an environment that finds its cameras
2901
+ * cannot take nine simultaneous pulls is retuned by a deployment variable and not
2902
+ * by an app-store release.
2903
+ *
2904
+ * V3.37 documents no concurrent-connection limit for any unit — it is absent, not
2905
+ * generous — so the defaults are deliberately slow and small.
2906
+ */
2907
+ declare function wallConfig(env?: Record<string, string | undefined>): {
2908
+ /** A wall is situational awareness, not evidence. 5 s per tile is watchable. */
2909
+ snapshotPollMs: number;
2910
+ /**
2911
+ * Single-camera view. Matches `CAMERA_SNAPSHOT_CACHE_SECONDS` exactly —
2912
+ * polling faster than the cache costs round trips and never device requests,
2913
+ * so there is no point going below it and real harm in going far below it.
2914
+ */
2915
+ singlePollMs: number;
2916
+ /** The 3x3 ceiling, enforced here as well as in the client's layout list. */
2917
+ maxTiles: number;
2918
+ /** How many cameras a health sweep probes at once. */
2919
+ maxConcurrentProbes: number;
2920
+ /** Health changes slowly; N supervisors on one wall should be one probe. */
2921
+ healthCacheSeconds: number;
2922
+ };
2923
+ /**
2924
+ * Runs `worker` over `items`, at most `limit` at a time.
2925
+ *
2926
+ * The whole reason the wall has a backend change at all. Nine tiles asking for
2927
+ * health separately is eighteen device requests fired at once; this makes it four
2928
+ * in flight regardless of how many tiles the supervisor opens.
2929
+ *
2930
+ * ponytail: index-cursor over N workers rather than a queue library — the input is
2931
+ * bounded by `maxTiles` and this is the entire semantics needed.
2932
+ */
2933
+ declare function mapWithLimit<T, R>(items: Array<T>, limit: number, worker: (item: T) => Promise<R>): Promise<Array<R>>;
2934
+
2935
+ /**
2936
+ * What a camera can actually do RIGHT NOW, and which transport would do it.
2937
+ *
2938
+ * ## Why this file exists
2939
+ *
2940
+ * The estate has three different ways to reach a camera and they do not overlap:
2941
+ *
2942
+ * | Transport | What it carries | Proven today? |
2943
+ * |---|---|---|
2944
+ * | `RELAY_PLAYER` | the stored player-page URL, rendered in a WebView — one-way MPEG1 over a WebSocket | **YES** — this is how the live product has shown CCTV for months |
2945
+ * | `RTSP_FRAME` | one `ffmpeg` still off the recorder's RTSP stream | **YES** — measured against the live recorder, 2026-08-10 |
2946
+ * | `DEVICE_HTTP` | the camera's own CGI API — PTZ, presets, recordings, events, device info | **NO** — written, disabled, and unreachable from our hosts today (80/443/37777 time out; only 554 answers) |
2947
+ *
2948
+ * A client cannot be expected to know any of that. So the server computes it,
2949
+ * per camera, per capability, and hands back a descriptor the UI renders itself
2950
+ * from — with a machine-readable reason whenever the answer is no. **That
2951
+ * descriptor is the contract that lets a capability light up later by
2952
+ * configuration instead of by a code change.**
2953
+ *
2954
+ * ## Three states, never two
2955
+ *
2956
+ * `supported` / `unsupported` / `unknown`. `unknown` is load-bearing: a camera
2957
+ * whose control interface we have never been allowed to ask is NOT the same as a
2958
+ * camera that has told us it cannot pan. Collapsing the two is how a UI ends up
2959
+ * hiding a feature that works, or offering one that does not.
2960
+ *
2961
+ * Nothing in this file performs I/O, so the whole rule set is assertable in a
2962
+ * test without a camera, a recorder, a network or a database.
2963
+ *
2964
+ * Section references are to Dahua HTTP API V3.37.
2965
+ */
2966
+
2967
+ /**
2968
+ * Every capability the UI may ask about.
2969
+ *
2970
+ * A fixed list rather than an open string, because a client that renders itself
2971
+ * from this descriptor has to be able to exhaust it. Adding one is a deliberate
2972
+ * change here plus a transport that declares it.
2973
+ */
2974
+ declare const CAMERA_CAPABILITIES: readonly ["liveVideo", "stillFrame", "digitalZoom", "ptz", "presets", "playback", "events", "audio", "deviceInfo"];
2975
+ type CameraCapability = (typeof CAMERA_CAPABILITIES)[number];
2976
+ type CameraCapabilityState = "supported" | "unsupported" | "unknown";
2977
+ /** Transport ids. Strings, not an enum, so a new one can be registered. */
2978
+ declare const TRANSPORT_RELAY_PLAYER = "RELAY_PLAYER";
2979
+ declare const TRANSPORT_RTSP_FRAME = "RTSP_FRAME";
2980
+ declare const TRANSPORT_DEVICE_HTTP = "DEVICE_HTTP";
2981
+ /**
2982
+ * Machine-readable reasons, each with the one sentence a UI may show.
2983
+ *
2984
+ * The CODE is the contract — a client switches on it and never parses prose.
2985
+ * The sentence is here so that a client which has nothing better to show has
2986
+ * something honest to show, and so the same wording cannot drift between two
2987
+ * screens.
2988
+ *
2989
+ * Four of these are worded identically to `camera-view.util`'s refusal
2990
+ * sentences, on purpose: the mobile app already displays those strings, and a
2991
+ * camera must not explain itself two different ways depending on which field
2992
+ * was read. A test pins them equal.
2993
+ */
2994
+ declare const CAMERA_CAPABILITY_REASONS: {
2995
+ readonly "not-patrol-cctv-camera": "This is an ANPR unit. ANPR belongs to visitor and vehicle management; Virtual Patrol and CCTV use IP cameras only.";
2996
+ readonly "camera-inactive": "This camera is not active.";
2997
+ readonly "no-address": "This camera has no address configured.";
2998
+ readonly "invalid-address": "This camera's address is not a valid address.";
2999
+ readonly "not-a-relay-player-url": "This camera's address is not a live-video page address.";
3000
+ readonly "no-recorder-configured": "No recorder is configured for this camera's relay.";
3001
+ readonly "no-channel-in-address": "This camera's address has no channel, so we cannot tell which stream it is.";
3002
+ readonly "device-http-not-configured": "No direct connection to this camera's recorder is configured on this server.";
3003
+ readonly "device-http-disabled": "Direct camera access is switched off on this server.";
3004
+ readonly "device-http-unreachable": "The camera's own control interface did not answer.";
3005
+ readonly "device-http-locked-out": "Too many rejected sign-ins: further attempts are being held back so the recorder's account is not locked.";
3006
+ readonly "device-not-probed": "This camera has not been asked what it can do yet.";
3007
+ readonly "device-no-ptz": "This camera does not move.";
3008
+ readonly "control-not-enabled": "Camera control is switched off on this server.";
3009
+ readonly "no-transport": "Nothing on this server can do that yet.";
3010
+ };
3011
+ type CameraCapabilityReason = keyof typeof CAMERA_CAPABILITY_REASONS;
3012
+ /** One capability's answer. `transport` is `null` whenever nothing can serve it. */
3013
+ type CameraCapabilityEntry = {
3014
+ state: CameraCapabilityState;
3015
+ transport: string | null;
3016
+ reason: CameraCapabilityReason | null;
3017
+ /** The sentence for `reason`, so a client never has to hold the table. */
3018
+ detail: string | null;
3019
+ };
3020
+ type CameraCapabilityDescriptor = Record<CameraCapability, CameraCapabilityEntry>;
3021
+ /**
3022
+ * A recorder's own HTTP interface, resolved from configuration.
3023
+ *
3024
+ * **Keyed by the same relay authority as `CAMERA_RTSP_DEVICES`**, because that
3025
+ * is the only stable identifier a camera record carries (`site.cameras.host` is
3026
+ * the relay's player page; its authority names the deployment and its last path
3027
+ * segment is the channel — see `camera-view.util`).
3028
+ *
3029
+ * The credential is **referenced, never embedded**: `credentialRef` names an
3030
+ * environment variable holding `username:password`. So the configuration that
3031
+ * enables device access can be reviewed, diffed and pasted into a PR
3032
+ * description without carrying a secret, and the secret itself lives where
3033
+ * every other secret on the host lives.
3034
+ */
3035
+ type DeviceHttpTarget = {
3036
+ authority: string;
3037
+ /** Origin only — scheme, host, optional port. No path, no query. */
3038
+ baseUrl: string;
3039
+ username: string;
3040
+ password: string;
3041
+ /** `CAMERA_DEVICE_HTTP_ENABLED`. Nothing contacts a device while this is off. */
3042
+ enabled: boolean;
3043
+ /** `CAMERA_DEVICE_CONTROL_ENABLED`. Mutating operations only. */
3044
+ controlEnabled: boolean;
3045
+ timeoutMs: number;
3046
+ probeTtlSeconds: number;
3047
+ };
3048
+ type Env = Record<string, string | undefined>;
3049
+ /** Both flags are opt-IN. An unset or misspelt value is OFF, never on. */
3050
+ declare function deviceHttpEnabled(source?: Env): boolean;
3051
+ /**
3052
+ * The mutating switch, and it is deliberately separate from the one above.
3053
+ *
3054
+ * Reading a device (version, snapshot, recording list, events) and moving a
3055
+ * device (PTZ, preset recall) are different decisions with different blast
3056
+ * radii, so they are different variables. Turning reads on must not arm motors.
3057
+ *
3058
+ * It also cannot be on by itself: control requires device access as well.
3059
+ */
3060
+ declare function deviceControlEnabled(source?: Env): boolean;
3061
+ declare function deviceHttpTimeoutMs(source?: Env): number;
3062
+ /**
3063
+ * How long a capability probe is trusted for.
3064
+ *
3065
+ * Long by the standards of this file — 15 minutes — because what it answers
3066
+ * ("is this a PTZ unit, what firmware, does it answer at all") changes when an
3067
+ * installer visits, not when a guard looks at a screen. A short TTL here buys
3068
+ * nothing and spends requests against a device with a 3-failures lockout.
3069
+ */
3070
+ declare function deviceProbeTtlSeconds(source?: Env): number;
3071
+ /**
3072
+ * `CAMERA_DEVICE_HTTP` — a JSON object keyed by relay authority:
3073
+ *
3074
+ * ```
3075
+ * {"<relay-authority>":{"baseUrl":"https://<recorder-host>:443",
3076
+ * "credentialRef":"CAMERA_DEVICE_CRED_MAIN"}}
3077
+ * ```
3078
+ *
3079
+ * …plus `CAMERA_DEVICE_CRED_MAIN=<user>:<password>` set separately.
3080
+ *
3081
+ * Returns the valid entries AND the reasons any entry was rejected, because a
3082
+ * silently-dropped recorder is the failure mode that costs an afternoon: the
3083
+ * caller logs the errors once at startup, and every camera on a rejected entry
3084
+ * then reports `device-http-not-configured` truthfully rather than hanging.
3085
+ *
3086
+ * A malformed variable yields no targets at all — the same posture as
3087
+ * `cameraDevices()`, and far better than a half-parsed device map.
3088
+ */
3089
+ declare function deviceHttpTargets(source?: Env): {
3090
+ targets: Record<string, DeviceHttpTarget>;
3091
+ errors: Array<string>;
3092
+ };
3093
+ /** The device-HTTP target for one camera record, or `null` when there is none. */
3094
+ declare function resolveDeviceHttp(host: string | undefined, targets?: Record<string, DeviceHttpTarget>): DeviceHttpTarget | null;
3095
+ /**
3096
+ * The cached answer to "we asked the device what it is".
3097
+ *
3098
+ * `ptz: null` and `reachable` are separate facts on purpose — a device can
3099
+ * answer while refusing to say whether it pans (older firmware, or a protocol
3100
+ * with no capability query), and that is an `unknown`, not a `no`.
3101
+ */
3102
+ type DeviceProbeResult = {
3103
+ reachable: boolean;
3104
+ /** True when the failure budget is spent; nothing was sent. */
3105
+ lockedOut?: boolean;
3106
+ ptz?: boolean | null;
3107
+ presets?: boolean | null;
3108
+ softwareVersion?: string | null;
3109
+ deviceType?: string | null;
3110
+ probedAt?: string;
3111
+ };
3112
+ type CameraCapabilityContext = {
3113
+ camera: {
3114
+ type?: string;
3115
+ status?: string;
3116
+ host?: string;
3117
+ } | null;
3118
+ /** RTSP recorders, from `CAMERA_RTSP_DEVICES`. */
3119
+ rtspDevices?: Record<string, CameraDevice>;
3120
+ /** Resolved device-HTTP target for this camera, or `null`. */
3121
+ deviceHttp?: DeviceHttpTarget | null;
3122
+ /** A CACHED probe. `null`/absent means "never asked" → `unknown`, not `no`. */
3123
+ probe?: DeviceProbeResult | null;
3124
+ };
3125
+ type Decision = {
3126
+ state: CameraCapabilityState;
3127
+ reason: CameraCapabilityReason | null;
3128
+ };
3129
+ /**
3130
+ * A way of reaching a camera, and what it can do through that way.
3131
+ *
3132
+ * `evaluate` is asked once per capability it declares. Registration order is
3133
+ * preference order, so the first transport that says `supported` wins — which
3134
+ * is how one camera ends up serving live video over `RELAY_PLAYER` and evidence
3135
+ * stills over `RTSP_FRAME` at the same time, with nothing choosing between them
3136
+ * by hand.
3137
+ */
3138
+ type CameraTransport = {
3139
+ id: string;
3140
+ provides: ReadonlyArray<CameraCapability>;
3141
+ evaluate: (capability: CameraCapability, ctx: CameraCapabilityContext) => Decision;
3142
+ };
3143
+ /**
3144
+ * Is this stored address a video-relay player page?
3145
+ *
3146
+ * The admin form ENFORCES `https://<domain>/<one segment>` for a CCTV camera
3147
+ * (`layer-common` `CameraForm.vue`), and all twelve real records match it. The
3148
+ * three that do not are two `example.com` placeholders and one bare authority
3149
+ * with no channel — so this predicate separates "a URL a WebView can render"
3150
+ * from "a record somebody has not finished", without contacting anything.
3151
+ */
3152
+ declare function isRelayPlayerUrl(host: string | undefined): boolean;
3153
+ /** The registry, read-only to callers. */
3154
+ declare function cameraTransports(): ReadonlyArray<CameraTransport>;
3155
+ /**
3156
+ * Add or replace a transport.
3157
+ *
3158
+ * The point of the registry: an HLS relay, a MediaMTX playback URL or an audio
3159
+ * path is a new entry here and a new `provides` list. **No service, controller
3160
+ * or client changes to add one** — a capability that no transport declares
3161
+ * already answers `no-transport`, and starts answering `supported` the moment
3162
+ * something claims it.
3163
+ */
3164
+ declare function registerCameraTransport(transport: CameraTransport): void;
3165
+ /** Test seam: restore the built-in registry. */
3166
+ declare function resetCameraTransports(): void;
3167
+ type CameraCapabilityTrace = Array<{
3168
+ capability: CameraCapability;
3169
+ transport: string | null;
3170
+ state: CameraCapabilityState;
3171
+ reason: CameraCapabilityReason | null;
3172
+ }>;
3173
+ /**
3174
+ * The descriptor for one camera, plus the trace of how each answer was reached.
3175
+ *
3176
+ * Selection per capability: ask every transport that declares it, in
3177
+ * registration order, and take the first `supported`. Failing that the first
3178
+ * `unknown` — because "we have not asked" outranks "this way cannot" when
3179
+ * telling someone what to do next. Failing that the first `unsupported`, whose
3180
+ * reason belongs to the most-preferred transport and is therefore the most
3181
+ * actionable one. A capability no transport declares is `no-transport`.
3182
+ *
3183
+ * The trace is for the server's log. It names capabilities, transport ids and
3184
+ * reason codes only — **no host, no credential, no address** — so it is safe to
3185
+ * write down, which is the point of having it at all: "why is PTZ off on this
3186
+ * camera" becomes one grep instead of an afternoon.
3187
+ */
3188
+ declare function describeCameraCapabilities(ctx: CameraCapabilityContext, registry?: ReadonlyArray<CameraTransport>): {
3189
+ capabilities: CameraCapabilityDescriptor;
3190
+ trace: CameraCapabilityTrace;
2881
3191
  };
3192
+ /**
3193
+ * The descriptor for a camera record, reading configuration from the
3194
+ * environment. The convenience the service actually calls.
3195
+ *
3196
+ * **`probe` is passed IN, never fetched here.** Nothing in this file may cause
3197
+ * a device request, so a list endpoint cannot start probing by accident — the
3198
+ * single rule that keeps a wall of nine tiles from becoming a burst of
3199
+ * authenticated requests against a device with a lockout policy.
3200
+ */
3201
+ declare function cameraCapabilitiesFor(params: {
3202
+ camera: {
3203
+ type?: string;
3204
+ status?: string;
3205
+ host?: string;
3206
+ } | null;
3207
+ probe?: DeviceProbeResult | null;
3208
+ rtspDevices?: Record<string, CameraDevice>;
3209
+ deviceHttpTargets?: Record<string, DeviceHttpTarget>;
3210
+ }): {
3211
+ capabilities: CameraCapabilityDescriptor;
3212
+ trace: CameraCapabilityTrace;
3213
+ };
3214
+ /** `true` when a camera has at least one capability that works right now. */
3215
+ declare function hasAnyCapability(descriptor: CameraCapabilityDescriptor): boolean;
3216
+ /** Kept for the wall's log line: `liveVideo=RELAY_PLAYER stillFrame=RTSP_FRAME …`. */
3217
+ declare function formatCapabilityTrace(trace: CameraCapabilityTrace): string;
2882
3218
 
2883
3219
  /**
2884
3220
  * Camera functions for Virtual Patrol, proxied.
@@ -2932,6 +3268,14 @@ declare function useCameraViewService(): {
2932
3268
  userId?: string;
2933
3269
  permissions: Array<string>;
2934
3270
  }) => Promise<bson.Document>;
3271
+ authorizeSite: (params: {
3272
+ siteId: string;
3273
+ userId?: string;
3274
+ }) => Promise<{
3275
+ site: mongodb.WithId<bson.Document> | null;
3276
+ siteObjectId: ObjectId;
3277
+ db: mongodb.Db;
3278
+ }>;
2935
3279
  getSnapshot: (params: {
2936
3280
  cameraId: string;
2937
3281
  userId?: string;
@@ -2955,36 +3299,73 @@ declare function useCameraViewService(): {
2955
3299
  reachable: boolean;
2956
3300
  health: "unsupported";
2957
3301
  reason: string;
2958
- camera: {
2959
- _id: any;
2960
- name: any;
2961
- type: any;
2962
- status: any;
2963
- guardPost: any;
2964
- siteName: any;
2965
- };
3302
+ camera: Record<string, any>;
2966
3303
  snapshotSupported: boolean;
2967
- firmwareVersion: null;
3304
+ capabilities: CameraCapabilityDescriptor;
3305
+ firmwareVersion: string | null;
2968
3306
  deviceTime: null;
2969
3307
  driftSeconds: null;
2970
- detailUnavailableReason: string;
3308
+ detailUnavailableReason: string | null;
2971
3309
  } | {
2972
3310
  reachable: boolean;
2973
3311
  health: "ok" | "drifted" | "unreachable";
2974
3312
  reason: string | null;
2975
- camera: {
2976
- _id: any;
2977
- name: any;
2978
- type: any;
2979
- status: any;
2980
- guardPost: any;
2981
- siteName: any;
2982
- };
3313
+ camera: Record<string, any>;
2983
3314
  snapshotSupported: boolean;
2984
- firmwareVersion: null;
3315
+ capabilities: CameraCapabilityDescriptor;
3316
+ firmwareVersion: string | null;
2985
3317
  deviceTime: null;
2986
3318
  driftSeconds: null;
2987
- detailUnavailableReason: string;
3319
+ detailUnavailableReason: string | null;
3320
+ }>;
3321
+ getSiteWall: (params: {
3322
+ siteId: string;
3323
+ userId?: string;
3324
+ }) => Promise<{
3325
+ site: {
3326
+ _id: ObjectId;
3327
+ name: any;
3328
+ };
3329
+ config: {
3330
+ snapshotPollMs: number;
3331
+ singlePollMs: number;
3332
+ maxTiles: number;
3333
+ maxConcurrentProbes: number;
3334
+ healthCacheSeconds: number;
3335
+ };
3336
+ cameras: {
3337
+ unavailableReason: string | null;
3338
+ capabilities: CameraCapabilityDescriptor;
3339
+ }[];
3340
+ }>;
3341
+ getSiteHealth: (params: {
3342
+ siteId: string;
3343
+ userId?: string;
3344
+ cameraIds: Array<string>;
3345
+ }) => Promise<{
3346
+ cameras: ({
3347
+ reachable: boolean;
3348
+ health: "unsupported";
3349
+ reason: string;
3350
+ capabilities: CameraCapabilityDescriptor;
3351
+ firmwareVersion: null;
3352
+ deviceTime: null;
3353
+ driftSeconds: null;
3354
+ detailUnavailableReason: string;
3355
+ lastFrameAt: string | null;
3356
+ unavailableReason: string | null;
3357
+ } | {
3358
+ reachable: boolean;
3359
+ health: "ok" | "drifted" | "unreachable";
3360
+ reason: string | null;
3361
+ capabilities: CameraCapabilityDescriptor;
3362
+ firmwareVersion: null;
3363
+ deviceTime: null;
3364
+ driftSeconds: null;
3365
+ detailUnavailableReason: string;
3366
+ lastFrameAt: string | null;
3367
+ unavailableReason: string | null;
3368
+ })[];
2988
3369
  }>;
2989
3370
  movePtz: (params: {
2990
3371
  cameraId: string;
@@ -2992,7 +3373,9 @@ declare function useCameraViewService(): {
2992
3373
  action: string;
2993
3374
  code: string;
2994
3375
  speed?: number;
2995
- }) => Promise<void>;
3376
+ }) => Promise<{
3377
+ ok: boolean;
3378
+ }>;
2996
3379
  ptzEnabled: boolean;
2997
3380
  };
2998
3381
 
@@ -3010,6 +3393,8 @@ declare function useCameraViewController(): {
3010
3393
  status: (req: Request, res: Response, next: NextFunction) => Promise<void>;
3011
3394
  ptz: (req: Request, res: Response, next: NextFunction) => Promise<void>;
3012
3395
  capabilities: (_req: Request, res: Response) => Promise<void>;
3396
+ wall: (req: Request, res: Response, next: NextFunction) => Promise<void>;
3397
+ health: (req: Request, res: Response, next: NextFunction) => Promise<void>;
3013
3398
  };
3014
3399
 
3015
3400
  type TCustomerSite = {
@@ -8836,4 +9221,4 @@ declare function useNotificationController(): {
8836
9221
  add: (req: Request, res: Response, next: NextFunction) => Promise<void>;
8837
9222
  };
8838
9223
 
8839
- export { ANPRMode, AccessTypeProps, AppServiceType, AssignCardConfig, BidStatus, BidType, BuildingLevelStatus, BuildingStatus, BulkCardUpdate, BulletinOrder, BulletinRecipient, BulletinSort, BulletinStatus, BulletinVideoOrder, BulletinVideoSort, CAMERA_NOT_PATROL_OR_CCTV, CAMERA_PTZ_PERMISSIONS, CAMERA_REQUEST_TIMEOUT_MS, CAMERA_RTSP_TIMEOUT_MS, CAMERA_SNAPSHOT_CACHE_SECONDS, CAMERA_SNAPSHOT_MAX_BYTES, CAMERA_TYPE_ANPR, CAMERA_TYPE_IP, CAMERA_VIEW_PERMISSIONS, CLOCK_DRIFT_WARN_SECONDS, CURRENT_TIME_ENDPOINT, Camera, CameraDevice, CameraType, DEVICE_STATUS, DOBStatus, DayOfWeek, DynamicFormFields, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GuestSort, GuestStatus, HID_PERMISSION_CATEGORIES, IAccessCard, IAccessCardTransaction, MAccessCard, MAccessCardTransaction, MAddress, MAttendance, MAttendanceSettings, MBidPreloved, MBillingConfiguration, MBillingItem, MBuilding, MBuildingLevel, MBuildingUnit, MBulletinBoard, MBulletinVideo, MCategoryPreloved, MChannelPreloved, MChat, MChatPreloved, MCustomer, MCustomerSite, MDocumentManagement, MEntryPassSettings, MEventManagement, MFeedback, MFile, MFormEntry, MGuestManagement, MHidAmicoEvent, MHidAmicoIdentity, MHidAmicoReader, MHidSitePermissions, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, MPost, MPostFavorite, MPromoCode, MRobot, MRole, MRoleV2, MServiceProvider, MServiceProviderBilling, MSession, MSite, MSiteCamera, MSiteFacility, MSiteFacilityBooking, MStatementOfAccount, MSubcategoryPreloved, MSubscription, MUnitBilling, MUser, MVehicle, MVehicleTransaction, MVerification, MVerificationV2, MVisitorTransaction, MWorkOrder, NotificationAppSlug, NotificationModule, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PATROL_CCTV_CAMERA_FILTER, PERSON_TYPES, PStatus, PTZ_ALLOWED_ACTIONS, PTZ_ALLOWED_CODES, Period, PersonStatus, PersonType, PersonTypes, PostOrder, PostSort, PostStatus, QrTagProps, ResidentAppModuleKey, SOFTWARE_VERSION_ENDPOINT, SiteAddress, SiteCategories, SiteStatus, SortFields, SortOrder, Status, SubjectOrder, SubjectSort, SubscriptionType, TAccessMngmntSettings, TActionStatus, TAddress, TAffectedEntities, TAffectedInjured, TAppServiceType, TApprovedBy, TApprover, TAttendance, TAttendanceCheckIn, TAttendanceCheckOut, TAttendanceCheckTime, TAttendanceLocation, TAttendanceSettings, TAttendanceSettingsGetBySite, TAuthorities, TAuthoritiesCalled, TBidPreloved, TBilling, TBillingConfiguration, TBillingItem, TBuilding, TBuildingLevel, TBuildingUnit, TBulletinBoard, TBulletinVideo, TCamera, TCategoryPreloved, TChannelPreloved, TChat, TChatPreloved, TCheckPoint$1 as TCheckPoint, TComplaintInfo, TComplaintReceivedTo, TCounter, TCreateNfcPatrolLog, TCustomer, TCustomerSite, TDayNumber, TDaySchedule, TDefaultAccessCard, TDesignations, TDocs, TDocumentCreate, TDocumentManagement, TEntryPassSettings, TEventManagement, TFeedback, TFeedbackMetadata, TFeedbackUpdate, TFeedbackUpdateCategory, TFeedbackUpdateServiceProvider, TFeedbackUpdateStatus, TFeedbackUpdateToCompleted, TFile, TFiles, TFolderUpdate, TFormEntry, TGetAttendancesByUserQuery, TGetAttendancesQuery, TGuestManagement, THidAmicoEvent, THidAmicoIdentity, THidAmicoReader, THidPermissionAssignment, THidPermissionCategory, THidSitePermissions, TIncidentInformation, TIncidentReport, TIncidentTypeAndTime, TInvoice, TKeyRef, TManpowerDesignations, TManpowerDesignationsUpdate, TManpowerMonitoring, TManpowerMonitoringUpdate, TManpowerRemarks, TManpowerRemarksStatusUpdate, TManpowerRemarksUpdate, TManpowerSearchFilter, TManpowerSites, TMember, TMemberUpdateStatus, TMessagePreloved, TMiniRole, TNfcPatrolLog, TNfcPatrolRoute, TNfcPatrolRouteEdit, TNfcPatrolSettings, TNfcPatrolSettingsGetBySite, TNfcPatrolSettingsUpdate, TNfcPatrolTag, TNfcPatrolTagConfigureReset, TNfcPatrolTagEdit, TNfcPatrolTagUpdateData, TNotification, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPlaceOfIncident, TPlates, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoTier, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, TUnitBilling, TUnits, TUpdateFormEntry, TUpdateName, TUser, TUserCreate, TVehicle, TVehicleTransaction, TVehicleUpdate, TVerification, TVerificationMetadata, TVerificationMetadataV2, TVerificationV2, TVisitorTransaction, TWorkOrder, TWorkOrderMetadata, TWorkOrderUpdate, TWorkOrderUpdateStatus, TWorkOrderUpdateToCompleted, TanyoneDamageToProperty, UseAccessManagementRepo, UserStatus, VehicleCategory, VehicleOrder, VehicleSort, VehicleStatus, VehicleType, VerificationLinkType, VerificationStatus, VerificationSubjectType, VerificationType, VisitorSort, VisitorStatus, addressSchema, allowedFieldsSite, allowedNatures, attendanceSchema, attendanceSettingsSchema, building_level_namespace_collection, building_units_namespace_collection, buildings_namespace_collection, bulletin_boards_namespace_collection, cameraBaseUrl, cameraDevices, cameraHealthSummary, chatPrelovedEvents, chatSchema, clampPtzSpeed, clockDriftSeconds, createManpowerRemarksDaily, customerSchema, designationsSchema, events_namespace_collection, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, formatDahuaDate, guests_namespace_collection, hasAnyPermission, incidentReport, incidentReportLog, incidents_namespace_collection, isCameraEntitled, isPatrolCctvCamera, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, occurrence_book_namespace_collection, online_forms_namespace_collection, orgSchema, overnight_parking_requests_namespace_collection, parseCameraHost, parseDahuaFind, parseDeviceTime, parseSoftwareVersion, promoCodeSchema, ptzEndpoint, publicCameraFields, remarksSchema, residentAppModuleKeys, residentFormEntry, resolutionRefusalReason, resolveCamera, robotSchema, rtspUrl, schema, schemaAppSlugNotification, schemaApprovedBy, schemaApprover, schemaBidPreloved, schemaBilling, schemaBillingConfiguration, schemaBillingItem, schemaBuilding, schemaBuildingLevel, schemaBuildingUnit, schemaBuildingUpdateOptions, schemaBulletinBoard, schemaBulletinVideo, schemaCategoryPreloved, schemaChannelPreloved, schemaChatPreloved, schemaCreateHidAmicoIdentity, schemaCreateNfcPatrolLog, schemaCreateNotification, schemaCustomerSite, schemaDocumentManagement, schemaEntryPassSettings, schemaEventManagement, schemaFiles, schemaFormEntry, schemaGuestManagement, schemaHidAmicoConfiguration, schemaHidAmicoEvent, schemaHidAmicoExecuteActions, schemaHidAmicoIdentity, schemaHidAmicoIdentityIdParams, schemaHidAmicoIdentityQuery, schemaHidAmicoIntercomCall, schemaHidAmicoLogQuery, schemaHidAmicoNotificationParams, schemaHidAmicoObjectOperation, schemaHidAmicoReader, schemaHidAmicoReaderIdParams, schemaHidAmicoReaderListQuery, schemaHidAmicoSetConfiguration, schemaHidAmicoSiteIdParams, schemaHidAmicoSync, schemaHidAmicoUserImageParams, schemaHidAmicoVisitorQr, schemaHidPermissionCandidateQuery, schemaIncidentReport, schemaListNotification, schemaMultipleDocumentManagement, schemaNfcPatrolLog, schemaNfcPatrolRoute, schemaNfcPatrolTag, schemaNfcPatrolTagUpdateData, schemaNotification, schemaOccurrenceBook, schemaOccurrenceEntry, schemaOccurrenceSubject, schemaOnlineForm, schemaOvernightParkingApprovalHours, schemaOvernightParkingRequest, schemaPatrolLog, schemaPatrolQuestion, schemaPatrolRoute, schemaPerson, schemaPlate, schemaPost, schemaPostFavorite, schemaServiceProvider, schemaServiceProviderBilling, schemaSignNfcPatrolLog, schemaSiteCamera, schemaSiteFacility, schemaSiteFacilityBooking, schemaStatementOfAccount, schemaSubcategoryPreloved, schemaUnitBilling, schemaUpdateBidPreloved, schemaUpdateBuildingLevel, schemaUpdateBulletinBoard, schemaUpdateBulletinVideo, schemaUpdateCategoryPreloved, schemaUpdateChatPreloved, schemaUpdateDocumentManagement, schemaUpdateEntryPassSettings, schemaUpdateEventManagement, schemaUpdateFolderManagement, schemaUpdateFormEntry, schemaUpdateGuestManagement, schemaUpdateHidAmicoIdentity, schemaUpdateHidAmicoReader, schemaUpdateHidSitePermissions, schemaUpdateIncidentReport, schemaUpdateNotification, schemaUpdateOccurrenceBook, schemaUpdateOccurrenceEntry, schemaUpdateOccurrenceSubject, schemaUpdateOnlineForm, schemaUpdateOptions, schemaUpdateOvernightParkingRequest, schemaUpdatePatrolLog, schemaUpdatePatrolQuestion, schemaUpdatePatrolRoute, schemaUpdatePerson, schemaUpdatePost, schemaUpdatePostFavorite, schemaUpdateServiceProviderBilling, schemaUpdateSiteBillingConfiguration, schemaUpdateSiteBillingItem, schemaUpdateSiteCamera, schemaUpdateSiteFacility, schemaUpdateSiteFacilityBooking, schemaUpdateSiteUnitBilling, schemaUpdateStatementOfAccount, schemaUpdateSubcategoryPreloved, schemaUpdateVisTrans, schemaVehicleTransaction, schemaVisitorTransaction, schemeCamera, schemeLogCamera, sessionSchema, shiftSchema, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, updateRemarksStatusEod, updateRemarksisAcknowledged, updateSiteSchema, useAccessManagementController, useAddressRepo, useAttendanceController, useAttendanceRepository, useAttendanceSettingsController, useAttendanceSettingsRepository, useAttendanceSettingsService, useAuthController, useAuthControllerV2, useAuthService, useAuthServiceV2, useBidPrelovedController, useBidPrelovedRepo, useBidPrelovedService, useBuildingController, useBuildingLevelController, useBuildingLevelRepo, useBuildingLevelService, useBuildingRepo, useBuildingService, useBuildingUnitController, useBuildingUnitRepo, useBuildingUnitService, useBulletinBoardController, useBulletinBoardRepo, useBulletinBoardService, useBulletinVideoController, useBulletinVideoRepo, useBulletinVideoService, useCameraViewController, useCameraViewService, useCategoryPrelovedController, useCategoryPrelovedRepo, useChannelPrelovedController, useChannelPrelovedRepo, useChatController, useChatPrelovedController, useChatPrelovedRepo, useChatPrelovedService, useChatRepo, useCounterModel, useCounterRepo, useCustomerController, useCustomerRepo, useCustomerSiteController, useCustomerSiteRepo, useCustomerSiteService, useDahuaService, useDashboardController, useDashboardRepo, useDocumentManagementController, useDocumentManagementRepo, useDocumentManagementService, useEntryPassSettingsController, useEntryPassSettingsRepo, useEventManagementController, useEventManagementRepo, useEventManagementService, useFeedbackController, useFeedbackRepo, useFeedbackService, useFileController, useFileRepo, useFileService, useFormEntryController, useFormEntryRepo, useGuestManagementController, useGuestManagementRepo, useGuestManagementService, useHidAmicoController, useHidAmicoRepo, useHidAmicoService, useHrmLabsAttendanceCtrl, useHrmLabsAttendanceSrvc, useIncidentReportController, useIncidentReportRepo, useIncidentReportService, useInvoiceController, useInvoiceModel, useInvoiceRepo, useManpowerDesignationCtrl, useManpowerDesignationRepo, useManpowerMonitoringCtrl, useManpowerMonitoringRepo, useManpowerMonitoringSrvc, useManpowerRemarkCtrl, useManpowerRemarksRepo, useManpowerSitesCtrl, useManpowerSitesRepo, useManpowerSitesSrvc, useMemberController, useMemberRepo, useMemberService, useNewDashboardController, useNewDashboardRepo, useNfcPatrolLogController, useNfcPatrolLogRepo, useNfcPatrolLogService, useNfcPatrolRouteController, useNfcPatrolRouteRepo, useNfcPatrolRouteService, useNfcPatrolSettingsController, useNfcPatrolSettingsRepository, useNfcPatrolSettingsService, useNfcPatrolTagController, useNfcPatrolTagRepo, useNfcPatrolTagService, useNotificationController, useNotificationRepo, useOccurrenceBookController, useOccurrenceBookRepo, useOccurrenceBookService, useOccurrenceEntryController, useOccurrenceEntryRepo, useOccurrenceEntryService, useOccurrenceSubjectController, useOccurrenceSubjectRepo, useOccurrenceSubjectService, useOnlineFormController, useOnlineFormRepo, useOrgController, useOrgControllerV2, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolLogController, usePatrolLogRepo, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, usePostFavoriteController, usePostFavoriteRepo, usePostFavoriteService, usePostPrelovedController, usePostPrelovedRepo, usePriceController, usePriceModel, usePriceRepo, usePromoCodeController, usePromoCodeRepo, useRedDotPaymentController, useRedDotPaymentRepo, useRedDotPaymentSvc, useRobotController, useRobotRepo, useRobotService, useRoleController, useRoleControllerV2, useRoleRepo, useRoleRepoV2, useRoleServiceV2, useServiceProviderBillingController, useServiceProviderBillingRepo, useServiceProviderBillingService, useServiceProviderController, useServiceProviderRepo, useSessionRepo, useSiteBillingConfigurationController, useSiteBillingConfigurationRepo, useSiteBillingItemController, useSiteBillingItemRepo, useSiteCameraController, useSiteCameraRepo, useSiteCameraService, useSiteController, useSiteFacilityBookingController, useSiteFacilityBookingRepo, useSiteFacilityBookingService, useSiteFacilityController, useSiteFacilityRepo, useSiteFacilityService, useSiteRepo, useSiteService, useSiteUnitBillingController, useSiteUnitBillingRepo, useSiteUnitBillingService, useStatementOfAccountController, useStatementOfAccountRepo, useSubcategoryPrelovedController, useSubcategoryPrelovedRepo, useSubscriptionController, useSubscriptionRepo, useSubscriptionService, useUserController, useUserControllerV2, useUserRepo, useUserRepoV2, useUserService, useUserServiceV2, useVehicleController, useVehicleRepo, useVehicleService, useVerificationController, useVerificationControllerV2, useVerificationRepo, useVerificationRepoV2, useVerificationService, useVerificationServiceV2, useVisitorTransactionController, useVisitorTransactionRepo, useVisitorTransactionService, useWorkOrderController, useWorkOrderRepo, useWorkOrderService, userSchema, vehicleSchema, vehicles_namespace_collection, visitorPersonRepo, visitorPersonService, visitorType, visitors_namespace_collection, workOrderSchema, work_orders2_namespace_collection, work_orders_namespace_collection };
9224
+ export { ANPRMode, AccessTypeProps, AppServiceType, AssignCardConfig, BidStatus, BidType, BuildingLevelStatus, BuildingStatus, BulkCardUpdate, BulletinOrder, BulletinRecipient, BulletinSort, BulletinStatus, BulletinVideoOrder, BulletinVideoSort, CAMERA_CAPABILITIES, CAMERA_CAPABILITY_REASONS, CAMERA_NOT_PATROL_OR_CCTV, CAMERA_PTZ_PERMISSIONS, CAMERA_REQUEST_TIMEOUT_MS, CAMERA_RTSP_TIMEOUT_MS, CAMERA_SNAPSHOT_CACHE_SECONDS, CAMERA_SNAPSHOT_MAX_BYTES, CAMERA_TYPE_ANPR, CAMERA_TYPE_IP, CAMERA_VIEW_PERMISSIONS, CLOCK_DRIFT_WARN_SECONDS, CURRENT_TIME_ENDPOINT, Camera, CameraCapability, CameraCapabilityContext, CameraCapabilityDescriptor, CameraCapabilityEntry, CameraCapabilityReason, CameraCapabilityState, CameraCapabilityTrace, CameraDevice, CameraTransport, CameraType, DEVICE_STATUS, DOBStatus, DayOfWeek, DeviceHttpTarget, DeviceProbeResult, DynamicFormFields, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GuestSort, GuestStatus, HID_PERMISSION_CATEGORIES, IAccessCard, IAccessCardTransaction, MAccessCard, MAccessCardTransaction, MAddress, MAttendance, MAttendanceSettings, MBidPreloved, MBillingConfiguration, MBillingItem, MBuilding, MBuildingLevel, MBuildingUnit, MBulletinBoard, MBulletinVideo, MCategoryPreloved, MChannelPreloved, MChat, MChatPreloved, MCustomer, MCustomerSite, MDocumentManagement, MEntryPassSettings, MEventManagement, MFeedback, MFile, MFormEntry, MGuestManagement, MHidAmicoEvent, MHidAmicoIdentity, MHidAmicoReader, MHidSitePermissions, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, MPost, MPostFavorite, MPromoCode, MRobot, MRole, MRoleV2, MServiceProvider, MServiceProviderBilling, MSession, MSite, MSiteCamera, MSiteFacility, MSiteFacilityBooking, MStatementOfAccount, MSubcategoryPreloved, MSubscription, MUnitBilling, MUser, MVehicle, MVehicleTransaction, MVerification, MVerificationV2, MVisitorTransaction, MWorkOrder, NotificationAppSlug, NotificationModule, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PATROL_CCTV_CAMERA_FILTER, PERSON_TYPES, PStatus, PTZ_ALLOWED_ACTIONS, PTZ_ALLOWED_CODES, Period, PersonStatus, PersonType, PersonTypes, PostOrder, PostSort, PostStatus, QrTagProps, ResidentAppModuleKey, SOFTWARE_VERSION_ENDPOINT, SiteAddress, SiteCategories, SiteStatus, SortFields, SortOrder, Status, SubjectOrder, SubjectSort, SubscriptionType, TAccessMngmntSettings, TActionStatus, TAddress, TAffectedEntities, TAffectedInjured, TAppServiceType, TApprovedBy, TApprover, TAttendance, TAttendanceCheckIn, TAttendanceCheckOut, TAttendanceCheckTime, TAttendanceLocation, TAttendanceSettings, TAttendanceSettingsGetBySite, TAuthorities, TAuthoritiesCalled, TBidPreloved, TBilling, TBillingConfiguration, TBillingItem, TBuilding, TBuildingLevel, TBuildingUnit, TBulletinBoard, TBulletinVideo, TCamera, TCategoryPreloved, TChannelPreloved, TChat, TChatPreloved, TCheckPoint$1 as TCheckPoint, TComplaintInfo, TComplaintReceivedTo, TCounter, TCreateNfcPatrolLog, TCustomer, TCustomerSite, TDayNumber, TDaySchedule, TDefaultAccessCard, TDesignations, TDocs, TDocumentCreate, TDocumentManagement, TEntryPassSettings, TEventManagement, TFeedback, TFeedbackMetadata, TFeedbackUpdate, TFeedbackUpdateCategory, TFeedbackUpdateServiceProvider, TFeedbackUpdateStatus, TFeedbackUpdateToCompleted, TFile, TFiles, TFolderUpdate, TFormEntry, TGetAttendancesByUserQuery, TGetAttendancesQuery, TGuestManagement, THidAmicoEvent, THidAmicoIdentity, THidAmicoReader, THidPermissionAssignment, THidPermissionCategory, THidSitePermissions, TIncidentInformation, TIncidentReport, TIncidentTypeAndTime, TInvoice, TKeyRef, TManpowerDesignations, TManpowerDesignationsUpdate, TManpowerMonitoring, TManpowerMonitoringUpdate, TManpowerRemarks, TManpowerRemarksStatusUpdate, TManpowerRemarksUpdate, TManpowerSearchFilter, TManpowerSites, TMember, TMemberUpdateStatus, TMessagePreloved, TMiniRole, TNfcPatrolLog, TNfcPatrolRoute, TNfcPatrolRouteEdit, TNfcPatrolSettings, TNfcPatrolSettingsGetBySite, TNfcPatrolSettingsUpdate, TNfcPatrolTag, TNfcPatrolTagConfigureReset, TNfcPatrolTagEdit, TNfcPatrolTagUpdateData, TNotification, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPlaceOfIncident, TPlates, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoTier, TRANSPORT_DEVICE_HTTP, TRANSPORT_RELAY_PLAYER, TRANSPORT_RTSP_FRAME, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, TUnitBilling, TUnits, TUpdateFormEntry, TUpdateName, TUser, TUserCreate, TVehicle, TVehicleTransaction, TVehicleUpdate, TVerification, TVerificationMetadata, TVerificationMetadataV2, TVerificationV2, TVisitorTransaction, TWorkOrder, TWorkOrderMetadata, TWorkOrderUpdate, TWorkOrderUpdateStatus, TWorkOrderUpdateToCompleted, TanyoneDamageToProperty, UseAccessManagementRepo, UserStatus, VehicleCategory, VehicleOrder, VehicleSort, VehicleStatus, VehicleType, VerificationLinkType, VerificationStatus, VerificationSubjectType, VerificationType, VisitorSort, VisitorStatus, addressSchema, allowedFieldsSite, allowedNatures, attendanceSchema, attendanceSettingsSchema, building_level_namespace_collection, building_units_namespace_collection, buildings_namespace_collection, bulletin_boards_namespace_collection, cameraBaseUrl, cameraCapabilitiesFor, cameraDevices, cameraHealthSummary, cameraTransports, chatPrelovedEvents, chatSchema, clampPtzSpeed, clockDriftSeconds, createManpowerRemarksDaily, customerSchema, describeCameraCapabilities, designationsSchema, deviceControlEnabled, deviceHttpEnabled, deviceHttpTargets, deviceHttpTimeoutMs, deviceProbeTtlSeconds, events_namespace_collection, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, formatCapabilityTrace, formatDahuaDate, guests_namespace_collection, hasAnyCapability, hasAnyPermission, incidentReport, incidentReportLog, incidents_namespace_collection, isCameraEntitled, isPatrolCctvCamera, isRelayPlayerUrl, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, occurrence_book_namespace_collection, online_forms_namespace_collection, orgSchema, overnight_parking_requests_namespace_collection, parseCameraHost, parseDahuaFind, parseDeviceTime, parseSoftwareVersion, promoCodeSchema, ptzEndpoint, publicCameraFields, registerCameraTransport, remarksSchema, resetCameraTransports, residentAppModuleKeys, residentFormEntry, resolutionRefusalReason, resolveCamera, resolveDeviceHttp, robotSchema, rtspUrl, schema, schemaAppSlugNotification, schemaApprovedBy, schemaApprover, schemaBidPreloved, schemaBilling, schemaBillingConfiguration, schemaBillingItem, schemaBuilding, schemaBuildingLevel, schemaBuildingUnit, schemaBuildingUpdateOptions, schemaBulletinBoard, schemaBulletinVideo, schemaCategoryPreloved, schemaChannelPreloved, schemaChatPreloved, schemaCreateHidAmicoIdentity, schemaCreateNfcPatrolLog, schemaCreateNotification, schemaCustomerSite, schemaDocumentManagement, schemaEntryPassSettings, schemaEventManagement, schemaFiles, schemaFormEntry, schemaGuestManagement, schemaHidAmicoConfiguration, schemaHidAmicoEvent, schemaHidAmicoExecuteActions, schemaHidAmicoIdentity, schemaHidAmicoIdentityIdParams, schemaHidAmicoIdentityQuery, schemaHidAmicoIntercomCall, schemaHidAmicoLogQuery, schemaHidAmicoNotificationParams, schemaHidAmicoObjectOperation, schemaHidAmicoReader, schemaHidAmicoReaderIdParams, schemaHidAmicoReaderListQuery, schemaHidAmicoSetConfiguration, schemaHidAmicoSiteIdParams, schemaHidAmicoSync, schemaHidAmicoUserImageParams, schemaHidAmicoVisitorQr, schemaHidPermissionCandidateQuery, schemaIncidentReport, schemaListNotification, schemaMultipleDocumentManagement, schemaNfcPatrolLog, schemaNfcPatrolRoute, schemaNfcPatrolTag, schemaNfcPatrolTagUpdateData, schemaNotification, schemaOccurrenceBook, schemaOccurrenceEntry, schemaOccurrenceSubject, schemaOnlineForm, schemaOvernightParkingApprovalHours, schemaOvernightParkingRequest, schemaPatrolLog, schemaPatrolQuestion, schemaPatrolRoute, schemaPerson, schemaPlate, schemaPost, schemaPostFavorite, schemaServiceProvider, schemaServiceProviderBilling, schemaSignNfcPatrolLog, schemaSiteCamera, schemaSiteFacility, schemaSiteFacilityBooking, schemaStatementOfAccount, schemaSubcategoryPreloved, schemaUnitBilling, schemaUpdateBidPreloved, schemaUpdateBuildingLevel, schemaUpdateBulletinBoard, schemaUpdateBulletinVideo, schemaUpdateCategoryPreloved, schemaUpdateChatPreloved, schemaUpdateDocumentManagement, schemaUpdateEntryPassSettings, schemaUpdateEventManagement, schemaUpdateFolderManagement, schemaUpdateFormEntry, schemaUpdateGuestManagement, schemaUpdateHidAmicoIdentity, schemaUpdateHidAmicoReader, schemaUpdateHidSitePermissions, schemaUpdateIncidentReport, schemaUpdateNotification, schemaUpdateOccurrenceBook, schemaUpdateOccurrenceEntry, schemaUpdateOccurrenceSubject, schemaUpdateOnlineForm, schemaUpdateOptions, schemaUpdateOvernightParkingRequest, schemaUpdatePatrolLog, schemaUpdatePatrolQuestion, schemaUpdatePatrolRoute, schemaUpdatePerson, schemaUpdatePost, schemaUpdatePostFavorite, schemaUpdateServiceProviderBilling, schemaUpdateSiteBillingConfiguration, schemaUpdateSiteBillingItem, schemaUpdateSiteCamera, schemaUpdateSiteFacility, schemaUpdateSiteFacilityBooking, schemaUpdateSiteUnitBilling, schemaUpdateStatementOfAccount, schemaUpdateSubcategoryPreloved, schemaUpdateVisTrans, schemaVehicleTransaction, schemaVisitorTransaction, schemeCamera, schemeLogCamera, sessionSchema, shiftSchema, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, updateRemarksStatusEod, updateRemarksisAcknowledged, updateSiteSchema, useAccessManagementController, useAddressRepo, useAttendanceController, useAttendanceRepository, useAttendanceSettingsController, useAttendanceSettingsRepository, useAttendanceSettingsService, useAuthController, useAuthControllerV2, useAuthService, useAuthServiceV2, useBidPrelovedController, useBidPrelovedRepo, useBidPrelovedService, useBuildingController, useBuildingLevelController, useBuildingLevelRepo, useBuildingLevelService, useBuildingRepo, useBuildingService, useBuildingUnitController, useBuildingUnitRepo, useBuildingUnitService, useBulletinBoardController, useBulletinBoardRepo, useBulletinBoardService, useBulletinVideoController, useBulletinVideoRepo, useBulletinVideoService, useCameraViewController, useCameraViewService, useCategoryPrelovedController, useCategoryPrelovedRepo, useChannelPrelovedController, useChannelPrelovedRepo, useChatController, useChatPrelovedController, useChatPrelovedRepo, useChatPrelovedService, useChatRepo, useCounterModel, useCounterRepo, useCustomerController, useCustomerRepo, useCustomerSiteController, useCustomerSiteRepo, useCustomerSiteService, useDahuaService, useDashboardController, useDashboardRepo, useDocumentManagementController, useDocumentManagementRepo, useDocumentManagementService, useEntryPassSettingsController, useEntryPassSettingsRepo, useEventManagementController, useEventManagementRepo, useEventManagementService, useFeedbackController, useFeedbackRepo, useFeedbackService, useFileController, useFileRepo, useFileService, useFormEntryController, useFormEntryRepo, useGuestManagementController, useGuestManagementRepo, useGuestManagementService, useHidAmicoController, useHidAmicoRepo, useHidAmicoService, useHrmLabsAttendanceCtrl, useHrmLabsAttendanceSrvc, useIncidentReportController, useIncidentReportRepo, useIncidentReportService, useInvoiceController, useInvoiceModel, useInvoiceRepo, useManpowerDesignationCtrl, useManpowerDesignationRepo, useManpowerMonitoringCtrl, useManpowerMonitoringRepo, useManpowerMonitoringSrvc, useManpowerRemarkCtrl, useManpowerRemarksRepo, useManpowerSitesCtrl, useManpowerSitesRepo, useManpowerSitesSrvc, useMemberController, useMemberRepo, useMemberService, useNewDashboardController, useNewDashboardRepo, useNfcPatrolLogController, useNfcPatrolLogRepo, useNfcPatrolLogService, useNfcPatrolRouteController, useNfcPatrolRouteRepo, useNfcPatrolRouteService, useNfcPatrolSettingsController, useNfcPatrolSettingsRepository, useNfcPatrolSettingsService, useNfcPatrolTagController, useNfcPatrolTagRepo, useNfcPatrolTagService, useNotificationController, useNotificationRepo, useOccurrenceBookController, useOccurrenceBookRepo, useOccurrenceBookService, useOccurrenceEntryController, useOccurrenceEntryRepo, useOccurrenceEntryService, useOccurrenceSubjectController, useOccurrenceSubjectRepo, useOccurrenceSubjectService, useOnlineFormController, useOnlineFormRepo, useOrgController, useOrgControllerV2, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolLogController, usePatrolLogRepo, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, usePostFavoriteController, usePostFavoriteRepo, usePostFavoriteService, usePostPrelovedController, usePostPrelovedRepo, usePriceController, usePriceModel, usePriceRepo, usePromoCodeController, usePromoCodeRepo, useRedDotPaymentController, useRedDotPaymentRepo, useRedDotPaymentSvc, useRobotController, useRobotRepo, useRobotService, useRoleController, useRoleControllerV2, useRoleRepo, useRoleRepoV2, useRoleServiceV2, useServiceProviderBillingController, useServiceProviderBillingRepo, useServiceProviderBillingService, useServiceProviderController, useServiceProviderRepo, useSessionRepo, useSiteBillingConfigurationController, useSiteBillingConfigurationRepo, useSiteBillingItemController, useSiteBillingItemRepo, useSiteCameraController, useSiteCameraRepo, useSiteCameraService, useSiteController, useSiteFacilityBookingController, useSiteFacilityBookingRepo, useSiteFacilityBookingService, useSiteFacilityController, useSiteFacilityRepo, useSiteFacilityService, useSiteRepo, useSiteService, useSiteUnitBillingController, useSiteUnitBillingRepo, useSiteUnitBillingService, useStatementOfAccountController, useStatementOfAccountRepo, useSubcategoryPrelovedController, useSubcategoryPrelovedRepo, useSubscriptionController, useSubscriptionRepo, useSubscriptionService, useUserController, useUserControllerV2, useUserRepo, useUserRepoV2, useUserService, useUserServiceV2, useVehicleController, useVehicleRepo, useVehicleService, useVerificationController, useVerificationControllerV2, useVerificationRepo, useVerificationRepoV2, useVerificationService, useVerificationServiceV2, useVisitorTransactionController, useVisitorTransactionRepo, useVisitorTransactionService, useWorkOrderController, useWorkOrderRepo, useWorkOrderService, userSchema, vehicleSchema, vehicles_namespace_collection, visitorPersonRepo, visitorPersonService, visitorType, visitors_namespace_collection, wallConfig, workOrderSchema, work_orders2_namespace_collection, work_orders_namespace_collection };