@7365admin1/core 3.32.2-staging.87 → 3.32.2-staging.89
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/notification-preferences.md +20 -0
- package/dist/index.d.ts +301 -1
- package/dist/index.js +9684 -9075
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9542 -8949
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/test/e2e/harness.mjs +31 -0
- package/test/e2e/notification-preference.e2e.test.mjs +642 -0
- package/test/notification-category.util.test.mjs +147 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
"@7365admin1/core": patch
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Let a person choose which notifications they get, and enforce it where they are
|
|
6
|
+
sent.
|
|
7
|
+
|
|
8
|
+
Adds a `notification-preferences` collection (one row per user, storing only what
|
|
9
|
+
they switched OFF), a catalogue of what the product can notify about and on which
|
|
10
|
+
routes, and an authenticated pair of endpoints for reading and changing your own
|
|
11
|
+
settings — the user comes from the session, never from the request.
|
|
12
|
+
|
|
13
|
+
The guard runs inside `NotificationService.send`, so a switch actually stops the
|
|
14
|
+
message: the in-app copy and the phone alert are filtered independently. Somebody
|
|
15
|
+
with no saved row is never filtered, so behaviour is unchanged until they choose
|
|
16
|
+
to change it.
|
|
17
|
+
|
|
18
|
+
Two notice-board senders tag their messages `module: "feedback"`; they now pass
|
|
19
|
+
the honest category to the guard while leaving the stored tag alone, so switching
|
|
20
|
+
Feedback off does not silence the notice board.
|
package/dist/index.d.ts
CHANGED
|
@@ -9894,6 +9894,49 @@ declare function useNotificationController(): {
|
|
|
9894
9894
|
getUnreadCount: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
9895
9895
|
};
|
|
9896
9896
|
|
|
9897
|
+
declare const NOTIFICATION_NAMESPACE = "/notifications";
|
|
9898
|
+
declare function notificationRoom(userId: string): string;
|
|
9899
|
+
/**
|
|
9900
|
+
* Above this many recipients we skip the per-user unread count on the realtime
|
|
9901
|
+
* payload — it would mean one countDocuments per recipient. Clients fall back
|
|
9902
|
+
* to GET /notifications/unread-count, which is served by inbox_unread_count.
|
|
9903
|
+
*/
|
|
9904
|
+
declare const REALTIME_MAX_FANOUT = 200;
|
|
9905
|
+
/**
|
|
9906
|
+
* Pushes freshly created inbox rows to their recipients.
|
|
9907
|
+
*
|
|
9908
|
+
* Callers supply the documents and a way to resolve an unread count; this
|
|
9909
|
+
* module owns every socket concern (namespace, room, event name, fan-out cap).
|
|
9910
|
+
* Taking the resolver as a parameter keeps the dependency pointing one way —
|
|
9911
|
+
* the repository imports this, never the reverse.
|
|
9912
|
+
*
|
|
9913
|
+
* Best-effort by design: realtime delivery must never fail the write it
|
|
9914
|
+
* accompanies, so all failures are logged and swallowed.
|
|
9915
|
+
*/
|
|
9916
|
+
declare function emitNotificationCreated(docs: TNotification[], resolveUnread?: (userId: string) => Promise<number>): Promise<void>;
|
|
9917
|
+
/**
|
|
9918
|
+
* Realtime delivery for the in-app notification inbox.
|
|
9919
|
+
*
|
|
9920
|
+
* Scoped to its own namespace on purpose. Applying auth middleware to the
|
|
9921
|
+
* default namespace would reject every existing connection that has no session
|
|
9922
|
+
* (hygiene cleaning-schedule rooms, the ANPR /site-* namespaces).
|
|
9923
|
+
*/
|
|
9924
|
+
declare function notificationEvents(io: Server): void;
|
|
9925
|
+
|
|
9926
|
+
/**
|
|
9927
|
+
* Registers the Socket.IO server owned by the host application (API-core).
|
|
9928
|
+
* Core is a library and never creates the server itself.
|
|
9929
|
+
*/
|
|
9930
|
+
declare function setIO(io: Server): void;
|
|
9931
|
+
/**
|
|
9932
|
+
* Returns the registered Socket.IO server, or null when none has been set.
|
|
9933
|
+
*
|
|
9934
|
+
* Deliberately null-returning rather than throwing: repositories call this from
|
|
9935
|
+
* crons, tests and scripts where no HTTP server exists, and a missing socket
|
|
9936
|
+
* must never fail the database write it is attached to.
|
|
9937
|
+
*/
|
|
9938
|
+
declare function getIO(): Server | null;
|
|
9939
|
+
|
|
9897
9940
|
/**
|
|
9898
9941
|
* Is this person a Seven365 super admin?
|
|
9899
9942
|
*
|
|
@@ -9910,4 +9953,261 @@ declare function useNotificationController(): {
|
|
|
9910
9953
|
*/
|
|
9911
9954
|
declare function isSuperAdmin(userId?: string | ObjectId | null): Promise<boolean>;
|
|
9912
9955
|
|
|
9913
|
-
export { ANPRMode, 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_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, CLOCK_DRIFT_WARN_SECONDS, CURRENT_TIME_ENDPOINT, Camera, CameraAddressInput, CameraCapability, CameraCapabilityContext, CameraCapabilityDescriptor, CameraCapabilityEntry, CameraCapabilityReason, CameraCapabilityState, CameraCapabilityTrace, CameraDevice, CameraMembership, CameraTestStatus, CameraTransport, CameraType, DEVICE_STATUS, DOBStatus, DayOfWeek, DeviceHttpTarget, DeviceProbeResult, DynamicFormFields, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GuestSort, GuestStatus, HID_PERMISSION_CATEGORIES, IAccessCard, IAccessCardTransaction, InviteActor, MAX_CAMERA_CHANNEL, MAccessCard, MAccessCardTransaction, MAddress, MAttendance, MAttendanceSettings, MBidPreloved, MBillingConfiguration, MBillingItem, MBuilding, MBuildingLevel, MBuildingUnit, MBulletinBoard, MBulletinVideo, MCategoryPreloved, MChannelPreloved, MChat, MChatPreloved, MCustomer, MCustomerSite, MDocumentManagement, MEntryPassSettings, MEventManagement, MFeedback, MFile, MFormEntry, MGuestManagement, MHidAmicoEvent, MHidAmicoIdentity, MHidAmicoReader, MHidSipAccount, MHidSitePermissions, MIncidentReport, MManpowerDesignations, MManpowerMonitoring, MManpowerRemarks, MManpowerSites, MMember, MNfcPatrolLog, MNfcPatrolRoute, MNfcPatrolSettings, MNfcPatrolSettingsUpdate, MNfcPatrolTag, MNotification, MOccurrenceBook, MOccurrenceEntry, MOccurrenceSubject, MOnlineForm, MOrg, MOvernightParkingApprovalHours, MOvernightParkingRequest, MPatrolLog, MPatrolQuestion, MPatrolRoute, MPerson, MPost, MPostFavorite, MPromoCode, MRobot, MRole, MRoleV2, MServiceProvider, MServiceProviderBilling, MSession, MSite, MSiteCamera, MSiteFacility, MSiteFacilityBooking, MStatementOfAccount, MSubcategoryPreloved, MSubscription, MSubscriptionPlan, MUnitBilling, MUser, MVehicle, MVehicleTransaction, MVerification, MVerificationV2, MVisitorTransaction, MWorkOrder, NotificationAppSlug, NotificationModule, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PATROL_CCTV_CAMERA_FILTER, PERSON_TYPES, PROPERTY_MANAGEMENT_MEMBER_TYPES, PStatus, PTZ_ALLOWED_ACTIONS, PTZ_ALLOWED_CODES, Period, PersonStatus, PersonType, PersonTypes, PostOrder, PostSort, PostStatus, QrTagProps, 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, SubscriptionType, TAccessMngmntSettings, TActionStatus, TAddress, TAffectedEntities, TAffectedInjured, TAppServiceType, TApprovedBy, TApprover, TAttendance, TAttendanceCheckIn, TAttendanceCheckOut, TAttendanceCheckTime, TAttendanceLocation, TAttendanceSettings, TAttendanceSettingsGetBySite, TAuthorities, TAuthoritiesCalled, TBidPreloved, TBilling, TBillingConfiguration, TBillingItem, TBuilding, TBuildingLevel, TBuildingUnit, TBulletinBoard, TBulletinVideo, TCamera, TCategoryPreloved, TChannelPreloved, TChat, TChatPreloved, TCheckPoint$1 as TCheckPoint, TComplaintInfo, TComplaintReceivedTo, TCounter, TCreateNfcPatrolLog, TCustomer, TCustomerSite, TDayNumber, TDaySchedule, TDefaultAccessCard, TDesignations, TDocs, TDocumentCreate, TDocumentManagement, TEntryPassSettings, TEventManagement, TFeedback, TFeedbackMetadata, TFeedbackUpdate, TFeedbackUpdateCategory, TFeedbackUpdateServiceProvider, TFeedbackUpdateStatus, TFeedbackUpdateToCompleted, TFile, TFiles, TFolderUpdate, TFormEntry, TGetAttendancesByUserQuery, TGetAttendancesQuery, TGuestManagement, THidAmicoEvent, THidAmicoIdentity, THidAmicoReader, THidPermissionAssignment, THidPermissionCategory, 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, TOccurrenceBook, TOccurrenceEntry, TOccurrenceSubject, TOnlineForm, TOrg, TOvernightParkingApprovalHours, TOvernightParkingRequest, TPatrolLog, TPatrolQuestion, TPatrolRoute, TPerson, TPlaceOfIncident, TPlates, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoTier, TRANSPORT_DEVICE_HTTP, TRANSPORT_RELAY_PLAYER, TRANSPORT_RTSP_FRAME, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, 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, cameraHealthSummary, cameraManagePermissions, cameraTransports, chatPrelovedEvents, chatSchema, clampPtzSpeed, clockDriftSeconds, createManpowerRemarksDaily, customerSchema, decideServiceProviderInvite, deriveCameraHost, describeCameraCapabilities, designationsSchema, deviceControlEnabled, deviceHttpEnabled, deviceHttpTargets, deviceHttpTimeoutMs, deviceProbeTtlSeconds, events_namespace_collection, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, formatCapabilityTrace, formatDahuaDate, guests_namespace_collection, hasAnyCapability, hasAnyPermission, incidentReport, incidentReportLog, incidents_namespace_collection, isCameraEntitled, isPatrolCctvCamera, isRelayPlayerUrl, isSuperAdmin, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, occurrence_book_namespace_collection, online_forms_namespace_collection, orgSchema, overnight_parking_requests_namespace_collection, parseCameraChannel, parseCameraHost, parseDahuaFind, parseDeviceTime, parseSoftwareVersion, promoCodeSchema, ptzEndpoint, publicCameraFields, refuseServiceProviderInviteAction, registerCameraTransport, relayForRecorder, remarksSchema, resetCameraTransports, residentAppModuleKeys, residentFormEntry, resolutionRefusalReason, resolveCamera, resolveDeviceHttp, resolveInviteActor, robotSchema, rtspUrl, schema, schemaAppSlugNotification, schemaApprovedBy, schemaApprover, schemaBidPreloved, schemaBilling, schemaBillingConfiguration, schemaBillingItem, schemaBuilding, schemaBuildingLevel, schemaBuildingUnit, schemaBuildingUpdateOptions, schemaBulletinBoard, schemaBulletinVideo, schemaCategoryPreloved, schemaChannelPreloved, schemaChatPreloved, schemaCreateHidAmicoIdentity, schemaCreateNfcPatrolLog, schemaCreateNotification, schemaCustomerSite, schemaDocumentManagement, schemaEntryPassSettings, schemaEventManagement, schemaFiles, schemaFormEntry, schemaGuestManagement, schemaHidAmicoConfiguration, schemaHidAmicoEvent, schemaHidAmicoExecuteActions, schemaHidAmicoIdentity, schemaHidAmicoIdentityIdParams, schemaHidAmicoIdentityQuery, schemaHidAmicoIntercomCall, schemaHidAmicoLogQuery, schemaHidAmicoNotificationParams, schemaHidAmicoObjectOperation, schemaHidAmicoReader, schemaHidAmicoReaderIdParams, schemaHidAmicoReaderListQuery, schemaHidAmicoSetConfiguration, schemaHidAmicoSiteIdParams, schemaHidAmicoSync, schemaHidAmicoUserImageParams, schemaHidAmicoUserImageUploadQuery, schemaHidAmicoVisitorImageParams, schemaHidAmicoVisitorImageUploadQuery, schemaHidAmicoVisitorQr, schemaHidPermissionCandidateQuery, schemaHidPermissionScopeQuery, schemaHidSipAccountRequest, schemaIncidentReport, schemaListNotification, schemaMultipleDocumentManagement, schemaNfcPatrolLog, schemaNfcPatrolRoute, schemaNfcPatrolTag, schemaNfcPatrolTagUpdateData, schemaNotification, schemaOccurrenceBook, schemaOccurrenceEntry, schemaOccurrenceSubject, schemaOnlineForm, schemaOvernightParkingApprovalHours, schemaOvernightParkingRequest, schemaPatrolLog, schemaPatrolQuestion, schemaPatrolRoute, schemaPerson, schemaPlate, schemaPost, schemaPostFavorite, schemaServiceProvider, schemaServiceProviderBilling, schemaSignNfcPatrolLog, schemaSiteCamera, schemaSiteFacility, schemaSiteFacilityBooking, schemaStatementOfAccount, schemaSubcategoryPreloved, schemaUnitBilling, schemaUpdateBidPreloved, schemaUpdateBuildingLevel, schemaUpdateBulletinBoard, schemaUpdateBulletinVideo, schemaUpdateCategoryPreloved, schemaUpdateChatPreloved, schemaUpdateDocumentManagement, schemaUpdateEntryPassSettings, schemaUpdateEventManagement, schemaUpdateFolderManagement, schemaUpdateFormEntry, schemaUpdateGuestManagement, schemaUpdateHidAmicoIdentity, schemaUpdateHidAmicoReader, schemaUpdateHidSitePermissions, schemaUpdateIncidentReport, schemaUpdateNotification, schemaUpdateOccurrenceBook, schemaUpdateOccurrenceEntry, schemaUpdateOccurrenceSubject, schemaUpdateOnlineForm, schemaUpdateOptions, schemaUpdateOvernightParkingRequest, schemaUpdatePatrolLog, schemaUpdatePatrolQuestion, schemaUpdatePatrolRoute, schemaUpdatePerson, schemaUpdatePost, schemaUpdatePostFavorite, schemaUpdateServiceProviderBilling, schemaUpdateSiteBillingConfiguration, schemaUpdateSiteBillingItem, schemaUpdateSiteCamera, schemaUpdateSiteFacility, schemaUpdateSiteFacilityBooking, schemaUpdateSiteUnitBilling, schemaUpdateStatementOfAccount, schemaUpdateSubcategoryPreloved, schemaUpdateVisTrans, schemaVehicleTransaction, schemaVisitorTransaction, schemeCamera, schemeLogCamera, serviceProviderInviteLabel, sessionSchema, shiftSchema, siteSchema, site_people_namespace_collection, snapshotEndpoint, snapshotRefusalReason, 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, useCounterModel, useCounterRepo, useCustomerController, useCustomerRepo, useCustomerSiteController, useCustomerSiteRepo, useCustomerSiteService, useDahuaService, useDashboardController, useDashboardRepo, useDocumentManagementController, useDocumentManagementRepo, useDocumentManagementService, useEntryPassSettingsController, useEntryPassSettingsRepo, useEventManagementController, useEventManagementRepo, useEventManagementService, useFeedbackController, useFeedbackRepo, useFeedbackService, useFileController, useFileRepo, useFileService, useFormEntryController, useFormEntryRepo, useGuestManagementController, useGuestManagementRepo, useGuestManagementService, useHidAmicoController, useHidAmicoRepo, useHidAmicoService, useHrmLabsAttendanceCtrl, useHrmLabsAttendanceSrvc, useIncidentReportController, useIncidentReportRepo, useIncidentReportService, useInvoiceController, useInvoiceModel, useInvoiceRepo, useManpowerDesignationCtrl, useManpowerDesignationRepo, useManpowerMonitoringCtrl, useManpowerMonitoringRepo, useManpowerMonitoringSrvc, useManpowerRemarkCtrl, useManpowerRemarksRepo, useManpowerSitesCtrl, useManpowerSitesRepo, useManpowerSitesSrvc, useMemberController, useMemberRepo, useMemberService, useNewDashboardController, useNewDashboardRepo, useNfcPatrolLogController, useNfcPatrolLogRepo, useNfcPatrolLogService, useNfcPatrolRouteController, useNfcPatrolRouteRepo, useNfcPatrolRouteService, useNfcPatrolSettingsController, useNfcPatrolSettingsRepository, useNfcPatrolSettingsService, useNfcPatrolTagController, useNfcPatrolTagRepo, useNfcPatrolTagService, useNotificationController, useNotificationRepo, useOccurrenceBookController, useOccurrenceBookRepo, useOccurrenceBookService, useOccurrenceEntryController, useOccurrenceEntryRepo, useOccurrenceEntryService, useOccurrenceSubjectController, useOccurrenceSubjectRepo, useOccurrenceSubjectService, useOnlineFormController, useOnlineFormRepo, useOrgController, useOrgControllerV2, useOrgRepo, useOvernightParkingController, useOvernightParkingRepo, useOvernightParkingRequestController, useOvernightParkingRequestRepo, useOvernightParkingRequestService, usePatrolLogController, usePatrolLogRepo, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, usePostFavoriteController, usePostFavoriteRepo, usePostFavoriteService, usePostPrelovedController, usePostPrelovedRepo, usePriceController, usePriceModel, usePriceRepo, usePromoCodeController, usePromoCodeRepo, useRedDotPaymentController, useRedDotPaymentRepo, useRedDotPaymentSvc, useRobotController, useRobotRepo, useRobotService, useRoleController, useRoleControllerV2, useRoleRepo, useRoleRepoV2, useRoleServiceV2, useServiceProviderBillingController, useServiceProviderBillingRepo, useServiceProviderBillingService, useServiceProviderController, 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 };
|
|
9956
|
+
type Recipient = string | ObjectId | Array<string | ObjectId>;
|
|
9957
|
+
declare class NotificationService {
|
|
9958
|
+
static bulletinBoardCreated(payload: {
|
|
9959
|
+
to: Recipient;
|
|
9960
|
+
bulletinId: string | ObjectId;
|
|
9961
|
+
subject: string;
|
|
9962
|
+
status: string | undefined;
|
|
9963
|
+
siteId?: string | ObjectId;
|
|
9964
|
+
}): Promise<void>;
|
|
9965
|
+
static prelovedMarketplacePostCreation(payload: {
|
|
9966
|
+
to: Recipient;
|
|
9967
|
+
prelovedId: string | ObjectId;
|
|
9968
|
+
subject: string;
|
|
9969
|
+
status: string | undefined;
|
|
9970
|
+
siteId?: string | ObjectId;
|
|
9971
|
+
}): Promise<void>;
|
|
9972
|
+
static onlineFormRequestStatusUpdated(payload: {
|
|
9973
|
+
to: Recipient;
|
|
9974
|
+
onlineFormId: string | ObjectId;
|
|
9975
|
+
status: string | undefined;
|
|
9976
|
+
siteId?: string | ObjectId;
|
|
9977
|
+
}): Promise<void>;
|
|
9978
|
+
static bulletinBoardCreatedForMA(payload: {
|
|
9979
|
+
to: Recipient;
|
|
9980
|
+
bulletinId: string | ObjectId;
|
|
9981
|
+
subject: string;
|
|
9982
|
+
status: string | undefined;
|
|
9983
|
+
siteId?: string | ObjectId;
|
|
9984
|
+
}): Promise<void>;
|
|
9985
|
+
static eventCreatedForMA(payload: {
|
|
9986
|
+
to: Recipient;
|
|
9987
|
+
eventId: string | ObjectId;
|
|
9988
|
+
status: string | undefined;
|
|
9989
|
+
siteId?: string | ObjectId;
|
|
9990
|
+
}): Promise<void>;
|
|
9991
|
+
static invitedVisitorCheckOutForMa(payload: {
|
|
9992
|
+
to: Recipient;
|
|
9993
|
+
name: string;
|
|
9994
|
+
_id: any;
|
|
9995
|
+
siteId?: string | ObjectId;
|
|
9996
|
+
}): Promise<void>;
|
|
9997
|
+
static bulletinBoardCreatedForServiceApps(payload: {
|
|
9998
|
+
to: Recipient;
|
|
9999
|
+
bulletinId: string | ObjectId;
|
|
10000
|
+
subject: string;
|
|
10001
|
+
status: string | undefined;
|
|
10002
|
+
siteId?: string | ObjectId;
|
|
10003
|
+
}, appSlug?: string): Promise<void>;
|
|
10004
|
+
/**
|
|
10005
|
+
* A property management company has invited this service provider to a site,
|
|
10006
|
+
* and Seven365 has approved it.
|
|
10007
|
+
*
|
|
10008
|
+
* This is deliberately on the SAME feed as everything else here — the one
|
|
10009
|
+
* `notifications` collection this class writes, which API-core serves at
|
|
10010
|
+
* `/notifications` and the apps already read. There is no second inbox for
|
|
10011
|
+
* invitations.
|
|
10012
|
+
*
|
|
10013
|
+
* Sent ONLY from `notifyProvider` in `service-provider-invite.service.ts`,
|
|
10014
|
+
* which is only reached once the invitation has been approved.
|
|
10015
|
+
*/
|
|
10016
|
+
static serviceProviderInvited(payload: {
|
|
10017
|
+
to: Recipient;
|
|
10018
|
+
invitationId: string | ObjectId;
|
|
10019
|
+
title: string;
|
|
10020
|
+
orgName: string;
|
|
10021
|
+
siteName: string;
|
|
10022
|
+
siteId?: string | ObjectId;
|
|
10023
|
+
}): Promise<void>;
|
|
10024
|
+
}
|
|
10025
|
+
|
|
10026
|
+
/**
|
|
10027
|
+
* What the product can notify somebody about, and on which channels.
|
|
10028
|
+
*
|
|
10029
|
+
* This is the single list behind three things that must never drift apart:
|
|
10030
|
+
*
|
|
10031
|
+
* 1. the words on the Notification Settings screen (web and mobile),
|
|
10032
|
+
* 2. which categories a given person is offered, from the permissions their
|
|
10033
|
+
* role actually grants,
|
|
10034
|
+
* 3. the guard in `notification-preference.repo.ts` that decides, at the
|
|
10035
|
+
* moment of sending, whether this person still wants it.
|
|
10036
|
+
*
|
|
10037
|
+
* ## Only what really sends
|
|
10038
|
+
*
|
|
10039
|
+
* A switch that governs a notification nobody sends is a lie to the user, so a
|
|
10040
|
+
* category is only `rendered` once something in the estate actually sends it.
|
|
10041
|
+
* The four `safety: true` entries below are deliberately NOT rendered yet:
|
|
10042
|
+
* incident reports, emergency contacts, virtual patrol and camera/ANPR faults
|
|
10043
|
+
* send **nothing** today — no feed row, no push, no email. (Camera faults reach
|
|
10044
|
+
* an operator as a live socket toast to whoever is on screen, which is not a
|
|
10045
|
+
* notification anyone can be said to have subscribed to.) They are written down
|
|
10046
|
+
* here so that the day a sender exists the switch appears on its own, on by
|
|
10047
|
+
* default, with no schema change and no migration.
|
|
10048
|
+
*
|
|
10049
|
+
* ## Channels are declared per category, not assumed
|
|
10050
|
+
*
|
|
10051
|
+
* `channels` says what this category can *physically* deliver on today. The
|
|
10052
|
+
* screen draws every channel for every category and dims the ones that cannot
|
|
10053
|
+
* deliver, with the reason in `channelNote` — the house pattern is to show a
|
|
10054
|
+
* control and explain why it is unavailable, never to hide it.
|
|
10055
|
+
*
|
|
10056
|
+
* Email is `false` almost everywhere for a real reason: the module emails this
|
|
10057
|
+
* system sends are addressed to an email string stored on a record (a booking's
|
|
10058
|
+
* contact, a visitor, a site's configured alert list), not to a user account, so
|
|
10059
|
+
* there is no user whose preference could be consulted. Account and sign-in mail
|
|
10060
|
+
* — one-time codes, address verification, password resets — is deliberately
|
|
10061
|
+
* absent from this list entirely and can never be switched off by anything here.
|
|
10062
|
+
*/
|
|
10063
|
+
/** The delivery routes a person can switch independently. */
|
|
10064
|
+
declare const NOTIFICATION_CHANNELS: readonly ["inApp", "push", "email"];
|
|
10065
|
+
type NotificationChannel = (typeof NOTIFICATION_CHANNELS)[number];
|
|
10066
|
+
declare const NOTIFICATION_CHANNEL_LABELS: Record<NotificationChannel, string>;
|
|
10067
|
+
type NotificationCategory = {
|
|
10068
|
+
/** stored value — never shown to a user */
|
|
10069
|
+
key: string;
|
|
10070
|
+
/** the words on screen */
|
|
10071
|
+
label: string;
|
|
10072
|
+
/** one plain sentence: what arrives if this is on */
|
|
10073
|
+
description: string;
|
|
10074
|
+
/** which channels this category can actually deliver on today */
|
|
10075
|
+
channels: Record<NotificationChannel, boolean>;
|
|
10076
|
+
/** why a channel is unavailable, in plain words, shown beside the dimmed switch */
|
|
10077
|
+
channelNote?: Partial<Record<NotificationChannel, string>>;
|
|
10078
|
+
/**
|
|
10079
|
+
* Role permission resources (the part before the ":") that make this category
|
|
10080
|
+
* relevant to somebody. Several spellings of the same module exist in the
|
|
10081
|
+
* live data and all of them are listed.
|
|
10082
|
+
*/
|
|
10083
|
+
permissionResources: string[];
|
|
10084
|
+
/** true when every resident sees it regardless of any role permission */
|
|
10085
|
+
residentDefault?: boolean;
|
|
10086
|
+
/** a safety or security alert: on by default, and still switchable */
|
|
10087
|
+
safety?: boolean;
|
|
10088
|
+
/** false while nothing in the estate sends it — kept out of the screen */
|
|
10089
|
+
rendered: boolean;
|
|
10090
|
+
};
|
|
10091
|
+
declare const NOTIFICATION_CATEGORIES: NotificationCategory[];
|
|
10092
|
+
declare function notificationCategory(key?: string | null): NotificationCategory | undefined;
|
|
10093
|
+
/** The words for a category key. Never renders the stored key itself. */
|
|
10094
|
+
declare function notificationCategoryLabel(key?: string | null): string;
|
|
10095
|
+
/** Can this category reach somebody on this channel at all? */
|
|
10096
|
+
declare function categorySupportsChannel(key: string | null | undefined, channel: NotificationChannel): boolean;
|
|
10097
|
+
/**
|
|
10098
|
+
* The categories to offer this person.
|
|
10099
|
+
*
|
|
10100
|
+
* `permissions` is the flat `roles.permissions` array — `"resource:action"`
|
|
10101
|
+
* strings, with `"*"` meaning everything. Where somebody holds more than one
|
|
10102
|
+
* membership the caller passes the union of their roles' permissions: this
|
|
10103
|
+
* decides which SWITCHES a person is shown, not what they may do, so unioning
|
|
10104
|
+
* here grants nothing. Access control stays one-membership-one-role in
|
|
10105
|
+
* `permission.util.ts`, which is unchanged.
|
|
10106
|
+
*
|
|
10107
|
+
* `isResident` adds the categories every resident gets regardless of any role —
|
|
10108
|
+
* a resident's notifications come from living at the site, not from a permission.
|
|
10109
|
+
*/
|
|
10110
|
+
declare function categoriesForPermissions(params: {
|
|
10111
|
+
permissions?: unknown;
|
|
10112
|
+
isResident?: boolean;
|
|
10113
|
+
}): NotificationCategory[];
|
|
10114
|
+
|
|
10115
|
+
/**
|
|
10116
|
+
* One person's notification choices.
|
|
10117
|
+
*
|
|
10118
|
+
* **Only what they switched OFF is stored.** No document means every category
|
|
10119
|
+
* on every channel is on, which is exactly what the product did before this
|
|
10120
|
+
* existed — so nothing changes for anybody until they choose to change it, and
|
|
10121
|
+
* there is no back-fill to run.
|
|
10122
|
+
*
|
|
10123
|
+
* Storing the offs rather than a full map also survives the two things that
|
|
10124
|
+
* would otherwise corrupt a saved setting:
|
|
10125
|
+
*
|
|
10126
|
+
* - a category being added later: it is simply absent from `off`, so it is on,
|
|
10127
|
+
* which is the intended default;
|
|
10128
|
+
* - a role change taking a module away: the entry stays, inert and untouched,
|
|
10129
|
+
* and the person's choice is still there if the module comes back.
|
|
10130
|
+
*/
|
|
10131
|
+
type TNotificationPreferenceOff = {
|
|
10132
|
+
category: string;
|
|
10133
|
+
channel: string;
|
|
10134
|
+
};
|
|
10135
|
+
type TNotificationPreference = {
|
|
10136
|
+
_id?: ObjectId;
|
|
10137
|
+
userId: string | ObjectId;
|
|
10138
|
+
off: TNotificationPreferenceOff[];
|
|
10139
|
+
createdAt?: Date;
|
|
10140
|
+
updatedAt?: Date;
|
|
10141
|
+
};
|
|
10142
|
+
declare const schemaNotificationPreferenceOff: Joi.ObjectSchema<any>;
|
|
10143
|
+
declare const schemaNotificationPreference: Joi.ObjectSchema<any>;
|
|
10144
|
+
/**
|
|
10145
|
+
* The body of `PUT /notification-preferences`.
|
|
10146
|
+
*
|
|
10147
|
+
* There is no `userId` here on purpose — whose preferences these are comes from
|
|
10148
|
+
* the session and nowhere else, so no caller can address somebody else's row by
|
|
10149
|
+
* putting an id in the body.
|
|
10150
|
+
*
|
|
10151
|
+
* `max` is the whole catalogue times every channel: a body cannot be padded out
|
|
10152
|
+
* into an expensive write, and every entry has to name a real category and a
|
|
10153
|
+
* real channel or the whole request is refused.
|
|
10154
|
+
*/
|
|
10155
|
+
declare const schemaUpdateNotificationPreference: Joi.ObjectSchema<any>;
|
|
10156
|
+
declare function MNotificationPreference(value: TNotificationPreference): {
|
|
10157
|
+
userId: string | ObjectId;
|
|
10158
|
+
off: TNotificationPreferenceOff[];
|
|
10159
|
+
createdAt: Date;
|
|
10160
|
+
updatedAt: Date;
|
|
10161
|
+
};
|
|
10162
|
+
|
|
10163
|
+
declare function useNotificationPreferenceRepo(): {
|
|
10164
|
+
createIndexes: () => Promise<string>;
|
|
10165
|
+
getByUserId: (userId: string) => Promise<TNotificationPreferenceOff[]>;
|
|
10166
|
+
replaceForUser: (userId: string, off: TNotificationPreferenceOff[]) => Promise<TNotificationPreferenceOff[]>;
|
|
10167
|
+
filterRecipients: (userIds: string[], category: string | null | undefined, channel: NotificationChannel) => Promise<string[]>;
|
|
10168
|
+
isChannelEnabled: (userId: string, category: string | null | undefined, channel: NotificationChannel) => Promise<boolean>;
|
|
10169
|
+
};
|
|
10170
|
+
|
|
10171
|
+
/** What the settings screen needs to draw itself, in words a person can read. */
|
|
10172
|
+
type NotificationPreferenceView = {
|
|
10173
|
+
channels: Array<{
|
|
10174
|
+
key: string;
|
|
10175
|
+
label: string;
|
|
10176
|
+
}>;
|
|
10177
|
+
categories: Array<{
|
|
10178
|
+
key: string;
|
|
10179
|
+
label: string;
|
|
10180
|
+
description: string;
|
|
10181
|
+
safety: boolean;
|
|
10182
|
+
channels: Array<{
|
|
10183
|
+
key: string;
|
|
10184
|
+
label: string;
|
|
10185
|
+
/** false = drawn, dimmed, and not switchable */
|
|
10186
|
+
supported: boolean;
|
|
10187
|
+
/** plain-English reason, present only when unsupported */
|
|
10188
|
+
note?: string;
|
|
10189
|
+
enabled: boolean;
|
|
10190
|
+
}>;
|
|
10191
|
+
}>;
|
|
10192
|
+
};
|
|
10193
|
+
declare function useNotificationPreferenceService(): {
|
|
10194
|
+
getForUser: (userId?: string | null) => Promise<NotificationPreferenceView>;
|
|
10195
|
+
updateForUser: (userId: string | null | undefined, off: TNotificationPreferenceOff[]) => Promise<NotificationPreferenceView>;
|
|
10196
|
+
categoriesForUser: (userId: string) => Promise<NotificationCategory[]>;
|
|
10197
|
+
};
|
|
10198
|
+
|
|
10199
|
+
/**
|
|
10200
|
+
* A person's own notification settings.
|
|
10201
|
+
*
|
|
10202
|
+
* Both handlers sit behind `requireAuth`, and **whose settings these are comes
|
|
10203
|
+
* from the session only** — there is no user id in the path, the query or the
|
|
10204
|
+
* body, so there is nothing for a caller to substitute. That is deliberate: the
|
|
10205
|
+
* neighbouring `/notifications` endpoints take the user from the query string,
|
|
10206
|
+
* which is the defect these routes must not copy.
|
|
10207
|
+
*/
|
|
10208
|
+
declare function useNotificationPreferenceController(): {
|
|
10209
|
+
get: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
10210
|
+
update: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
10211
|
+
};
|
|
10212
|
+
|
|
10213
|
+
export { ANPRMode, 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_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, CLOCK_DRIFT_WARN_SECONDS, CURRENT_TIME_ENDPOINT, Camera, CameraAddressInput, CameraCapability, CameraCapabilityContext, CameraCapabilityDescriptor, CameraCapabilityEntry, CameraCapabilityReason, CameraCapabilityState, CameraCapabilityTrace, CameraDevice, CameraMembership, CameraTestStatus, CameraTransport, CameraType, DEVICE_STATUS, DOBStatus, DayOfWeek, DeviceHttpTarget, DeviceProbeResult, DynamicFormFields, EAccessCardTypes, EAccessCardUserTypes, EmailSender, EntryOrder, EntrySort, EventOrder, EventSort, EventStatus, EventType, FacilitySort, FacilityStatus, FormEntryStatus, GuestSort, GuestStatus, HID_PERMISSION_CATEGORIES, IAccessCard, IAccessCardTransaction, InviteActor, MAX_CAMERA_CHANNEL, MAccessCard, MAccessCardTransaction, MAddress, MAttendance, MAttendanceSettings, MBidPreloved, MBillingConfiguration, MBillingItem, MBuilding, MBuildingLevel, MBuildingUnit, MBulletinBoard, MBulletinVideo, MCategoryPreloved, MChannelPreloved, MChat, MChatPreloved, MCustomer, MCustomerSite, MDocumentManagement, MEntryPassSettings, MEventManagement, MFeedback, MFile, MFormEntry, MGuestManagement, MHidAmicoEvent, MHidAmicoIdentity, MHidAmicoReader, 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, 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, OrgNature, OvernightParkingRequestSort, OvernightParkingRequestStatus, PATROL_CCTV_CAMERA_FILTER, PERSON_TYPES, PROPERTY_MANAGEMENT_MEMBER_TYPES, PStatus, PTZ_ALLOWED_ACTIONS, PTZ_ALLOWED_CODES, Period, PersonStatus, PersonType, PersonTypes, 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, SubscriptionType, TAccessMngmntSettings, TActionStatus, TAddress, TAffectedEntities, TAffectedInjured, TAppServiceType, TApprovedBy, TApprover, TAttendance, TAttendanceCheckIn, TAttendanceCheckOut, TAttendanceCheckTime, TAttendanceLocation, TAttendanceSettings, TAttendanceSettingsGetBySite, TAuthorities, TAuthoritiesCalled, TBidPreloved, TBilling, TBillingConfiguration, TBillingItem, TBuilding, TBuildingLevel, TBuildingUnit, TBulletinBoard, TBulletinVideo, TCamera, TCategoryPreloved, TChannelPreloved, TChat, TChatPreloved, TCheckPoint$1 as TCheckPoint, TComplaintInfo, TComplaintReceivedTo, TCounter, TCreateNfcPatrolLog, TCustomer, TCustomerSite, TDayNumber, TDaySchedule, TDefaultAccessCard, TDesignations, TDocs, TDocumentCreate, TDocumentManagement, TEntryPassSettings, TEventManagement, TFeedback, TFeedbackMetadata, TFeedbackUpdate, TFeedbackUpdateCategory, TFeedbackUpdateServiceProvider, TFeedbackUpdateStatus, TFeedbackUpdateToCompleted, TFile, TFiles, TFolderUpdate, TFormEntry, TGetAttendancesByUserQuery, TGetAttendancesQuery, TGuestManagement, THidAmicoEvent, THidAmicoIdentity, THidAmicoReader, THidPermissionAssignment, THidPermissionCategory, 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, TPost, TPostFavorite, TPrice, TPriceType, TPromoCode, TPromoTier, TRANSPORT_DEVICE_HTTP, TRANSPORT_RELAY_PLAYER, TRANSPORT_RTSP_FRAME, TRecipientOfComplaint, TRemarks, TResident, TResidentAppModules, TRobot, TRobotMetadata, TRole, TRoleV2, TRoute, TSOABillingItem, TSOAStatus, TServiceProvider, TServiceProviderBilling, TSession, TSessionCreate, TShifts, TSignNfcPatrolLog, TSite, TSiteCamera, TSiteFacility, TSiteFacilityBooking, TSiteInfo, TSiteInformation, TSiteMetadata, TSiteUpdateBlock, TStatementOfAccount, TSubcategoryPreloved, TSubmissionForm, TSubscription, 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, cameraHealthSummary, cameraManagePermissions, cameraTransports, categoriesForPermissions, categorySupportsChannel, chatPrelovedEvents, chatSchema, clampPtzSpeed, clockDriftSeconds, createManpowerRemarksDaily, customerSchema, decideServiceProviderInvite, deriveCameraHost, describeCameraCapabilities, designationsSchema, deviceControlEnabled, deviceHttpEnabled, deviceHttpTargets, deviceHttpTimeoutMs, deviceProbeTtlSeconds, emitNotificationCreated, events_namespace_collection, facility_bookings_namespace_collection, feedbackSchema, feedbacks2_namespace_collection, feedbacks_namespace_collection, ffmpegFrameArgs, ffmpegPath, formatCapabilityTrace, formatDahuaDate, getIO, guests_namespace_collection, hasAnyCapability, hasAnyPermission, incidentReport, incidentReportLog, incidents_namespace_collection, isCameraEntitled, isPatrolCctvCamera, isRelayPlayerUrl, isSuperAdmin, logCamera, manpowerDesignationsSchema, manpowerEvents, manpowerMonitoringSchema, manpowerRemarksSchema, manpowerSitesSchema, mapWithLimit, nfcPatrolSettingsSchema, nfcPatrolSettingsSchemaUpdate, notificationCategory, notificationCategoryLabel, notificationEvents, notificationRoom, occurrence_book_namespace_collection, online_forms_namespace_collection, orgSchema, overnight_parking_requests_namespace_collection, parseCameraChannel, parseCameraHost, parseDahuaFind, parseDeviceTime, parseSoftwareVersion, promoCodeSchema, ptzEndpoint, publicCameraFields, refuseServiceProviderInviteAction, registerCameraTransport, relayForRecorder, remarksSchema, resetCameraTransports, residentAppModuleKeys, residentFormEntry, resolutionRefusalReason, resolveCamera, resolveDeviceHttp, resolveInviteActor, robotSchema, rtspUrl, schema, schemaAppSlugNotification, schemaApprovedBy, schemaApprover, schemaBidPreloved, schemaBilling, schemaBillingConfiguration, schemaBillingItem, schemaBuilding, schemaBuildingLevel, schemaBuildingUnit, schemaBuildingUpdateOptions, schemaBulletinBoard, schemaBulletinVideo, schemaCategoryPreloved, schemaChannelPreloved, schemaChatPreloved, schemaCreateHidAmicoIdentity, schemaCreateNfcPatrolLog, schemaCreateNotification, schemaCustomerSite, schemaDocumentManagement, schemaEntryPassSettings, schemaEventManagement, schemaFiles, schemaFormEntry, schemaGuestManagement, schemaHidAmicoConfiguration, schemaHidAmicoEvent, schemaHidAmicoExecuteActions, schemaHidAmicoIdentity, schemaHidAmicoIdentityIdParams, schemaHidAmicoIdentityQuery, schemaHidAmicoIntercomCall, schemaHidAmicoLogQuery, schemaHidAmicoNotificationParams, schemaHidAmicoObjectOperation, schemaHidAmicoReader, schemaHidAmicoReaderIdParams, schemaHidAmicoReaderListQuery, schemaHidAmicoSetConfiguration, schemaHidAmicoSiteIdParams, schemaHidAmicoSync, schemaHidAmicoUserImageParams, schemaHidAmicoUserImageUploadQuery, 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, 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, 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, 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, usePatrolQuestionController, usePatrolQuestionRepo, usePatrolRouteController, usePatrolRouteRepo, usePersonController, usePersonRepo, usePostFavoriteController, usePostFavoriteRepo, usePostFavoriteService, usePostPrelovedController, usePostPrelovedRepo, usePriceController, usePriceModel, usePriceRepo, usePromoCodeController, usePromoCodeRepo, useRedDotPaymentController, useRedDotPaymentRepo, useRedDotPaymentSvc, useRobotController, useRobotRepo, useRobotService, useRoleController, useRoleControllerV2, useRoleRepo, useRoleRepoV2, useRoleServiceV2, useServiceProviderBillingController, useServiceProviderBillingRepo, useServiceProviderBillingService, useServiceProviderController, 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 };
|