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

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,42 @@
1
+ ---
2
+ "@7365admin1/core": minor
3
+ ---
4
+
5
+ Camera functions for Virtual Patrol, proxied server-side.
6
+
7
+ Adds authenticated camera endpoints so the apps can use a site camera without ever
8
+ holding its credential. Dahua devices authenticate with digest and the cleartext
9
+ password on every request (HTTP API V3.37 §3.4) and the specification offers no
10
+ session or usable token, so the only safe shape is a server-side proxy.
11
+
12
+ - `useCameraViewController` — snapshot, snapshot-to-file for evidence, and
13
+ per-recorder health.
14
+ - A camera record does not hold a device address: `site.cameras.host` is the CCTV
15
+ relay's page URL and its numeric last path segment is the stream channel. A
16
+ camera is therefore resolved as **recorder (from `CAMERA_RTSP_DEVICES`, keyed by
17
+ relay authority) + channel (from the stored host)**. The address and credential
18
+ live in deployment configuration only — never in the database, never in a client.
19
+ - Pictures come off the video stream (one `ffmpeg` frame per snapshot, substream
20
+ for a tile, main stream for an evidence capture). The recorder in use exposes
21
+ RTSP only; its HTTP CGI ports are not reachable, so `snapshot.cgi`, firmware
22
+ (§4.6.14), device clock (§4.6.2) and PTZ (§8.1.5) cannot be used against it.
23
+ Firmware and clock are reported as unavailable with a reason, and PTZ refuses.
24
+ `GET /site-cameras/capabilities` reports `ptz: false` whatever
25
+ `CAMERA_PTZ_ENABLED` says, so a client hides the control rather than drawing a
26
+ pad whose every press fails.
27
+ - A camera whose relay has no configured recorder, or whose address carries no
28
+ channel, is refused up-front with a reason rather than failing as a blank picture.
29
+ - At most `CAMERA_MAX_CONCURRENT_GRABS` (4) pictures are taken at once across the
30
+ process, so the endpoint cannot fill the API host with ffmpeg or overpull the
31
+ recorder; over that, the caller is told the cameras are busy.
32
+ - Access is decided by the caller's site/org membership and their role's
33
+ permissions, never by the camera id in the URL.
34
+ - ANPR units are refused: ANPR belongs to visitor and vehicle management, not to
35
+ Virtual Patrol or CCTV.
36
+ - Camera host, username, password and the RTSP URL are never returned and never
37
+ logged; ffmpeg's stderr is discarded because it echoes the credential.
38
+ - No retry on a camera call: the device locks an account for 1800 s after 3
39
+ failures in 30 s (§4.7.x).
40
+
41
+ Requires `ffmpeg` on the API host (or `CAMERA_FFMPEG_PATH`); where it is absent the
42
+ snapshot endpoints answer with "Video tooling is not available on this server."
package/dist/index.d.ts CHANGED
@@ -2585,6 +2585,433 @@ declare function useSiteCameraController(): {
2585
2585
  deleteById: (req: Request, res: Response, next: NextFunction) => Promise<void>;
2586
2586
  };
2587
2587
 
