@kohost/api-client 7.8.2 → 7.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/deliveryStatus.d.ts +3 -0
- package/dist/lib/deliveryStatus.js +31 -0
- package/dist/lib/deliveryStatus.js.map +1 -0
- package/dist/lib/emergencyContacts.d.ts +14 -0
- package/dist/lib/emergencyContacts.js +1 -0
- package/dist/lib/index.d.ts +6 -1
- package/dist/lib/index.js +15 -2
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/messageErrorCodes.d.ts +4 -0
- package/dist/lib/messageErrorCodes.js +24 -0
- package/dist/lib/messageErrorCodes.js.map +1 -0
- package/dist/lib/money.d.ts +7 -1
- package/dist/lib/money.js +11 -2
- package/dist/lib/money.js.map +1 -1
- package/dist/lib/sisDrivers.d.ts +3 -0
- package/dist/lib/sisDrivers.js +9 -0
- package/dist/lib/sisDrivers.js.map +1 -0
- package/dist/lib/sosAudiences.d.ts +2 -0
- package/dist/lib/sosAudiences.js +6 -0
- package/dist/lib/sosAudiences.js.map +1 -0
- package/dist/models/announcement.js +4 -2
- package/dist/models/announcement.js.map +1 -1
- package/dist/models/category.js +2 -0
- package/dist/models/category.js.map +1 -1
- package/dist/models/emailMessage.js +1 -0
- package/dist/models/emailMessage.js.map +1 -1
- package/dist/models/index.d.ts +2 -0
- package/dist/models/index.js +5 -1
- package/dist/models/index.js.map +1 -1
- package/dist/models/resource.d.ts +17 -0
- package/dist/models/resource.js +31 -0
- package/dist/models/resource.js.map +1 -0
- package/dist/models/smsMessage.js +1 -0
- package/dist/models/smsMessage.js.map +1 -1
- package/dist/models/sosEvent.d.ts +17 -0
- package/dist/models/sosEvent.js +29 -0
- package/dist/models/sosEvent.js.map +1 -0
- package/dist/models/systemUser.js +2 -0
- package/dist/models/systemUser.js.map +1 -1
- package/dist/schemas/announcement.d.ts +47 -3
- package/dist/schemas/announcement.js +50 -4
- package/dist/schemas/announcement.js.map +1 -1
- package/dist/schemas/category.d.ts +11 -1
- package/dist/schemas/category.js +12 -1
- package/dist/schemas/category.js.map +1 -1
- package/dist/schemas/definitions.d.ts +160 -0
- package/dist/schemas/definitions.js +104 -1
- package/dist/schemas/definitions.js.map +1 -1
- package/dist/schemas/emailMessage.d.ts +4 -0
- package/dist/schemas/emailMessage.js +4 -0
- package/dist/schemas/emailMessage.js.map +1 -1
- package/dist/schemas/index.d.ts +2 -0
- package/dist/schemas/index.js +3 -1
- package/dist/schemas/organization.d.ts +19 -0
- package/dist/schemas/organization.js +13 -0
- package/dist/schemas/organization.js.map +1 -1
- package/dist/schemas/property.d.ts +14 -0
- package/dist/schemas/property.js +12 -0
- package/dist/schemas/property.js.map +1 -1
- package/dist/schemas/resource.d.ts +137 -0
- package/dist/schemas/resource.js +112 -0
- package/dist/schemas/resource.js.map +1 -0
- package/dist/schemas/smsMessage.d.ts +4 -0
- package/dist/schemas/smsMessage.js +4 -0
- package/dist/schemas/smsMessage.js.map +1 -1
- package/dist/schemas/sosEvent.d.ts +318 -0
- package/dist/schemas/sosEvent.js +267 -0
- package/dist/schemas/sosEvent.js.map +1 -0
- package/dist/schemas/systemUser.d.ts +8 -0
- package/dist/schemas/systemUser.js +9 -1
- package/dist/schemas/systemUser.js.map +1 -1
- package/dist/schemas/ticket.d.ts +1 -1
- package/dist/schemas/ticket.js +1 -0
- package/dist/schemas/ticket.js.map +1 -1
- package/dist/useCases/autoAssociateDiscoveredDevices.d.ts +3 -3
- package/dist/useCases/autoAssociateDiscoveredDevices.js.map +1 -1
- package/dist/useCases/bulkUpdateIssue.d.ts +3 -3
- package/dist/useCases/bulkUpdateIssue.js.map +1 -1
- package/dist/useCases/copyIssueRouting.d.ts +3 -3
- package/dist/useCases/copyIssueRouting.js.map +1 -1
- package/dist/useCases/createAutomation.d.ts +3 -3
- package/dist/useCases/createAutomation.js.map +1 -1
- package/dist/useCases/createBill.d.ts +3 -3
- package/dist/useCases/createBill.js.map +1 -1
- package/dist/useCases/createBillingCategory.d.ts +3 -3
- package/dist/useCases/createBillingCategory.js.map +1 -1
- package/dist/useCases/createCategory.d.ts +3 -3
- package/dist/useCases/createCategory.js.map +1 -1
- package/dist/useCases/createDefaultAutomations.d.ts +3 -3
- package/dist/useCases/createDefaultAutomations.js.map +1 -1
- package/dist/useCases/createDepartment.d.ts +3 -3
- package/dist/useCases/createDepartment.js.map +1 -1
- package/dist/useCases/createDiscoveredDevice.d.ts +3 -3
- package/dist/useCases/createDiscoveredDevice.js.map +1 -1
- package/dist/useCases/createDiscoveredDeviceAssociationMap.d.ts +3 -3
- package/dist/useCases/createDiscoveredDeviceAssociationMap.js.map +1 -1
- package/dist/useCases/createIssue.d.ts +3 -3
- package/dist/useCases/createIssue.js.map +1 -1
- package/dist/useCases/createOrganization.d.ts +3 -3
- package/dist/useCases/createOrganization.js.map +1 -1
- package/dist/useCases/createPolicy.d.ts +3 -3
- package/dist/useCases/createPolicy.js.map +1 -1
- package/dist/useCases/createProperty.d.ts +3 -3
- package/dist/useCases/createProperty.js.map +1 -1
- package/dist/useCases/createPwaHandoffToken.d.ts +3 -3
- package/dist/useCases/createPwaHandoffToken.js.map +1 -1
- package/dist/useCases/createResource.d.ts +27 -0
- package/dist/useCases/createResource.js +47 -0
- package/dist/useCases/createResource.js.map +1 -0
- package/dist/useCases/createServer.d.ts +3 -3
- package/dist/useCases/createServer.js.map +1 -1
- package/dist/useCases/createSpace.d.ts +3 -3
- package/dist/useCases/createSpace.js.map +1 -1
- package/dist/useCases/createSystem.d.ts +3 -3
- package/dist/useCases/createSystem.js.map +1 -1
- package/dist/useCases/createTicket.d.ts +3 -3
- package/dist/useCases/createTicket.js.map +1 -1
- package/dist/useCases/createTimeSheet.d.ts +3 -3
- package/dist/useCases/createTimeSheet.js.map +1 -1
- package/dist/useCases/createUser.d.ts +3 -3
- package/dist/useCases/createUser.js.map +1 -1
- package/dist/useCases/createVendor.d.ts +3 -3
- package/dist/useCases/createVendor.js.map +1 -1
- package/dist/useCases/deleteResource.d.ts +36 -0
- package/dist/useCases/deleteResource.js +47 -0
- package/dist/useCases/deleteResource.js.map +1 -0
- package/dist/useCases/describeConciergeFacilitiesViewer.d.ts +3 -3
- package/dist/useCases/describeConciergeFacilitiesViewer.js.map +1 -1
- package/dist/useCases/describeConciergeStatsFilters.d.ts +3 -3
- package/dist/useCases/describeConciergeStatsFilters.js.map +1 -1
- package/dist/useCases/describeConciergeStatsHeatmap.d.ts +3 -3
- package/dist/useCases/describeConciergeStatsHeatmap.js.map +1 -1
- package/dist/useCases/describeConciergeStatsSummary.d.ts +3 -3
- package/dist/useCases/describeConciergeStatsSummary.js.map +1 -1
- package/dist/useCases/describeConciergeStatsTickets.d.ts +3 -3
- package/dist/useCases/describeConciergeStatsTickets.js.map +1 -1
- package/dist/useCases/describeConciergeWorkspaceFilters.d.ts +3 -3
- package/dist/useCases/describeConciergeWorkspaceFilters.js.map +1 -1
- package/dist/useCases/describeMyAuth.d.ts +3 -3
- package/dist/useCases/describeMyAuth.js.map +1 -1
- package/dist/useCases/describeMyOrganization.d.ts +3 -3
- package/dist/useCases/describeMyOrganization.js.map +1 -1
- package/dist/useCases/describeMyPasskeyRegistrations.d.ts +3 -3
- package/dist/useCases/describeMyPasskeyRegistrations.js.map +1 -1
- package/dist/useCases/describeOrgNotificationDefaults.d.ts +3 -3
- package/dist/useCases/describeOrgNotificationDefaults.js.map +1 -1
- package/dist/useCases/describePushVapidPublicKey.d.ts +3 -3
- package/dist/useCases/describePushVapidPublicKey.js.map +1 -1
- package/dist/useCases/describeResource.d.ts +36 -0
- package/dist/useCases/describeResource.js +47 -0
- package/dist/useCases/describeResource.js.map +1 -0
- package/dist/useCases/describeSOS.d.ts +3 -3
- package/dist/useCases/describeSOS.js.map +1 -1
- package/dist/useCases/describeSOSEvent.d.ts +36 -0
- package/dist/useCases/describeSOSEvent.js +47 -0
- package/dist/useCases/describeSOSEvent.js.map +1 -0
- package/dist/useCases/describeSelf.d.ts +3 -3
- package/dist/useCases/describeSelf.js.map +1 -1
- package/dist/useCases/describeSelfAccess.d.ts +3 -3
- package/dist/useCases/describeSelfAccess.js.map +1 -1
- package/dist/useCases/describeStaffFunctions.d.ts +3 -3
- package/dist/useCases/describeStaffFunctions.js.map +1 -1
- package/dist/useCases/describeTicketFilters.d.ts +3 -3
- package/dist/useCases/describeTicketFilters.js.map +1 -1
- package/dist/useCases/describeTicketStats.d.ts +3 -3
- package/dist/useCases/describeTicketStats.js.map +1 -1
- package/dist/useCases/describeTicketStatsFilters.d.ts +3 -3
- package/dist/useCases/describeTicketStatsFilters.js.map +1 -1
- package/dist/useCases/describeTicketStatsHeatmap.d.ts +3 -3
- package/dist/useCases/describeTicketStatsHeatmap.js.map +1 -1
- package/dist/useCases/describeTicketStatsSummary.d.ts +3 -3
- package/dist/useCases/describeTicketStatsSummary.js.map +1 -1
- package/dist/useCases/describeTicketStatsTickets.d.ts +3 -3
- package/dist/useCases/describeTicketStatsTickets.js.map +1 -1
- package/dist/useCases/describeTimeSheetStats.d.ts +3 -3
- package/dist/useCases/describeTimeSheetStats.js.map +1 -1
- package/dist/useCases/fetchEmergencyContacts.d.ts +27 -0
- package/dist/useCases/fetchEmergencyContacts.js +47 -0
- package/dist/useCases/fetchEmergencyContacts.js.map +1 -0
- package/dist/useCases/index.d.ts +11 -0
- package/dist/useCases/index.js +23 -1
- package/dist/useCases/index.js.map +1 -1
- package/dist/useCases/listAutomations.d.ts +3 -3
- package/dist/useCases/listAutomations.js.map +1 -1
- package/dist/useCases/listBillingCategories.d.ts +3 -3
- package/dist/useCases/listBillingCategories.js.map +1 -1
- package/dist/useCases/listBills.d.ts +3 -3
- package/dist/useCases/listBills.js.map +1 -1
- package/dist/useCases/listCategories.d.ts +3 -3
- package/dist/useCases/listCategories.js.map +1 -1
- package/dist/useCases/listConciergeUninvoicedCosts.d.ts +3 -3
- package/dist/useCases/listConciergeUninvoicedCosts.js.map +1 -1
- package/dist/useCases/listConciergeWorkspaceBills.d.ts +3 -3
- package/dist/useCases/listConciergeWorkspaceBills.js.map +1 -1
- package/dist/useCases/listConciergeWorkspaceTickets.d.ts +3 -3
- package/dist/useCases/listConciergeWorkspaceTickets.js.map +1 -1
- package/dist/useCases/listDepartments.d.ts +3 -3
- package/dist/useCases/listDepartments.js.map +1 -1
- package/dist/useCases/listDiscoveredDevices.d.ts +3 -3
- package/dist/useCases/listDiscoveredDevices.js.map +1 -1
- package/dist/useCases/listFacilitiesStaffIds.d.ts +3 -3
- package/dist/useCases/listFacilitiesStaffIds.js.map +1 -1
- package/dist/useCases/listIntegrations.d.ts +3 -3
- package/dist/useCases/listIntegrations.js.map +1 -1
- package/dist/useCases/listIssues.d.ts +3 -3
- package/dist/useCases/listIssues.js.map +1 -1
- package/dist/useCases/listKohostStaff.d.ts +3 -3
- package/dist/useCases/listKohostStaff.js.map +1 -1
- package/dist/useCases/listMyOrganizations.d.ts +3 -3
- package/dist/useCases/listMyOrganizations.js.map +1 -1
- package/dist/useCases/listMyProperties.d.ts +3 -3
- package/dist/useCases/listMyProperties.js.map +1 -1
- package/dist/useCases/listMyPushSubscriptions.d.ts +3 -3
- package/dist/useCases/listMyPushSubscriptions.js.map +1 -1
- package/dist/useCases/listMyTimeSheets.d.ts +3 -3
- package/dist/useCases/listMyTimeSheets.js.map +1 -1
- package/dist/useCases/listOrganizationBills.d.ts +3 -3
- package/dist/useCases/listOrganizationBills.js.map +1 -1
- package/dist/useCases/listOrganizations.d.ts +3 -3
- package/dist/useCases/listOrganizations.js.map +1 -1
- package/dist/useCases/listPolicies.d.ts +3 -3
- package/dist/useCases/listPolicies.js.map +1 -1
- package/dist/useCases/listProperties.d.ts +3 -3
- package/dist/useCases/listProperties.js.map +1 -1
- package/dist/useCases/listResources.d.ts +27 -0
- package/dist/useCases/listResources.js +47 -0
- package/dist/useCases/listResources.js.map +1 -0
- package/dist/useCases/listSOSEvents.d.ts +27 -0
- package/dist/useCases/listSOSEvents.js +47 -0
- package/dist/useCases/listSOSEvents.js.map +1 -0
- package/dist/useCases/listServers.d.ts +3 -3
- package/dist/useCases/listServers.js.map +1 -1
- package/dist/useCases/listSessions.d.ts +3 -3
- package/dist/useCases/listSessions.js.map +1 -1
- package/dist/useCases/listSpaces.d.ts +3 -3
- package/dist/useCases/listSpaces.js.map +1 -1
- package/dist/useCases/listSystems.d.ts +3 -3
- package/dist/useCases/listSystems.js.map +1 -1
- package/dist/useCases/listTicketLocations.d.ts +3 -3
- package/dist/useCases/listTicketLocations.js.map +1 -1
- package/dist/useCases/listTickets.d.ts +3 -3
- package/dist/useCases/listTickets.js.map +1 -1
- package/dist/useCases/listTimeSheets.d.ts +3 -3
- package/dist/useCases/listTimeSheets.js.map +1 -1
- package/dist/useCases/listUsers.d.ts +3 -3
- package/dist/useCases/listUsers.js.map +1 -1
- package/dist/useCases/listVendors.d.ts +3 -3
- package/dist/useCases/listVendors.js.map +1 -1
- package/dist/useCases/mergeIssue.d.ts +3 -3
- package/dist/useCases/mergeIssue.js.map +1 -1
- package/dist/useCases/replaceDevice.d.ts +39 -0
- package/dist/useCases/replaceDevice.js +47 -0
- package/dist/useCases/replaceDevice.js.map +1 -0
- package/dist/useCases/selectOrganization.d.ts +3 -3
- package/dist/useCases/selectOrganization.js.map +1 -1
- package/dist/useCases/sendAnnouncement.d.ts +27 -0
- package/dist/useCases/sendAnnouncement.js +47 -0
- package/dist/useCases/sendAnnouncement.js.map +1 -0
- package/dist/useCases/sendNotification.d.ts +3 -3
- package/dist/useCases/sendNotification.js.map +1 -1
- package/dist/useCases/sendSOSUpdate.d.ts +27 -0
- package/dist/useCases/sendSOSUpdate.js +47 -0
- package/dist/useCases/sendSOSUpdate.js.map +1 -0
- package/dist/useCases/setDevices.d.ts +3 -3
- package/dist/useCases/setDevices.js.map +1 -1
- package/dist/useCases/startSOS.d.ts +3 -3
- package/dist/useCases/startSOS.js.map +1 -1
- package/dist/useCases/stopSOS.d.ts +3 -3
- package/dist/useCases/stopSOS.js.map +1 -1
- package/dist/useCases/subscribePushDevice.d.ts +3 -3
- package/dist/useCases/subscribePushDevice.js.map +1 -1
- package/dist/useCases/updateOrgNotificationDefaults.d.ts +3 -3
- package/dist/useCases/updateOrgNotificationDefaults.js.map +1 -1
- package/dist/useCases/updateResource.d.ts +36 -0
- package/dist/useCases/updateResource.js +47 -0
- package/dist/useCases/updateResource.js.map +1 -0
- package/dist/useCases/updateSelf.d.ts +3 -3
- package/dist/useCases/updateSelf.js.map +1 -1
- package/dist/useCases/upsertDiscoveredDevice.d.ts +3 -3
- package/dist/useCases/upsertDiscoveredDevice.js.map +1 -1
- package/dist/useCases/validateAuth.d.ts +3 -3
- package/dist/useCases/validateAuth.js.map +1 -1
- package/dist/validate.d.ts +34 -0
- package/dist/validate.js +7 -1
- package/dist/validate.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import defs, { ISODateString } from "./definitions.js";
|
|
2
|
+
import type { FromSchema } from "json-schema-to-ts";
|
|
3
|
+
export declare const sosEventSchema: {
|
|
4
|
+
readonly $schema: "http://json-schema.org/draft-07/schema";
|
|
5
|
+
readonly $id: "sosEvent.json";
|
|
6
|
+
readonly title: "SOS Event";
|
|
7
|
+
readonly description: "A durable record of a single SOS activation on a Property, with an append-only timeline of updates. Persists as audit history after the SOS is cleared.";
|
|
8
|
+
readonly type: "object";
|
|
9
|
+
readonly required: readonly ["id", "type", "sosTypeIds", "activatedAt", "timeline"];
|
|
10
|
+
readonly additionalProperties: false;
|
|
11
|
+
readonly properties: {
|
|
12
|
+
readonly id: {
|
|
13
|
+
readonly $ref: "definitions.json#/definitions/id";
|
|
14
|
+
readonly description: "Unique identifier for the SOS Event.";
|
|
15
|
+
};
|
|
16
|
+
readonly type: {
|
|
17
|
+
readonly type: "string";
|
|
18
|
+
readonly enum: readonly ["sosEvent"];
|
|
19
|
+
readonly default: "sosEvent";
|
|
20
|
+
};
|
|
21
|
+
readonly propertyId: {
|
|
22
|
+
readonly type: "string";
|
|
23
|
+
readonly description: "ID of the Property this SOS was raised on. Used as a per-document filter inside the org-scoped database.";
|
|
24
|
+
};
|
|
25
|
+
readonly sosTypeIds: {
|
|
26
|
+
readonly type: "array";
|
|
27
|
+
readonly items: {
|
|
28
|
+
readonly type: "string";
|
|
29
|
+
};
|
|
30
|
+
readonly description: "The SOS Type ids this event was raised for.";
|
|
31
|
+
};
|
|
32
|
+
readonly activatedAt: {
|
|
33
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
34
|
+
readonly description: "When the SOS was raised.";
|
|
35
|
+
};
|
|
36
|
+
readonly activatedBy: {
|
|
37
|
+
readonly type: readonly ["object", "null"];
|
|
38
|
+
readonly additionalProperties: false;
|
|
39
|
+
readonly required: readonly ["id", "discriminator"];
|
|
40
|
+
readonly properties: {
|
|
41
|
+
readonly id: {
|
|
42
|
+
readonly type: "string";
|
|
43
|
+
};
|
|
44
|
+
readonly discriminator: {
|
|
45
|
+
readonly type: "string";
|
|
46
|
+
readonly enum: readonly ["user", "device", "automation"];
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
readonly description: "Actor that raised the SOS (user, device, or automation); null when unattributed.";
|
|
50
|
+
};
|
|
51
|
+
readonly deactivatedAt: {
|
|
52
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
53
|
+
readonly description: "When the SOS was cleared. Absent while the event is active.";
|
|
54
|
+
};
|
|
55
|
+
readonly deactivatedBy: {
|
|
56
|
+
readonly type: readonly ["object", "null"];
|
|
57
|
+
readonly additionalProperties: false;
|
|
58
|
+
readonly required: readonly ["id", "discriminator"];
|
|
59
|
+
readonly properties: {
|
|
60
|
+
readonly id: {
|
|
61
|
+
readonly type: "string";
|
|
62
|
+
};
|
|
63
|
+
readonly discriminator: {
|
|
64
|
+
readonly type: "string";
|
|
65
|
+
readonly enum: readonly ["user", "device", "automation"];
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
readonly description: "Actor that cleared the SOS; null when unattributed. Absent while the event is active.";
|
|
69
|
+
};
|
|
70
|
+
readonly timeline: {
|
|
71
|
+
readonly type: "array";
|
|
72
|
+
readonly default: readonly [];
|
|
73
|
+
readonly description: "Append-only timeline. The first entry is the `activation`; later entries are operator `update`s, automation runs, and a closing `final`.";
|
|
74
|
+
readonly items: {
|
|
75
|
+
readonly oneOf: readonly [{
|
|
76
|
+
readonly type: "object";
|
|
77
|
+
readonly additionalProperties: false;
|
|
78
|
+
readonly required: readonly ["id", "type", "message", "by", "at", "audience"];
|
|
79
|
+
readonly properties: {
|
|
80
|
+
readonly id: {
|
|
81
|
+
readonly type: "string";
|
|
82
|
+
readonly description: "Unique identifier for the timeline entry.";
|
|
83
|
+
};
|
|
84
|
+
readonly type: {
|
|
85
|
+
readonly type: "string";
|
|
86
|
+
readonly enum: readonly ["activation", "update", "final"];
|
|
87
|
+
readonly description: "`activation` opens the event, `update` is an interim message, `final` closes it.";
|
|
88
|
+
};
|
|
89
|
+
readonly message: {
|
|
90
|
+
readonly type: "string";
|
|
91
|
+
readonly description: "The entry's message body. May be empty for entries that carry only audience/delivery intent.";
|
|
92
|
+
};
|
|
93
|
+
readonly by: {
|
|
94
|
+
readonly type: readonly ["object", "null"];
|
|
95
|
+
readonly additionalProperties: false;
|
|
96
|
+
readonly required: readonly ["id", "discriminator"];
|
|
97
|
+
readonly properties: {
|
|
98
|
+
readonly id: {
|
|
99
|
+
readonly type: "string";
|
|
100
|
+
};
|
|
101
|
+
readonly discriminator: {
|
|
102
|
+
readonly type: "string";
|
|
103
|
+
readonly enum: readonly ["user", "device", "automation"];
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
readonly description: "Actor that authored the entry; null when unattributed.";
|
|
107
|
+
};
|
|
108
|
+
readonly at: {
|
|
109
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
110
|
+
readonly description: "When the entry was recorded.";
|
|
111
|
+
};
|
|
112
|
+
readonly audience: {
|
|
113
|
+
readonly $ref: "definitions.json#/definitions/audience";
|
|
114
|
+
readonly description: "Who this entry was directed at, and who it resolved to. `activation` and `final` entries always carry the everyone wildcard — neither is narrowable.";
|
|
115
|
+
};
|
|
116
|
+
readonly deliveryStatus: {
|
|
117
|
+
readonly type: "object";
|
|
118
|
+
readonly additionalProperties: false;
|
|
119
|
+
readonly description: "Computed on demand by DescribeSOSEvent (not persisted): live per-audience, per-channel outcome counts grouped from the sms/email collections by appData.sosUpdateId × status. Absent on the returned event until at least one matching message exists; only audiences/channels with data are present.";
|
|
120
|
+
readonly properties: {
|
|
121
|
+
readonly internal: {
|
|
122
|
+
readonly type: "object";
|
|
123
|
+
readonly additionalProperties: false;
|
|
124
|
+
readonly description: "Per-channel live outcomes for one audience.";
|
|
125
|
+
readonly properties: {
|
|
126
|
+
readonly sms: {
|
|
127
|
+
readonly type: "object";
|
|
128
|
+
readonly additionalProperties: false;
|
|
129
|
+
readonly required: readonly ["sent", "delivered", "failed"];
|
|
130
|
+
readonly properties: {
|
|
131
|
+
readonly sent: {
|
|
132
|
+
readonly type: "integer";
|
|
133
|
+
readonly minimum: 0;
|
|
134
|
+
};
|
|
135
|
+
readonly delivered: {
|
|
136
|
+
readonly type: "integer";
|
|
137
|
+
readonly minimum: 0;
|
|
138
|
+
};
|
|
139
|
+
readonly failed: {
|
|
140
|
+
readonly type: "integer";
|
|
141
|
+
readonly minimum: 0;
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
readonly email: {
|
|
146
|
+
readonly type: "object";
|
|
147
|
+
readonly additionalProperties: false;
|
|
148
|
+
readonly required: readonly ["sent", "delivered", "failed"];
|
|
149
|
+
readonly properties: {
|
|
150
|
+
readonly sent: {
|
|
151
|
+
readonly type: "integer";
|
|
152
|
+
readonly minimum: 0;
|
|
153
|
+
};
|
|
154
|
+
readonly delivered: {
|
|
155
|
+
readonly type: "integer";
|
|
156
|
+
readonly minimum: 0;
|
|
157
|
+
};
|
|
158
|
+
readonly failed: {
|
|
159
|
+
readonly type: "integer";
|
|
160
|
+
readonly minimum: 0;
|
|
161
|
+
};
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
readonly emergencyContacts: {
|
|
167
|
+
readonly type: "object";
|
|
168
|
+
readonly additionalProperties: false;
|
|
169
|
+
readonly description: "Per-channel live outcomes for one audience.";
|
|
170
|
+
readonly properties: {
|
|
171
|
+
readonly sms: {
|
|
172
|
+
readonly type: "object";
|
|
173
|
+
readonly additionalProperties: false;
|
|
174
|
+
readonly required: readonly ["sent", "delivered", "failed"];
|
|
175
|
+
readonly properties: {
|
|
176
|
+
readonly sent: {
|
|
177
|
+
readonly type: "integer";
|
|
178
|
+
readonly minimum: 0;
|
|
179
|
+
};
|
|
180
|
+
readonly delivered: {
|
|
181
|
+
readonly type: "integer";
|
|
182
|
+
readonly minimum: 0;
|
|
183
|
+
};
|
|
184
|
+
readonly failed: {
|
|
185
|
+
readonly type: "integer";
|
|
186
|
+
readonly minimum: 0;
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
readonly email: {
|
|
191
|
+
readonly type: "object";
|
|
192
|
+
readonly additionalProperties: false;
|
|
193
|
+
readonly required: readonly ["sent", "delivered", "failed"];
|
|
194
|
+
readonly properties: {
|
|
195
|
+
readonly sent: {
|
|
196
|
+
readonly type: "integer";
|
|
197
|
+
readonly minimum: 0;
|
|
198
|
+
};
|
|
199
|
+
readonly delivered: {
|
|
200
|
+
readonly type: "integer";
|
|
201
|
+
readonly minimum: 0;
|
|
202
|
+
};
|
|
203
|
+
readonly failed: {
|
|
204
|
+
readonly type: "integer";
|
|
205
|
+
readonly minimum: 0;
|
|
206
|
+
};
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
};
|
|
210
|
+
};
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
};
|
|
214
|
+
}, {
|
|
215
|
+
readonly type: "object";
|
|
216
|
+
readonly additionalProperties: false;
|
|
217
|
+
readonly required: readonly ["id", "type", "at", "by", "automationName", "runId", "trigger", "actions"];
|
|
218
|
+
readonly properties: {
|
|
219
|
+
readonly id: {
|
|
220
|
+
readonly type: "string";
|
|
221
|
+
readonly description: "Unique identifier for the timeline entry.";
|
|
222
|
+
};
|
|
223
|
+
readonly type: {
|
|
224
|
+
readonly type: "string";
|
|
225
|
+
readonly enum: readonly ["automationRun"];
|
|
226
|
+
readonly description: "Discriminator: an automation that ran in response to this SOS.";
|
|
227
|
+
};
|
|
228
|
+
readonly at: {
|
|
229
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
230
|
+
readonly description: "When the run started. The entry is stamped with pending actions up front and settled in place.";
|
|
231
|
+
};
|
|
232
|
+
readonly by: {
|
|
233
|
+
readonly type: "object";
|
|
234
|
+
readonly additionalProperties: false;
|
|
235
|
+
readonly required: readonly ["id", "discriminator"];
|
|
236
|
+
readonly description: "The Automation that ran. Its id is the automation's id — there is no separate automationId.";
|
|
237
|
+
readonly properties: {
|
|
238
|
+
readonly id: {
|
|
239
|
+
readonly type: "string";
|
|
240
|
+
};
|
|
241
|
+
readonly discriminator: {
|
|
242
|
+
readonly type: "string";
|
|
243
|
+
readonly enum: readonly ["automation"];
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
};
|
|
247
|
+
readonly automationName: {
|
|
248
|
+
readonly type: "string";
|
|
249
|
+
readonly description: "The automation's name snapshotted at run time, so a later rename or delete leaves the timeline readable.";
|
|
250
|
+
};
|
|
251
|
+
readonly runId: {
|
|
252
|
+
readonly type: "string";
|
|
253
|
+
readonly description: "Groups this run's Activity records; one event matching several automations yields one runId each.";
|
|
254
|
+
};
|
|
255
|
+
readonly trigger: {
|
|
256
|
+
readonly type: "string";
|
|
257
|
+
readonly enum: readonly ["SOSActive", "SOSInactive"];
|
|
258
|
+
readonly description: "The SOS event type that matched the automation's trigger.";
|
|
259
|
+
};
|
|
260
|
+
readonly actions: {
|
|
261
|
+
readonly type: "array";
|
|
262
|
+
readonly default: readonly [];
|
|
263
|
+
readonly description: "Per-action outcome, in the automation's action order.";
|
|
264
|
+
readonly items: {
|
|
265
|
+
readonly type: "object";
|
|
266
|
+
readonly additionalProperties: false;
|
|
267
|
+
readonly required: readonly ["type", "status"];
|
|
268
|
+
readonly properties: {
|
|
269
|
+
readonly type: {
|
|
270
|
+
readonly type: "string";
|
|
271
|
+
readonly description: "The use case the automation action invoked.";
|
|
272
|
+
};
|
|
273
|
+
readonly status: {
|
|
274
|
+
readonly type: "string";
|
|
275
|
+
readonly enum: readonly ["pending", "success", "failure"];
|
|
276
|
+
readonly description: "`pending` while the action is in flight; settles to `success` or `failure`.";
|
|
277
|
+
};
|
|
278
|
+
readonly error: {
|
|
279
|
+
readonly type: readonly ["string", "null"];
|
|
280
|
+
readonly description: "Failure message; absent when the action succeeded.";
|
|
281
|
+
};
|
|
282
|
+
readonly params: {
|
|
283
|
+
readonly type: "object";
|
|
284
|
+
readonly description: "Pruned snapshot of the action's configured params (e.g. SetDevices device states, StartSOS type ids), enough to render a human summary of what the action did. Absent when the use case has no summarizable params.";
|
|
285
|
+
};
|
|
286
|
+
};
|
|
287
|
+
};
|
|
288
|
+
};
|
|
289
|
+
};
|
|
290
|
+
}];
|
|
291
|
+
};
|
|
292
|
+
};
|
|
293
|
+
readonly createdAt: {
|
|
294
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
295
|
+
readonly description: "When the SOS Event was created.";
|
|
296
|
+
};
|
|
297
|
+
readonly updatedAt: {
|
|
298
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
299
|
+
readonly description: "When the SOS Event was last modified.";
|
|
300
|
+
};
|
|
301
|
+
readonly deletedAt: {
|
|
302
|
+
readonly type: readonly ["string", "object", "null"];
|
|
303
|
+
readonly format: "date-time";
|
|
304
|
+
readonly description: "Soft-delete tombstone.";
|
|
305
|
+
};
|
|
306
|
+
};
|
|
307
|
+
};
|
|
308
|
+
export type SOSEventSchema = FromSchema<typeof sosEventSchema, {
|
|
309
|
+
references: [typeof defs];
|
|
310
|
+
deserialize: [
|
|
311
|
+
{
|
|
312
|
+
pattern: {
|
|
313
|
+
format: "date-time";
|
|
314
|
+
};
|
|
315
|
+
output: Date | ISODateString;
|
|
316
|
+
}
|
|
317
|
+
];
|
|
318
|
+
}>;
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
//#region .generated/schemas/sosEvent.ts
|
|
2
|
+
const sosActorNode = {
|
|
3
|
+
type: ["object", "null"],
|
|
4
|
+
additionalProperties: false,
|
|
5
|
+
required: ["id", "discriminator"],
|
|
6
|
+
properties: {
|
|
7
|
+
id: { type: "string" },
|
|
8
|
+
discriminator: {
|
|
9
|
+
type: "string",
|
|
10
|
+
enum: [
|
|
11
|
+
"user",
|
|
12
|
+
"device",
|
|
13
|
+
"automation"
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const deliveryOutcomeNode = {
|
|
19
|
+
type: "object",
|
|
20
|
+
additionalProperties: false,
|
|
21
|
+
required: [
|
|
22
|
+
"sent",
|
|
23
|
+
"delivered",
|
|
24
|
+
"failed"
|
|
25
|
+
],
|
|
26
|
+
properties: {
|
|
27
|
+
sent: {
|
|
28
|
+
type: "integer",
|
|
29
|
+
minimum: 0
|
|
30
|
+
},
|
|
31
|
+
delivered: {
|
|
32
|
+
type: "integer",
|
|
33
|
+
minimum: 0
|
|
34
|
+
},
|
|
35
|
+
failed: {
|
|
36
|
+
type: "integer",
|
|
37
|
+
minimum: 0
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const audienceDeliveryNode = {
|
|
42
|
+
type: "object",
|
|
43
|
+
additionalProperties: false,
|
|
44
|
+
description: "Per-channel live outcomes for one audience.",
|
|
45
|
+
properties: {
|
|
46
|
+
sms: deliveryOutcomeNode,
|
|
47
|
+
email: deliveryOutcomeNode
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const broadcastEntryNode = {
|
|
51
|
+
type: "object",
|
|
52
|
+
additionalProperties: false,
|
|
53
|
+
required: [
|
|
54
|
+
"id",
|
|
55
|
+
"type",
|
|
56
|
+
"message",
|
|
57
|
+
"by",
|
|
58
|
+
"at",
|
|
59
|
+
"audience"
|
|
60
|
+
],
|
|
61
|
+
properties: {
|
|
62
|
+
id: {
|
|
63
|
+
type: "string",
|
|
64
|
+
description: "Unique identifier for the timeline entry."
|
|
65
|
+
},
|
|
66
|
+
type: {
|
|
67
|
+
type: "string",
|
|
68
|
+
enum: [
|
|
69
|
+
"activation",
|
|
70
|
+
"update",
|
|
71
|
+
"final"
|
|
72
|
+
],
|
|
73
|
+
description: "`activation` opens the event, `update` is an interim message, `final` closes it."
|
|
74
|
+
},
|
|
75
|
+
message: {
|
|
76
|
+
type: "string",
|
|
77
|
+
description: "The entry's message body. May be empty for entries that carry only audience/delivery intent."
|
|
78
|
+
},
|
|
79
|
+
by: {
|
|
80
|
+
...sosActorNode,
|
|
81
|
+
description: "Actor that authored the entry; null when unattributed."
|
|
82
|
+
},
|
|
83
|
+
at: {
|
|
84
|
+
$ref: "definitions.json#/definitions/date",
|
|
85
|
+
description: "When the entry was recorded."
|
|
86
|
+
},
|
|
87
|
+
audience: {
|
|
88
|
+
$ref: "definitions.json#/definitions/audience",
|
|
89
|
+
description: "Who this entry was directed at, and who it resolved to. `activation` and `final` entries always carry the everyone wildcard — neither is narrowable."
|
|
90
|
+
},
|
|
91
|
+
deliveryStatus: {
|
|
92
|
+
type: "object",
|
|
93
|
+
additionalProperties: false,
|
|
94
|
+
description: "Computed on demand by DescribeSOSEvent (not persisted): live per-audience, per-channel outcome counts grouped from the sms/email collections by appData.sosUpdateId × status. Absent on the returned event until at least one matching message exists; only audiences/channels with data are present.",
|
|
95
|
+
properties: {
|
|
96
|
+
internal: audienceDeliveryNode,
|
|
97
|
+
emergencyContacts: audienceDeliveryNode
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const automationRunEntryNode = {
|
|
103
|
+
type: "object",
|
|
104
|
+
additionalProperties: false,
|
|
105
|
+
required: [
|
|
106
|
+
"id",
|
|
107
|
+
"type",
|
|
108
|
+
"at",
|
|
109
|
+
"by",
|
|
110
|
+
"automationName",
|
|
111
|
+
"runId",
|
|
112
|
+
"trigger",
|
|
113
|
+
"actions"
|
|
114
|
+
],
|
|
115
|
+
properties: {
|
|
116
|
+
id: {
|
|
117
|
+
type: "string",
|
|
118
|
+
description: "Unique identifier for the timeline entry."
|
|
119
|
+
},
|
|
120
|
+
type: {
|
|
121
|
+
type: "string",
|
|
122
|
+
enum: ["automationRun"],
|
|
123
|
+
description: "Discriminator: an automation that ran in response to this SOS."
|
|
124
|
+
},
|
|
125
|
+
at: {
|
|
126
|
+
$ref: "definitions.json#/definitions/date",
|
|
127
|
+
description: "When the run started. The entry is stamped with pending actions up front and settled in place."
|
|
128
|
+
},
|
|
129
|
+
by: {
|
|
130
|
+
type: "object",
|
|
131
|
+
additionalProperties: false,
|
|
132
|
+
required: ["id", "discriminator"],
|
|
133
|
+
description: "The Automation that ran. Its id is the automation's id — there is no separate automationId.",
|
|
134
|
+
properties: {
|
|
135
|
+
id: { type: "string" },
|
|
136
|
+
discriminator: {
|
|
137
|
+
type: "string",
|
|
138
|
+
enum: ["automation"]
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
automationName: {
|
|
143
|
+
type: "string",
|
|
144
|
+
description: "The automation's name snapshotted at run time, so a later rename or delete leaves the timeline readable."
|
|
145
|
+
},
|
|
146
|
+
runId: {
|
|
147
|
+
type: "string",
|
|
148
|
+
description: "Groups this run's Activity records; one event matching several automations yields one runId each."
|
|
149
|
+
},
|
|
150
|
+
trigger: {
|
|
151
|
+
type: "string",
|
|
152
|
+
enum: ["SOSActive", "SOSInactive"],
|
|
153
|
+
description: "The SOS event type that matched the automation's trigger."
|
|
154
|
+
},
|
|
155
|
+
actions: {
|
|
156
|
+
type: "array",
|
|
157
|
+
default: [],
|
|
158
|
+
description: "Per-action outcome, in the automation's action order.",
|
|
159
|
+
items: {
|
|
160
|
+
type: "object",
|
|
161
|
+
additionalProperties: false,
|
|
162
|
+
required: ["type", "status"],
|
|
163
|
+
properties: {
|
|
164
|
+
type: {
|
|
165
|
+
type: "string",
|
|
166
|
+
description: "The use case the automation action invoked."
|
|
167
|
+
},
|
|
168
|
+
status: {
|
|
169
|
+
type: "string",
|
|
170
|
+
enum: [
|
|
171
|
+
"pending",
|
|
172
|
+
"success",
|
|
173
|
+
"failure"
|
|
174
|
+
],
|
|
175
|
+
description: "`pending` while the action is in flight; settles to `success` or `failure`."
|
|
176
|
+
},
|
|
177
|
+
error: {
|
|
178
|
+
type: ["string", "null"],
|
|
179
|
+
description: "Failure message; absent when the action succeeded."
|
|
180
|
+
},
|
|
181
|
+
params: {
|
|
182
|
+
type: "object",
|
|
183
|
+
description: "Pruned snapshot of the action's configured params (e.g. SetDevices device states, StartSOS type ids), enough to render a human summary of what the action did. Absent when the use case has no summarizable params."
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
const sosEventSchema = {
|
|
191
|
+
$schema: "http://json-schema.org/draft-07/schema",
|
|
192
|
+
$id: "sosEvent.json",
|
|
193
|
+
title: "SOS Event",
|
|
194
|
+
description: "A durable record of a single SOS activation on a Property, with an append-only timeline of updates. Persists as audit history after the SOS is cleared.",
|
|
195
|
+
type: "object",
|
|
196
|
+
required: [
|
|
197
|
+
"id",
|
|
198
|
+
"type",
|
|
199
|
+
"sosTypeIds",
|
|
200
|
+
"activatedAt",
|
|
201
|
+
"timeline"
|
|
202
|
+
],
|
|
203
|
+
additionalProperties: false,
|
|
204
|
+
properties: {
|
|
205
|
+
id: {
|
|
206
|
+
$ref: "definitions.json#/definitions/id",
|
|
207
|
+
description: "Unique identifier for the SOS Event."
|
|
208
|
+
},
|
|
209
|
+
type: {
|
|
210
|
+
type: "string",
|
|
211
|
+
enum: ["sosEvent"],
|
|
212
|
+
default: "sosEvent"
|
|
213
|
+
},
|
|
214
|
+
propertyId: {
|
|
215
|
+
type: "string",
|
|
216
|
+
description: "ID of the Property this SOS was raised on. Used as a per-document filter inside the org-scoped database."
|
|
217
|
+
},
|
|
218
|
+
sosTypeIds: {
|
|
219
|
+
type: "array",
|
|
220
|
+
items: { type: "string" },
|
|
221
|
+
description: "The SOS Type ids this event was raised for."
|
|
222
|
+
},
|
|
223
|
+
activatedAt: {
|
|
224
|
+
$ref: "definitions.json#/definitions/date",
|
|
225
|
+
description: "When the SOS was raised."
|
|
226
|
+
},
|
|
227
|
+
activatedBy: {
|
|
228
|
+
...sosActorNode,
|
|
229
|
+
description: "Actor that raised the SOS (user, device, or automation); null when unattributed."
|
|
230
|
+
},
|
|
231
|
+
deactivatedAt: {
|
|
232
|
+
$ref: "definitions.json#/definitions/date",
|
|
233
|
+
description: "When the SOS was cleared. Absent while the event is active."
|
|
234
|
+
},
|
|
235
|
+
deactivatedBy: {
|
|
236
|
+
...sosActorNode,
|
|
237
|
+
description: "Actor that cleared the SOS; null when unattributed. Absent while the event is active."
|
|
238
|
+
},
|
|
239
|
+
timeline: {
|
|
240
|
+
type: "array",
|
|
241
|
+
default: [],
|
|
242
|
+
description: "Append-only timeline. The first entry is the `activation`; later entries are operator `update`s, automation runs, and a closing `final`.",
|
|
243
|
+
items: { oneOf: [broadcastEntryNode, automationRunEntryNode] }
|
|
244
|
+
},
|
|
245
|
+
createdAt: {
|
|
246
|
+
$ref: "definitions.json#/definitions/date",
|
|
247
|
+
description: "When the SOS Event was created."
|
|
248
|
+
},
|
|
249
|
+
updatedAt: {
|
|
250
|
+
$ref: "definitions.json#/definitions/date",
|
|
251
|
+
description: "When the SOS Event was last modified."
|
|
252
|
+
},
|
|
253
|
+
deletedAt: {
|
|
254
|
+
type: [
|
|
255
|
+
"string",
|
|
256
|
+
"object",
|
|
257
|
+
"null"
|
|
258
|
+
],
|
|
259
|
+
format: "date-time",
|
|
260
|
+
description: "Soft-delete tombstone."
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
//#endregion
|
|
265
|
+
export { sosEventSchema };
|
|
266
|
+
|
|
267
|
+
//# sourceMappingURL=sosEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sosEvent.js","names":[],"sources":["../../.generated/schemas/sosEvent.ts"],"sourcesContent":["import defs, { ISODateString } from \"./definitions\";\nimport type { FromSchema } from \"json-schema-to-ts\";\n\n// Sub-node consts must not be exported: the model generator treats the first\n// export ending in \"Schema\" as the entity schema.\nconst sosActorNode = {\n type: [\"object\", \"null\"],\n additionalProperties: false,\n required: [\"id\", \"discriminator\"],\n properties: {\n id: { type: \"string\" },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"device\", \"automation\"],\n },\n },\n} as const;\n\n// Live outcome rollup for one channel. Buckets map the raw vendor statuses:\n// `sent` = accepted/in-flight but not yet terminal, `delivered` = terminal\n// success (delivered/read/opened/clicked), `failed` = terminal failure\n// (failed/undelivered/bounced/blocked). See deliveryOutcomeForStatus.\nconst deliveryOutcomeNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"sent\", \"delivered\", \"failed\"],\n properties: {\n sent: { type: \"integer\", minimum: 0 },\n delivered: { type: \"integer\", minimum: 0 },\n failed: { type: \"integer\", minimum: 0 },\n },\n} as const;\n\nconst audienceDeliveryNode = {\n type: \"object\",\n additionalProperties: false,\n description: \"Per-channel live outcomes for one audience.\",\n properties: {\n sms: deliveryOutcomeNode,\n email: deliveryOutcomeNode,\n },\n} as const;\n\n// A timeline entry is a discriminated union on `type`, so `timeline.items` is\n// their `oneOf`. The branches are disjoint via the `type` enum plus\n// `additionalProperties: false`, so an entry validates against exactly one.\nconst broadcastEntryNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"type\", \"message\", \"by\", \"at\", \"audience\"],\n properties: {\n id: {\n type: \"string\",\n description: \"Unique identifier for the timeline entry.\",\n },\n type: {\n type: \"string\",\n enum: [\"activation\", \"update\", \"final\"],\n description:\n \"`activation` opens the event, `update` is an interim message, `final` closes it.\",\n },\n message: {\n type: \"string\",\n description:\n \"The entry's message body. May be empty for entries that carry only audience/delivery intent.\",\n },\n by: {\n ...sosActorNode,\n description: \"Actor that authored the entry; null when unattributed.\",\n },\n at: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the entry was recorded.\",\n },\n audience: {\n $ref: \"definitions.json#/definitions/audience\",\n description:\n \"Who this entry was directed at, and who it resolved to. `activation` and `final` entries always carry the everyone wildcard — neither is narrowable.\",\n },\n deliveryStatus: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Computed on demand by DescribeSOSEvent (not persisted): live per-audience, per-channel outcome counts grouped from the sms/email collections by appData.sosUpdateId × status. Absent on the returned event until at least one matching message exists; only audiences/channels with data are present.\",\n properties: {\n internal: audienceDeliveryNode,\n emergencyContacts: audienceDeliveryNode,\n },\n },\n },\n} as const;\n\nconst automationRunActionNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"status\"],\n properties: {\n type: {\n type: \"string\",\n description: \"The use case the automation action invoked.\",\n },\n status: {\n type: \"string\",\n enum: [\"pending\", \"success\", \"failure\"],\n description:\n \"`pending` while the action is in flight; settles to `success` or `failure`.\",\n },\n error: {\n type: [\"string\", \"null\"],\n description: \"Failure message; absent when the action succeeded.\",\n },\n params: {\n type: \"object\",\n description:\n \"Pruned snapshot of the action's configured params (e.g. SetDevices device states, StartSOS type ids), enough to render a human summary of what the action did. Absent when the use case has no summarizable params.\",\n },\n },\n} as const;\n\nconst automationRunEntryNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\n \"id\",\n \"type\",\n \"at\",\n \"by\",\n \"automationName\",\n \"runId\",\n \"trigger\",\n \"actions\",\n ],\n properties: {\n id: {\n type: \"string\",\n description: \"Unique identifier for the timeline entry.\",\n },\n type: {\n type: \"string\",\n enum: [\"automationRun\"],\n description:\n \"Discriminator: an automation that ran in response to this SOS.\",\n },\n at: {\n $ref: \"definitions.json#/definitions/date\",\n description:\n \"When the run started. The entry is stamped with pending actions up front and settled in place.\",\n },\n by: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\"],\n description:\n \"The Automation that ran. Its id is the automation's id — there is no separate automationId.\",\n properties: {\n id: { type: \"string\" },\n discriminator: { type: \"string\", enum: [\"automation\"] },\n },\n },\n automationName: {\n type: \"string\",\n description:\n \"The automation's name snapshotted at run time, so a later rename or delete leaves the timeline readable.\",\n },\n runId: {\n type: \"string\",\n description:\n \"Groups this run's Activity records; one event matching several automations yields one runId each.\",\n },\n trigger: {\n type: \"string\",\n enum: [\"SOSActive\", \"SOSInactive\"],\n description: \"The SOS event type that matched the automation's trigger.\",\n },\n actions: {\n type: \"array\",\n default: [],\n description: \"Per-action outcome, in the automation's action order.\",\n items: automationRunActionNode,\n },\n },\n} as const;\n\nexport const sosEventSchema = {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"sosEvent.json\",\n title: \"SOS Event\",\n description:\n \"A durable record of a single SOS activation on a Property, with an append-only timeline of updates. Persists as audit history after the SOS is cleared.\",\n type: \"object\",\n required: [\"id\", \"type\", \"sosTypeIds\", \"activatedAt\", \"timeline\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n description: \"Unique identifier for the SOS Event.\",\n },\n type: {\n type: \"string\",\n enum: [\"sosEvent\"],\n default: \"sosEvent\",\n },\n propertyId: {\n type: \"string\",\n description:\n \"ID of the Property this SOS was raised on. Used as a per-document filter inside the org-scoped database.\",\n },\n sosTypeIds: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"The SOS Type ids this event was raised for.\",\n },\n activatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the SOS was raised.\",\n },\n activatedBy: {\n ...sosActorNode,\n description:\n \"Actor that raised the SOS (user, device, or automation); null when unattributed.\",\n },\n deactivatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description:\n \"When the SOS was cleared. Absent while the event is active.\",\n },\n deactivatedBy: {\n ...sosActorNode,\n description:\n \"Actor that cleared the SOS; null when unattributed. Absent while the event is active.\",\n },\n timeline: {\n type: \"array\",\n default: [],\n description:\n \"Append-only timeline. The first entry is the `activation`; later entries are operator `update`s, automation runs, and a closing `final`.\",\n items: {\n oneOf: [broadcastEntryNode, automationRunEntryNode],\n },\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the SOS Event was created.\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the SOS Event was last modified.\",\n },\n deletedAt: {\n type: [\"string\", \"object\", \"null\"],\n format: \"date-time\",\n description: \"Soft-delete tombstone.\",\n },\n },\n} as const;\n\nexport type SOSEventSchema = FromSchema<\n typeof sosEventSchema,\n {\n references: [typeof defs];\n deserialize: [\n {\n pattern: {\n format: \"date-time\";\n };\n output: Date | ISODateString;\n },\n ];\n }\n>;\n"],"mappings":"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"}
|
|
@@ -97,6 +97,14 @@ export declare const systemUserSchema: {
|
|
|
97
97
|
readonly systemId: {
|
|
98
98
|
readonly $ref: "definitions.json#/definitions/systemId";
|
|
99
99
|
};
|
|
100
|
+
readonly propertyId: {
|
|
101
|
+
readonly type: "string";
|
|
102
|
+
readonly description: "ID of the Property this synced user belongs to. Used as a per-document filter inside the org-scoped database.";
|
|
103
|
+
};
|
|
104
|
+
readonly syncedAt: {
|
|
105
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
106
|
+
readonly description: "When this user was last written through from its source system.";
|
|
107
|
+
};
|
|
100
108
|
};
|
|
101
109
|
};
|
|
102
110
|
export type SystemUserSchema = FromSchema<typeof systemUserSchema, {
|
|
@@ -87,7 +87,15 @@ const systemUserSchema = {
|
|
|
87
87
|
revenue: { $ref: "definitions.json#/definitions/revenue" },
|
|
88
88
|
createdAt: { $ref: "definitions.json#/definitions/date" },
|
|
89
89
|
updatedAt: { $ref: "definitions.json#/definitions/date" },
|
|
90
|
-
systemId: { $ref: "definitions.json#/definitions/systemId" }
|
|
90
|
+
systemId: { $ref: "definitions.json#/definitions/systemId" },
|
|
91
|
+
propertyId: {
|
|
92
|
+
type: "string",
|
|
93
|
+
description: "ID of the Property this synced user belongs to. Used as a per-document filter inside the org-scoped database."
|
|
94
|
+
},
|
|
95
|
+
syncedAt: {
|
|
96
|
+
$ref: "definitions.json#/definitions/date",
|
|
97
|
+
description: "When this user was last written through from its source system."
|
|
98
|
+
}
|
|
91
99
|
}
|
|
92
100
|
};
|
|
93
101
|
//#endregion
|