@7365admin1/core 3.80.0 → 3.81.0
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.
- package/CHANGELOG.md +40 -0
- package/dist/index.d.ts +697 -4
- package/dist/index.js +3050 -2327
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1643 -960
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/test/e2e/robot-scope.e2e.test.mjs +57 -33
- package/test/robot-apps.test.mjs +154 -0
- package/test/robot-cloud.test.mjs +222 -0
- package/test/robot-permission.test.mjs +133 -0
- package/test/robot-tracking.test.mjs +231 -0
package/dist/index.d.ts
CHANGED
|
@@ -6626,9 +6626,36 @@ type TRobotMetadata = {
|
|
|
6626
6626
|
siteId?: string | ObjectId;
|
|
6627
6627
|
administratorId?: string | ObjectId;
|
|
6628
6628
|
};
|
|
6629
|
+
/**
|
|
6630
|
+
* Which kind of device this row is.
|
|
6631
|
+
*
|
|
6632
|
+
* Both kinds are managed through the one `robot-mgmt` module and this one
|
|
6633
|
+
* collection - they are one fleet with two device classes, not two features. The
|
|
6634
|
+
* apps differ only in which type they ask for: the cleaning robot appears in
|
|
6635
|
+
* Property Management, Hygiene, iMA365 and iClean365; the security robot in
|
|
6636
|
+
* Security.
|
|
6637
|
+
*/
|
|
6638
|
+
declare const ROBOT_TYPES: readonly ["cleaning", "security"];
|
|
6639
|
+
type TRobotType = (typeof ROBOT_TYPES)[number];
|
|
6629
6640
|
type TRobot = {
|
|
6630
6641
|
_id?: ObjectId;
|
|
6631
6642
|
name: string;
|
|
6643
|
+
type?: TRobotType;
|
|
6644
|
+
/**
|
|
6645
|
+
* The robot's serial as the vendor cloud knows it.
|
|
6646
|
+
*
|
|
6647
|
+
* Optional because the Add Robot form does not ask for it - it collects a
|
|
6648
|
+
* nickname and a credential pair. But EVERY per-robot cloud endpoint
|
|
6649
|
+
* (`get-map-list`, `tracking`, every cleaning command) takes `robotSn`, so
|
|
6650
|
+
* without it a registered robot cannot be reached at all. When it is absent
|
|
6651
|
+
* the fleet service discovers it from `get-robot-list` and stores it.
|
|
6652
|
+
*
|
|
6653
|
+
* ponytail: discovery covers both credential schemes while the vendor has not
|
|
6654
|
+
* answered whether appid/secret is issued per robot or per account (question 2
|
|
6655
|
+
* on the vendor sheet). If it turns out to be per account, this becomes a
|
|
6656
|
+
* picker instead of a lookup.
|
|
6657
|
+
*/
|
|
6658
|
+
robotSn?: string;
|
|
6632
6659
|
appKey: string;
|
|
6633
6660
|
appToken: string;
|
|
6634
6661
|
createdBy: string | ObjectId;
|
|
@@ -6642,6 +6669,15 @@ type TRobot = {
|
|
|
6642
6669
|
declare const robotSchema: Joi.ObjectSchema<any>;
|
|
6643
6670
|
declare function MRobot(value: TRobot): {
|
|
6644
6671
|
name: string;
|
|
6672
|
+
/**
|
|
6673
|
+
* Defaulted, not required. Security robots are not integrated yet, so every
|
|
6674
|
+
* robot registered today is a cleaning robot; making the field mandatory
|
|
6675
|
+
* would break the existing Add Robot form for no gain. Rows written before
|
|
6676
|
+
* this field existed simply have no `type` and are matched by an unfiltered
|
|
6677
|
+
* query - nothing is backfilled.
|
|
6678
|
+
*/
|
|
6679
|
+
type: "security" | "cleaning";
|
|
6680
|
+
robotSn: string;
|
|
6645
6681
|
appKey: string;
|
|
6646
6682
|
appToken: string;
|
|
6647
6683
|
createdBy: string | ObjectId;
|
|
@@ -6661,7 +6697,7 @@ declare function useRobotRepo(): {
|
|
|
6661
6697
|
createIndex: () => Promise<void>;
|
|
6662
6698
|
createTextIndex: () => Promise<void>;
|
|
6663
6699
|
createRobot: (value: TRobot, session?: ClientSession) => Promise<ObjectId>;
|
|
6664
|
-
getRobots: ({ search, page, limit, sort, organization, site, status, from, to, }: {
|
|
6700
|
+
getRobots: ({ search, page, limit, sort, organization, site, status, type, from, to, }: {
|
|
6665
6701
|
search?: string | undefined;
|
|
6666
6702
|
page?: number | undefined;
|
|
6667
6703
|
limit?: number | undefined;
|
|
@@ -6669,6 +6705,7 @@ declare function useRobotRepo(): {
|
|
|
6669
6705
|
organization: string | ObjectId;
|
|
6670
6706
|
site: string | ObjectId;
|
|
6671
6707
|
status?: string | undefined;
|
|
6708
|
+
type?: string | undefined;
|
|
6672
6709
|
from?: string | undefined;
|
|
6673
6710
|
to?: string | undefined;
|
|
6674
6711
|
}) => Promise<{
|
|
@@ -6679,8 +6716,8 @@ declare function useRobotRepo(): {
|
|
|
6679
6716
|
};
|
|
6680
6717
|
|
|
6681
6718
|
declare function useRobotService(): {
|
|
6682
|
-
createRobot: (value: TRobot) => Promise<ObjectId>;
|
|
6683
|
-
getRobots: ({ search, page, limit, sort, organization, site, status, from, to, }: {
|
|
6719
|
+
createRobot: (value: TRobot) => Promise<bson.ObjectId>;
|
|
6720
|
+
getRobots: ({ search, page, limit, sort, organization, site, status, type, from, to, }: {
|
|
6684
6721
|
search?: string | undefined;
|
|
6685
6722
|
page?: number | undefined;
|
|
6686
6723
|
limit?: number | undefined;
|
|
@@ -6688,6 +6725,7 @@ declare function useRobotService(): {
|
|
|
6688
6725
|
organization: string;
|
|
6689
6726
|
site: string;
|
|
6690
6727
|
status: string;
|
|
6728
|
+
type?: string | undefined;
|
|
6691
6729
|
serviceProvider?: string | undefined;
|
|
6692
6730
|
from?: string | undefined;
|
|
6693
6731
|
to?: string | undefined;
|
|
@@ -6703,6 +6741,661 @@ declare function useRobotController(): {
|
|
|
6703
6741
|
getRobots: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
6704
6742
|
};
|
|
6705
6743
|
|
|
6744
|
+
/**
|
|
6745
|
+
* Cleaning-robot cloud: the pure parts.
|
|
6746
|
+
*
|
|
6747
|
+
* Everything here is a pure function so it can be tested without a network, a
|
|
6748
|
+
* database or a robot. The HTTP calls live in `robot-cloud.service.ts`; this
|
|
6749
|
+
* file owns the request signature, the status vocabulary and the two coordinate
|
|
6750
|
+
* conversions the cloud's own documentation leaves the caller to do.
|
|
6751
|
+
*
|
|
6752
|
+
* Source: "Robot Cloud API Document (2025.05.27)". The cloud is ours, so where
|
|
6753
|
+
* the document is ambiguous the ambiguity is recorded here rather than guessed
|
|
6754
|
+
* away - see ROBOT_CLOUD_DOC_CONFIRMATIONS at the bottom.
|
|
6755
|
+
*/
|
|
6756
|
+
/**
|
|
6757
|
+
* The exact string the cloud hashes. Order is fixed by the spec:
|
|
6758
|
+
*
|
|
6759
|
+
* appid=[appid],timestamp=[timestamp],url=[path],secret=[secret]
|
|
6760
|
+
*
|
|
6761
|
+
* `path` is the request path as the document writes it, leading slash included
|
|
6762
|
+
* (e.g. `/portal/robots/get-robot-list`). It is part of the hash, so a trailing
|
|
6763
|
+
* slash or a missing one produces a different - rejected - signature.
|
|
6764
|
+
*
|
|
6765
|
+
* Exported for the tests: the assertion that matters is the string's shape, and
|
|
6766
|
+
* the shape is invisible once it has been hashed.
|
|
6767
|
+
*/
|
|
6768
|
+
declare function robotCloudSigningString(appid: string, timestamp: string, path: string, secret: string): string;
|
|
6769
|
+
/** `yyyyMMddHHmmss`, the only format the cloud accepts. */
|
|
6770
|
+
declare function robotCloudTimestamp(now?: Date): string;
|
|
6771
|
+
/**
|
|
6772
|
+
* SHA-1 of the signing string, lower-case hex.
|
|
6773
|
+
*
|
|
6774
|
+
* SHA-1 is the cloud's choice, not ours; it is a request signature against a
|
|
6775
|
+
* shared secret, not a password hash. Changing it here would simply be rejected
|
|
6776
|
+
* at the other end.
|
|
6777
|
+
*/
|
|
6778
|
+
declare function robotCloudSign(appid: string, timestamp: string, path: string, secret: string): string;
|
|
6779
|
+
/**
|
|
6780
|
+
* The signed envelope every endpoint expects, merged with the call's own
|
|
6781
|
+
* parameters. The secret goes into the hash and is NEVER a field - if it ever
|
|
6782
|
+
* appears in a request body, that is the bug to look for.
|
|
6783
|
+
*/
|
|
6784
|
+
declare function robotCloudBody(appid: string, secret: string, path: string, params?: Record<string, unknown>, now?: Date): Record<string, unknown>;
|
|
6785
|
+
/** Every documented endpoint. The key is also the signed `url`. */
|
|
6786
|
+
declare const ROBOT_CLOUD_PATHS: {
|
|
6787
|
+
readonly robotList: "/portal/robots/get-robot-list";
|
|
6788
|
+
readonly mapList: "/portal/maps/get-map-list";
|
|
6789
|
+
readonly fileUrl: "/portal/maps/get-file-url";
|
|
6790
|
+
readonly tracking: "/portal/robots/tracking";
|
|
6791
|
+
readonly startFullCleaning: "/portal/robots/start-full-cleaning";
|
|
6792
|
+
readonly startAreaCleaning: "/portal/robots/start-area-cleaning";
|
|
6793
|
+
readonly startSpotCleaning: "/portal/robots/start-spot-cleaning";
|
|
6794
|
+
readonly returnToBase: "/portal/robots/return-to-base";
|
|
6795
|
+
readonly plansList: "/portal/plans/list";
|
|
6796
|
+
readonly plansSave: "/portal/plans/save";
|
|
6797
|
+
};
|
|
6798
|
+
type TRobotCloudPath = (typeof ROBOT_CLOUD_PATHS)[keyof typeof ROBOT_CLOUD_PATHS];
|
|
6799
|
+
/**
|
|
6800
|
+
* The cloud's 27 status codes, verbatim from the document (including its
|
|
6801
|
+
* "switching floow" typo, corrected here in the label only).
|
|
6802
|
+
*/
|
|
6803
|
+
declare const ROBOT_STATUS_NAMES: Readonly<Record<number, string>>;
|
|
6804
|
+
/**
|
|
6805
|
+
* The vocabulary our own apps speak. Twenty-seven vendor codes are too many to
|
|
6806
|
+
* put in front of a cleaner on a phone, and they are not stable across firmware
|
|
6807
|
+
* - so every screen reads this, never `statusFlag`.
|
|
6808
|
+
*/
|
|
6809
|
+
type TRobotMode = "IDLE" | "CHARGED" | "WORKING" | "PAUSED" | "CHARGING_CYCLE" | "MAINTENANCE" | "IN_TRANSIT" | "MANUAL" | "UNAVAILABLE";
|
|
6810
|
+
/**
|
|
6811
|
+
* An UNRECOGNISED code is UNAVAILABLE, not IDLE.
|
|
6812
|
+
*
|
|
6813
|
+
* This is the one branch in the file worth being careful about. A new firmware
|
|
6814
|
+
* status we have never seen must not read as "free, send it a job" - dispatching
|
|
6815
|
+
* onto an unknown state is how a robot gets two jobs at once. Fail closed.
|
|
6816
|
+
*/
|
|
6817
|
+
declare function robotMode(statusFlag: unknown): TRobotMode;
|
|
6818
|
+
/** Only these two modes may be sent a new job. */
|
|
6819
|
+
declare function isDispatchable(statusFlag: unknown): boolean;
|
|
6820
|
+
/**
|
|
6821
|
+
* `onlineFlag` beats `statusFlag`. The list endpoint can report a cached status
|
|
6822
|
+
* for a robot that has since dropped off the network.
|
|
6823
|
+
*/
|
|
6824
|
+
declare function robotModeFromList(item: {
|
|
6825
|
+
statusFlag?: unknown;
|
|
6826
|
+
onlineFlag?: unknown;
|
|
6827
|
+
}): TRobotMode;
|
|
6828
|
+
/**
|
|
6829
|
+
* The cloud uses TWO frames and never says so in one place:
|
|
6830
|
+
*
|
|
6831
|
+
* - `tracking` reports x/y in METRES in the map frame.
|
|
6832
|
+
* - `start-spot-cleaning` takes x/y in PIXELS of the map image.
|
|
6833
|
+
*
|
|
6834
|
+
* so anything that turns a click on the floor plan into a spot-clean, or a live
|
|
6835
|
+
* pose into a dot on that plan, goes through here.
|
|
6836
|
+
*
|
|
6837
|
+
* `imageHeight` is the background PNG's height in pixels. The vertical flip is
|
|
6838
|
+
* the standard occupancy-grid convention (image origin top-left, map origin
|
|
6839
|
+
* bottom-left) and is the one thing in this file NOT confirmed against a real
|
|
6840
|
+
* robot - see ROBOT_CLOUD_DOC_CONFIRMATIONS.
|
|
6841
|
+
*/
|
|
6842
|
+
declare function pixelToMetres(px: number, py: number, map: {
|
|
6843
|
+
originX: number;
|
|
6844
|
+
originY: number;
|
|
6845
|
+
resolution: number;
|
|
6846
|
+
}, imageHeight: number): {
|
|
6847
|
+
x: number;
|
|
6848
|
+
y: number;
|
|
6849
|
+
};
|
|
6850
|
+
/** The inverse of `pixelToMetres`, rounded to whole pixels. */
|
|
6851
|
+
declare function metresToPixel(x: number, y: number, map: {
|
|
6852
|
+
originX: number;
|
|
6853
|
+
originY: number;
|
|
6854
|
+
resolution: number;
|
|
6855
|
+
}, imageHeight: number): {
|
|
6856
|
+
x: number;
|
|
6857
|
+
y: number;
|
|
6858
|
+
};
|
|
6859
|
+
type TAreaColour = {
|
|
6860
|
+
r: number;
|
|
6861
|
+
g: number;
|
|
6862
|
+
b: number;
|
|
6863
|
+
a: number;
|
|
6864
|
+
};
|
|
6865
|
+
/**
|
|
6866
|
+
* An area carries TWO identifiers and the cloud disagrees with itself on the
|
|
6867
|
+
* form: `get-map-list` returns `rgba` as a hex STRING ("FF0B0B83"), while
|
|
6868
|
+
* `plans/list` and `plans/save` use an OBJECT ({r,g,b,a}). `start-area-cleaning`
|
|
6869
|
+
* meanwhile keys off `areaName`. So selecting "the kitchen" means a different
|
|
6870
|
+
* payload depending on which endpoint you are calling, and these two convert.
|
|
6871
|
+
*
|
|
6872
|
+
* The hex is read in RGBA order, matching the field's name and the areaName
|
|
6873
|
+
* suffix ("AREA-FF0B0B83" -> rgba "FF0B0B83").
|
|
6874
|
+
*/
|
|
6875
|
+
declare function hexToAreaColour(hex: string): TAreaColour;
|
|
6876
|
+
/** The inverse, upper-case and without a leading `#`, as the cloud returns it. */
|
|
6877
|
+
declare function areaColourToHex(c: TAreaColour): string;
|
|
6878
|
+
/** `rangeFlag` on a planned job. */
|
|
6879
|
+
declare const PLAN_RANGE: {
|
|
6880
|
+
readonly FULL_MAP: 1;
|
|
6881
|
+
readonly SPOT: 2;
|
|
6882
|
+
readonly AREA: 3;
|
|
6883
|
+
};
|
|
6884
|
+
/** `dateList` is 1..7 = Monday..Sunday - NOT JavaScript's 0 = Sunday. */
|
|
6885
|
+
declare function planDayFromJsDay(jsDay: number): number;
|
|
6886
|
+
/**
|
|
6887
|
+
* Read this before trusting a number that came out of this module.
|
|
6888
|
+
*
|
|
6889
|
+
* Each entry is a question for the robot-cloud team, not a defect in our code.
|
|
6890
|
+
* They are listed here rather than in a document because this is the file whose
|
|
6891
|
+
* behaviour changes when one of them is answered.
|
|
6892
|
+
*/
|
|
6893
|
+
declare const ROBOT_CLOUD_DOC_CONFIRMATIONS: readonly string[];
|
|
6894
|
+
|
|
6895
|
+
/**
|
|
6896
|
+
* The live pose stream: the parts worth testing.
|
|
6897
|
+
*
|
|
6898
|
+
* `/portal/robots/tracking` is Server-Sent Events, one long-lived connection per
|
|
6899
|
+
* robot. Everything fiddly about that - reassembling events split across TCP
|
|
6900
|
+
* chunks, deciding when silence means the robot is gone rather than parked, and
|
|
6901
|
+
* backing off a reconnect without stampeding the cloud - is pure and lives here.
|
|
6902
|
+
* The socket itself is the supervisor's job.
|
|
6903
|
+
*
|
|
6904
|
+
* The stream carries `{status, x, y, theta}` and NOTHING else: no floor, no
|
|
6905
|
+
* battery, no heartbeat, no command id. Those are asked of the vendor; until they
|
|
6906
|
+
* arrive this module is careful to report what it does not know rather than
|
|
6907
|
+
* guess.
|
|
6908
|
+
*/
|
|
6909
|
+
/** One decoded `data:` payload. */
|
|
6910
|
+
type TSseEvent = {
|
|
6911
|
+
data: string;
|
|
6912
|
+
};
|
|
6913
|
+
/**
|
|
6914
|
+
* An incremental SSE parser.
|
|
6915
|
+
*
|
|
6916
|
+
* Two things make this worth its own function rather than a `split("\n")` at the
|
|
6917
|
+
* call site:
|
|
6918
|
+
*
|
|
6919
|
+
* 1. **Chunks do not respect event boundaries.** A TCP read can end mid-JSON.
|
|
6920
|
+
* Splitting each chunk on its own silently drops or corrupts the event that
|
|
6921
|
+
* straddles the boundary - and at 5 Hz that is a robot that jumps.
|
|
6922
|
+
* 2. **Comment lines are the keep-alive.** A line beginning `:` is not an
|
|
6923
|
+
* event, but it IS proof the connection is alive. The watchdog must see it,
|
|
6924
|
+
* so `push` reports whether anything at all arrived, separately from the
|
|
6925
|
+
* events it decoded.
|
|
6926
|
+
*/
|
|
6927
|
+
declare function createSseParser(): {
|
|
6928
|
+
push: (chunk: string) => {
|
|
6929
|
+
events: TSseEvent[];
|
|
6930
|
+
sawActivity: boolean;
|
|
6931
|
+
};
|
|
6932
|
+
reset: () => void;
|
|
6933
|
+
};
|
|
6934
|
+
type TRobotPose = {
|
|
6935
|
+
x: number;
|
|
6936
|
+
y: number;
|
|
6937
|
+
/** Radians. */
|
|
6938
|
+
theta: number;
|
|
6939
|
+
statusFlag: number;
|
|
6940
|
+
mode: TRobotMode;
|
|
6941
|
+
};
|
|
6942
|
+
/**
|
|
6943
|
+
* Decode one `data:` payload into a pose, or `null` if it is not one.
|
|
6944
|
+
*
|
|
6945
|
+
* Returns null rather than throwing: a stream is not a request. One malformed
|
|
6946
|
+
* frame - a truncated write, a future field we do not understand - must not tear
|
|
6947
|
+
* down a connection that is otherwise delivering good poses. The caller counts
|
|
6948
|
+
* nulls and reports them; it does not reconnect on them.
|
|
6949
|
+
*
|
|
6950
|
+
* A frame missing x, y, theta or status is rejected whole. A partial pose is
|
|
6951
|
+
* worse than none: it would place a robot at (0,0), which on these maps is a real
|
|
6952
|
+
* location.
|
|
6953
|
+
*/
|
|
6954
|
+
declare function decodeTrackingFrame(data: string): TRobotPose | null;
|
|
6955
|
+
/**
|
|
6956
|
+
* How long silence may last before the robot is treated as lost.
|
|
6957
|
+
*
|
|
6958
|
+
* The stream has no documented heartbeat, so this is the ONLY thing standing
|
|
6959
|
+
* between "the network died" and "the robot is parked" - which look identical on
|
|
6960
|
+
* the wire. 15 s is long enough to ride out a hiccup at the stream's ~5 Hz and
|
|
6961
|
+
* short enough that a dispatcher is not offered a robot that left ten minutes
|
|
6962
|
+
* ago.
|
|
6963
|
+
*/
|
|
6964
|
+
declare const TRACKING_IDLE_TIMEOUT_MS = 15000;
|
|
6965
|
+
/**
|
|
6966
|
+
* A stale stream is UNAVAILABLE, not the last mode we saw.
|
|
6967
|
+
*
|
|
6968
|
+
* This is the branch that matters. Holding the last known mode means a robot
|
|
6969
|
+
* whose connection died while IDLE stays "idle, ready for work" forever, and the
|
|
6970
|
+
* dispatcher keeps handing it jobs that nothing is listening for.
|
|
6971
|
+
*/
|
|
6972
|
+
declare function isTrackingStale(lastActivityAt: number, now: number, idleMs?: number): boolean;
|
|
6973
|
+
declare const TRACKING_BACKOFF_BASE_MS = 1000;
|
|
6974
|
+
declare const TRACKING_BACKOFF_CAP_MS = 60000;
|
|
6975
|
+
/**
|
|
6976
|
+
* Exponential backoff with full jitter, capped.
|
|
6977
|
+
*
|
|
6978
|
+
* The jitter is not decoration. Every robot on a site streams from the same
|
|
6979
|
+
* cloud, so a cloud restart drops them all at the same instant; without jitter
|
|
6980
|
+
* they would all retry at the same instant too, repeatedly, and we would be the
|
|
6981
|
+
* reason it struggles to come back up.
|
|
6982
|
+
*
|
|
6983
|
+
* `random` is injectable so the spread is testable rather than hoped for.
|
|
6984
|
+
*/
|
|
6985
|
+
declare function trackingBackoffMs(attempt: number, random?: () => number, baseMs?: number, capMs?: number): number;
|
|
6986
|
+
/**
|
|
6987
|
+
* What the fleet view shows for one robot.
|
|
6988
|
+
*
|
|
6989
|
+
* `floorNo` is nullable and `floorKnown` says whether it is real, because the
|
|
6990
|
+
* stream does not carry it. Anything that dispatches to a floor must check
|
|
6991
|
+
* `floorKnown` - the alternative is a module that quietly assumes the ground
|
|
6992
|
+
* floor and sends a robot to clean the wrong storey.
|
|
6993
|
+
*/
|
|
6994
|
+
type TRobotLiveState = {
|
|
6995
|
+
robotSn: string;
|
|
6996
|
+
pose: TRobotPose | null;
|
|
6997
|
+
/** Epoch ms of the last byte received on this robot's stream. */
|
|
6998
|
+
lastActivityAt: number;
|
|
6999
|
+
connected: boolean;
|
|
7000
|
+
floorNo: number | null;
|
|
7001
|
+
floorKnown: boolean;
|
|
7002
|
+
};
|
|
7003
|
+
/** The state a robot starts in and returns to when its stream dies. */
|
|
7004
|
+
declare function disconnectedState(robotSn: string, at: number): TRobotLiveState;
|
|
7005
|
+
/**
|
|
7006
|
+
* Fold one decoded frame into a robot's live state.
|
|
7007
|
+
*
|
|
7008
|
+
* `floorNo` is carried forward untouched - it comes from elsewhere (a dispatch,
|
|
7009
|
+
* or the vendor adding it to the stream) and a pose update is not evidence about
|
|
7010
|
+
* the floor.
|
|
7011
|
+
*/
|
|
7012
|
+
declare function applyTrackingFrame(previous: TRobotLiveState, pose: TRobotPose, at: number): TRobotLiveState;
|
|
7013
|
+
/**
|
|
7014
|
+
* The view a dispatcher sees. A robot is only offered work when its stream is
|
|
7015
|
+
* live AND its own status says it is free.
|
|
7016
|
+
*/
|
|
7017
|
+
declare function isAvailableForWork(state: TRobotLiveState, now: number): boolean;
|
|
7018
|
+
|
|
7019
|
+
/**
|
|
7020
|
+
* Which robot types each application may SET UP, and which it may MONITOR.
|
|
7021
|
+
*
|
|
7022
|
+
* iService365 is the fleet manager for every robot on a property, not for one
|
|
7023
|
+
* device class - so the same `robot-mgmt` module serves cleaning robots and
|
|
7024
|
+
* security robots, and the APP decides which of them a user is looking at. The
|
|
7025
|
+
* shape follows `bulletin-service-apps.util.ts`: a declared table plus pure
|
|
7026
|
+
* lookups, so "which app sees what" can be asserted without a database, a
|
|
7027
|
+
* session or a robot.
|
|
7028
|
+
*
|
|
7029
|
+
* The rule the owner set (2026-09-22):
|
|
7030
|
+
*
|
|
7031
|
+
* - a CLEANING robot is set up in the cleaning applications;
|
|
7032
|
+
* - a SECURITY robot is set up in the security applications;
|
|
7033
|
+
* - PROPERTY MANAGEMENT sets up and monitors BOTH, because the property is
|
|
7034
|
+
* what the robots belong to;
|
|
7035
|
+
* - the SEVEN365 CONSOLE does everything, across every property, because
|
|
7036
|
+
* Seven365 supplies the solution;
|
|
7037
|
+
* - the MANAGING AGENT watches, and does not configure.
|
|
7038
|
+
*
|
|
7039
|
+
* `setup` and `monitor` are separate because they are separate jobs. A managing
|
|
7040
|
+
* agent must see every robot on their estate without being able to re-point one
|
|
7041
|
+
* at a different cloud, and a cleaner must never be shown a security patrol's
|
|
7042
|
+
* position.
|
|
7043
|
+
*
|
|
7044
|
+
* ## This table is NOT a security boundary - read this before relying on it
|
|
7045
|
+
*
|
|
7046
|
+
* `appSlug` arrives as a request parameter, the same way `notification.controller`
|
|
7047
|
+
* takes it. It is CLIENT-SUPPLIED, so a caller can claim to be any app. This
|
|
7048
|
+
* table therefore decides what each app SHOWS, not what a user is entitled to.
|
|
7049
|
+
*
|
|
7050
|
+
* The actual boundary is, and stays, session-derived: `requireSiteReach` for the
|
|
7051
|
+
* estate, the `robot-mgmt` module gate for the site, and the permission
|
|
7052
|
+
* (`see-all-robots`, `add-robot`, ...) for the action. A cleaner is kept away
|
|
7053
|
+
* from security patrols by NOT HOLDING the permission - never by this table
|
|
7054
|
+
* alone.
|
|
7055
|
+
*
|
|
7056
|
+
* ponytail: client-declared scope. If robot types ever need to be a real
|
|
7057
|
+
* boundary, the upgrade is to carry the app identity in the session at login
|
|
7058
|
+
* rather than to harden anything here.
|
|
7059
|
+
*/
|
|
7060
|
+
type TRobotAppScope = {
|
|
7061
|
+
/** Robot types this app may register and edit. */
|
|
7062
|
+
setup: readonly TRobotType[];
|
|
7063
|
+
/** Robot types this app may list, track and dispatch. */
|
|
7064
|
+
monitor: readonly TRobotType[];
|
|
7065
|
+
};
|
|
7066
|
+
/**
|
|
7067
|
+
* Keyed by app slug, matching `APP_SLUG` in each mobile app's `app.config.ts`
|
|
7068
|
+
* and the web apps' deployment names.
|
|
7069
|
+
*/
|
|
7070
|
+
declare const ROBOT_APP_SCOPES: Readonly<Record<string, TRobotAppScope>>;
|
|
7071
|
+
/**
|
|
7072
|
+
* What this app may do with robots.
|
|
7073
|
+
*
|
|
7074
|
+
* Fails CLOSED: an app slug nobody has declared - a new service app, a typo in
|
|
7075
|
+
* a deployment variable, a caller that sent no slug - gets no robots rather
|
|
7076
|
+
* than all of them. The alternative is a landscaping app quietly listing a
|
|
7077
|
+
* building's security patrols the first time someone renames a deployment.
|
|
7078
|
+
*/
|
|
7079
|
+
declare function robotScopeForApp(appSlug: unknown): TRobotAppScope;
|
|
7080
|
+
/** May this app register a robot of this type? */
|
|
7081
|
+
declare function canSetUpRobotType(appSlug: unknown, type: unknown): type is TRobotType;
|
|
7082
|
+
/** May this app see a robot of this type? */
|
|
7083
|
+
declare function canMonitorRobotType(appSlug: unknown, type: unknown): boolean;
|
|
7084
|
+
/**
|
|
7085
|
+
* The types to filter a listing by, for an app that asked for `requested`.
|
|
7086
|
+
*
|
|
7087
|
+
* - asked for nothing -> everything the app may monitor
|
|
7088
|
+
* - asked for a type it may monitor -> that type
|
|
7089
|
+
* - asked for a type it may NOT monitor -> `[]`
|
|
7090
|
+
*
|
|
7091
|
+
* The empty array is the important case, and it is deliberately not the same as
|
|
7092
|
+
* "no filter". A caller must treat `[]` as "list nothing" - reading it as "no
|
|
7093
|
+
* constraint" turns a refusal into a listing of every robot on the estate,
|
|
7094
|
+
* which is exactly the bug this function exists to make impossible.
|
|
7095
|
+
*/
|
|
7096
|
+
declare function robotTypesVisibleTo(appSlug: unknown, requested?: unknown): TRobotType[];
|
|
7097
|
+
|
|
7098
|
+
/**
|
|
7099
|
+
* Who may do what with a robot.
|
|
7100
|
+
*
|
|
7101
|
+
* The five permissions already exist in the client catalogue
|
|
7102
|
+
* (`layer-common/constants/permissions.ts`) and the Security app already gates
|
|
7103
|
+
* its menu on them. Nothing on the SERVER has ever enforced them: the two robot
|
|
7104
|
+
* routes carry `requireAuth` plus the estate check, so anybody who can reach an
|
|
7105
|
+
* estate can register a robot into it. This is the missing half, and it is
|
|
7106
|
+
* deliberately pure so web and server can be asserted to agree.
|
|
7107
|
+
*
|
|
7108
|
+
* ## The three rules, in the order they are applied
|
|
7109
|
+
*
|
|
7110
|
+
* 1. **`"*"` allows everything.** 85 client roles hold it; it is the platform's
|
|
7111
|
+
* established wildcard and short-circuits before anything else.
|
|
7112
|
+
*
|
|
7113
|
+
* 2. **An EMPTY list on a platform-admin role allows everything.**
|
|
7114
|
+
* `createDefaultUser()` seeds Seven365's own staff role with
|
|
7115
|
+
* `permissions: []`, not `["*"]`. Enforcing an empty list would refuse the
|
|
7116
|
+
* platform owner - and the owner's requirement is the opposite: the Seven365
|
|
7117
|
+
* Super Admin must be able to do everything, on every property. So an empty
|
|
7118
|
+
* list on a `type: "admin"` role means "not yet restricted", exactly as it
|
|
7119
|
+
* does for the console catalogue. The gate stays a no-op for those roles
|
|
7120
|
+
* until somebody ticks a module, which is what lets it ship with no role
|
|
7121
|
+
* write and no lockout.
|
|
7122
|
+
*
|
|
7123
|
+
* 3. **A non-empty list is enforced**, by exact `module:permission` string.
|
|
7124
|
+
*
|
|
7125
|
+
* Anything else is refused. An empty list on a CLIENT role is not "everything"
|
|
7126
|
+
* - rule 2 is scoped to `type: "admin"` on purpose, because widening it would
|
|
7127
|
+
* hand every unconfigured client role the whole module.
|
|
7128
|
+
*
|
|
7129
|
+
* This mirrors `useLocalPermission.ts` in the web apps deliberately. If the two
|
|
7130
|
+
* ever disagree, a button appears that the server then refuses - the parity
|
|
7131
|
+
* failure the project's rules exist to prevent.
|
|
7132
|
+
*/
|
|
7133
|
+
/** The module these permissions hang off. Matches `module-gate.util.ts`. */
|
|
7134
|
+
declare const ROBOT_MODULE = "robot-mgmt";
|
|
7135
|
+
/**
|
|
7136
|
+
* The five permission strings, in `module:permission` form - the same shape as
|
|
7137
|
+
* `sites:manage-site-modules`.
|
|
7138
|
+
*/
|
|
7139
|
+
declare const ROBOT_PERMISSIONS: {
|
|
7140
|
+
readonly seeAll: "robot-mgmt:see-all-robots";
|
|
7141
|
+
readonly add: "robot-mgmt:add-robot";
|
|
7142
|
+
readonly update: "robot-mgmt:update-robot";
|
|
7143
|
+
readonly seeDetails: "robot-mgmt:see-robot-details";
|
|
7144
|
+
readonly delete: "robot-mgmt:delete-robot";
|
|
7145
|
+
};
|
|
7146
|
+
type TRobotAction = keyof typeof ROBOT_PERMISSIONS;
|
|
7147
|
+
/** What the decision needs to know about the caller's role. */
|
|
7148
|
+
type TRobotPermissionActor = {
|
|
7149
|
+
/** The role's permission strings, as `getUserPermissions` returns them. */
|
|
7150
|
+
permissions?: readonly unknown[] | null;
|
|
7151
|
+
/** The role document's `type`. Only `"admin"` unlocks rule 2. */
|
|
7152
|
+
roleType?: string | null;
|
|
7153
|
+
};
|
|
7154
|
+
/**
|
|
7155
|
+
* May this caller take this action on a robot?
|
|
7156
|
+
*
|
|
7157
|
+
* Fails closed on anything it does not understand: no actor, a permissions
|
|
7158
|
+
* value that is not an array, an action that is not one of the five. A caller
|
|
7159
|
+
* that cannot be understood is not a caller that is allowed.
|
|
7160
|
+
*/
|
|
7161
|
+
declare function allowsRobotAction(actor: TRobotPermissionActor | null | undefined, action: TRobotAction): boolean;
|
|
7162
|
+
/**
|
|
7163
|
+
* The action a listing needs. Split out because every read path asks for the
|
|
7164
|
+
* same one, and spelling it at each call site is how they drift apart.
|
|
7165
|
+
*/
|
|
7166
|
+
declare function allowsRobotListing(actor: TRobotPermissionActor | null | undefined): boolean;
|
|
7167
|
+
/**
|
|
7168
|
+
* Every robot action this caller may take.
|
|
7169
|
+
*
|
|
7170
|
+
* The apps use it to decide which buttons to render, so the server answers the
|
|
7171
|
+
* question the UI is about to ask rather than the UI guessing and being refused
|
|
7172
|
+
* later.
|
|
7173
|
+
*/
|
|
7174
|
+
declare function robotActionsFor(actor: TRobotPermissionActor | null | undefined): TRobotAction[];
|
|
7175
|
+
|
|
7176
|
+
/**
|
|
7177
|
+
* The cleaning-robot cloud's HTTP API.
|
|
7178
|
+
*
|
|
7179
|
+
* Nine request/response endpoints, signed per "Robot Cloud API Document
|
|
7180
|
+
* (2025.05.27)". The signature, the status vocabulary and the coordinate
|
|
7181
|
+
* conversions live in `../utils/robot-cloud.util` and are pure; this file is only
|
|
7182
|
+
* the transport.
|
|
7183
|
+
*
|
|
7184
|
+
* ## Two rules this file is built around
|
|
7185
|
+
*
|
|
7186
|
+
* **1. Credentials are arguments, never configuration.** `appid` and `secret`
|
|
7187
|
+
* are passed in by the caller, which reads them from the robot's own record. They
|
|
7188
|
+
* are never read from `process.env` here, never logged, and never placed in a
|
|
7189
|
+
* request body - the secret's only appearance is inside the SHA-1 hash. A stack
|
|
7190
|
+
* trace or a debug log from this file cannot disclose them.
|
|
7191
|
+
*
|
|
7192
|
+
* **2. Nothing retries.** A cleaning command that times out may still have been
|
|
7193
|
+
* accepted; the robot cloud gives us no `commandId` to check against, so a retry
|
|
7194
|
+
* risks a second job on the same robot with no way to tell the two apart. Every
|
|
7195
|
+
* call here fails once and reports it. Retrying is the caller's decision to make
|
|
7196
|
+
* with a human in the loop.
|
|
7197
|
+
*
|
|
7198
|
+
* The live pose stream (`/portal/robots/tracking`, Server-Sent Events) is
|
|
7199
|
+
* deliberately NOT here. It is a long-lived connection needing reconnection,
|
|
7200
|
+
* re-signing and an idle watchdog - a lifecycle, not a request - and it gets its
|
|
7201
|
+
* own supervisor.
|
|
7202
|
+
*/
|
|
7203
|
+
|
|
7204
|
+
type TRobotCloudCredentials = {
|
|
7205
|
+
/** The cloud-provided app id. */
|
|
7206
|
+
appid: string;
|
|
7207
|
+
/** The cloud-provided secret. Hashed, never transmitted. */
|
|
7208
|
+
secret: string;
|
|
7209
|
+
};
|
|
7210
|
+
/** Every response carries `ok`; only the robot list omits it. */
|
|
7211
|
+
type TRobotCloudReply<T> = {
|
|
7212
|
+
ok?: boolean;
|
|
7213
|
+
msg?: string | null;
|
|
7214
|
+
} & T;
|
|
7215
|
+
type TCloudRobot = {
|
|
7216
|
+
robotSn: string;
|
|
7217
|
+
robotName?: string;
|
|
7218
|
+
ownerName?: string;
|
|
7219
|
+
ownerPhone?: string;
|
|
7220
|
+
statusFlag?: number;
|
|
7221
|
+
statusName?: string;
|
|
7222
|
+
onlineFlag?: boolean;
|
|
7223
|
+
};
|
|
7224
|
+
type TCloudArea = {
|
|
7225
|
+
areaName: string;
|
|
7226
|
+
/** 8 hex digits, RGBA. Note `plans` uses an object for the same thing. */
|
|
7227
|
+
rgba: string;
|
|
7228
|
+
x: number;
|
|
7229
|
+
y: number;
|
|
7230
|
+
};
|
|
7231
|
+
type TCloudMap = {
|
|
7232
|
+
floorNo: number;
|
|
7233
|
+
mapName: string;
|
|
7234
|
+
backgroundFileKey: string;
|
|
7235
|
+
partitionFileKey: string;
|
|
7236
|
+
originX: number;
|
|
7237
|
+
originY: number;
|
|
7238
|
+
/** Metres per pixel. */
|
|
7239
|
+
resolution: number;
|
|
7240
|
+
totalArea: number;
|
|
7241
|
+
baseX: number;
|
|
7242
|
+
baseY: number;
|
|
7243
|
+
/** Radians. */
|
|
7244
|
+
baseTheta: number;
|
|
7245
|
+
createTime: string;
|
|
7246
|
+
areaList?: TCloudArea[];
|
|
7247
|
+
};
|
|
7248
|
+
type TCloudFile = {
|
|
7249
|
+
fileKey: string;
|
|
7250
|
+
url: string;
|
|
7251
|
+
};
|
|
7252
|
+
/** 1 vacuum, 2 washing the floor, 3 dry dust mop. */
|
|
7253
|
+
type TCleanMode = 1 | 2 | 3;
|
|
7254
|
+
/** 0 no vacuum while washing, 1 also vacuum while washing. */
|
|
7255
|
+
type TCleanSubMode = 0 | 1;
|
|
7256
|
+
/** 1 standard, 2 strong, 3 silent. */
|
|
7257
|
+
type TCleanLevel = 1 | 2 | 3;
|
|
7258
|
+
type TCleanOptions = {
|
|
7259
|
+
/** 0 = forever, 1-99. */
|
|
7260
|
+
cleanTimes: number;
|
|
7261
|
+
modeFlag: TCleanMode;
|
|
7262
|
+
subModeFlag: TCleanSubMode;
|
|
7263
|
+
levelFlag: TCleanLevel;
|
|
7264
|
+
};
|
|
7265
|
+
type TCloudPlanJob = {
|
|
7266
|
+
floorNo: number;
|
|
7267
|
+
/** 1 full map, 2 spot, 3 area. See `PLAN_RANGE`. */
|
|
7268
|
+
rangeFlag: number;
|
|
7269
|
+
cleanTimes: number;
|
|
7270
|
+
pointList?: Array<{
|
|
7271
|
+
x: number;
|
|
7272
|
+
y: number;
|
|
7273
|
+
}>;
|
|
7274
|
+
/** Areas as colour OBJECTS here - the map endpoint returns hex strings. */
|
|
7275
|
+
colorList?: TAreaColour[];
|
|
7276
|
+
modeFlag: number;
|
|
7277
|
+
subModeFlag: number;
|
|
7278
|
+
levelFlag: number;
|
|
7279
|
+
};
|
|
7280
|
+
type TCloudPlan = {
|
|
7281
|
+
planId?: number;
|
|
7282
|
+
/** 1-7 = Monday-Sunday. */
|
|
7283
|
+
dateList: number[];
|
|
7284
|
+
/** `HH:MM`. */
|
|
7285
|
+
startTime: string;
|
|
7286
|
+
endTime: string;
|
|
7287
|
+
enableFlag: boolean;
|
|
7288
|
+
jobList: TCloudPlanJob[];
|
|
7289
|
+
};
|
|
7290
|
+
/**
|
|
7291
|
+
* A refusal from the cloud, or a failure to reach it.
|
|
7292
|
+
*
|
|
7293
|
+
* `ok: false` with a `msg` is a refusal by the robot cloud and is reported as
|
|
7294
|
+
* given - the message is written for an operator ("robot is offline"), so it is
|
|
7295
|
+
* worth surfacing rather than flattening into "request failed".
|
|
7296
|
+
*/
|
|
7297
|
+
declare class RobotCloudError extends Error {
|
|
7298
|
+
readonly path: string;
|
|
7299
|
+
readonly statusCode?: number;
|
|
7300
|
+
/** True when the cloud answered and said no, rather than not answering. */
|
|
7301
|
+
readonly refused: boolean;
|
|
7302
|
+
constructor(path: string, message: string, opts?: {
|
|
7303
|
+
statusCode?: number;
|
|
7304
|
+
refused?: boolean;
|
|
7305
|
+
});
|
|
7306
|
+
}
|
|
7307
|
+
declare function useRobotCloudService(credentials: TRobotCloudCredentials, options?: {
|
|
7308
|
+
baseUrl?: string;
|
|
7309
|
+
timeoutMs?: number;
|
|
7310
|
+
}): {
|
|
7311
|
+
getRobots: () => Promise<TCloudRobot[]>;
|
|
7312
|
+
getMaps: (robotSn: string) => Promise<TCloudMap[]>;
|
|
7313
|
+
getFileUrls: (robotSn: string, fileKeys: string[]) => Promise<TCloudFile[]>;
|
|
7314
|
+
getPlans: (robotSn: string) => Promise<TCloudPlan[]>;
|
|
7315
|
+
startFullCleaning: (robotSn: string, opts: TCleanOptions) => Promise<TRobotCloudReply<Record<string, never>>>;
|
|
7316
|
+
startAreaCleaning: (robotSn: string, areaList: string[], opts: TCleanOptions) => Promise<TRobotCloudReply<Record<string, never>>>;
|
|
7317
|
+
startSpotCleaning: (robotSn: string, pointList: Array<{
|
|
7318
|
+
x: number;
|
|
7319
|
+
y: number;
|
|
7320
|
+
}>, opts: TCleanOptions) => Promise<TRobotCloudReply<Record<string, never>>>;
|
|
7321
|
+
returnToBase: (robotSn: string) => Promise<TRobotCloudReply<Record<string, never>>>;
|
|
7322
|
+
savePlans: (robotSn: string, planList: TCloudPlan[]) => Promise<number[]>;
|
|
7323
|
+
};
|
|
7324
|
+
|
|
7325
|
+
/**
|
|
7326
|
+
* The bridge between a robot ROW and the robot CLOUD.
|
|
7327
|
+
*
|
|
7328
|
+
* A registered robot is a document holding a nickname and a credential pair.
|
|
7329
|
+
* Everything a user actually wants - where it is, what it is doing, its floors,
|
|
7330
|
+
* sending it to clean - lives in the vendor's cloud and is addressed by
|
|
7331
|
+
* `robotSn`. This is the only place those two halves meet.
|
|
7332
|
+
*
|
|
7333
|
+
* ## Why `robotSn` gets discovered rather than required
|
|
7334
|
+
*
|
|
7335
|
+
* The Add Robot form collects a nickname, an app key and an app token. It has
|
|
7336
|
+
* never asked for a serial. But every per-robot cloud endpoint takes one, so a
|
|
7337
|
+
* robot registered through that form cannot be reached at all.
|
|
7338
|
+
*
|
|
7339
|
+
* Rather than change the form (and every robot already registered through it),
|
|
7340
|
+
* a robot with no `robotSn` gets one from `get-robot-list` - which takes no
|
|
7341
|
+
* parameters and returns everything the credential can see. If that is exactly
|
|
7342
|
+
* one robot, the credential is per-robot and the answer is unambiguous. If it is
|
|
7343
|
+
* several, we cannot guess which, and say so instead of picking one: binding a
|
|
7344
|
+
* nickname to the wrong serial would send one building's cleaning command to
|
|
7345
|
+
* another building's robot.
|
|
7346
|
+
*
|
|
7347
|
+
* ponytail: discovery, not a form change, because the vendor has not yet said
|
|
7348
|
+
* whether a credential is issued per robot or per account (question 2 on the
|
|
7349
|
+
* vendor sheet). When they answer, this either stays as it is or becomes a
|
|
7350
|
+
* picker in the UI.
|
|
7351
|
+
*/
|
|
7352
|
+
type TFleetRobot = {
|
|
7353
|
+
id: string;
|
|
7354
|
+
name: string;
|
|
7355
|
+
robotSn: string;
|
|
7356
|
+
/** The vendor's raw status code, kept so support can quote it. */
|
|
7357
|
+
statusFlag: number | null;
|
|
7358
|
+
/** The vendor's own label for that code. */
|
|
7359
|
+
statusName: string;
|
|
7360
|
+
/** Our normalised vocabulary - this is what screens should show. */
|
|
7361
|
+
mode: TRobotMode;
|
|
7362
|
+
online: boolean;
|
|
7363
|
+
dispatchable: boolean;
|
|
7364
|
+
};
|
|
7365
|
+
/** What the service needs from a robot row. */
|
|
7366
|
+
type TStoredRobot = TRobot & {
|
|
7367
|
+
_id?: unknown;
|
|
7368
|
+
};
|
|
7369
|
+
declare function useRobotFleetService(deps?: {
|
|
7370
|
+
/** Injected so the whole service runs in a test with no network. */
|
|
7371
|
+
cloudFor?: typeof useRobotCloudService;
|
|
7372
|
+
/** Persists a discovered serial. Omitted in tests. */
|
|
7373
|
+
saveRobotSn?: (robotId: string, robotSn: string) => Promise<unknown>;
|
|
7374
|
+
}): {
|
|
7375
|
+
resolveRobotSn: (robot: TStoredRobot) => Promise<string>;
|
|
7376
|
+
getFleetRobot: (robot: TStoredRobot) => Promise<TFleetRobot>;
|
|
7377
|
+
getMaps: (robot: TStoredRobot) => Promise<TCloudMap[]>;
|
|
7378
|
+
getMapImages: (robot: TStoredRobot, fileKeys: string[]) => Promise<TCloudFile[]>;
|
|
7379
|
+
dispatch: (robot: TStoredRobot, command: {
|
|
7380
|
+
kind: "full";
|
|
7381
|
+
options: TCleanOptions;
|
|
7382
|
+
} | {
|
|
7383
|
+
kind: "area";
|
|
7384
|
+
areas: string[];
|
|
7385
|
+
options: TCleanOptions;
|
|
7386
|
+
} | {
|
|
7387
|
+
kind: "spot";
|
|
7388
|
+
points: Array<{
|
|
7389
|
+
x: number;
|
|
7390
|
+
y: number;
|
|
7391
|
+
}>;
|
|
7392
|
+
options: TCleanOptions;
|
|
7393
|
+
} | {
|
|
7394
|
+
kind: "return";
|
|
7395
|
+
}) => Promise<TRobotCloudReply<Record<string, never>>>;
|
|
7396
|
+
getPlans: (robot: TStoredRobot) => Promise<TCloudPlan[]>;
|
|
7397
|
+
};
|
|
7398
|
+
|
|
6706
7399
|
type TPatrolQuestion = {
|
|
6707
7400
|
_id?: ObjectId;
|
|
6708
7401
|
site: string | ObjectId;
|
|
@@ -15470,4 +16163,4 @@ declare function usePersonalEmergencyChainController(): {
|
|
|
15470
16163
|
update: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
15471
16164
|
};
|
|
15472
16165
|
|
|
15473
|
-
export { ANPRMode, APP_BASE_URLS, AUDIT_VALUE_MAX_LENGTH, AccessTypeProps, AppKey, AppServiceType, AssignCardConfig, BLOCKLIST_CATEGORIES, BULK_CAMERA_COLUMNS, BidStatus, BidType, BuildingLevelStatus, BuildingStatus, BulkCameraAccepted, BulkCameraOutcome, BulkCameraPlan, BulkCameraResult, BulkCardUpdate, BulletinOrder, BulletinRecipient, BulletinSort, BulletinStatus, BulletinVideoOrder, BulletinVideoSort, CAMERA_ANPR_PERMISSIONS, CAMERA_CAPABILITIES, CAMERA_CAPABILITY_REASONS, CAMERA_MANAGE_ANY_PERMISSIONS, CAMERA_NOT_PATROL_OR_CCTV, CAMERA_NO_SUB_STREAM_TTL_SECONDS, CAMERA_PTZ_PERMISSIONS, CAMERA_RECORDINGS_PERMISSIONS, CAMERA_REQUEST_TIMEOUT_MS, CAMERA_RTSP_TIMEOUT_MS, CAMERA_SETUP_PERMISSIONS, CAMERA_SNAPSHOT_CACHE_SECONDS, CAMERA_SNAPSHOT_MAX_BYTES, CAMERA_TEST_MIN_INTERVAL_SECONDS, CAMERA_TEST_ROUND_LIMIT, CAMERA_TEST_ROUND_SECONDS, CAMERA_TYPE_ANPR, CAMERA_TYPE_IP, CAMERA_VIEW_PERMISSIONS, CLIENT_ACTIONS, CLOCK_DRIFT_WARN_SECONDS, CONSOLE_AUDIT_LABELS, CONSOLE_PERMISSIONS, CONTRACTOR_TYPE_LABELS, CROSS_CLIENT_GRANT, CURRENT_TIME_ENDPOINT, Camera, CameraAddressInput, CameraCapability, CameraCapabilityContext, CameraCapabilityDescriptor, CameraCapabilityEntry, CameraCapabilityReason, CameraCapabilityState, CameraCapabilityTrace, CameraDevice, CameraFrame, CameraMembership, CameraStream, CameraTestStatus, CameraTransport, CameraType, ConsoleAuditAction, ConsoleAuditTarget, ConsoleGrant, DEFAULT_RING_SECONDS, DEFAULT_SITE_TIMEZONE, DEVICE_STATUS, DOBStatus, DUPLICATE_TERMS_VERSION_MESSAGE, DayOfWeek, DeviceHttpTarget, DeviceProbeResult, DynamicFormFields, E164, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GOVERNED_MODULES, GuestSort, GuestStatus, HID_CARD_VALUE_FACTOR, HID_PERMISSION_CATEGORIES, HID_UINT32_MAX, HID_UINT64_MAX, HidRawUint64, IAccessCard, IAccessCardTransaction, InviteActor, LIVE_ROLE, LIVE_VEHICLE_STATUSES, MANAGE_SITE_MODULES, MAX_BULK_CAMERA_ROWS, MAX_CAMERA_CHANNEL, MAX_CAMERA_NAME_LENGTH, MAX_PERSONAL_EMERGENCY_CONTACTS, MAX_RING_SECONDS, MAccessCard, MAccessCardTransaction, MAddress, MAttendance, MAttendanceSettings, MBidPreloved, MBillingConfiguration, MBillingItem, MBuilding, MBuildingLevel, MBuildingUnit, MBulletinBoard, MBulletinVideo, MCategoryPreloved, MChannelPreloved, MChat, MChatPreloved, MConsoleAudit, MCustomer, MCustomerSite, MDocumentManagement, MEMBER_TYPES, MEntryPassSettings, MEventManagement, MFeedback, MFile, MFormEntry, MGuestManagement, MHidAmicoEvent, MHidAmicoIdentity, MHidAmicoReader, MHidSipAccount, MHidSitePermissions, MIN_RING_SECONDS, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MNotificationPreference, MODULE_GATE_MODE_DEFAULT, MODULE_LIST_GATE_DEFAULT, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolEmail, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, MPersonalEmergencyChain, MPlatformTerms, MPost, MPostFavorite, MPromoCode, MRobot, MRole, MRoleV2, MServiceProvider, MServiceProviderBilling, MSession, MSite, MSiteCamera, MSiteFacility, MSiteFacilityBooking, MStatementOfAccount, MSubcategoryPreloved, MSubscription, MSubscriptionPlan, MUnitBilling, MUser, MVehicle, MVehicleTransaction, MVerification, MVerificationV2, MVisitorTransaction, MWorkOrder, NOTIFICATION_CATEGORIES, NOTIFICATION_CHANNELS, NOTIFICATION_CHANNEL_LABELS, NOTIFICATION_NAMESPACE, NOTIFY_ACCESS_FILTER_DEFAULT, NotificationAppSlug, NotificationCategory, NotificationChannel, NotificationModule, NotificationPreferenceView, NotificationService, ORG_MARKETPLACE_VENDOR_FIELD, ORG_OWNER_REPAIR_CLAIM_STALE_MS, ORG_OWNER_REPAIR_CLAIM_TAKEN_REASON, ORG_OWNER_REPAIR_DEFAULT, ORG_OWNER_REPAIR_OFF_REASON, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PATROL_CCTV_CAMERA_FILTER, PATROL_EMAIL_MAX_LOGS, PATROL_EMAIL_MAX_PER_HOUR, PATROL_EMAIL_MAX_RECIPIENTS, PERSON_TYPES, PLATFORM_STAFF_MEMBER_TYPE, PLATFORM_STAFF_ROLE_TYPE, PLAYBACK_LINK_SECONDS, PLAYBACK_MAX_WINDOW_SECONDS, PROPERTY_MANAGEMENT_MEMBER_TYPES, PStatus, PTZ_ALLOWED_ACTIONS, PTZ_ALLOWED_CODES, Period, PersonStatus, PersonType, PersonTypes, PlatformTermsStatus, PostOrder, PostSort, PostStatus, QrTagProps, REALTIME_MAX_FANOUT, REGISTERED_VEHICLE_CATEGORIES, ResidentAppModuleKey, SELF_SERVICE_RESEND_COOLDOWN_MS, SELF_SIGNUP_PLATFORM, SELF_SIGNUP_STATUS, SELF_SIGNUP_TYPES, SERVICE_PROVIDER_INVITE_LABELS, SERVICE_PROVIDER_INVITE_TRANSITIONS, SERVICE_PROVIDER_SIGN_IN_SUBJECT, SERVICE_PROVIDER_SIGN_IN_TYPE, SERVICE_PROVIDER_SIGN_UP_SUBJECT, SERVICE_PROVIDER_SIGN_UP_TYPE, SOFTWARE_VERSION_ENDPOINT, ServiceProviderInviteAction, ServiceProviderInviteDecision, ServiceProviderInviteFacts, SiteAddress, SiteCategories, SiteStatus, SortFields, SortOrder, Status, SubjectOrder, SubjectSort, SubscriptionBillingMode, 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, TCameraHealthClaim, TCategoryPreloved, TChannelPreloved, TChat, TChatPreloved, TCheckPoint$1 as TCheckPoint, TComplaintInfo, TComplaintReceivedTo, TConsoleAudit, TConsoleAuditQuery, TCounter, TCreateNfcPatrolLog, TCustomer, TCustomerSite, TCustomerSitePropertyField, TDayNumber, TDaySchedule, TDefaultAccessCard, TDesignations, TDocs, TDocumentCreate, TDocumentManagement, TEntryPassSettings, TEventManagement, TFeedback, TFeedbackMetadata, TFeedbackUpdate, TFeedbackUpdateCategory, TFeedbackUpdateServiceProvider, TFeedbackUpdateStatus, TFeedbackUpdateToCompleted, TFile, TFiles, TFolderUpdate, TFormEntry, TGetAttendancesByUserQuery, TGetAttendancesQuery, TGuestManagement, THidAmicoEvent, THidAmicoGatewayJob, THidAmicoIdentity, THidAmicoPhysicalCard, THidAmicoReader, THidPermissionAssignment, THidPermissionCategory, THidPermissionUserBinding, THidPhysicalCardInput, THidPhysicalCardType$1 as THidPhysicalCardType, THidSipAccount, THidSitePermissions, TIncidentInformation, TIncidentReport, TIncidentTypeAndTime, TInvoice, TKeyRef, TManpowerDesignations, TManpowerDesignationsUpdate, TManpowerMonitoring, TManpowerMonitoringUpdate, TManpowerRemarks, TManpowerRemarksStatusUpdate, TManpowerRemarksUpdate, TManpowerSearchFilter, TManpowerSites, TMember, TMemberModulesDeps, TMemberUpdateStatus, TMessagePreloved, TMiniRole, TModuleAccess, TModuleGateMode, TModuleImpact, TNfcPatrolLog, TNfcPatrolRoute, TNfcPatrolRouteEdit, TNfcPatrolSettings, TNfcPatrolSettingsGetBySite, TNfcPatrolSettingsUpdate, TNfcPatrolTag, TNfcPatrolTagConfigureReset, TNfcPatrolTagEdit, TNfcPatrolTagUpdateData, TNotification, TNotificationPreference, TNotificationPreferenceOff, TNotifyAccessContext, TNotifyAccessMode, TNotifyAccessReport, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOrgModulesDeps, TOrgOwnerRepairClaim, TOrgOwnerRepairDeps, TOrgOwnerRepairInput, TOrgOwnerRepairPayload, TOrgOwnerRepairPlan, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolEmail, TPatrolEmailCreatedBy, TPatrolEmailLogRef, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPersonalEmergencyChain, TPersonalEmergencyContact, TPlaceOfIncident, TPlates, TPlatformTerms, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoCurrencyInput, TPromoTier, TRANSPORT_DEVICE_HTTP, TRANSPORT_RELAY_PLAYBACK, TRANSPORT_RELAY_PLAYER, TRANSPORT_RTSP_FRAME, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRolePermissionHistoryEntry, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TSelfServiceEmailOccasion, TSelfServiceEmailRecord, TSelfServiceResendDecision, TSelfServiceResendFacts, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteDayBounds, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteModulesDeps, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, TSubscriptionPlan, TSubscriptionPlanApplication, TUnitBilling, TUnits, TUpdateFormEntry, TUpdateName, TUser, TUserCreate, TVehicle, TVehicleAnprCamera, TVehicleHistoryEntry, TVehicleTransaction, TVehicleUpdate, TVerification, TVerificationCode, TVerificationEvent, TVerificationMetadata, TVerificationMetadataV2, TVerificationOnboarding, TVerificationV2, TVisitorTransaction, TWorkOrder, TWorkOrderMetadata, TWorkOrderUpdate, TWorkOrderUpdateStatus, TWorkOrderUpdateToCompleted, TanyoneDamageToProperty, UNSTORED_COLUMNS, UseAccessManagementRepo, UserStatus, VEHICLE_HISTORY_LIMIT, VERIFICATION_OPEN_STATUSES, VehicleCategory, VehicleListView, VehicleOrder, VehicleSort, VehicleStatus, VehicleType, VerificationLinkType, VerificationStatus, VerificationSubjectType, VerificationType, VisitorSort, VisitorStatus, addressSchema, allowedFieldsSite, allowedNatures, allowedPlanApplications, attendanceSchema, attendanceSettingsSchema, buildSelfServiceEmailContext, building_level_namespace_collection, building_units_namespace_collection, buildings_namespace_collection, bulletin_boards_namespace_collection, callerAccountApproved, callerId, cameraBaseUrl, cameraCapabilitiesFor, cameraDevices, cameraGrant, cameraHealthClaim, cameraHealthSummary, cameraListClearConfirmation, cameraManagePermissions, cameraProbeCacheKey, cameraTransports, canManageSiteModules, canRevokeRefreshTokenFamily, categoriesForPermissions, categorySupportsChannel, chatPrelovedEvents, chatSchema, claimReadsAsStale, clampPtzSpeed, clockDriftSeconds, consoleRoleAllows, consoleRoleAllowsAll, consoleSpellings, console_audit_namespace_collection, createManpowerRemarksDaily, customerSchema, customerSitePropertyFields, decideSelfServiceResend, decideServiceProviderInvite, decodeHidPacsCard, deniedModules, deriveBulletinStatus, deriveCameraHost, describeCameraCapabilities, designationsSchema, deviceControlEnabled, deviceHttpEnabled, deviceHttpTargets, deviceHttpTimeoutMs, deviceProbeTtlSeconds, emitNotificationCreated, emptyPersonalEmergencyChain, encodeHidPacsCard, entitledSiteScope, events_namespace_collection, expandModules, expiredBulletinSweepFilter, expiredVehicleSweepFilter, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, filterByAccess, formatCapabilityTrace, formatDahuaDate, getIO, getSessionIdFromRequest, grabWithSubStreamFallback, guests_namespace_collection, hasAnyCapability, hasAnyPermission, hasOrgInvitation, hasOrgOwnership, hasOrgSiteReach, hidRawUint64, holdsRole, incidentReport, incidentReportLog, incidents_namespace_collection, invitationOffersRole, isCameraEntitled, isDuplicateMemberError, isDuplicateVersionError, isLikelySelfServiceEmail, isLiveVehicleStatus, isPatrolCctvCamera, isPlatformOwner, isPromoCodeExpired, isRelayPlayerUrl, isSafeRelativePath, isSeasonPassVehicle, isSuperAdmin, isTermsCurrent, isValidTimezone, listStaffUserIds, liveStatusFor, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, maskNric, memberModulesHandlers, moduleDeniedForCaller, moduleGateEnforceKeys, moduleGateMode, moduleImpact, moduleListGateOn, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, normalizeAcceptedTerms, normalizeHidCardValue, notificationAccessReport, notificationCategory, notificationCategoryLabel, notificationEvents, notificationRoom, notifyAccessMode, occasionForStatus, occurrence_book_namespace_collection, onBookTimezonesChanged, online_forms_namespace_collection, orgLevelRoles, orgModulesHandlers, orgOwnerRepairHandlers, orgOwnerRepairOn, orgQualifiesForOwnerRepair, orgSchema, overnight_parking_requests_namespace_collection, parseCameraChannel, parseCameraHost, parseDahuaFind, parseDeviceTime, parseHidJsonLossless, parsePromoExpiry, parseSoftwareVersion, pickAuditFields, pickCustomerSiteProperties, planBulkCameraImport, planOrgOwnerRepair, platform_terms_namespace_collection, playbackRelays, playbackWindowRefusal, promoCodeRefusal, promoCodeSchema, promoCodeStatusSchema, promoCodeUpdate, promoCodeUpdateSchema, ptzEndpoint, publicCameraFields, readsAsApprovedAccount, recordConsoleAction, refuseServiceProviderInviteAction, registerCameraTransport, relayForRecorder, remarksSchema, renderPagePdf, requireConsolePermission, requirePlatformStaff, resetCameraTransports, residentAppModuleKeys, residentAppModulesSchema, residentFormEntry, resolutionRefusalReason, resolveCamera, resolveDeviceHttp, resolveHidPhysicalCardValue, resolveInviteActor, resolveSiteTimezone, resolveStaffRole, robotSchema, rtspUrl, schema, schemaAppSlugNotification, schemaApprovedBy, schemaApprover, schemaBidPreloved, schemaBilling, schemaBillingConfiguration, schemaBillingItem, schemaBuilding, schemaBuildingLevel, schemaBuildingUnit, schemaBuildingUpdateOptions, schemaBulletinBoard, schemaBulletinVideo, schemaCategoryPreloved, schemaChannelPreloved, schemaChatPreloved, schemaConsoleAudit, schemaCreateHidAmicoIdentity, schemaCreateNfcPatrolLog, schemaCreateNotification, schemaCustomerSite, schemaDiscoverHidAmicoReader, schemaDocumentManagement, schemaEntryPassSettings, schemaEventManagement, schemaFiles, schemaFormEntry, schemaGuestManagement, schemaHidAmicoAccessLogQuery, schemaHidAmicoAssignUserCard, schemaHidAmicoConfiguration, schemaHidAmicoEnrollUserCard, schemaHidAmicoEvent, schemaHidAmicoExecuteActions, schemaHidAmicoIdentity, schemaHidAmicoIdentityIdParams, schemaHidAmicoIdentityQuery, schemaHidAmicoIntercomCall, schemaHidAmicoLogQuery, schemaHidAmicoMonitor, schemaHidAmicoNotificationParams, schemaHidAmicoObjectOperation, schemaHidAmicoOperatingMode, schemaHidAmicoReader, schemaHidAmicoReaderIdParams, schemaHidAmicoReaderListQuery, schemaHidAmicoReaderUserQuery, schemaHidAmicoSetConfiguration, schemaHidAmicoSiteIdParams, schemaHidAmicoSync, schemaHidAmicoUserCardIdParams, schemaHidAmicoUserCardParams, schemaHidAmicoUserImageParams, schemaHidAmicoUserImageUploadQuery, schemaHidAmicoUserPin, schemaHidAmicoUserPinParams, schemaHidAmicoVisitorImageParams, schemaHidAmicoVisitorImageUploadQuery, schemaHidAmicoVisitorQr, schemaHidPermissionCandidateQuery, schemaHidPermissionScopeQuery, schemaHidSipAccountRequest, schemaIncidentReport, schemaListNotification, schemaMultipleDocumentManagement, schemaNfcPatrolLog, schemaNfcPatrolRoute, schemaNfcPatrolTag, schemaNfcPatrolTagUpdateData, schemaNotification, schemaNotificationPreference, schemaNotificationPreferenceOff, schemaOccurrenceBook, schemaOccurrenceEntry, schemaOccurrenceSubject, schemaOnlineForm, schemaOvernightParkingApprovalHours, schemaOvernightParkingRequest, schemaPatrolEmail, schemaPatrolEmailCreatedBy, schemaPatrolEmailLogRef, schemaPatrolEmailQuery, schemaPatrolLog, schemaPatrolQuestion, schemaPatrolRoute, schemaPerson, schemaPersonalEmergencyContact, schemaPlate, schemaPlatformTerms, schemaPost, schemaPostFavorite, schemaResendPatrolEmail, schemaResidentSelfSignUp, schemaSelfServiceVisitor, schemaSendPatrolEmail, 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, schemaUpdateNotificationPreference, schemaUpdateOccurrenceBook, schemaUpdateOccurrenceEntry, schemaUpdateOccurrenceSubject, schemaUpdateOnlineForm, schemaUpdateOptions, schemaUpdateOvernightParkingRequest, schemaUpdatePatrolLog, schemaUpdatePatrolQuestion, schemaUpdatePatrolRoute, schemaUpdatePerson, schemaUpdatePersonalEmergencyChain, schemaUpdatePost, schemaUpdatePostFavorite, schemaUpdateServiceProviderBilling, schemaUpdateSiteBillingConfiguration, schemaUpdateSiteBillingItem, schemaUpdateSiteCamera, schemaUpdateSiteFacility, schemaUpdateSiteFacilityBooking, schemaUpdateSiteUnitBilling, schemaUpdateStatementOfAccount, schemaUpdateSubcategoryPreloved, schemaUpdateVisTrans, schemaVehicleTransaction, schemaVisitorTransaction, schemeCamera, schemeLogCamera, selectHealthTargets, selfServiceEmailSubject, serviceProviderInviteLabel, sessionSchema, setIO, shiftSchema, signLiveLink, signPlaybackLink, siteDayBounds, siteModulesHandlers, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, staffMayBypass, startTodaysBookForSite, stringifyHidJson, stripFacialImageMetadata, subscriptionPlanSchema, summariseBulkCameraPlan, 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, useConsoleAuditController, useConsoleAuditRepo, 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, useNotificationPreferenceController, useNotificationPreferenceRepo, useNotificationPreferenceService, useNotificationRepo, useOccurrenceBookController, useOccurrenceBookRepo, useOccurrenceBookService, useOccurrenceEntryController, useOccurrenceEntryRepo, useOccurrenceEntryService, useOccurrenceSubjectController, useOccurrenceSubjectRepo, useOccurrenceSubjectService, useOnlineFormController, useOnlineFormRepo, useOrgController, useOrgControllerV2, useOrgOwnerRepairRepo, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolEmailController, usePatrolEmailRepo, usePatrolEmailService, usePatrolLogController, usePatrolLogRepo, usePatrolLogService, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, usePersonalEmergencyChainController, usePersonalEmergencyChainRepo, usePersonalEmergencyChainService, usePlatformTermsController, usePlatformTermsRepo, usePlatformTermsService, 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, useServiceProviderInviteController, useServiceProviderInviteService, 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, useSubscriptionPlanController, useSubscriptionPlanRepo, useSubscriptionRepo, useSubscriptionService, useUserController, useUserControllerV2, useUserRepo, useUserRepoV2, useUserService, useUserServiceV2, useVehicleController, useVehicleRepo, useVehicleService, useVerificationController, useVerificationControllerV2, useVerificationRepo, useVerificationRepoV2, useVerificationService, useVerificationServiceV2, useVisitorTransactionController, useVisitorTransactionRepo, useVisitorTransactionService, useWorkOrderController, useWorkOrderRepo, useWorkOrderService, userSchema, vehicleCategoryFor, vehicleHistoryEntry, vehicleListViewQuery, vehicleSchema, vehicleViewOf, vehicles_namespace_collection, visitorPersonRepo, visitorPersonService, visitorType, visitors_namespace_collection, wallConfig, withLiveLink, workOrderSchema, work_orders2_namespace_collection, work_orders_namespace_collection };
|
|
16166
|
+
export { ANPRMode, APP_BASE_URLS, AUDIT_VALUE_MAX_LENGTH, AccessTypeProps, AppKey, AppServiceType, AssignCardConfig, BLOCKLIST_CATEGORIES, BULK_CAMERA_COLUMNS, BidStatus, BidType, BuildingLevelStatus, BuildingStatus, BulkCameraAccepted, BulkCameraOutcome, BulkCameraPlan, BulkCameraResult, BulkCardUpdate, BulletinOrder, BulletinRecipient, BulletinSort, BulletinStatus, BulletinVideoOrder, BulletinVideoSort, CAMERA_ANPR_PERMISSIONS, CAMERA_CAPABILITIES, CAMERA_CAPABILITY_REASONS, CAMERA_MANAGE_ANY_PERMISSIONS, CAMERA_NOT_PATROL_OR_CCTV, CAMERA_NO_SUB_STREAM_TTL_SECONDS, CAMERA_PTZ_PERMISSIONS, CAMERA_RECORDINGS_PERMISSIONS, CAMERA_REQUEST_TIMEOUT_MS, CAMERA_RTSP_TIMEOUT_MS, CAMERA_SETUP_PERMISSIONS, CAMERA_SNAPSHOT_CACHE_SECONDS, CAMERA_SNAPSHOT_MAX_BYTES, CAMERA_TEST_MIN_INTERVAL_SECONDS, CAMERA_TEST_ROUND_LIMIT, CAMERA_TEST_ROUND_SECONDS, CAMERA_TYPE_ANPR, CAMERA_TYPE_IP, CAMERA_VIEW_PERMISSIONS, CLIENT_ACTIONS, CLOCK_DRIFT_WARN_SECONDS, CONSOLE_AUDIT_LABELS, CONSOLE_PERMISSIONS, CONTRACTOR_TYPE_LABELS, CROSS_CLIENT_GRANT, CURRENT_TIME_ENDPOINT, Camera, CameraAddressInput, CameraCapability, CameraCapabilityContext, CameraCapabilityDescriptor, CameraCapabilityEntry, CameraCapabilityReason, CameraCapabilityState, CameraCapabilityTrace, CameraDevice, CameraFrame, CameraMembership, CameraStream, CameraTestStatus, CameraTransport, CameraType, ConsoleAuditAction, ConsoleAuditTarget, ConsoleGrant, DEFAULT_RING_SECONDS, DEFAULT_SITE_TIMEZONE, DEVICE_STATUS, DOBStatus, DUPLICATE_TERMS_VERSION_MESSAGE, DayOfWeek, DeviceHttpTarget, DeviceProbeResult, DynamicFormFields, E164, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GOVERNED_MODULES, GuestSort, GuestStatus, HID_CARD_VALUE_FACTOR, HID_PERMISSION_CATEGORIES, HID_UINT32_MAX, HID_UINT64_MAX, HidRawUint64, IAccessCard, IAccessCardTransaction, InviteActor, LIVE_ROLE, LIVE_VEHICLE_STATUSES, MANAGE_SITE_MODULES, MAX_BULK_CAMERA_ROWS, MAX_CAMERA_CHANNEL, MAX_CAMERA_NAME_LENGTH, MAX_PERSONAL_EMERGENCY_CONTACTS, MAX_RING_SECONDS, MAccessCard, MAccessCardTransaction, MAddress, MAttendance, MAttendanceSettings, MBidPreloved, MBillingConfiguration, MBillingItem, MBuilding, MBuildingLevel, MBuildingUnit, MBulletinBoard, MBulletinVideo, MCategoryPreloved, MChannelPreloved, MChat, MChatPreloved, MConsoleAudit, MCustomer, MCustomerSite, MDocumentManagement, MEMBER_TYPES, MEntryPassSettings, MEventManagement, MFeedback, MFile, MFormEntry, MGuestManagement, MHidAmicoEvent, MHidAmicoIdentity, MHidAmicoReader, MHidSipAccount, MHidSitePermissions, MIN_RING_SECONDS, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MNotificationPreference, MODULE_GATE_MODE_DEFAULT, MODULE_LIST_GATE_DEFAULT, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolEmail, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, MPersonalEmergencyChain, MPlatformTerms, MPost, MPostFavorite, MPromoCode, MRobot, MRole, MRoleV2, MServiceProvider, MServiceProviderBilling, MSession, MSite, MSiteCamera, MSiteFacility, MSiteFacilityBooking, MStatementOfAccount, MSubcategoryPreloved, MSubscription, MSubscriptionPlan, MUnitBilling, MUser, MVehicle, MVehicleTransaction, MVerification, MVerificationV2, MVisitorTransaction, MWorkOrder, NOTIFICATION_CATEGORIES, NOTIFICATION_CHANNELS, NOTIFICATION_CHANNEL_LABELS, NOTIFICATION_NAMESPACE, NOTIFY_ACCESS_FILTER_DEFAULT, NotificationAppSlug, NotificationCategory, NotificationChannel, NotificationModule, NotificationPreferenceView, NotificationService, ORG_MARKETPLACE_VENDOR_FIELD, ORG_OWNER_REPAIR_CLAIM_STALE_MS, ORG_OWNER_REPAIR_CLAIM_TAKEN_REASON, ORG_OWNER_REPAIR_DEFAULT, ORG_OWNER_REPAIR_OFF_REASON, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PATROL_CCTV_CAMERA_FILTER, PATROL_EMAIL_MAX_LOGS, PATROL_EMAIL_MAX_PER_HOUR, PATROL_EMAIL_MAX_RECIPIENTS, PERSON_TYPES, PLAN_RANGE, PLATFORM_STAFF_MEMBER_TYPE, PLATFORM_STAFF_ROLE_TYPE, PLAYBACK_LINK_SECONDS, PLAYBACK_MAX_WINDOW_SECONDS, PROPERTY_MANAGEMENT_MEMBER_TYPES, PStatus, PTZ_ALLOWED_ACTIONS, PTZ_ALLOWED_CODES, Period, PersonStatus, PersonType, PersonTypes, PlatformTermsStatus, PostOrder, PostSort, PostStatus, QrTagProps, REALTIME_MAX_FANOUT, REGISTERED_VEHICLE_CATEGORIES, ROBOT_APP_SCOPES, ROBOT_CLOUD_DOC_CONFIRMATIONS, ROBOT_CLOUD_PATHS, ROBOT_MODULE, ROBOT_PERMISSIONS, ROBOT_STATUS_NAMES, ROBOT_TYPES, ResidentAppModuleKey, RobotCloudError, SELF_SERVICE_RESEND_COOLDOWN_MS, SELF_SIGNUP_PLATFORM, SELF_SIGNUP_STATUS, SELF_SIGNUP_TYPES, SERVICE_PROVIDER_INVITE_LABELS, SERVICE_PROVIDER_INVITE_TRANSITIONS, SERVICE_PROVIDER_SIGN_IN_SUBJECT, SERVICE_PROVIDER_SIGN_IN_TYPE, SERVICE_PROVIDER_SIGN_UP_SUBJECT, SERVICE_PROVIDER_SIGN_UP_TYPE, SOFTWARE_VERSION_ENDPOINT, ServiceProviderInviteAction, ServiceProviderInviteDecision, ServiceProviderInviteFacts, SiteAddress, SiteCategories, SiteStatus, SortFields, SortOrder, Status, SubjectOrder, SubjectSort, SubscriptionBillingMode, SubscriptionType, TAccessMngmntSettings, TActionStatus, TAddress, TAffectedEntities, TAffectedInjured, TAppServiceType, TApprovedBy, TApprover, TAreaColour, TAttendance, TAttendanceCheckIn, TAttendanceCheckOut, TAttendanceCheckTime, TAttendanceLocation, TAttendanceSettings, TAttendanceSettingsGetBySite, TAuthorities, TAuthoritiesCalled, TBidPreloved, TBilling, TBillingConfiguration, TBillingItem, TBuilding, TBuildingLevel, TBuildingUnit, TBulletinBoard, TBulletinVideo, TCamera, TCameraHealthClaim, TCategoryPreloved, TChannelPreloved, TChat, TChatPreloved, TCheckPoint$1 as TCheckPoint, TCleanLevel, TCleanMode, TCleanOptions, TCleanSubMode, TCloudArea, TCloudFile, TCloudMap, TCloudPlan, TCloudPlanJob, TCloudRobot, TComplaintInfo, TComplaintReceivedTo, TConsoleAudit, TConsoleAuditQuery, TCounter, TCreateNfcPatrolLog, TCustomer, TCustomerSite, TCustomerSitePropertyField, TDayNumber, TDaySchedule, TDefaultAccessCard, TDesignations, TDocs, TDocumentCreate, TDocumentManagement, TEntryPassSettings, TEventManagement, TFeedback, TFeedbackMetadata, TFeedbackUpdate, TFeedbackUpdateCategory, TFeedbackUpdateServiceProvider, TFeedbackUpdateStatus, TFeedbackUpdateToCompleted, TFile, TFiles, TFleetRobot, TFolderUpdate, TFormEntry, TGetAttendancesByUserQuery, TGetAttendancesQuery, TGuestManagement, THidAmicoEvent, THidAmicoGatewayJob, THidAmicoIdentity, THidAmicoPhysicalCard, THidAmicoReader, THidPermissionAssignment, THidPermissionCategory, THidPermissionUserBinding, THidPhysicalCardInput, THidPhysicalCardType$1 as THidPhysicalCardType, THidSipAccount, THidSitePermissions, TIncidentInformation, TIncidentReport, TIncidentTypeAndTime, TInvoice, TKeyRef, TManpowerDesignations, TManpowerDesignationsUpdate, TManpowerMonitoring, TManpowerMonitoringUpdate, TManpowerRemarks, TManpowerRemarksStatusUpdate, TManpowerRemarksUpdate, TManpowerSearchFilter, TManpowerSites, TMember, TMemberModulesDeps, TMemberUpdateStatus, TMessagePreloved, TMiniRole, TModuleAccess, TModuleGateMode, TModuleImpact, TNfcPatrolLog, TNfcPatrolRoute, TNfcPatrolRouteEdit, TNfcPatrolSettings, TNfcPatrolSettingsGetBySite, TNfcPatrolSettingsUpdate, TNfcPatrolTag, TNfcPatrolTagConfigureReset, TNfcPatrolTagEdit, TNfcPatrolTagUpdateData, TNotification, TNotificationPreference, TNotificationPreferenceOff, TNotifyAccessContext, TNotifyAccessMode, TNotifyAccessReport, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOrgModulesDeps, TOrgOwnerRepairClaim, TOrgOwnerRepairDeps, TOrgOwnerRepairInput, TOrgOwnerRepairPayload, TOrgOwnerRepairPlan, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolEmail, TPatrolEmailCreatedBy, TPatrolEmailLogRef, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPersonalEmergencyChain, TPersonalEmergencyContact, TPlaceOfIncident, TPlates, TPlatformTerms, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoCurrencyInput, TPromoTier, TRACKING_BACKOFF_BASE_MS, TRACKING_BACKOFF_CAP_MS, TRACKING_IDLE_TIMEOUT_MS, TRANSPORT_DEVICE_HTTP, TRANSPORT_RELAY_PLAYBACK, TRANSPORT_RELAY_PLAYER, TRANSPORT_RTSP_FRAME, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotAction, TRobotAppScope, TRobotCloudCredentials, TRobotCloudPath, TRobotCloudReply, TRobotLiveState, TRobotMetadata, TRobotMode, TRobotPermissionActor, TRobotPose, TRobotType, TRole, TRolePermissionHistoryEntry, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TSelfServiceEmailOccasion, TSelfServiceEmailRecord, TSelfServiceResendDecision, TSelfServiceResendFacts, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteDayBounds, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteModulesDeps, TSiteUpdateBlock, TSseEvent, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, TSubscriptionPlan, TSubscriptionPlanApplication, TUnitBilling, TUnits, TUpdateFormEntry, TUpdateName, TUser, TUserCreate, TVehicle, TVehicleAnprCamera, TVehicleHistoryEntry, TVehicleTransaction, TVehicleUpdate, TVerification, TVerificationCode, TVerificationEvent, TVerificationMetadata, TVerificationMetadataV2, TVerificationOnboarding, TVerificationV2, TVisitorTransaction, TWorkOrder, TWorkOrderMetadata, TWorkOrderUpdate, TWorkOrderUpdateStatus, TWorkOrderUpdateToCompleted, TanyoneDamageToProperty, UNSTORED_COLUMNS, UseAccessManagementRepo, UserStatus, VEHICLE_HISTORY_LIMIT, VERIFICATION_OPEN_STATUSES, VehicleCategory, VehicleListView, VehicleOrder, VehicleSort, VehicleStatus, VehicleType, VerificationLinkType, VerificationStatus, VerificationSubjectType, VerificationType, VisitorSort, VisitorStatus, addressSchema, allowedFieldsSite, allowedNatures, allowedPlanApplications, allowsRobotAction, allowsRobotListing, applyTrackingFrame, areaColourToHex, attendanceSchema, attendanceSettingsSchema, buildSelfServiceEmailContext, building_level_namespace_collection, building_units_namespace_collection, buildings_namespace_collection, bulletin_boards_namespace_collection, callerAccountApproved, callerId, cameraBaseUrl, cameraCapabilitiesFor, cameraDevices, cameraGrant, cameraHealthClaim, cameraHealthSummary, cameraListClearConfirmation, cameraManagePermissions, cameraProbeCacheKey, cameraTransports, canManageSiteModules, canMonitorRobotType, canRevokeRefreshTokenFamily, canSetUpRobotType, categoriesForPermissions, categorySupportsChannel, chatPrelovedEvents, chatSchema, claimReadsAsStale, clampPtzSpeed, clockDriftSeconds, consoleRoleAllows, consoleRoleAllowsAll, consoleSpellings, console_audit_namespace_collection, createManpowerRemarksDaily, createSseParser, customerSchema, customerSitePropertyFields, decideSelfServiceResend, decideServiceProviderInvite, decodeHidPacsCard, decodeTrackingFrame, deniedModules, deriveBulletinStatus, deriveCameraHost, describeCameraCapabilities, designationsSchema, deviceControlEnabled, deviceHttpEnabled, deviceHttpTargets, deviceHttpTimeoutMs, deviceProbeTtlSeconds, disconnectedState, emitNotificationCreated, emptyPersonalEmergencyChain, encodeHidPacsCard, entitledSiteScope, events_namespace_collection, expandModules, expiredBulletinSweepFilter, expiredVehicleSweepFilter, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, filterByAccess, formatCapabilityTrace, formatDahuaDate, getIO, getSessionIdFromRequest, grabWithSubStreamFallback, guests_namespace_collection, hasAnyCapability, hasAnyPermission, hasOrgInvitation, hasOrgOwnership, hasOrgSiteReach, hexToAreaColour, hidRawUint64, holdsRole, incidentReport, incidentReportLog, incidents_namespace_collection, invitationOffersRole, isAvailableForWork, isCameraEntitled, isDispatchable, isDuplicateMemberError, isDuplicateVersionError, isLikelySelfServiceEmail, isLiveVehicleStatus, isPatrolCctvCamera, isPlatformOwner, isPromoCodeExpired, isRelayPlayerUrl, isSafeRelativePath, isSeasonPassVehicle, isSuperAdmin, isTermsCurrent, isTrackingStale, isValidTimezone, listStaffUserIds, liveStatusFor, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, maskNric, memberModulesHandlers, metresToPixel, moduleDeniedForCaller, moduleGateEnforceKeys, moduleGateMode, moduleImpact, moduleListGateOn, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, normalizeAcceptedTerms, normalizeHidCardValue, notificationAccessReport, notificationCategory, notificationCategoryLabel, notificationEvents, notificationRoom, notifyAccessMode, occasionForStatus, occurrence_book_namespace_collection, onBookTimezonesChanged, online_forms_namespace_collection, orgLevelRoles, orgModulesHandlers, orgOwnerRepairHandlers, orgOwnerRepairOn, orgQualifiesForOwnerRepair, orgSchema, overnight_parking_requests_namespace_collection, parseCameraChannel, parseCameraHost, parseDahuaFind, parseDeviceTime, parseHidJsonLossless, parsePromoExpiry, parseSoftwareVersion, pickAuditFields, pickCustomerSiteProperties, pixelToMetres, planBulkCameraImport, planDayFromJsDay, planOrgOwnerRepair, platform_terms_namespace_collection, playbackRelays, playbackWindowRefusal, promoCodeRefusal, promoCodeSchema, promoCodeStatusSchema, promoCodeUpdate, promoCodeUpdateSchema, ptzEndpoint, publicCameraFields, readsAsApprovedAccount, recordConsoleAction, refuseServiceProviderInviteAction, registerCameraTransport, relayForRecorder, remarksSchema, renderPagePdf, requireConsolePermission, requirePlatformStaff, resetCameraTransports, residentAppModuleKeys, residentAppModulesSchema, residentFormEntry, resolutionRefusalReason, resolveCamera, resolveDeviceHttp, resolveHidPhysicalCardValue, resolveInviteActor, resolveSiteTimezone, resolveStaffRole, robotActionsFor, robotCloudBody, robotCloudSign, robotCloudSigningString, robotCloudTimestamp, robotMode, robotModeFromList, robotSchema, robotScopeForApp, robotTypesVisibleTo, rtspUrl, schema, schemaAppSlugNotification, schemaApprovedBy, schemaApprover, schemaBidPreloved, schemaBilling, schemaBillingConfiguration, schemaBillingItem, schemaBuilding, schemaBuildingLevel, schemaBuildingUnit, schemaBuildingUpdateOptions, schemaBulletinBoard, schemaBulletinVideo, schemaCategoryPreloved, schemaChannelPreloved, schemaChatPreloved, schemaConsoleAudit, schemaCreateHidAmicoIdentity, schemaCreateNfcPatrolLog, schemaCreateNotification, schemaCustomerSite, schemaDiscoverHidAmicoReader, schemaDocumentManagement, schemaEntryPassSettings, schemaEventManagement, schemaFiles, schemaFormEntry, schemaGuestManagement, schemaHidAmicoAccessLogQuery, schemaHidAmicoAssignUserCard, schemaHidAmicoConfiguration, schemaHidAmicoEnrollUserCard, schemaHidAmicoEvent, schemaHidAmicoExecuteActions, schemaHidAmicoIdentity, schemaHidAmicoIdentityIdParams, schemaHidAmicoIdentityQuery, schemaHidAmicoIntercomCall, schemaHidAmicoLogQuery, schemaHidAmicoMonitor, schemaHidAmicoNotificationParams, schemaHidAmicoObjectOperation, schemaHidAmicoOperatingMode, schemaHidAmicoReader, schemaHidAmicoReaderIdParams, schemaHidAmicoReaderListQuery, schemaHidAmicoReaderUserQuery, schemaHidAmicoSetConfiguration, schemaHidAmicoSiteIdParams, schemaHidAmicoSync, schemaHidAmicoUserCardIdParams, schemaHidAmicoUserCardParams, schemaHidAmicoUserImageParams, schemaHidAmicoUserImageUploadQuery, schemaHidAmicoUserPin, schemaHidAmicoUserPinParams, schemaHidAmicoVisitorImageParams, schemaHidAmicoVisitorImageUploadQuery, schemaHidAmicoVisitorQr, schemaHidPermissionCandidateQuery, schemaHidPermissionScopeQuery, schemaHidSipAccountRequest, schemaIncidentReport, schemaListNotification, schemaMultipleDocumentManagement, schemaNfcPatrolLog, schemaNfcPatrolRoute, schemaNfcPatrolTag, schemaNfcPatrolTagUpdateData, schemaNotification, schemaNotificationPreference, schemaNotificationPreferenceOff, schemaOccurrenceBook, schemaOccurrenceEntry, schemaOccurrenceSubject, schemaOnlineForm, schemaOvernightParkingApprovalHours, schemaOvernightParkingRequest, schemaPatrolEmail, schemaPatrolEmailCreatedBy, schemaPatrolEmailLogRef, schemaPatrolEmailQuery, schemaPatrolLog, schemaPatrolQuestion, schemaPatrolRoute, schemaPerson, schemaPersonalEmergencyContact, schemaPlate, schemaPlatformTerms, schemaPost, schemaPostFavorite, schemaResendPatrolEmail, schemaResidentSelfSignUp, schemaSelfServiceVisitor, schemaSendPatrolEmail, 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, schemaUpdateNotificationPreference, schemaUpdateOccurrenceBook, schemaUpdateOccurrenceEntry, schemaUpdateOccurrenceSubject, schemaUpdateOnlineForm, schemaUpdateOptions, schemaUpdateOvernightParkingRequest, schemaUpdatePatrolLog, schemaUpdatePatrolQuestion, schemaUpdatePatrolRoute, schemaUpdatePerson, schemaUpdatePersonalEmergencyChain, schemaUpdatePost, schemaUpdatePostFavorite, schemaUpdateServiceProviderBilling, schemaUpdateSiteBillingConfiguration, schemaUpdateSiteBillingItem, schemaUpdateSiteCamera, schemaUpdateSiteFacility, schemaUpdateSiteFacilityBooking, schemaUpdateSiteUnitBilling, schemaUpdateStatementOfAccount, schemaUpdateSubcategoryPreloved, schemaUpdateVisTrans, schemaVehicleTransaction, schemaVisitorTransaction, schemeCamera, schemeLogCamera, selectHealthTargets, selfServiceEmailSubject, serviceProviderInviteLabel, sessionSchema, setIO, shiftSchema, signLiveLink, signPlaybackLink, siteDayBounds, siteModulesHandlers, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, staffMayBypass, startTodaysBookForSite, stringifyHidJson, stripFacialImageMetadata, subscriptionPlanSchema, summariseBulkCameraPlan, trackingBackoffMs, 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, useConsoleAuditController, useConsoleAuditRepo, 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, useNotificationPreferenceController, useNotificationPreferenceRepo, useNotificationPreferenceService, useNotificationRepo, useOccurrenceBookController, useOccurrenceBookRepo, useOccurrenceBookService, useOccurrenceEntryController, useOccurrenceEntryRepo, useOccurrenceEntryService, useOccurrenceSubjectController, useOccurrenceSubjectRepo, useOccurrenceSubjectService, useOnlineFormController, useOnlineFormRepo, useOrgController, useOrgControllerV2, useOrgOwnerRepairRepo, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolEmailController, usePatrolEmailRepo, usePatrolEmailService, usePatrolLogController, usePatrolLogRepo, usePatrolLogService, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, usePersonalEmergencyChainController, usePersonalEmergencyChainRepo, usePersonalEmergencyChainService, usePlatformTermsController, usePlatformTermsRepo, usePlatformTermsService, usePostFavoriteController, usePostFavoriteRepo, usePostFavoriteService, usePostPrelovedController, usePostPrelovedRepo, usePriceController, usePriceModel, usePriceRepo, usePromoCodeController, usePromoCodeRepo, useRedDotPaymentController, useRedDotPaymentRepo, useRedDotPaymentSvc, useRobotCloudService, useRobotController, useRobotFleetService, useRobotRepo, useRobotService, useRoleController, useRoleControllerV2, useRoleRepo, useRoleRepoV2, useRoleServiceV2, useServiceProviderBillingController, useServiceProviderBillingRepo, useServiceProviderBillingService, useServiceProviderController, useServiceProviderInviteController, useServiceProviderInviteService, 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, useSubscriptionPlanController, useSubscriptionPlanRepo, useSubscriptionRepo, useSubscriptionService, useUserController, useUserControllerV2, useUserRepo, useUserRepoV2, useUserService, useUserServiceV2, useVehicleController, useVehicleRepo, useVehicleService, useVerificationController, useVerificationControllerV2, useVerificationRepo, useVerificationRepoV2, useVerificationService, useVerificationServiceV2, useVisitorTransactionController, useVisitorTransactionRepo, useVisitorTransactionService, useWorkOrderController, useWorkOrderRepo, useWorkOrderService, userSchema, vehicleCategoryFor, vehicleHistoryEntry, vehicleListViewQuery, vehicleSchema, vehicleViewOf, vehicles_namespace_collection, visitorPersonRepo, visitorPersonService, visitorType, visitors_namespace_collection, wallConfig, withLiveLink, workOrderSchema, work_orders2_namespace_collection, work_orders_namespace_collection };
|