2588
+ /**
2589
+ * Camera-view rules, as pure functions.
2590
+ *
2591
+ * Everything in this file is decidable without a network, a database or an
2592
+ * Express request, which is the point: the access rules and the Dahua protocol
2593
+ * details below are the parts that must not silently rot, and they are the parts
2594
+ * that are otherwise impossible to test without a camera on a desk.
2595
+ *
2596
+ * Endpoint and page references are to Dahua HTTP API V3.37.
2597
+ */
2598
+ /** Dahua `site.cameras.type` values. Only `ip` units serve pictures — see below. */
2599
+ declare const CAMERA_TYPE_IP = "ip";
2600
+ declare const CAMERA_TYPE_ANPR = "anpr";
2601
+ /**
2602
+ * The domain rule, and it is a product decision, not a technical workaround
2603
+ * (owner, 2026-08-07): **ANPR is a different estate from Virtual Patrol and
2604
+ * CCTV.** ANPR units belong to visitor management and vehicle management, where
2605
+ * they already work; they are not patrol checkpoints and they are not monitoring
2606
+ * cameras. So Patrol and CCTV see `type: "ip"` cameras and nothing else.
2607
+ *
2608
+ * That is why an ANPR record is REFUSED here rather than carried through as a
2609
+ * special case with a "cannot serve a picture" label: it is not a camera this
2610
+ * feature is allowed to touch at all. Nothing in the visitor or vehicle path
2611
+ * reads this file, so the working ANPR flows are untouched.
2612
+ *
2613
+ * The vendor spec agrees, incidentally — V3.37 §10.4.4 (p.538), verbatim: *"For
2614
+ * intelligent traffic device, it should use this method to take a snapshot. But,
2615
+ * the response is not image data."* — but the reason we refuse is the domain
2616
+ * rule, and it would still hold if a future firmware returned a JPEG.
2617
+ */
2618
+ declare const CAMERA_NOT_PATROL_OR_CCTV = "This is an ANPR unit. ANPR belongs to visitor and vehicle management; Virtual Patrol and CCTV use IP cameras only.";
2619
+ /**
2620
+ * Is this a camera Virtual Patrol or CCTV may use at all?
2621
+ *
2622
+ * The single gate for every per-camera request, so a new endpoint cannot forget
2623
+ * it — and the reason it is a predicate rather than an inline `!==` is that the
2624
+ * rule now has a name a reviewer can look up.
2625
+ */
2626
+ declare function isPatrolCctvCamera(camera: {
2627
+ type?: string;
2628
+ } | null): boolean;
2629
+ /**
2630
+ * The same rule as a database filter, for the listing paths.
2631
+ *
2632
+ * A wall that renders ANPR tiles as "unsupported" is still showing a supervisor
2633
+ * cameras from a module they are not looking at. They are excluded by the query,
2634
+ * so they cost neither a tile nor a probe.
2635
+ */
2636
+ declare const PATROL_CCTV_CAMERA_FILTER: {
2637
+ type: string;
2638
+ };
2639
+ /**
2640
+ * Permission strings that may VIEW a camera.
2641
+ *
2642
+ * Measured, not chosen: these are the catalogued Virtual Patrol read strings, and
2643
+ * their union reaches 25 of 36 security members on staging once wildcards are
2644
+ * counted (the same union the client-side read gate uses). Spelling is verbatim
2645
+ * production spelling — never "corrected".
2646
+ */
2647
+ declare const CAMERA_VIEW_PERMISSIONS: string[];
2648
+ /**
2649
+ * Permission strings that may MOVE a camera.
2650
+ *
2651
+ * Stricter on purpose: viewing a picture is a read, PTZ turns a motor. Only a
2652
+ * role that may actually start a patrol may steer a camera during one.
2653
+ */
2654
+ declare const CAMERA_PTZ_PERMISSIONS: string[];
2655
+ /** `*` is the estate's wildcard permission and is honoured everywhere else too. */
2656
+ declare function hasAnyPermission(permissions: unknown, allowed: Array<string>): boolean;
2657
+ /**
2658
+ * May this caller reach this camera?
2659
+ *
2660
+ * The id comes from the URL, so it is an untrusted input and is never the thing
2661
+ * that decides. What decides is the caller's membership: the camera's SITE must
2662
+ * be one they are a member of, or — for a membership recorded at org level, with
2663
+ * no site on it — the camera's site must belong to that org.
2664
+ *
2665
+ * Ids are compared as strings so an ObjectId and its hex form match.
2666
+ */
2667
+ declare function isCameraEntitled(params: {
2668
+ cameraSite?: unknown;
2669
+ cameraOrg?: unknown;
2670
+ memberships: Array<{
2671
+ siteId?: unknown;
2672
+ org?: unknown;
2673
+ }>;
2674
+ }): boolean;
2675
+ /**
2676
+ * Why this camera cannot serve a picture, or `null` when it can.
2677
+ *
2678
+ * Returned rather than thrown so the caller decides the HTTP status, and so the
2679
+ * whole rule set is one assertion in a test.
2680
+ */
2681
+ declare function snapshotRefusalReason(camera: {
2682
+ type?: string;
2683
+ status?: string;
2684
+ host?: string;
2685
+ } | null, devices?: Record<string, CameraDevice>): string | null;
2686
+ /**
2687
+ * `site.cameras.host` is stored with or without a scheme depending on who added
2688
+ * the record. Default to `http://` rather than `https://`: 9 of the 17 hosts in
2689
+ * the estate are cleartext today (integration audit R8), and silently upgrading
2690
+ * them would turn a working camera into a TLS error.
2691
+ *
2692
+ * ponytail: no URL library. Trailing-slash trim + scheme default is the whole
2693
+ * job; swap in `new URL()` if hosts ever carry paths or ports we must rewrite.
2694
+ */
2695
+ declare function cameraBaseUrl(host: string): string;
2696
+ /**
2697
+ * **`site.cameras.host` is not a device address for an `ip` camera.** Measured
2698
+ * across the whole estate, 2026-08-09: every active `ip` record stores the CCTV
2699
+ * relay's *page* URL — `https://<relay-authority>/<channel>` — and the numeric
2700
+ * last path segment is the **stream channel** on the recorder the relay reads.
2701
+ *
2702
+ * So a camera resolves in two parts:
2703
+ *
2704
+ * | Part | Comes from |
2705
+ * |---|---|
2706
+ * | which device | server configuration, keyed by the relay authority |
2707
+ * | which stream on it | the stored host's last path segment |
2708
+ *
2709
+ * The device address and its credential live in deployment configuration and
2710
+ * **never in the database and never in the client** — the same rule as every
2711
+ * other secret in this estate, and the reason this file only ever returns a
2712
+ * resolved device to server-side callers.
2713
+ */
2714
+ type CameraDevice = {
2715
+ host: string;
2716
+ port: number;
2717
+ username: string;
2718
+ password: string;
2719
+ };
2720
+ /**
2721
+ * `CAMERA_RTSP_DEVICES` — a JSON object keyed by relay authority:
2722
+ *
2723
+ * ```
2724
+ * {"<relay-authority>":{"host":"…","port":554,"username":"…","password":"…"}}
2725
+ * ```
2726
+ *
2727
+ * One variable rather than a per-authority naming scheme, because the estate has
2728
+ * exactly one relay today and an unknown number tomorrow; adding the second one
2729
+ * is a config edit, not a code change. Malformed JSON yields no devices — every
2730
+ * camera then refuses with a reason, which is the correct failure for a
2731
+ * misconfigured server and is far better than a half-parsed device map.
2732
+ */
2733
+ declare function cameraDevices(env?: Record<string, string | undefined>): Record<string, CameraDevice>;
2734
+ /**
2735
+ * The relay authority and the channel a stored host stands for.
2736
+ *
2737
+ * `null` channel means the host carries no numeric last segment — one record in
2738
+ * the estate is like that, and it is genuinely unresolvable rather than a
2739
+ * defaulted channel 1, which would silently show the wrong camera.
2740
+ */
2741
+ declare function parseCameraHost(host: string): {
2742
+ authority: string;
2743
+ channel: number | null;
2744
+ } | null;
2745
+ /** The device + channel a camera record stands for, or `null` if it does not. */
2746
+ declare function resolveCamera(host: string | undefined, devices?: Record<string, CameraDevice>): {
2747
+ device: CameraDevice;
2748
+ channel: number;
2749
+ } | null;
2750
+ /**
2751
+ * Why a stored host cannot be resolved to a device, or `null` when it can.
2752
+ *
2753
+ * Three distinct reasons on purpose — a lead reading a tile must be able to tell
2754
+ * "nobody configured this relay" (a deployment fix) from "this record is a
2755
+ * placeholder" (a data fix). The estate has all three today: 12 cameras resolve,
2756
+ * two are `example.com` placeholders and one host carries no channel.
2757
+ */
2758
+ declare function resolutionRefusalReason(host: string | undefined, devices?: Record<string, CameraDevice>): string | null;
2759
+ /**
2760
+ * The RTSP URL for one channel. **Carries the credential — never log it, never
2761
+ * return it, never put it in an error message.**
2762
+ *
2763
+ * The path is the recorder's own (`/cam/realmonitor`), which is what the CCTV
2764
+ * relay has always used; `subtype=1` is the low-bitrate substream and is what a
2765
+ * wall tile wants, `subtype=0` is the full-resolution main stream and is what an
2766
+ * evidence capture wants.
2767
+ */
2768
+ declare function rtspUrl(device: CameraDevice, channel: number, subtype?: 0 | 1): string;
2769
+ /**
2770
+ * ffmpeg arguments for "one frame, as JPEG, on stdout".
2771
+ *
2772
+ * Separated from the spawn so the arguments are testable without a camera, and
2773
+ * kept deliberately small: TCP transport (the relay uses it and UDP loses frames
2774
+ * across the internet), a single frame, no audio, and nothing that could write
2775
+ * to the device — RTSP `PLAY` is a read.
2776
+ */
2777
+ declare function ffmpegFrameArgs(url: string): Array<string>;
2778
+ /**
2779
+ * Measured against the live recorder on 2026-08-10: a substream frame arrives in
2780
+ * 7–9 s (RTSP setup plus the wait for a keyframe), three concurrent pulls showed
2781
+ * no degradation. The old 8 s HTTP budget would have timed out most frames, so
2782
+ * this is a separate, larger budget rather than a reuse of it.
2783
+ */
2784
+ declare const CAMERA_RTSP_TIMEOUT_MS = 15000;
2785
+ /** `ffmpeg` on PATH by default; overridable where the host keeps it elsewhere. */
2786
+ declare function ffmpegPath(env?: Record<string, string | undefined>): string;
2787
+ /** §4.4.2, p.63 — `type=0` is "from the front end", i.e. the live picture. */
2788
+ declare function snapshotEndpoint(channel?: number): string;
2789
+ /** §4.6.14, p.114 — the cheapest call that completes a full digest handshake. */
2790
+ declare const SOFTWARE_VERSION_ENDPOINT = "/cgi-bin/magicBox.cgi?action=getSoftwareVersion";
2791
+ /** §4.6.2, p.106 — read-only. `setCurrentTime` (§4.6.3) is a write and is not ours. */
2792
+ declare const CURRENT_TIME_ENDPOINT = "/cgi-bin/global.cgi?action=getCurrentTime";
2793
+ /**
2794
+ * PTZ movement codes we are willing to send (§8.1.5, p.297).
2795
+ *
2796
+ * An allow-list, not a pass-through. The full `code` set in §8.1 also covers
2797
+ * presets, tours and patterns — those WRITE device configuration, and this
2798
+ * integration issues no configuration writes to any device.
2799
+ */
2800
+ declare const PTZ_ALLOWED_CODES: string[];
2801
+ declare const PTZ_ALLOWED_ACTIONS: string[];
2802
+ /**
2803
+ * §8.1.5, p.297. Every value is percent-encoded — the same class of defect
2804
+ * `iservice365-core` #1803 fixed on the plate endpoints, where an unencoded
2805
+ * value silently changed the request the device saw.
2806
+ */
2807
+ declare function ptzEndpoint(params: {
2808
+ action: string;
2809
+ channel?: number;
2810
+ code: string;
2811
+ speed?: number;
2812
+ }): string;
2813
+ /** §8.1.5 speeds run 1..8. Anything else is coerced, never passed through. */
2814
+ declare function clampPtzSpeed(speed: unknown): number;
2815
+ /** `version=3.140.0000000.0\nBuildDate=...` → `3.140.0000000.0`. */
2816
+ declare function parseSoftwareVersion(body: string): string | null;
2817
+ /** `result=2026-08-09 21:30:00` → the same string. */
2818
+ declare function parseDeviceTime(body: string): string | null;
2819
+ /**
2820
+ * How far the camera's clock is from ours, in seconds.
2821
+ *
2822
+ * The device reports LOCAL time with no offset, and the estate runs on Singapore
2823
+ * time (the product-wide rule), so it is compared against a fixed +8h — never
2824
+ * against the API host's own timezone, which is how the patrol-log day windows
2825
+ * went wrong in the first place.
2826
+ *
2827
+ * `null` when the device did not give a parseable time; a drifted clock and an
2828
+ * unreadable one are different facts and must not collapse into "0".
2829
+ */
2830
+ declare function clockDriftSeconds(deviceTime: string | null, now: Date): number | null;
2831
+ /**
2832
+ * A camera is "healthy" when it answered at all. Firmware and clock are extra
2833
+ * detail; reachability is the signal the guardhouse actually needs, because
2834
+ * today `site.cameras.status` is OUR field and never the device's.
2835
+ *
2836
+ * A drift beyond a minute is called out separately: ANPR transactions are
2837
+ * timestamped from the device, so a drifted clock puts events in the wrong place
2838
+ * in the timeline and nothing currently notices.
2839
+ */
2840
+ declare const CLOCK_DRIFT_WARN_SECONDS = 60;
2841
+ declare function cameraHealthSummary(params: {
2842
+ reachable: boolean;
2843
+ driftSeconds: number | null;
2844
+ }): "ok" | "drifted" | "unreachable";
2845
+ /**
2846
+ * Hard ceiling on a proxied picture.
2847
+ *
2848
+ * The device sits on the public internet, so an unbounded read is a way to hang
2849
+ * an API worker. 8 MB clears a 4K JPEG with room to spare and stops well short of
2850
+ * anything that could only be a fault or a hostile response.
2851
+ *
2852
+ * ponytail: checked after the response is buffered, not streamed with a running
2853
+ * counter — the request timeout already bounds how long a body can arrive for.
2854
+ * Move to a streaming counter if a device is ever found that trickles.
2855
+ */
2856
+ declare const CAMERA_SNAPSHOT_MAX_BYTES: number;
2857
+ /** Short, because this call sits on a guard's screen and a camera may be down. */
2858
+ declare const CAMERA_REQUEST_TIMEOUT_MS = 8000;
2859
+ /**
2860
+ * Server-side snapshot cache, in seconds.
2861
+ *
2862
+ * The single most important number here. V3.37 does not document how many
2863
+ * concurrent pulls a unit tolerates (searched — it is simply absent), so N guards
2864
+ * watching one camera must cost ONE device request, not N.
2865
+ */
2866
+ declare const CAMERA_SNAPSHOT_CACHE_SECONDS = 2;
2867
+ /**
2868
+ * Fields of a camera record that may cross the wire.
2869
+ *
2870
+ * An allow-list, not a delete-list: `host`, `username` and `password` must never
2871
+ * reach a client or a log, and a future field added to the model must be opted
2872
+ * IN rather than remembered about.
2873
+ */
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;
2881
+ };
2882
+
2883
+ /**
2884
+ * Camera functions for Virtual Patrol, proxied.
2885
+ *
2886
+ * ## Why this exists at all
2887
+ *
2888
+ * Dahua devices authenticate with digest and the cleartext password on EVERY
2889
+ * request (V3.37 §3.4). The specification offers no session, no API key and no
2890
+ * usable token — §4.1.5 mints one and never documents how to redeem it. So there
2891
+ * is no version of this feature in which the phone talks to the camera: the
2892
+ * credential would have to ship with the app.
2893
+ *
2894
+ * Everything here therefore runs server-side. The guard's ordinary session
2895
+ * authenticates them to US; we hold the camera credential and speak digest to the
2896
+ * device. The credential is never returned, never logged, and never appears in an
2897
+ * error message — `publicCameraFields` is an allow-list for exactly that reason.
2898
+ *
2899
+ * ## What is deliberately absent
2900
+ *
2901
+ * **No retry.** A failed camera call fails. The device locks an account for
2902
+ * 1800 s after 3 failures in 30 s (§4.7.x), and a retry loop on a user-facing
2903
+ * screen is precisely the defect `iservice365-core` #1803 fixed on the ANPR
2904
+ * listener. A snapshot that fails costs a guard one blank panel; a lockout costs
2905
+ * a site its ANPR and its barrier for half an hour.
2906
+ *
2907
+ * **No configuration write, no reboot, no barrier command.** The only
2908
+ * device-mutating call in this file is PTZ, and it is off unless explicitly
2909
+ * enabled.
2910
+ *
2911
+ * ## How a picture is actually fetched — measured, 2026-08-10
2912
+ *
2913
+ * The recorder these cameras live on is reachable on **RTSP (554) only**: its
2914
+ * HTTP interface (80/443) and the Dahua native port (37777) are not exposed,
2915
+ * verified by TCP connect from this workstation AND from the staging API host.
2916
+ * So `snapshot.cgi`, `magicBox.cgi`, `global.cgi` and PTZ — all HTTP CGI — cannot
2917
+ * be reached at all, and a snapshot has to come off the video stream.
2918
+ *
2919
+ * It therefore runs one `ffmpeg` per picture: connect, take a single frame,
2920
+ * encode JPEG, exit. Measured against the live recorder: a substream frame is
2921
+ * ~17–19 KB and arrives in 7–9 s; three concurrent pulls showed no degradation.
2922
+ * That latency is why the snapshot cache matters and why the RTSP budget is its
2923
+ * own, larger number.
2924
+ *
2925
+ * **ffmpeg's stderr is discarded, not piped** — the RTSP URL it echoes on failure
2926
+ * contains the recorder's credential, so the safest handling is for those bytes
2927
+ * never to exist in this process.
2928
+ */
2929
+ declare function useCameraViewService(): {
2930
+ authorizeCamera: (params: {
2931
+ cameraId: string;
2932
+ userId?: string;
2933
+ permissions: Array<string>;
2934
+ }) => Promise<bson.Document>;
2935
+ getSnapshot: (params: {
2936
+ cameraId: string;
2937
+ userId?: string;
2938
+ /** Full-resolution main stream. For an evidence capture, not for a tile. */
2939
+ hd?: boolean;
2940
+ }) => Promise<{
2941
+ buffer: Buffer;
2942
+ cached: boolean;
2943
+ }>;
2944
+ captureSnapshot: (params: {
2945
+ cameraId: string;
2946
+ userId?: string;
2947
+ }) => Promise<{
2948
+ id: string;
2949
+ size: number;
2950
+ }>;
2951
+ getStatus: (params: {
2952
+ cameraId: string;
2953
+ userId?: string;
2954
+ }) => Promise<{
2955
+ reachable: boolean;
2956
+ health: "unsupported";
2957
+ reason: string;
2958
+ camera: {
2959
+ _id: any;
2960
+ name: any;
2961
+ type: any;
2962
+ status: any;
2963
+ guardPost: any;
2964
+ siteName: any;
2965
+ };
2966
+ snapshotSupported: boolean;
2967
+ firmwareVersion: null;
2968
+ deviceTime: null;
2969
+ driftSeconds: null;
2970
+ detailUnavailableReason: string;
2971
+ } | {
2972
+ reachable: boolean;
2973
+ health: "ok" | "drifted" | "unreachable";
2974
+ reason: string | null;
2975
+ camera: {
2976
+ _id: any;
2977
+ name: any;
2978
+ type: any;
2979
+ status: any;
2980
+ guardPost: any;
2981
+ siteName: any;
2982
+ };
2983
+ snapshotSupported: boolean;
2984
+ firmwareVersion: null;
2985
+ deviceTime: null;
2986
+ driftSeconds: null;
2987
+ detailUnavailableReason: string;
2988
+ }>;
2989
+ movePtz: (params: {
2990
+ cameraId: string;
2991
+ userId?: string;
2992
+ action: string;
2993
+ code: string;
2994
+ speed?: number;
2995
+ }) => Promise<void>;
2996
+ ptzEnabled: boolean;
2997
+ };
2998
+
2999
+ /**
3000
+ * Camera functions for Virtual Patrol.
3001
+ *
3002
+ * Every handler is mounted behind `requireAuth` and every one re-derives the
3003
+ * caller from the session — `req.user`, never a body or query field. The camera
3004
+ * id in the path selects a record; the service decides whether the caller may
3005
+ * have it.
3006
+ */
3007
+ declare function useCameraViewController(): {
3008
+ snapshot: (req: Request, res: Response, next: NextFunction) => Promise<void>;
3009
+ capture: (req: Request, res: Response, next: NextFunction) => Promise<void>;
3010
+ status: (req: Request, res: Response, next: NextFunction) => Promise<void>;
3011
+ ptz: (req: Request, res: Response, next: NextFunction) => Promise<void>;
3012
+ capabilities: (_req: Request, res: Response) => Promise<void>;
3013
+ };
3014
+
2588
3015
  type TCustomerSite = {
2589
3016
  _id?: ObjectId;
2590
3017
  name: string;
@@ -4388,7 +4815,7 @@ declare function MEventManagement(value: TEventManagement): {
4388
4815
  description: string;
4389
4816
  dateTime: Date;
4390
4817
  status: "completed" | "planned" | "in_progress" | EventStatus;
4391
- type: "TASK" | "EVENT" | EventType;
4818
+ type: "EVENT" | "TASK" | EventType;
4392
4819
  createdAt: string | Date;
4393
4820
  updatedAt: string | Date | undefined;
4394
4821
  deletedAt: string | Date | undefined;
@@ -8337,4 +8764,76 @@ declare function useHidAmicoController(): {
8337
8764
  updateSitePermissions: (req: Request, res: Response, next: NextFunction) => Promise<void>;
8338
8765
  };
8339
8766
 
8340
- export { ANPRMode, AccessTypeProps, AppServiceType, AssignCardConfig, BidStatus, BidType, BuildingLevelStatus, BuildingStatus, BulkCardUpdate, BulletinOrder, BulletinRecipient, BulletinSort, BulletinStatus, BulletinVideoOrder, BulletinVideoSort, Camera, 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, 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, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PERSON_TYPES, PStatus, Period, PersonStatus, PersonType, PersonTypes, PostOrder, PostSort, PostStatus, QrTagProps, ResidentAppModuleKey, 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, 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, chatPrelovedEvents, chatSchema, createManpowerRemarksDaily, customerSchema, designationsSchema, events_namespace_collection, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, formatDahuaDate, guests_namespace_collection, incidentReport, incidentReportLog, incidents_namespace_collection, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, occurrence_book_namespace_collection, online_forms_namespace_collection, orgSchema, overnight_parking_requests_namespace_collection, parseDahuaFind, promoCodeSchema, remarksSchema, residentAppModuleKeys, residentFormEntry, robotSchema, schema, schemaApprovedBy, schemaApprover, schemaBidPreloved, schemaBilling, schemaBillingConfiguration, schemaBillingItem, schemaBuilding, schemaBuildingLevel, schemaBuildingUnit, schemaBuildingUpdateOptions, schemaBulletinBoard, schemaBulletinVideo, schemaCategoryPreloved, schemaChannelPreloved, schemaChatPreloved, schemaCreateHidAmicoIdentity, schemaCreateNfcPatrolLog, 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, schemaMultipleDocumentManagement, schemaNfcPatrolLog, schemaNfcPatrolRoute, schemaNfcPatrolTag, schemaNfcPatrolTagUpdateData, 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, 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, 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, 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, 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 };
8767
+ type TNotification = {
8768
+ _id?: ObjectId;
8769
+ userId: string | ObjectId;
8770
+ siteId?: string | ObjectId | null;
8771
+ screen: string;
8772
+ params?: {
8773
+ id: string;
8774
+ } | null;
8775
+ appSlug?: string;
8776
+ module?: string;
8777
+ title?: string;
8778
+ body?: string;
8779
+ hasRead?: boolean;
8780
+ status?: string;
8781
+ createdAt?: Date;
8782
+ readAt?: Date | null;
8783
+ updatedAt?: Date;
8784
+ };
8785
+ declare enum NotificationModule {
8786
+ FEEDBACK = "feedback",
8787
+ WORK_ORDER = "workOrder",
8788
+ BULLETIN_BOARD = "bulletinBoard",
8789
+ EVENT = "event",
8790
+ VISITORS = "visitors",
8791
+ MY_VISITORS = "myVisitors",
8792
+ FACILITY_BOOKING = "facilityBooking",
8793
+ ONLINE_FORM = "onlineForm",
8794
+ PRELOVED_MARKETPLACE = "prelovedMarketplace",
8795
+ OTHER = "other"
8796
+ }
8797
+ declare enum NotificationAppSlug {
8798
+ ISERVICE365_RESIDENT_MOBILE_APP = "iservice365-resident-mobile-app",
8799
+ ISERVICE365_MA_MOBILE_APP = "iservice365-ma-mobile-app",
8800
+ ISERVICE365_M_AND_E_MOBILE_APP = "iservice365-m-and-e-mobile-app",
8801
+ ISERVICE365_PEST_CONTROL_MOBILE_APP = "iservice365-pest-control-mobile-app",
8802
+ ISERVICE365_POOL_MAINTENANCE_MOBILE_APP = "iservice365-pool-maintenance-mobile-app",
8803
+ ISERVICE365_LANDSCAPING_MOBILE_APP = "iservice365-landscaping-mobile-app",
8804
+ ISERVICE365_HYGIENE_MOBILE_APP = "iservice365-hygiene-mobile-app"
8805
+ }
8806
+ declare const schemaNotification: Joi.ObjectSchema<any>;
8807
+ declare const schemaUpdateNotification: Joi.ObjectSchema<any>;
8808
+ declare const schemaCreateNotification: Joi.ObjectSchema<any>;
8809
+ declare const schemaListNotification: Joi.ObjectSchema<any>;
8810
+ declare const schemaAppSlugNotification: Joi.ObjectSchema<any>;
8811
+ declare function MNotification(value: TNotification): {
8812
+ _id: ObjectId | undefined;
8813
+ userId: string | ObjectId;
8814
+ siteId: string | ObjectId | null;
8815
+ screen: string;
8816
+ params: {
8817
+ id: string;
8818
+ } | null;
8819
+ appSlug: string;
8820
+ module: string;
8821
+ title: string;
8822
+ body: string;
8823
+ hasRead: boolean;
8824
+ status: string;
8825
+ createdAt: Date;
8826
+ readAt: Date | null;
8827
+ updatedAt: Date;
8828
+ };
8829
+
8830
+ declare function useNotificationRepo(): {
8831
+ createIndexes: () => Promise<string>;
8832
+ addMany: (userIds: string[], base: Omit<TNotification, "_id" | "userId">) => Promise<number>;
8833
+ };
8834
+
8835
+ declare function useNotificationController(): {
8836
+ add: (req: Request, res: Response, next: NextFunction) => Promise<void>;
8837
+ };
8838
+
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 };