@7365admin1/core 3.48.1-staging.166 → 3.48.1-staging.168
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/.changeset/camera-type-permission-classification.md +46 -0
- package/.changeset/patrol-log-site-scope.md +29 -0
- package/dist/index.d.ts +74 -5
- package/dist/index.js +56 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +55 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/test/camera-view.util.test.mjs +47 -3
- package/test/e2e/harness.mjs +14 -0
- package/test/e2e/patrol-log-scope.e2e.test.mjs +508 -0
- package/test/site-camera-type.test.mjs +83 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
"@7365admin1/core": patch
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Classify a camera by its `type` correctly, so an ANPR unit can be switched off.
|
|
6
|
+
|
|
7
|
+
Reported as `.github-private#35486`: a faulty ANPR camera at a client site is
|
|
8
|
+
down in PRODUCTION, and `PATCH /api/site-cameras/id/:id` with
|
|
9
|
+
`status: "inactive"` answers `"You do not have permission to set up cameras on
|
|
10
|
+
this site."` The camera is broken and the person trying to switch it off is
|
|
11
|
+
locked out.
|
|
12
|
+
|
|
13
|
+
The refusal is ours. `cameraManagePermissions` (`camera-view.util.ts`) picked
|
|
14
|
+
between the two Settings panels' permission strings with
|
|
15
|
+
`String(type) === "anpr"`, on the strength of a comment claiming `type` was
|
|
16
|
+
"validated to `ip | anpr` by the model". It was not. `site-camera.model.ts` used
|
|
17
|
+
`Joi.string().allow("ip", "anpr").required()`, and `.allow()` WHITELISTS
|
|
18
|
+
additional values rather than restricting to them. Run against joi 17.13.3 the
|
|
19
|
+
rule accepts `"ANPR"`, `"Anpr"` and `"totally-arbitrary-xyz"` exactly as readily
|
|
20
|
+
as `"anpr"`; only `""`, `undefined`, `null` and non-strings were refused, and
|
|
21
|
+
those by `string().required()`, not by the list. So a stored row could carry a
|
|
22
|
+
spelling the gate could not place, an ANPR unit was classed as CCTV, and the
|
|
23
|
+
write demanded `site-settings:manage-cctv-camera` — which a role provisioned for
|
|
24
|
+
the ANPR panel does not hold.
|
|
25
|
+
|
|
26
|
+
Two changes, and the gate itself is untouched in substance:
|
|
27
|
+
|
|
28
|
+
- The schema is now `Joi.string().trim().lowercase().valid("ip", "anpr")`, so
|
|
29
|
+
nothing outside the pair can be stored again. `.trim().lowercase()` runs
|
|
30
|
+
before the check, so a caller sending `"ANPR"` is normalised rather than newly
|
|
31
|
+
refused; every client in the estate already sends the lower-case pair.
|
|
32
|
+
`MSiteCamera` normalises the value it writes for the same reason.
|
|
33
|
+
- `cameraManagePermissions` compares case- and whitespace-insensitively instead
|
|
34
|
+
of exactly, because the rows already in the collection were written under the
|
|
35
|
+
old rule and `loadForWrite` reads them raw, so the mapper's default never
|
|
36
|
+
reaches them. A `type` that still cannot be placed — absent, or a legacy value
|
|
37
|
+
— now asks for EITHER permission. The two strings are two panels, not two
|
|
38
|
+
privilege levels; neither is the safer guess, and guessing one is what locked
|
|
39
|
+
the correct operator out.
|
|
40
|
+
|
|
41
|
+
A caller must still be entitled to the site AND hold a camera-management
|
|
42
|
+
permission on the membership that granted it, so an unrelated tenant is refused
|
|
43
|
+
exactly as before, and none of the pre-`62e4eb62` behaviour — any signed-in
|
|
44
|
+
account rewriting or hard-deleting any organisation's cameras — returns. No
|
|
45
|
+
caller who could write a camera before is refused now: the unplaceable case is a
|
|
46
|
+
superset of the CCTV string it used to demand.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
"@7365admin1/core": patch
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Scope the virtual patrol log routes to the estate, and take the author from the session
|
|
6
|
+
|
|
7
|
+
`/api/patrol-logs` carried `requireAuth` and nothing more on all five handlers,
|
|
8
|
+
and `patrol-log.controller.ts` held no authorization identifier of any kind. A
|
|
9
|
+
patrol log is the proof a round was walked, so any signed-in account on the
|
|
10
|
+
platform could read another client's patrol history, rewrite a round's outcome,
|
|
11
|
+
detach its incident report, move it to another estate, or destroy it. The delete
|
|
12
|
+
is a HARD delete (`collection.deleteOne`), so there is no tombstone to notice.
|
|
13
|
+
|
|
14
|
+
`GET /` was worse than "unscoped": `site` was an OPTIONAL query parameter and
|
|
15
|
+
the repository only applies it when it is a valid id, so a request that simply
|
|
16
|
+
omitted it was answered with EVERY estate's patrol history in one page. `site`
|
|
17
|
+
is now required, which is what both live callers already send.
|
|
18
|
+
|
|
19
|
+
`createdBy` was accepted from the request body and never compared to the
|
|
20
|
+
session, so a round could be filed under another guard's name. It now comes from
|
|
21
|
+
`callerId(req)`.
|
|
22
|
+
|
|
23
|
+
Adds `requirePatrolLogReach`, built on the existing `requireSiteReach` rule,
|
|
24
|
+
plus an uncached `getRawPatrolLogById` so the check is not decided from a
|
|
25
|
+
15-minute cache entry. `PUT /id/:id` checks BOTH ends, because
|
|
26
|
+
`schemaUpdatePatrolLog` accepts `site` and `updateById` writes it.
|
|
27
|
+
|
|
28
|
+
Behaviour change: `GET /id/:id` used to answer 200 with `data: null` for an id
|
|
29
|
+
matching nothing; it now refuses.
|
package/dist/index.d.ts
CHANGED
|
@@ -3190,13 +3190,35 @@ declare const CAMERA_SETUP_PERMISSIONS: string[];
|
|
|
3190
3190
|
* asks the same question the client asked before it drew the button.
|
|
3191
3191
|
*/
|
|
3192
3192
|
declare const CAMERA_ANPR_PERMISSIONS: string[];
|
|
3193
|
+
/**
|
|
3194
|
+
* A `type` we cannot place onto either panel.
|
|
3195
|
+
*
|
|
3196
|
+
* The two strings are two PANELS, not two privilege levels - neither is the
|
|
3197
|
+
* safer guess, and guessing one is exactly what locked the right operator out.
|
|
3198
|
+
* So an unplaceable row asks for either, and the gate keeps its substance: the
|
|
3199
|
+
* caller must still be entitled to the site AND hold a camera-management
|
|
3200
|
+
* permission on the membership that granted it. An unrelated tenant holds
|
|
3201
|
+
* neither string and is refused precisely as before.
|
|
3202
|
+
*/
|
|
3203
|
+
declare const CAMERA_MANAGE_ANY_PERMISSIONS: string[];
|
|
3193
3204
|
/**
|
|
3194
3205
|
* Which of the two a write needs, from the camera's own `type`.
|
|
3195
3206
|
*
|
|
3196
|
-
*
|
|
3197
|
-
*
|
|
3198
|
-
*
|
|
3199
|
-
*
|
|
3207
|
+
* The previous comment here claimed `type` was "validated to `ip | anpr` by the
|
|
3208
|
+
* model", and compared with `String(type) === "anpr"` on the strength of it.
|
|
3209
|
+
* The claim was false. `site-camera.model.ts` used `Joi.string().allow("ip",
|
|
3210
|
+
* "anpr")`, and `.allow()` WHITELISTS additional values rather than restricting
|
|
3211
|
+
* to them - run against joi 17.13.3, that rule passes `"ANPR"`, `"Anpr"` and
|
|
3212
|
+
* `"totally-arbitrary-xyz"` as readily as `"anpr"`. So a stored row could carry
|
|
3213
|
+
* any spelling, an exact comparison classed a genuine ANPR unit as CCTV, and
|
|
3214
|
+
* the write then demanded the CCTV permission that an ANPR operator does not
|
|
3215
|
+
* hold. That is issue #35486: a faulty ANPR camera in production that the
|
|
3216
|
+
* person trying to switch it off was refused permission to touch.
|
|
3217
|
+
*
|
|
3218
|
+
* The schema is now `.valid()`, so nothing new can be stored outside
|
|
3219
|
+
* `ip | anpr`. This function still normalises rather than trusting it, because
|
|
3220
|
+
* the rows already in the collection were written under the old rule and are
|
|
3221
|
+
* read raw by `loadForWrite` - the model's mapper never runs on them.
|
|
3200
3222
|
*/
|
|
3201
3223
|
declare function cameraManagePermissions(type: unknown): Array<string>;
|
|
3202
3224
|
/**
|
|
@@ -5118,6 +5140,7 @@ declare function MPatrolLog(value: TPatrolLog): {
|
|
|
5118
5140
|
};
|
|
5119
5141
|
|
|
5120
5142
|
declare function usePatrolLogRepo(): {
|
|
5143
|
+
getRawPatrolLogById: (_id: string | ObjectId) => Promise<mongodb.WithId<bson.Document> | null>;
|
|
5121
5144
|
createIndexes: () => Promise<string>;
|
|
5122
5145
|
createTextIndex: () => Promise<string>;
|
|
5123
5146
|
add: (value: TPatrolLog, session?: ClientSession) => Promise<ObjectId>;
|
|
@@ -5139,6 +5162,52 @@ declare function usePatrolLogService(): {
|
|
|
5139
5162
|
add: (value: TPatrolLog) => Promise<bson.ObjectId>;
|
|
5140
5163
|
};
|
|
5141
5164
|
|
|
5165
|
+
/**
|
|
5166
|
+
* Who may see, or change, an estate's virtual patrol logs.
|
|
5167
|
+
*
|
|
5168
|
+
* A patrol log is the PROOF a round was walked: the route, when it started and
|
|
5169
|
+
* ended, who was assigned, every camera visited with the questions answered and
|
|
5170
|
+
* the photos and videos attached, and whether it came back complete, late or
|
|
5171
|
+
* incomplete. It is the document a client is shown when they ask whether their
|
|
5172
|
+
* estate was patrolled, and it is what an incident report is attached to.
|
|
5173
|
+
*
|
|
5174
|
+
* All five routes on `/api/patrol-logs` carried `requireAuth` and nothing more,
|
|
5175
|
+
* and this controller held no authorization identifier of any kind, so being
|
|
5176
|
+
* signed in ANYWHERE on the platform was enough to read another client's patrol
|
|
5177
|
+
* history, rewrite a round's outcome, detach its incident report, or delete the
|
|
5178
|
+
* proof outright.
|
|
5179
|
+
*
|
|
5180
|
+
* Two of those are sharp. `PUT /id/:id` can rewrite `status`, so a round that
|
|
5181
|
+
* came back "incomplete" can be made to read "complete" and the console shows
|
|
5182
|
+
* a clean patrol. `DELETE /id/:id` is a HARD delete - `collection.deleteOne`,
|
|
5183
|
+
* not a status flag - so the proof is gone with no tombstone to notice.
|
|
5184
|
+
*
|
|
5185
|
+
* The estate is the scope. `requireSiteReach` is the rule `/api/patrol-routes`,
|
|
5186
|
+
* `/api/patrol-questions`, `/api/feedbacks`, `/api/work-orders`,
|
|
5187
|
+
* `/api/occurrence-books` and `/api/nfc-patrol-log` already use, so the
|
|
5188
|
+
* contracted security agency whose guards walk these rounds reaches the estate
|
|
5189
|
+
* through `customer.sites` and needs no membership in its organisation.
|
|
5190
|
+
*
|
|
5191
|
+
* - `POST /` already REQUIRES a site in the body, so the guard checks the site
|
|
5192
|
+
* the request already names.
|
|
5193
|
+
* - `GET /` took `site` as an OPTIONAL query parameter, and the repository
|
|
5194
|
+
* only applies it when it is a valid id (`ObjectId.isValid(site)`).
|
|
5195
|
+
* Omitting it therefore returned EVERY estate's patrol history in one page.
|
|
5196
|
+
* `site` is now required, which is what both live callers already send.
|
|
5197
|
+
* - The three record routes name only a record, so the site is read off the
|
|
5198
|
+
* STORED row via `requirePatrolLogReach`, and a `site` in the caller's own
|
|
5199
|
+
* body cannot stand in for it.
|
|
5200
|
+
*
|
|
5201
|
+
* `PUT /id/:id` CAN move a log: `schemaUpdatePatrolLog` accepts `site` and
|
|
5202
|
+
* `updateById` writes it, so a caller who reaches site A could otherwise file
|
|
5203
|
+
* one of A's rounds under site B - or pull one of B's rounds into A. Both ends
|
|
5204
|
+
* are checked.
|
|
5205
|
+
*
|
|
5206
|
+
* `createdBy` was also accepted from the request BODY and never compared to the
|
|
5207
|
+
* session, so a caller could file a patrol under another guard's name. It now
|
|
5208
|
+
* comes from `callerId(req)`. The field stays optional in the schema because
|
|
5209
|
+
* existing clients do not send it.
|
|
5210
|
+
*/
|
|
5142
5211
|
declare function usePatrolLogController(): {
|
|
5143
5212
|
add: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
5144
5213
|
getAll: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
@@ -11921,4 +11990,4 @@ declare function useNotificationPreferenceController(): {
|
|
|
11921
11990
|
update: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
11922
11991
|
};
|
|
11923
11992
|
|
|
11924
|
-
export { ANPRMode, AUDIT_VALUE_MAX_LENGTH, AccessTypeProps, AppServiceType, AssignCardConfig, BidStatus, BidType, BuildingLevelStatus, BuildingStatus, BulkCardUpdate, BulletinOrder, BulletinRecipient, BulletinSort, BulletinStatus, BulletinVideoOrder, BulletinVideoSort, CAMERA_ANPR_PERMISSIONS, CAMERA_CAPABILITIES, CAMERA_CAPABILITY_REASONS, CAMERA_NOT_PATROL_OR_CCTV, CAMERA_NO_SUB_STREAM_TTL_SECONDS, CAMERA_PTZ_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, CURRENT_TIME_ENDPOINT, Camera, CameraAddressInput, CameraCapability, CameraCapabilityContext, CameraCapabilityDescriptor, CameraCapabilityEntry, CameraCapabilityReason, CameraCapabilityState, CameraCapabilityTrace, CameraDevice, CameraFrame, CameraMembership, CameraStream, CameraTestStatus, CameraTransport, CameraType, ConsoleAuditAction, ConsoleAuditTarget, DEVICE_STATUS, DOBStatus, DUPLICATE_TERMS_VERSION_MESSAGE, DayOfWeek, DeviceHttpTarget, DeviceProbeResult, DynamicFormFields, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GuestSort, GuestStatus, HID_CARD_VALUE_FACTOR, HID_PERMISSION_CATEGORIES, HID_UINT32_MAX, HID_UINT64_MAX, HidRawUint64, IAccessCard, IAccessCardTransaction, InviteActor, MAX_CAMERA_CHANNEL, 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, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MNotificationPreference, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, 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, NotificationAppSlug, NotificationCategory, NotificationChannel, NotificationModule, NotificationPreferenceView, NotificationService, ORG_MARKETPLACE_VENDOR_FIELD, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PATROL_CCTV_CAMERA_FILTER, PERSON_TYPES, PLATFORM_STAFF_MEMBER_TYPE, PLATFORM_STAFF_ROLE_TYPE, PROPERTY_MANAGEMENT_MEMBER_TYPES, PStatus, PTZ_ALLOWED_ACTIONS, PTZ_ALLOWED_CODES, Period, PersonStatus, PersonType, PersonTypes, PlatformTermsStatus, PostOrder, PostSort, PostStatus, QrTagProps, REALTIME_MAX_FANOUT, ResidentAppModuleKey, 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, THidPhysicalCardInput, THidPhysicalCardType$1 as THidPhysicalCardType, THidSipAccount, 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, TNotificationPreference, TNotificationPreferenceOff, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPlaceOfIncident, TPlates, TPlatformTerms, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoCurrencyInput, TPromoTier, TRANSPORT_DEVICE_HTTP, TRANSPORT_RELAY_PLAYER, TRANSPORT_RTSP_FRAME, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, TSubscriptionPlan, TSubscriptionPlanApplication, TUnitBilling, TUnits, TUpdateFormEntry, TUpdateName, TUser, TUserCreate, TVehicle, TVehicleTransaction, TVehicleUpdate, TVerification, TVerificationEvent, TVerificationMetadata, TVerificationMetadataV2, TVerificationV2, TVisitorTransaction, TWorkOrder, TWorkOrderMetadata, TWorkOrderUpdate, TWorkOrderUpdateStatus, TWorkOrderUpdateToCompleted, TanyoneDamageToProperty, UseAccessManagementRepo, UserStatus, VERIFICATION_OPEN_STATUSES, VehicleCategory, VehicleOrder, VehicleSort, VehicleStatus, VehicleType, VerificationLinkType, VerificationStatus, VerificationSubjectType, VerificationType, VisitorSort, VisitorStatus, addressSchema, allowedFieldsSite, allowedNatures, allowedPlanApplications, attendanceSchema, attendanceSettingsSchema, building_level_namespace_collection, building_units_namespace_collection, buildings_namespace_collection, bulletin_boards_namespace_collection, cameraBaseUrl, cameraCapabilitiesFor, cameraDevices, cameraGrant, cameraHealthClaim, cameraHealthSummary, cameraManagePermissions, cameraProbeCacheKey, cameraTransports, canRevokeRefreshTokenFamily, categoriesForPermissions, categorySupportsChannel, chatPrelovedEvents, chatSchema, clampPtzSpeed, clockDriftSeconds, console_audit_namespace_collection, createManpowerRemarksDaily, customerSchema, customerSitePropertyFields, decideServiceProviderInvite, decodeHidPacsCard, deriveCameraHost, describeCameraCapabilities, designationsSchema, deviceControlEnabled, deviceHttpEnabled, deviceHttpTargets, deviceHttpTimeoutMs, deviceProbeTtlSeconds, emitNotificationCreated, encodeHidPacsCard, events_namespace_collection, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, formatCapabilityTrace, formatDahuaDate, getIO, getSessionIdFromRequest, grabWithSubStreamFallback, guests_namespace_collection, hasAnyCapability, hasAnyPermission, hidRawUint64, incidentReport, incidentReportLog, incidents_namespace_collection, isCameraEntitled, isDuplicateVersionError, isPatrolCctvCamera, isPlatformOwner, isPromoCodeExpired, isRelayPlayerUrl, isSuperAdmin, isTermsCurrent, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, normalizeAcceptedTerms, normalizeHidCardValue, notificationCategory, notificationCategoryLabel, notificationEvents, notificationRoom, occurrence_book_namespace_collection, online_forms_namespace_collection, orgSchema, overnight_parking_requests_namespace_collection, parseCameraChannel, parseCameraHost, parseDahuaFind, parseDeviceTime, parseHidJsonLossless, parsePromoExpiry, parseSoftwareVersion, pickAuditFields, pickCustomerSiteProperties, platform_terms_namespace_collection, promoCodeRefusal, promoCodeSchema, promoCodeStatusSchema, promoCodeUpdate, promoCodeUpdateSchema, ptzEndpoint, publicCameraFields, recordConsoleAction, refuseServiceProviderInviteAction, registerCameraTransport, relayForRecorder, remarksSchema, resetCameraTransports, residentAppModuleKeys, residentFormEntry, resolutionRefusalReason, resolveCamera, resolveDeviceHttp, resolveHidPhysicalCardValue, resolveInviteActor, 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, schemaPatrolLog, schemaPatrolQuestion, schemaPatrolRoute, schemaPerson, schemaPlate, schemaPlatformTerms, 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, schemaUpdateNotificationPreference, 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, serviceProviderInviteLabel, sessionSchema, setIO, shiftSchema, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, stringifyHidJson, subscriptionPlanSchema, 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, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolLogController, usePatrolLogRepo, usePatrolLogService, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, 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, vehicleSchema, vehicles_namespace_collection, visitorPersonRepo, visitorPersonService, visitorType, visitors_namespace_collection, wallConfig, workOrderSchema, work_orders2_namespace_collection, work_orders_namespace_collection };
|
|
11993
|
+
export { ANPRMode, AUDIT_VALUE_MAX_LENGTH, AccessTypeProps, AppServiceType, AssignCardConfig, BidStatus, BidType, BuildingLevelStatus, BuildingStatus, 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_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, CURRENT_TIME_ENDPOINT, Camera, CameraAddressInput, CameraCapability, CameraCapabilityContext, CameraCapabilityDescriptor, CameraCapabilityEntry, CameraCapabilityReason, CameraCapabilityState, CameraCapabilityTrace, CameraDevice, CameraFrame, CameraMembership, CameraStream, CameraTestStatus, CameraTransport, CameraType, ConsoleAuditAction, ConsoleAuditTarget, DEVICE_STATUS, DOBStatus, DUPLICATE_TERMS_VERSION_MESSAGE, DayOfWeek, DeviceHttpTarget, DeviceProbeResult, DynamicFormFields, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GuestSort, GuestStatus, HID_CARD_VALUE_FACTOR, HID_PERMISSION_CATEGORIES, HID_UINT32_MAX, HID_UINT64_MAX, HidRawUint64, IAccessCard, IAccessCardTransaction, InviteActor, MAX_CAMERA_CHANNEL, 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, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MNotificationPreference, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, 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, NotificationAppSlug, NotificationCategory, NotificationChannel, NotificationModule, NotificationPreferenceView, NotificationService, ORG_MARKETPLACE_VENDOR_FIELD, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PATROL_CCTV_CAMERA_FILTER, PERSON_TYPES, PLATFORM_STAFF_MEMBER_TYPE, PLATFORM_STAFF_ROLE_TYPE, PROPERTY_MANAGEMENT_MEMBER_TYPES, PStatus, PTZ_ALLOWED_ACTIONS, PTZ_ALLOWED_CODES, Period, PersonStatus, PersonType, PersonTypes, PlatformTermsStatus, PostOrder, PostSort, PostStatus, QrTagProps, REALTIME_MAX_FANOUT, ResidentAppModuleKey, 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, THidPhysicalCardInput, THidPhysicalCardType$1 as THidPhysicalCardType, THidSipAccount, 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, TNotificationPreference, TNotificationPreferenceOff, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPlaceOfIncident, TPlates, TPlatformTerms, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoCurrencyInput, TPromoTier, TRANSPORT_DEVICE_HTTP, TRANSPORT_RELAY_PLAYER, TRANSPORT_RTSP_FRAME, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, TSubscriptionPlan, TSubscriptionPlanApplication, TUnitBilling, TUnits, TUpdateFormEntry, TUpdateName, TUser, TUserCreate, TVehicle, TVehicleTransaction, TVehicleUpdate, TVerification, TVerificationEvent, TVerificationMetadata, TVerificationMetadataV2, TVerificationV2, TVisitorTransaction, TWorkOrder, TWorkOrderMetadata, TWorkOrderUpdate, TWorkOrderUpdateStatus, TWorkOrderUpdateToCompleted, TanyoneDamageToProperty, UseAccessManagementRepo, UserStatus, VERIFICATION_OPEN_STATUSES, VehicleCategory, VehicleOrder, VehicleSort, VehicleStatus, VehicleType, VerificationLinkType, VerificationStatus, VerificationSubjectType, VerificationType, VisitorSort, VisitorStatus, addressSchema, allowedFieldsSite, allowedNatures, allowedPlanApplications, attendanceSchema, attendanceSettingsSchema, building_level_namespace_collection, building_units_namespace_collection, buildings_namespace_collection, bulletin_boards_namespace_collection, cameraBaseUrl, cameraCapabilitiesFor, cameraDevices, cameraGrant, cameraHealthClaim, cameraHealthSummary, cameraManagePermissions, cameraProbeCacheKey, cameraTransports, canRevokeRefreshTokenFamily, categoriesForPermissions, categorySupportsChannel, chatPrelovedEvents, chatSchema, clampPtzSpeed, clockDriftSeconds, console_audit_namespace_collection, createManpowerRemarksDaily, customerSchema, customerSitePropertyFields, decideServiceProviderInvite, decodeHidPacsCard, deriveCameraHost, describeCameraCapabilities, designationsSchema, deviceControlEnabled, deviceHttpEnabled, deviceHttpTargets, deviceHttpTimeoutMs, deviceProbeTtlSeconds, emitNotificationCreated, encodeHidPacsCard, events_namespace_collection, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, formatCapabilityTrace, formatDahuaDate, getIO, getSessionIdFromRequest, grabWithSubStreamFallback, guests_namespace_collection, hasAnyCapability, hasAnyPermission, hidRawUint64, incidentReport, incidentReportLog, incidents_namespace_collection, isCameraEntitled, isDuplicateVersionError, isPatrolCctvCamera, isPlatformOwner, isPromoCodeExpired, isRelayPlayerUrl, isSuperAdmin, isTermsCurrent, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, normalizeAcceptedTerms, normalizeHidCardValue, notificationCategory, notificationCategoryLabel, notificationEvents, notificationRoom, occurrence_book_namespace_collection, online_forms_namespace_collection, orgSchema, overnight_parking_requests_namespace_collection, parseCameraChannel, parseCameraHost, parseDahuaFind, parseDeviceTime, parseHidJsonLossless, parsePromoExpiry, parseSoftwareVersion, pickAuditFields, pickCustomerSiteProperties, platform_terms_namespace_collection, promoCodeRefusal, promoCodeSchema, promoCodeStatusSchema, promoCodeUpdate, promoCodeUpdateSchema, ptzEndpoint, publicCameraFields, recordConsoleAction, refuseServiceProviderInviteAction, registerCameraTransport, relayForRecorder, remarksSchema, resetCameraTransports, residentAppModuleKeys, residentFormEntry, resolutionRefusalReason, resolveCamera, resolveDeviceHttp, resolveHidPhysicalCardValue, resolveInviteActor, 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, schemaPatrolLog, schemaPatrolQuestion, schemaPatrolRoute, schemaPerson, schemaPlate, schemaPlatformTerms, 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, schemaUpdateNotificationPreference, 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, serviceProviderInviteLabel, sessionSchema, setIO, shiftSchema, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, stringifyHidJson, subscriptionPlanSchema, 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, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolLogController, usePatrolLogRepo, usePatrolLogService, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, 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, vehicleSchema, vehicles_namespace_collection, visitorPersonRepo, visitorPersonService, visitorType, visitors_namespace_collection, wallConfig, workOrderSchema, work_orders2_namespace_collection, work_orders_namespace_collection };
|
package/dist/index.js
CHANGED
|
@@ -5906,6 +5906,7 @@ __export(src_exports, {
|
|
|
5906
5906
|
CAMERA_ANPR_PERMISSIONS: () => CAMERA_ANPR_PERMISSIONS,
|
|
5907
5907
|
CAMERA_CAPABILITIES: () => CAMERA_CAPABILITIES,
|
|
5908
5908
|
CAMERA_CAPABILITY_REASONS: () => CAMERA_CAPABILITY_REASONS,
|
|
5909
|
+
CAMERA_MANAGE_ANY_PERMISSIONS: () => CAMERA_MANAGE_ANY_PERMISSIONS,
|
|
5909
5910
|
CAMERA_NOT_PATROL_OR_CCTV: () => CAMERA_NOT_PATROL_OR_CCTV,
|
|
5910
5911
|
CAMERA_NO_SUB_STREAM_TTL_SECONDS: () => CAMERA_NO_SUB_STREAM_TTL_SECONDS,
|
|
5911
5912
|
CAMERA_PTZ_PERMISSIONS: () => CAMERA_PTZ_PERMISSIONS,
|
|
@@ -19157,7 +19158,22 @@ var schemaSiteCamera = import_joi20.default.object({
|
|
|
19157
19158
|
then: import_joi20.default.required(),
|
|
19158
19159
|
otherwise: import_joi20.default.optional().allow(null, "")
|
|
19159
19160
|
}),
|
|
19160
|
-
|
|
19161
|
+
/**
|
|
19162
|
+
* `.valid()`, NOT `.allow()`.
|
|
19163
|
+
*
|
|
19164
|
+
* `.allow()` whitelists ADDITIONAL values, it does not restrict to them - run
|
|
19165
|
+
* against joi 17.13.3, `Joi.string().allow("ip","anpr").required()` accepts
|
|
19166
|
+
* `"ANPR"`, `"Anpr"` and any other non-empty string. That let rows reach the
|
|
19167
|
+
* collection with a spelling the permission gate could not place, which is
|
|
19168
|
+
* how a faulty ANPR camera in production became impossible to switch off
|
|
19169
|
+
* (issue #35486).
|
|
19170
|
+
*
|
|
19171
|
+
* `.trim().lowercase()` runs BEFORE the check (joi converts by default), so a
|
|
19172
|
+
* caller sending `"ANPR"` is normalised rather than newly refused - the point
|
|
19173
|
+
* is to stop unplaceable values being stored, not to reject callers that work
|
|
19174
|
+
* today. Every client in the estate already sends the lower-case pair.
|
|
19175
|
+
*/
|
|
19176
|
+
type: import_joi20.default.string().trim().lowercase().valid("ip", "anpr").required(),
|
|
19161
19177
|
category: import_joi20.default.string().allow("standard", "resident", "visitor").required(),
|
|
19162
19178
|
direction: import_joi20.default.string().required().allow("entry", "exit", "both", "none"),
|
|
19163
19179
|
guardPost: import_joi20.default.number().integer().optional(),
|
|
@@ -19186,7 +19202,10 @@ function MSiteCamera(value) {
|
|
|
19186
19202
|
host: value.host ?? "",
|
|
19187
19203
|
username: value.username ?? "",
|
|
19188
19204
|
password: value.password ?? "",
|
|
19189
|
-
|
|
19205
|
+
// Normalised the same way the schema does, so the value STORED is one the
|
|
19206
|
+
// permission gate can place - a mapper that wrote back the raw spelling
|
|
19207
|
+
// would re-create the rows this fix exists for.
|
|
19208
|
+
type: String(value.type ?? "ip" /* IP */).trim().toLowerCase(),
|
|
19190
19209
|
category: value.category ?? "standard",
|
|
19191
19210
|
guardPost: value.guardPost ?? 0,
|
|
19192
19211
|
status: value.status ?? "active",
|
|
@@ -23555,8 +23574,17 @@ function relayForRecorder(recorderHost, recorderPort, devices = cameraDevices())
|
|
|
23555
23574
|
}
|
|
23556
23575
|
var CAMERA_SETUP_PERMISSIONS = ["site-settings:manage-cctv-camera"];
|
|
23557
23576
|
var CAMERA_ANPR_PERMISSIONS = ["site-settings:manage-anpr-camera"];
|
|
23577
|
+
var CAMERA_MANAGE_ANY_PERMISSIONS = [
|
|
23578
|
+
...CAMERA_SETUP_PERMISSIONS,
|
|
23579
|
+
...CAMERA_ANPR_PERMISSIONS
|
|
23580
|
+
];
|
|
23558
23581
|
function cameraManagePermissions(type) {
|
|
23559
|
-
|
|
23582
|
+
const spelling = typeof type === "string" ? type.trim().toLowerCase() : "";
|
|
23583
|
+
if (spelling === CAMERA_TYPE_ANPR)
|
|
23584
|
+
return CAMERA_ANPR_PERMISSIONS;
|
|
23585
|
+
if (spelling === CAMERA_TYPE_IP)
|
|
23586
|
+
return CAMERA_SETUP_PERMISSIONS;
|
|
23587
|
+
return CAMERA_MANAGE_ANY_PERMISSIONS;
|
|
23560
23588
|
}
|
|
23561
23589
|
var CAMERA_TEST_MIN_INTERVAL_SECONDS = 15;
|
|
23562
23590
|
var CAMERA_TEST_ROUND_LIMIT = 4;
|
|
@@ -52940,7 +52968,16 @@ function usePatrolLogRepo() {
|
|
|
52940
52968
|
});
|
|
52941
52969
|
});
|
|
52942
52970
|
}
|
|
52971
|
+
async function getRawPatrolLogById(_id) {
|
|
52972
|
+
try {
|
|
52973
|
+
_id = new import_mongodb94.ObjectId(_id);
|
|
52974
|
+
} catch (error) {
|
|
52975
|
+
throw new import_node_server_utils152.BadRequestError("Invalid patrol log ID format.");
|
|
52976
|
+
}
|
|
52977
|
+
return await collection.findOne({ _id });
|
|
52978
|
+
}
|
|
52943
52979
|
return {
|
|
52980
|
+
getRawPatrolLogById,
|
|
52944
52981
|
createIndexes,
|
|
52945
52982
|
createTextIndex,
|
|
52946
52983
|
add,
|
|
@@ -53031,9 +53068,14 @@ function usePatrolLogController() {
|
|
|
53031
53068
|
getAll: _getAll,
|
|
53032
53069
|
updateById: _updateById,
|
|
53033
53070
|
deleteById: _deleteById,
|
|
53034
|
-
getById: _getById
|
|
53071
|
+
getById: _getById,
|
|
53072
|
+
getRawPatrolLogById: _getRawPatrolLogById
|
|
53035
53073
|
} = usePatrolLogRepo();
|
|
53036
53074
|
const { add: _add } = usePatrolLogService();
|
|
53075
|
+
async function requirePatrolLogReach(req, _id) {
|
|
53076
|
+
const row = await _getRawPatrolLogById(_id);
|
|
53077
|
+
await requireSiteReach(req, row?.site);
|
|
53078
|
+
}
|
|
53037
53079
|
async function add(req, res, next) {
|
|
53038
53080
|
const data = req.body;
|
|
53039
53081
|
const { error, value } = schemaPatrolLog.validate(data);
|
|
@@ -53042,7 +53084,8 @@ function usePatrolLogController() {
|
|
|
53042
53084
|
return;
|
|
53043
53085
|
}
|
|
53044
53086
|
try {
|
|
53045
|
-
|
|
53087
|
+
await requireSiteReach(req, value.site);
|
|
53088
|
+
const question = await _add({ ...value, createdBy: callerId(req) });
|
|
53046
53089
|
res.status(201).json({
|
|
53047
53090
|
message: "Patrol Log added successfully.",
|
|
53048
53091
|
data: question
|
|
@@ -53059,7 +53102,7 @@ function usePatrolLogController() {
|
|
|
53059
53102
|
sort: import_joi76.default.string().pattern(/^([a-zA-Z0-9_]+)(,[a-zA-Z0-9_]+)*$/).optional().allow("", ...allowedFields),
|
|
53060
53103
|
status: import_joi76.default.string().optional().allow(null, ""),
|
|
53061
53104
|
search: import_joi76.default.string().optional().allow(null, ""),
|
|
53062
|
-
site: import_joi76.default.string().
|
|
53105
|
+
site: import_joi76.default.string().hex().required(),
|
|
53063
53106
|
dateFrom: import_joi76.default.string().optional().allow(null, "")
|
|
53064
53107
|
});
|
|
53065
53108
|
const query2 = { ...req.query };
|
|
@@ -53088,6 +53131,7 @@ function usePatrolLogController() {
|
|
|
53088
53131
|
}
|
|
53089
53132
|
});
|
|
53090
53133
|
try {
|
|
53134
|
+
await requireSiteReach(req, site);
|
|
53091
53135
|
const data = await _getAll({
|
|
53092
53136
|
search,
|
|
53093
53137
|
page,
|
|
@@ -53118,6 +53162,9 @@ function usePatrolLogController() {
|
|
|
53118
53162
|
return;
|
|
53119
53163
|
}
|
|
53120
53164
|
try {
|
|
53165
|
+
await requirePatrolLogReach(req, _id);
|
|
53166
|
+
if (req.body?.site)
|
|
53167
|
+
await requireSiteReach(req, req.body.site);
|
|
53121
53168
|
const result = await _updateById(_id, req.body);
|
|
53122
53169
|
res.status(200).json({ message: result });
|
|
53123
53170
|
return;
|
|
@@ -53137,6 +53184,7 @@ function usePatrolLogController() {
|
|
|
53137
53184
|
return;
|
|
53138
53185
|
}
|
|
53139
53186
|
try {
|
|
53187
|
+
await requirePatrolLogReach(req, _id);
|
|
53140
53188
|
await _deleteById(_id);
|
|
53141
53189
|
res.status(200).json({ message: "Successfully deleted patrol log." });
|
|
53142
53190
|
return;
|
|
@@ -53157,6 +53205,7 @@ function usePatrolLogController() {
|
|
|
53157
53205
|
return;
|
|
53158
53206
|
}
|
|
53159
53207
|
try {
|
|
53208
|
+
await requirePatrolLogReach(req, id);
|
|
53160
53209
|
const logs = await _getById(id);
|
|
53161
53210
|
res.json({
|
|
53162
53211
|
message: "Successfully retrieved patrol log.",
|
|
@@ -86585,6 +86634,7 @@ function useNotificationPreferenceController() {
|
|
|
86585
86634
|
CAMERA_ANPR_PERMISSIONS,
|
|
86586
86635
|
CAMERA_CAPABILITIES,
|
|
86587
86636
|
CAMERA_CAPABILITY_REASONS,
|
|
86637
|
+
CAMERA_MANAGE_ANY_PERMISSIONS,
|
|
86588
86638
|
CAMERA_NOT_PATROL_OR_CCTV,
|
|
86589
86639
|
CAMERA_NO_SUB_STREAM_TTL_SECONDS,
|
|
86590
86640
|
CAMERA_PTZ_PERMISSIONS,
|