@kohost/api-client 7.9.0 → 7.11.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/emergencyContacts.d.ts +27 -0
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js +1 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/kfcStatsWindow.d.ts +4 -4
- package/dist/lib/kfcStatsWindow.js +4 -4
- package/dist/lib/kfcStatsWindow.js.map +1 -1
- package/dist/lib/sosAudiences.d.ts +1 -1
- package/dist/lib/sosAudiences.js +1 -1
- package/dist/lib/sosAudiences.js.map +1 -1
- package/dist/models/announcement.js +5 -1
- package/dist/models/announcement.js.map +1 -1
- package/dist/models/sosEvent.js +2 -0
- package/dist/models/sosEvent.js.map +1 -1
- package/dist/schemas/announcement.d.ts +122 -6
- package/dist/schemas/announcement.js +126 -11
- package/dist/schemas/announcement.js.map +1 -1
- package/dist/schemas/definitions.d.ts +83 -1
- package/dist/schemas/definitions.js +40 -2
- package/dist/schemas/definitions.js.map +1 -1
- package/dist/schemas/sosEvent.d.ts +97 -2
- package/dist/schemas/sosEvent.js +92 -2
- package/dist/schemas/sosEvent.js.map +1 -1
- package/dist/schemas/ticket.d.ts +17 -2
- package/dist/schemas/ticket.js +19 -2
- package/dist/schemas/ticket.js.map +1 -1
- package/dist/useCases/addSOSEventNote.d.ts +36 -0
- package/dist/useCases/addSOSEventNote.js +47 -0
- package/dist/useCases/addSOSEventNote.js.map +1 -0
- package/dist/useCases/createAnnouncementPreset.d.ts +27 -0
- package/dist/useCases/createAnnouncementPreset.js +47 -0
- package/dist/useCases/createAnnouncementPreset.js.map +1 -0
- package/dist/useCases/deleteAnnouncementPreset.d.ts +36 -0
- package/dist/useCases/deleteAnnouncementPreset.js +47 -0
- package/dist/useCases/deleteAnnouncementPreset.js.map +1 -0
- package/dist/useCases/describeAnnouncement.d.ts +36 -0
- package/dist/useCases/describeAnnouncement.js +47 -0
- package/dist/useCases/describeAnnouncement.js.map +1 -0
- package/dist/useCases/exportSOSEventReport.d.ts +36 -0
- package/dist/useCases/exportSOSEventReport.js +47 -0
- package/dist/useCases/exportSOSEventReport.js.map +1 -0
- package/dist/useCases/fetchEmergencyContactPeople.d.ts +27 -0
- package/dist/useCases/fetchEmergencyContactPeople.js +47 -0
- package/dist/useCases/fetchEmergencyContactPeople.js.map +1 -0
- package/dist/useCases/index.d.ts +10 -0
- package/dist/useCases/index.js +21 -1
- package/dist/useCases/index.js.map +1 -1
- package/dist/useCases/listAnnouncements.d.ts +27 -0
- package/dist/useCases/listAnnouncements.js +47 -0
- package/dist/useCases/listAnnouncements.js.map +1 -0
- package/dist/useCases/previewSOSEventReport.d.ts +36 -0
- package/dist/useCases/previewSOSEventReport.js +47 -0
- package/dist/useCases/previewSOSEventReport.js.map +1 -0
- package/dist/useCases/updateAnnouncementPreset.d.ts +36 -0
- package/dist/useCases/updateAnnouncementPreset.js +47 -0
- package/dist/useCases/updateAnnouncementPreset.js.map +1 -0
- package/dist/useCases/voidCostEntry.d.ts +39 -0
- package/dist/useCases/voidCostEntry.js +47 -0
- package/dist/useCases/voidCostEntry.js.map +1 -0
- package/dist/validate.d.ts +0 -3
- package/package.json +6 -6
|
@@ -8,6 +8,14 @@ export type NotificationChannel = (typeof NOTIFICATION_CHANNELS)[number];
|
|
|
8
8
|
*/
|
|
9
9
|
export declare const PLATFORM_ROLE_NAMES: readonly ["SuperAdmin", "Administrator", "Manager", "Agent", "User"];
|
|
10
10
|
export type PlatformRoleName = (typeof PLATFORM_ROLE_NAMES)[number];
|
|
11
|
+
/**
|
|
12
|
+
* The people outside the platform a broadcast may name, sourced from the SIS
|
|
13
|
+
* roster. `students` is every system user the SIS marks as a Student;
|
|
14
|
+
* `parents` is everybody else on the roster — every emergency-contact
|
|
15
|
+
* relationship the source system carries, whatever it calls it.
|
|
16
|
+
*/
|
|
17
|
+
export declare const EXTERNAL_AUDIENCE_GROUPS: readonly ["students", "parents"];
|
|
18
|
+
export type ExternalAudienceGroup = (typeof EXTERNAL_AUDIENCE_GROUPS)[number];
|
|
11
19
|
declare const defs: {
|
|
12
20
|
readonly $schema: "http://json-schema.org/draft-07/schema";
|
|
13
21
|
readonly $id: "definitions.json";
|
|
@@ -234,9 +242,18 @@ declare const defs: {
|
|
|
234
242
|
};
|
|
235
243
|
};
|
|
236
244
|
};
|
|
245
|
+
readonly external: {
|
|
246
|
+
readonly type: "array";
|
|
247
|
+
readonly uniqueItems: true;
|
|
248
|
+
readonly description: "Which groups of the external SIS roster were included. Human-triggered sends only; an Automation can never set it.";
|
|
249
|
+
readonly items: {
|
|
250
|
+
readonly type: "string";
|
|
251
|
+
readonly enum: readonly ["students", "parents"];
|
|
252
|
+
};
|
|
253
|
+
};
|
|
237
254
|
readonly emergencyContacts: {
|
|
238
255
|
readonly type: "boolean";
|
|
239
|
-
readonly description:
|
|
256
|
+
readonly description: 'Deprecated: superseded by `external`. A stored `true` reads as `external: ["parents"]`.';
|
|
240
257
|
};
|
|
241
258
|
readonly users: {
|
|
242
259
|
readonly type: "array";
|
|
@@ -269,10 +286,75 @@ declare const defs: {
|
|
|
269
286
|
};
|
|
270
287
|
};
|
|
271
288
|
};
|
|
289
|
+
readonly external: {
|
|
290
|
+
readonly type: "object";
|
|
291
|
+
readonly additionalProperties: false;
|
|
292
|
+
readonly required: readonly ["recipients", "sent", "failed"];
|
|
293
|
+
readonly properties: {
|
|
294
|
+
readonly recipients: {
|
|
295
|
+
readonly type: "integer";
|
|
296
|
+
readonly minimum: 0;
|
|
297
|
+
};
|
|
298
|
+
readonly sent: {
|
|
299
|
+
readonly type: "integer";
|
|
300
|
+
readonly minimum: 0;
|
|
301
|
+
};
|
|
302
|
+
readonly failed: {
|
|
303
|
+
readonly type: "integer";
|
|
304
|
+
readonly minimum: 0;
|
|
305
|
+
};
|
|
306
|
+
readonly byChannel: {
|
|
307
|
+
readonly type: "object";
|
|
308
|
+
readonly additionalProperties: false;
|
|
309
|
+
readonly description: "Per-channel counts, present only for the channels attempted.";
|
|
310
|
+
readonly properties: {
|
|
311
|
+
readonly sms: {
|
|
312
|
+
readonly type: "object";
|
|
313
|
+
readonly additionalProperties: false;
|
|
314
|
+
readonly required: readonly ["recipients", "sent", "failed"];
|
|
315
|
+
readonly properties: {
|
|
316
|
+
readonly recipients: {
|
|
317
|
+
readonly type: "integer";
|
|
318
|
+
readonly minimum: 0;
|
|
319
|
+
};
|
|
320
|
+
readonly sent: {
|
|
321
|
+
readonly type: "integer";
|
|
322
|
+
readonly minimum: 0;
|
|
323
|
+
};
|
|
324
|
+
readonly failed: {
|
|
325
|
+
readonly type: "integer";
|
|
326
|
+
readonly minimum: 0;
|
|
327
|
+
};
|
|
328
|
+
};
|
|
329
|
+
};
|
|
330
|
+
readonly email: {
|
|
331
|
+
readonly type: "object";
|
|
332
|
+
readonly additionalProperties: false;
|
|
333
|
+
readonly required: readonly ["recipients", "sent", "failed"];
|
|
334
|
+
readonly properties: {
|
|
335
|
+
readonly recipients: {
|
|
336
|
+
readonly type: "integer";
|
|
337
|
+
readonly minimum: 0;
|
|
338
|
+
};
|
|
339
|
+
readonly sent: {
|
|
340
|
+
readonly type: "integer";
|
|
341
|
+
readonly minimum: 0;
|
|
342
|
+
};
|
|
343
|
+
readonly failed: {
|
|
344
|
+
readonly type: "integer";
|
|
345
|
+
readonly minimum: 0;
|
|
346
|
+
};
|
|
347
|
+
};
|
|
348
|
+
};
|
|
349
|
+
};
|
|
350
|
+
};
|
|
351
|
+
};
|
|
352
|
+
};
|
|
272
353
|
readonly emergencyContacts: {
|
|
273
354
|
readonly type: "object";
|
|
274
355
|
readonly additionalProperties: false;
|
|
275
356
|
readonly required: readonly ["recipients", "sent", "failed"];
|
|
357
|
+
readonly description: "Deprecated: superseded by `external`.";
|
|
276
358
|
readonly properties: {
|
|
277
359
|
readonly recipients: {
|
|
278
360
|
readonly type: "integer";
|
|
@@ -28,6 +28,13 @@ const PLATFORM_ROLE_NAMES = [
|
|
|
28
28
|
"Agent",
|
|
29
29
|
"User"
|
|
30
30
|
];
|
|
31
|
+
/**
|
|
32
|
+
* The people outside the platform a broadcast may name, sourced from the SIS
|
|
33
|
+
* roster. `students` is every system user the SIS marks as a Student;
|
|
34
|
+
* `parents` is everybody else on the roster — every emergency-contact
|
|
35
|
+
* relationship the source system carries, whatever it calls it.
|
|
36
|
+
*/
|
|
37
|
+
const EXTERNAL_AUDIENCE_GROUPS = ["students", "parents"];
|
|
31
38
|
const deliveryCountsNode = {
|
|
32
39
|
type: "object",
|
|
33
40
|
additionalProperties: false,
|
|
@@ -365,9 +372,18 @@ const defs = {
|
|
|
365
372
|
}
|
|
366
373
|
}
|
|
367
374
|
},
|
|
375
|
+
external: {
|
|
376
|
+
type: "array",
|
|
377
|
+
uniqueItems: true,
|
|
378
|
+
description: "Which groups of the external SIS roster were included. Human-triggered sends only; an Automation can never set it.",
|
|
379
|
+
items: {
|
|
380
|
+
type: "string",
|
|
381
|
+
enum: EXTERNAL_AUDIENCE_GROUPS
|
|
382
|
+
}
|
|
383
|
+
},
|
|
368
384
|
emergencyContacts: {
|
|
369
385
|
type: "boolean",
|
|
370
|
-
description: "
|
|
386
|
+
description: "Deprecated: superseded by `external`. A stored `true` reads as `external: [\"parents\"]`."
|
|
371
387
|
},
|
|
372
388
|
users: {
|
|
373
389
|
type: "array",
|
|
@@ -380,6 +396,27 @@ const defs = {
|
|
|
380
396
|
description: "Send-time delivery counts per audience. Absent for an audience that was not sent to.",
|
|
381
397
|
properties: {
|
|
382
398
|
internal: deliveryCountsNode,
|
|
399
|
+
external: {
|
|
400
|
+
type: "object",
|
|
401
|
+
additionalProperties: false,
|
|
402
|
+
required: [
|
|
403
|
+
"recipients",
|
|
404
|
+
"sent",
|
|
405
|
+
"failed"
|
|
406
|
+
],
|
|
407
|
+
properties: {
|
|
408
|
+
...deliveryCountsNode.properties,
|
|
409
|
+
byChannel: {
|
|
410
|
+
type: "object",
|
|
411
|
+
additionalProperties: false,
|
|
412
|
+
description: "Per-channel counts, present only for the channels attempted.",
|
|
413
|
+
properties: {
|
|
414
|
+
sms: deliveryCountsNode,
|
|
415
|
+
email: deliveryCountsNode
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
},
|
|
383
420
|
emergencyContacts: {
|
|
384
421
|
type: "object",
|
|
385
422
|
additionalProperties: false,
|
|
@@ -388,6 +425,7 @@ const defs = {
|
|
|
388
425
|
"sent",
|
|
389
426
|
"failed"
|
|
390
427
|
],
|
|
428
|
+
description: "Deprecated: superseded by `external`.",
|
|
391
429
|
properties: {
|
|
392
430
|
...deliveryCountsNode.properties,
|
|
393
431
|
byChannel: {
|
|
@@ -408,6 +446,6 @@ const defs = {
|
|
|
408
446
|
}
|
|
409
447
|
};
|
|
410
448
|
//#endregion
|
|
411
|
-
export { NOTIFICATION_CHANNELS, PLATFORM_ROLE_NAMES, TICKET_NOTIFICATION_EVENTS, defs as default, defs as definitionsSchema };
|
|
449
|
+
export { EXTERNAL_AUDIENCE_GROUPS, NOTIFICATION_CHANNELS, PLATFORM_ROLE_NAMES, TICKET_NOTIFICATION_EVENTS, defs as default, defs as definitionsSchema };
|
|
412
450
|
|
|
413
451
|
//# sourceMappingURL=definitions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","names":[],"sources":["../../.generated/schemas/definitions.ts"],"sourcesContent":["export const TICKET_NOTIFICATION_EVENTS = [\n \"ticketCreated\",\n \"ticketAssignedToMe\",\n \"addedAsCollaborator\",\n \"mentionedInTicket\",\n \"messageOnMyTicket\",\n \"ticketResolved\",\n \"ticketCreatedAsObserver\",\n \"messageAsObserver\",\n \"ticketResolvedAsObserver\",\n \"approvalRequested\",\n \"approvalDecided\",\n] as const;\n\nexport type TicketNotificationEvent =\n (typeof TICKET_NOTIFICATION_EVENTS)[number];\n\nexport const NOTIFICATION_CHANNELS = [\"email\", \"sms\", \"push\"] as const;\n\nexport type NotificationChannel = (typeof NOTIFICATION_CHANNELS)[number];\n\n/**\n * The platform roles an Audience may be selected by. The legacy `Guest` role a\n * permission entry may still carry is deliberately absent: nothing targets it.\n */\nexport const PLATFORM_ROLE_NAMES = [\n \"SuperAdmin\",\n \"Administrator\",\n \"Manager\",\n \"Agent\",\n \"User\",\n] as const;\n\nexport type PlatformRoleName = (typeof PLATFORM_ROLE_NAMES)[number];\n\nconst deliveryCountsNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"recipients\", \"sent\", \"failed\"],\n properties: {\n recipients: { type: \"integer\", minimum: 0 },\n sent: { type: \"integer\", minimum: 0 },\n failed: { type: \"integer\", minimum: 0 },\n },\n} as const;\n\nconst defs = {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"definitions.json\",\n title: \"Definitions\",\n definitions: {\n id: {\n type: \"string\",\n description: \"Identifier of the object.\",\n },\n systemId: {\n type: \"string\",\n description: \"Identifier of the object, directly related to the system.\",\n },\n systemData: {\n type: \"object\",\n },\n metadata: {\n type: \"object\",\n default: {},\n },\n date: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n file: {\n type: \"object\",\n required: [\"name\", \"type\", \"data\"],\n properties: {\n name: {\n type: \"string\",\n description: \"Name of the file.\",\n },\n type: {\n type: \"string\",\n description: \"MIME type of the file (e.g. application/pdf).\",\n },\n data: {\n type: \"string\",\n description: \"Base64-encoded data of the file.\",\n },\n },\n },\n address: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n line1: {\n type: \"string\",\n },\n line2: {\n type: \"string\",\n },\n line3: {\n type: \"string\",\n },\n city: {\n type: \"string\",\n },\n state: {\n type: \"string\",\n },\n postalCode: {\n type: \"string\",\n },\n countryCode: {\n type: \"string\",\n minLength: 2,\n maxLength: 2,\n },\n },\n },\n driver: {\n type: \"string\",\n description: \"Driver used to communicate with the object.\",\n enum: [\n \"adlink\",\n \"apex-american-audio\",\n \"avigilon-alta\",\n \"aws-kinesis\",\n \"bacnet\",\n \"benq\",\n \"butler\",\n \"comelit\",\n \"cool-automation\",\n \"crestron\",\n \"dell\",\n \"digital-watchdog\",\n \"distech\",\n \"dmp\",\n \"doorbird\",\n \"dormakaba\",\n \"dsc\",\n \"dsc-itv2\",\n \"earbridge\",\n \"ecobee\",\n \"epson\",\n \"geovision-rs\",\n \"geovision-as-manager\",\n \"honeywell-vista\",\n \"honeywell-resideo\",\n \"igor\",\n \"inncom\",\n \"isapi\",\n \"kohost-k7\",\n \"kohost\",\n \"lapi\",\n \"lg\",\n \"lg-webos\",\n \"linortek\",\n \"lirc\",\n \"mews\",\n \"mht\",\n \"mobile-mule\",\n \"mock\",\n \"modbus\",\n \"napco\",\n \"newline\",\n \"obix\",\n \"one-roster\",\n \"onvif\",\n \"orchid-fusion\",\n \"paxton\",\n \"pdk\",\n \"pelican-wireless\",\n \"power-shades\",\n \"rachio\",\n \"rebrandly\",\n \"relay\",\n \"reolink\",\n \"rtsp\",\n \"salto\",\n \"salto-irn\",\n \"samsung\",\n \"se\",\n \"sendgrid\",\n \"singlewire\",\n \"smartboard\",\n \"sonifi\",\n \"stay-n-touch\",\n \"storable\",\n \"twilio\",\n \"unifi\",\n \"valcom\",\n \"veracross\",\n \"verkada\",\n \"vivotek\",\n \"vizio\",\n \"wisenet\",\n \"zkteco\",\n \"cloudflare-images\",\n \"cloudflare-stream\",\n \"insperia-privacy\",\n ],\n },\n type: {\n type: \"string\",\n enum: [\n \"alarm\",\n \"camera\",\n \"courtesy\",\n \"dimmer\",\n \"gateway\",\n \"lock\",\n \"mediaSource\",\n \"motionSensor\",\n \"switch\",\n \"thermostat\",\n \"windowCovering\",\n ],\n },\n name: {\n type: \"string\",\n },\n alerts: {\n type: \"array\",\n uniqueItems: true,\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"status\", \"message\"],\n properties: {\n id: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n enum: [\n \"Battery\",\n \"Button\",\n \"Communication\",\n \"Config\",\n \"Cost\",\n \"Door Ajar\",\n \"Equipment\",\n \"Maintenance\",\n \"Motion\",\n \"Registration\",\n \"Temperature\",\n ],\n },\n status: {\n type: \"string\",\n enum: [\"Active\", \"Resolved\"],\n },\n message: {\n type: \"string\",\n },\n },\n },\n },\n supportedNotifications: {\n type: \"array\",\n uniqueItems: true,\n items: {\n enum: [\n \"button 1\",\n \"button 2\",\n \"button 3\",\n \"button 4\",\n \"button 5\",\n \"idle\",\n \"powerHasBeedApplied\",\n \"acMainsDisconnected\",\n \"acMainsReconnected\",\n \"replaceBattery\",\n \"replaceBatterySoon\",\n \"replaceBatteryNow\",\n \"batteryOk\",\n \"hardwareFailure\",\n \"softwareFailure\",\n \"hardwareFailureWithCode\",\n \"softwareFailureWithCode\",\n \"motionDetection\",\n \"airFilterNeedsCleaned\",\n \"airFilterNeedsReplaced\",\n \"smokeDetected\",\n \"outsideSafeTemperatureRange\",\n \"outsideSafeHumidityRange\",\n \"scheduleMaintenance\",\n \"doorAjar\",\n \"communicationFailure\",\n \"communicationOk\",\n \"burglarAlarm\",\n \"fireAlarm\",\n \"powerTrouble\",\n \"monitoringTrouble\",\n \"bellTrouble\",\n \"configIssue\",\n ],\n },\n },\n notification: {\n type: [\"object\", \"null\"],\n properties: {\n name: {\n type: \"string\",\n $ref: \"#/definitions/supportedNotifications/items\",\n },\n timestamp: {\n type: \"number\",\n minimum: 1655907956593,\n },\n description: {\n type: \"string\",\n },\n },\n },\n batteryLevel: {\n type: \"number\",\n minimum: 0,\n maximum: 100,\n },\n watts: {\n type: \"number\",\n minimum: 0,\n },\n revenue: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n date: {\n type: \"string\",\n format: \"date-time\",\n },\n price: {\n type: \"number\",\n },\n tax: {\n type: [\"number\", \"null\"],\n },\n },\n },\n },\n ticketNotificationEvent: {\n type: \"string\",\n enum: TICKET_NOTIFICATION_EVENTS,\n },\n notificationChannel: {\n type: \"string\",\n enum: NOTIFICATION_CHANNELS,\n },\n deliveryCounts: deliveryCountsNode,\n audience: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Who a people-facing broadcast was directed at, as the sender expressed it, plus the snapshot it resolved to. One shape for Announcements, SOS broadcasts and Automation notifications.\",\n properties: {\n to: {\n type: \"object\",\n additionalProperties: false,\n description:\n 'The User selector, one kind at a time. Absent or empty selects nobody; everyone is only ever the explicit `id: [\"*\"]` wildcard.',\n properties: {\n id: {\n type: \"array\",\n description:\n \"Named User ids, or the single wildcard `*` meaning everyone in scope.\",\n items: { type: \"string\" },\n },\n roles: {\n type: \"array\",\n items: { type: \"string\", enum: PLATFORM_ROLE_NAMES },\n },\n departmentIds: {\n type: \"array\",\n items: { type: \"string\" },\n },\n },\n },\n emergencyContacts: {\n type: \"boolean\",\n description:\n \"Whether the external SIS emergency-contact roster was included. Human-triggered sends only; an Automation can never set it.\",\n },\n users: {\n type: \"array\",\n description:\n \"Snapshot of the User ids the selector resolved to at send time.\",\n items: { type: \"string\" },\n },\n delivery: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Send-time delivery counts per audience. Absent for an audience that was not sent to.\",\n properties: {\n internal: deliveryCountsNode,\n emergencyContacts: {\n type: \"object\",\n additionalProperties: false,\n required: [\"recipients\", \"sent\", \"failed\"],\n properties: {\n ...deliveryCountsNode.properties,\n byChannel: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Per-channel counts, present only for the channels attempted.\",\n properties: {\n sms: deliveryCountsNode,\n email: deliveryCountsNode,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n} as const;\n\nexport type ISODateString = ReturnType<Date[\"toISOString\"]>;\n\nexport { defs as definitionsSchema };\nexport default defs;\n"],"mappings":";AAAA,MAAa,6BAA6B;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAKA,MAAa,wBAAwB;CAAC;CAAS;CAAO;AAAM;;;;;AAQ5D,MAAa,sBAAsB;CACjC;CACA;CACA;CACA;CACA;AACF;AAIA,MAAM,qBAAqB;CACzB,MAAM;CACN,sBAAsB;CACtB,UAAU;EAAC;EAAc;EAAQ;CAAQ;CACzC,YAAY;EACV,YAAY;GAAE,MAAM;GAAW,SAAS;EAAE;EAC1C,MAAM;GAAE,MAAM;GAAW,SAAS;EAAE;EACpC,QAAQ;GAAE,MAAM;GAAW,SAAS;EAAE;CACxC;AACF;AAEA,MAAM,OAAO;CACX,SAAS;CACT,KAAK;CACL,OAAO;CACP,aAAa;EACX,IAAI;GACF,MAAM;GACN,aAAa;EACf;EACA,UAAU;GACR,MAAM;GACN,aAAa;EACf;EACA,YAAY,EACV,MAAM,SACR;EACA,UAAU;GACR,MAAM;GACN,SAAS,CAAC;EACZ;EACA,MAAM;GACJ,MAAM,CAAC,UAAU,QAAQ;GACzB,QAAQ;EACV;EACA,MAAM;GACJ,MAAM;GACN,UAAU;IAAC;IAAQ;IAAQ;GAAM;GACjC,YAAY;IACV,MAAM;KACJ,MAAM;KACN,aAAa;IACf;IACA,MAAM;KACJ,MAAM;KACN,aAAa;IACf;IACA,MAAM;KACJ,MAAM;KACN,aAAa;IACf;GACF;EACF;EACA,SAAS;GACP,MAAM;GACN,sBAAsB;GACtB,YAAY;IACV,IAAI,EACF,MAAM,SACR;IACA,OAAO,EACL,MAAM,SACR;IACA,OAAO,EACL,MAAM,SACR;IACA,OAAO,EACL,MAAM,SACR;IACA,MAAM,EACJ,MAAM,SACR;IACA,OAAO,EACL,MAAM,SACR;IACA,YAAY,EACV,MAAM,SACR;IACA,aAAa;KACX,MAAM;KACN,WAAW;KACX,WAAW;IACb;GACF;EACF;EACA,QAAQ;GACN,MAAM;GACN,aAAa;GACb,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;EACF;EACA,MAAM;GACJ,MAAM;GACN,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;EACF;EACA,MAAM,EACJ,MAAM,SACR;EACA,QAAQ;GACN,MAAM;GACN,aAAa;GACb,OAAO;IACL,MAAM;IACN,sBAAsB;IACtB,UAAU;KAAC;KAAQ;KAAU;IAAS;IACtC,YAAY;KACV,IAAI,EACF,MAAM,SACR;KACA,MAAM;MACJ,MAAM;MACN,MAAM;OACJ;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACF;KACF;KACA,QAAQ;MACN,MAAM;MACN,MAAM,CAAC,UAAU,UAAU;KAC7B;KACA,SAAS,EACP,MAAM,SACR;IACF;GACF;EACF;EACA,wBAAwB;GACtB,MAAM;GACN,aAAa;GACb,OAAO,EACL,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF,EACF;EACF;EACA,cAAc;GACZ,MAAM,CAAC,UAAU,MAAM;GACvB,YAAY;IACV,MAAM;KACJ,MAAM;KACN,MAAM;IACR;IACA,WAAW;KACT,MAAM;KACN,SAAS;IACX;IACA,aAAa,EACX,MAAM,SACR;GACF;EACF;EACA,cAAc;GACZ,MAAM;GACN,SAAS;GACT,SAAS;EACX;EACA,OAAO;GACL,MAAM;GACN,SAAS;EACX;EACA,SAAS;GACP,MAAM;GACN,OAAO;IACL,MAAM;IACN,YAAY;KACV,IAAI,EACF,MAAM,mCACR;KACA,MAAM,EACJ,MAAM,SACR;KACA,MAAM;MACJ,MAAM;MACN,QAAQ;KACV;KACA,OAAO,EACL,MAAM,SACR;KACA,KAAK,EACH,MAAM,CAAC,UAAU,MAAM,EACzB;IACF;GACF;EACF;EACA,yBAAyB;GACvB,MAAM;GACN,MAAM;EACR;EACA,qBAAqB;GACnB,MAAM;GACN,MAAM;EACR;EACA,gBAAgB;EAChB,UAAU;GACR,MAAM;GACN,sBAAsB;GACtB,aACE;GACF,YAAY;IACV,IAAI;KACF,MAAM;KACN,sBAAsB;KACtB,aACE;KACF,YAAY;MACV,IAAI;OACF,MAAM;OACN,aACE;OACF,OAAO,EAAE,MAAM,SAAS;MAC1B;MACA,OAAO;OACL,MAAM;OACN,OAAO;QAAE,MAAM;QAAU,MAAM;OAAoB;MACrD;MACA,eAAe;OACb,MAAM;OACN,OAAO,EAAE,MAAM,SAAS;MAC1B;KACF;IACF;IACA,mBAAmB;KACjB,MAAM;KACN,aACE;IACJ;IACA,OAAO;KACL,MAAM;KACN,aACE;KACF,OAAO,EAAE,MAAM,SAAS;IAC1B;IACA,UAAU;KACR,MAAM;KACN,sBAAsB;KACtB,aACE;KACF,YAAY;MACV,UAAU;MACV,mBAAmB;OACjB,MAAM;OACN,sBAAsB;OACtB,UAAU;QAAC;QAAc;QAAQ;OAAQ;OACzC,YAAY;QACV,GAAG,mBAAmB;QACtB,WAAW;SACT,MAAM;SACN,sBAAsB;SACtB,aACE;SACF,YAAY;UACV,KAAK;UACL,OAAO;SACT;QACF;OACF;MACF;KACF;IACF;GACF;EACF;CACF;AACF"}
|
|
1
|
+
{"version":3,"file":"definitions.js","names":[],"sources":["../../.generated/schemas/definitions.ts"],"sourcesContent":["export const TICKET_NOTIFICATION_EVENTS = [\n \"ticketCreated\",\n \"ticketAssignedToMe\",\n \"addedAsCollaborator\",\n \"mentionedInTicket\",\n \"messageOnMyTicket\",\n \"ticketResolved\",\n \"ticketCreatedAsObserver\",\n \"messageAsObserver\",\n \"ticketResolvedAsObserver\",\n \"approvalRequested\",\n \"approvalDecided\",\n] as const;\n\nexport type TicketNotificationEvent =\n (typeof TICKET_NOTIFICATION_EVENTS)[number];\n\nexport const NOTIFICATION_CHANNELS = [\"email\", \"sms\", \"push\"] as const;\n\nexport type NotificationChannel = (typeof NOTIFICATION_CHANNELS)[number];\n\n/**\n * The platform roles an Audience may be selected by. The legacy `Guest` role a\n * permission entry may still carry is deliberately absent: nothing targets it.\n */\nexport const PLATFORM_ROLE_NAMES = [\n \"SuperAdmin\",\n \"Administrator\",\n \"Manager\",\n \"Agent\",\n \"User\",\n] as const;\n\nexport type PlatformRoleName = (typeof PLATFORM_ROLE_NAMES)[number];\n\n/**\n * The people outside the platform a broadcast may name, sourced from the SIS\n * roster. `students` is every system user the SIS marks as a Student;\n * `parents` is everybody else on the roster — every emergency-contact\n * relationship the source system carries, whatever it calls it.\n */\nexport const EXTERNAL_AUDIENCE_GROUPS = [\"students\", \"parents\"] as const;\n\nexport type ExternalAudienceGroup = (typeof EXTERNAL_AUDIENCE_GROUPS)[number];\n\nconst deliveryCountsNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"recipients\", \"sent\", \"failed\"],\n properties: {\n recipients: { type: \"integer\", minimum: 0 },\n sent: { type: \"integer\", minimum: 0 },\n failed: { type: \"integer\", minimum: 0 },\n },\n} as const;\n\nconst defs = {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"definitions.json\",\n title: \"Definitions\",\n definitions: {\n id: {\n type: \"string\",\n description: \"Identifier of the object.\",\n },\n systemId: {\n type: \"string\",\n description: \"Identifier of the object, directly related to the system.\",\n },\n systemData: {\n type: \"object\",\n },\n metadata: {\n type: \"object\",\n default: {},\n },\n date: {\n type: [\"string\", \"object\"],\n format: \"date-time\",\n },\n file: {\n type: \"object\",\n required: [\"name\", \"type\", \"data\"],\n properties: {\n name: {\n type: \"string\",\n description: \"Name of the file.\",\n },\n type: {\n type: \"string\",\n description: \"MIME type of the file (e.g. application/pdf).\",\n },\n data: {\n type: \"string\",\n description: \"Base64-encoded data of the file.\",\n },\n },\n },\n address: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n line1: {\n type: \"string\",\n },\n line2: {\n type: \"string\",\n },\n line3: {\n type: \"string\",\n },\n city: {\n type: \"string\",\n },\n state: {\n type: \"string\",\n },\n postalCode: {\n type: \"string\",\n },\n countryCode: {\n type: \"string\",\n minLength: 2,\n maxLength: 2,\n },\n },\n },\n driver: {\n type: \"string\",\n description: \"Driver used to communicate with the object.\",\n enum: [\n \"adlink\",\n \"apex-american-audio\",\n \"avigilon-alta\",\n \"aws-kinesis\",\n \"bacnet\",\n \"benq\",\n \"butler\",\n \"comelit\",\n \"cool-automation\",\n \"crestron\",\n \"dell\",\n \"digital-watchdog\",\n \"distech\",\n \"dmp\",\n \"doorbird\",\n \"dormakaba\",\n \"dsc\",\n \"dsc-itv2\",\n \"earbridge\",\n \"ecobee\",\n \"epson\",\n \"geovision-rs\",\n \"geovision-as-manager\",\n \"honeywell-vista\",\n \"honeywell-resideo\",\n \"igor\",\n \"inncom\",\n \"isapi\",\n \"kohost-k7\",\n \"kohost\",\n \"lapi\",\n \"lg\",\n \"lg-webos\",\n \"linortek\",\n \"lirc\",\n \"mews\",\n \"mht\",\n \"mobile-mule\",\n \"mock\",\n \"modbus\",\n \"napco\",\n \"newline\",\n \"obix\",\n \"one-roster\",\n \"onvif\",\n \"orchid-fusion\",\n \"paxton\",\n \"pdk\",\n \"pelican-wireless\",\n \"power-shades\",\n \"rachio\",\n \"rebrandly\",\n \"relay\",\n \"reolink\",\n \"rtsp\",\n \"salto\",\n \"salto-irn\",\n \"samsung\",\n \"se\",\n \"sendgrid\",\n \"singlewire\",\n \"smartboard\",\n \"sonifi\",\n \"stay-n-touch\",\n \"storable\",\n \"twilio\",\n \"unifi\",\n \"valcom\",\n \"veracross\",\n \"verkada\",\n \"vivotek\",\n \"vizio\",\n \"wisenet\",\n \"zkteco\",\n \"cloudflare-images\",\n \"cloudflare-stream\",\n \"insperia-privacy\",\n ],\n },\n type: {\n type: \"string\",\n enum: [\n \"alarm\",\n \"camera\",\n \"courtesy\",\n \"dimmer\",\n \"gateway\",\n \"lock\",\n \"mediaSource\",\n \"motionSensor\",\n \"switch\",\n \"thermostat\",\n \"windowCovering\",\n ],\n },\n name: {\n type: \"string\",\n },\n alerts: {\n type: \"array\",\n uniqueItems: true,\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"status\", \"message\"],\n properties: {\n id: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n enum: [\n \"Battery\",\n \"Button\",\n \"Communication\",\n \"Config\",\n \"Cost\",\n \"Door Ajar\",\n \"Equipment\",\n \"Maintenance\",\n \"Motion\",\n \"Registration\",\n \"Temperature\",\n ],\n },\n status: {\n type: \"string\",\n enum: [\"Active\", \"Resolved\"],\n },\n message: {\n type: \"string\",\n },\n },\n },\n },\n supportedNotifications: {\n type: \"array\",\n uniqueItems: true,\n items: {\n enum: [\n \"button 1\",\n \"button 2\",\n \"button 3\",\n \"button 4\",\n \"button 5\",\n \"idle\",\n \"powerHasBeedApplied\",\n \"acMainsDisconnected\",\n \"acMainsReconnected\",\n \"replaceBattery\",\n \"replaceBatterySoon\",\n \"replaceBatteryNow\",\n \"batteryOk\",\n \"hardwareFailure\",\n \"softwareFailure\",\n \"hardwareFailureWithCode\",\n \"softwareFailureWithCode\",\n \"motionDetection\",\n \"airFilterNeedsCleaned\",\n \"airFilterNeedsReplaced\",\n \"smokeDetected\",\n \"outsideSafeTemperatureRange\",\n \"outsideSafeHumidityRange\",\n \"scheduleMaintenance\",\n \"doorAjar\",\n \"communicationFailure\",\n \"communicationOk\",\n \"burglarAlarm\",\n \"fireAlarm\",\n \"powerTrouble\",\n \"monitoringTrouble\",\n \"bellTrouble\",\n \"configIssue\",\n ],\n },\n },\n notification: {\n type: [\"object\", \"null\"],\n properties: {\n name: {\n type: \"string\",\n $ref: \"#/definitions/supportedNotifications/items\",\n },\n timestamp: {\n type: \"number\",\n minimum: 1655907956593,\n },\n description: {\n type: \"string\",\n },\n },\n },\n batteryLevel: {\n type: \"number\",\n minimum: 0,\n maximum: 100,\n },\n watts: {\n type: \"number\",\n minimum: 0,\n },\n revenue: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n date: {\n type: \"string\",\n format: \"date-time\",\n },\n price: {\n type: \"number\",\n },\n tax: {\n type: [\"number\", \"null\"],\n },\n },\n },\n },\n ticketNotificationEvent: {\n type: \"string\",\n enum: TICKET_NOTIFICATION_EVENTS,\n },\n notificationChannel: {\n type: \"string\",\n enum: NOTIFICATION_CHANNELS,\n },\n deliveryCounts: deliveryCountsNode,\n audience: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Who a people-facing broadcast was directed at, as the sender expressed it, plus the snapshot it resolved to. One shape for Announcements, SOS broadcasts and Automation notifications.\",\n properties: {\n to: {\n type: \"object\",\n additionalProperties: false,\n description:\n 'The User selector, one kind at a time. Absent or empty selects nobody; everyone is only ever the explicit `id: [\"*\"]` wildcard.',\n properties: {\n id: {\n type: \"array\",\n description:\n \"Named User ids, or the single wildcard `*` meaning everyone in scope.\",\n items: { type: \"string\" },\n },\n roles: {\n type: \"array\",\n items: { type: \"string\", enum: PLATFORM_ROLE_NAMES },\n },\n departmentIds: {\n type: \"array\",\n items: { type: \"string\" },\n },\n },\n },\n external: {\n type: \"array\",\n uniqueItems: true,\n description:\n \"Which groups of the external SIS roster were included. Human-triggered sends only; an Automation can never set it.\",\n items: { type: \"string\", enum: EXTERNAL_AUDIENCE_GROUPS },\n },\n emergencyContacts: {\n type: \"boolean\",\n description:\n 'Deprecated: superseded by `external`. A stored `true` reads as `external: [\"parents\"]`.',\n },\n users: {\n type: \"array\",\n description:\n \"Snapshot of the User ids the selector resolved to at send time.\",\n items: { type: \"string\" },\n },\n delivery: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Send-time delivery counts per audience. Absent for an audience that was not sent to.\",\n properties: {\n internal: deliveryCountsNode,\n external: {\n type: \"object\",\n additionalProperties: false,\n required: [\"recipients\", \"sent\", \"failed\"],\n properties: {\n ...deliveryCountsNode.properties,\n byChannel: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Per-channel counts, present only for the channels attempted.\",\n properties: {\n sms: deliveryCountsNode,\n email: deliveryCountsNode,\n },\n },\n },\n },\n emergencyContacts: {\n type: \"object\",\n additionalProperties: false,\n required: [\"recipients\", \"sent\", \"failed\"],\n description: \"Deprecated: superseded by `external`.\",\n properties: {\n ...deliveryCountsNode.properties,\n byChannel: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"Per-channel counts, present only for the channels attempted.\",\n properties: {\n sms: deliveryCountsNode,\n email: deliveryCountsNode,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n} as const;\n\nexport type ISODateString = ReturnType<Date[\"toISOString\"]>;\n\nexport { defs as definitionsSchema };\nexport default defs;\n"],"mappings":";AAAA,MAAa,6BAA6B;CACxC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAKA,MAAa,wBAAwB;CAAC;CAAS;CAAO;AAAM;;;;;AAQ5D,MAAa,sBAAsB;CACjC;CACA;CACA;CACA;CACA;AACF;;;;;;;AAUA,MAAa,2BAA2B,CAAC,YAAY,SAAS;AAI9D,MAAM,qBAAqB;CACzB,MAAM;CACN,sBAAsB;CACtB,UAAU;EAAC;EAAc;EAAQ;CAAQ;CACzC,YAAY;EACV,YAAY;GAAE,MAAM;GAAW,SAAS;EAAE;EAC1C,MAAM;GAAE,MAAM;GAAW,SAAS;EAAE;EACpC,QAAQ;GAAE,MAAM;GAAW,SAAS;EAAE;CACxC;AACF;AAEA,MAAM,OAAO;CACX,SAAS;CACT,KAAK;CACL,OAAO;CACP,aAAa;EACX,IAAI;GACF,MAAM;GACN,aAAa;EACf;EACA,UAAU;GACR,MAAM;GACN,aAAa;EACf;EACA,YAAY,EACV,MAAM,SACR;EACA,UAAU;GACR,MAAM;GACN,SAAS,CAAC;EACZ;EACA,MAAM;GACJ,MAAM,CAAC,UAAU,QAAQ;GACzB,QAAQ;EACV;EACA,MAAM;GACJ,MAAM;GACN,UAAU;IAAC;IAAQ;IAAQ;GAAM;GACjC,YAAY;IACV,MAAM;KACJ,MAAM;KACN,aAAa;IACf;IACA,MAAM;KACJ,MAAM;KACN,aAAa;IACf;IACA,MAAM;KACJ,MAAM;KACN,aAAa;IACf;GACF;EACF;EACA,SAAS;GACP,MAAM;GACN,sBAAsB;GACtB,YAAY;IACV,IAAI,EACF,MAAM,SACR;IACA,OAAO,EACL,MAAM,SACR;IACA,OAAO,EACL,MAAM,SACR;IACA,OAAO,EACL,MAAM,SACR;IACA,MAAM,EACJ,MAAM,SACR;IACA,OAAO,EACL,MAAM,SACR;IACA,YAAY,EACV,MAAM,SACR;IACA,aAAa;KACX,MAAM;KACN,WAAW;KACX,WAAW;IACb;GACF;EACF;EACA,QAAQ;GACN,MAAM;GACN,aAAa;GACb,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;EACF;EACA,MAAM;GACJ,MAAM;GACN,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF;EACF;EACA,MAAM,EACJ,MAAM,SACR;EACA,QAAQ;GACN,MAAM;GACN,aAAa;GACb,OAAO;IACL,MAAM;IACN,sBAAsB;IACtB,UAAU;KAAC;KAAQ;KAAU;IAAS;IACtC,YAAY;KACV,IAAI,EACF,MAAM,SACR;KACA,MAAM;MACJ,MAAM;MACN,MAAM;OACJ;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACF;KACF;KACA,QAAQ;MACN,MAAM;MACN,MAAM,CAAC,UAAU,UAAU;KAC7B;KACA,SAAS,EACP,MAAM,SACR;IACF;GACF;EACF;EACA,wBAAwB;GACtB,MAAM;GACN,aAAa;GACb,OAAO,EACL,MAAM;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACF,EACF;EACF;EACA,cAAc;GACZ,MAAM,CAAC,UAAU,MAAM;GACvB,YAAY;IACV,MAAM;KACJ,MAAM;KACN,MAAM;IACR;IACA,WAAW;KACT,MAAM;KACN,SAAS;IACX;IACA,aAAa,EACX,MAAM,SACR;GACF;EACF;EACA,cAAc;GACZ,MAAM;GACN,SAAS;GACT,SAAS;EACX;EACA,OAAO;GACL,MAAM;GACN,SAAS;EACX;EACA,SAAS;GACP,MAAM;GACN,OAAO;IACL,MAAM;IACN,YAAY;KACV,IAAI,EACF,MAAM,mCACR;KACA,MAAM,EACJ,MAAM,SACR;KACA,MAAM;MACJ,MAAM;MACN,QAAQ;KACV;KACA,OAAO,EACL,MAAM,SACR;KACA,KAAK,EACH,MAAM,CAAC,UAAU,MAAM,EACzB;IACF;GACF;EACF;EACA,yBAAyB;GACvB,MAAM;GACN,MAAM;EACR;EACA,qBAAqB;GACnB,MAAM;GACN,MAAM;EACR;EACA,gBAAgB;EAChB,UAAU;GACR,MAAM;GACN,sBAAsB;GACtB,aACE;GACF,YAAY;IACV,IAAI;KACF,MAAM;KACN,sBAAsB;KACtB,aACE;KACF,YAAY;MACV,IAAI;OACF,MAAM;OACN,aACE;OACF,OAAO,EAAE,MAAM,SAAS;MAC1B;MACA,OAAO;OACL,MAAM;OACN,OAAO;QAAE,MAAM;QAAU,MAAM;OAAoB;MACrD;MACA,eAAe;OACb,MAAM;OACN,OAAO,EAAE,MAAM,SAAS;MAC1B;KACF;IACF;IACA,UAAU;KACR,MAAM;KACN,aAAa;KACb,aACE;KACF,OAAO;MAAE,MAAM;MAAU,MAAM;KAAyB;IAC1D;IACA,mBAAmB;KACjB,MAAM;KACN,aACE;IACJ;IACA,OAAO;KACL,MAAM;KACN,aACE;KACF,OAAO,EAAE,MAAM,SAAS;IAC1B;IACA,UAAU;KACR,MAAM;KACN,sBAAsB;KACtB,aACE;KACF,YAAY;MACV,UAAU;MACV,UAAU;OACR,MAAM;OACN,sBAAsB;OACtB,UAAU;QAAC;QAAc;QAAQ;OAAQ;OACzC,YAAY;QACV,GAAG,mBAAmB;QACtB,WAAW;SACT,MAAM;SACN,sBAAsB;SACtB,aACE;SACF,YAAY;UACV,KAAK;UACL,OAAO;SACT;QACF;OACF;MACF;MACA,mBAAmB;OACjB,MAAM;OACN,sBAAsB;OACtB,UAAU;QAAC;QAAc;QAAQ;OAAQ;OACzC,aAAa;OACb,YAAY;QACV,GAAG,mBAAmB;QACtB,WAAW;SACT,MAAM;SACN,sBAAsB;SACtB,aACE;SACF,YAAY;UACV,KAAK;UACL,OAAO;SACT;QACF;OACF;MACF;KACF;IACF;GACF;EACF;CACF;AACF"}
|
|
@@ -111,7 +111,39 @@ export declare const sosEventSchema: {
|
|
|
111
111
|
};
|
|
112
112
|
readonly audience: {
|
|
113
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
|
|
114
|
+
readonly description: "Who this entry was directed at, and who it resolved to. `activation` entries always carry the everyone wildcard; `update` and `final` entries carry whatever the sender named — an empty selector reaches nobody.";
|
|
115
|
+
};
|
|
116
|
+
readonly channels: {
|
|
117
|
+
readonly type: "array";
|
|
118
|
+
readonly items: {
|
|
119
|
+
readonly type: "string";
|
|
120
|
+
readonly enum: readonly ["sms", "email"];
|
|
121
|
+
};
|
|
122
|
+
readonly description: "Personal channels the sender selected for this entry. Absent on entries recorded before channel selection existed, which sent over both.";
|
|
123
|
+
};
|
|
124
|
+
readonly surfaces: {
|
|
125
|
+
readonly type: "object";
|
|
126
|
+
readonly additionalProperties: false;
|
|
127
|
+
readonly required: readonly ["targets", "sent", "failed", "skipped"];
|
|
128
|
+
readonly description: "Rollup of the PA-surface dispatch, present when the entry named surfaces. `targets` is the devices the selectors resolved to; `skipped` counts drivers that cannot render content.";
|
|
129
|
+
readonly properties: {
|
|
130
|
+
readonly targets: {
|
|
131
|
+
readonly type: "integer";
|
|
132
|
+
readonly minimum: 0;
|
|
133
|
+
};
|
|
134
|
+
readonly sent: {
|
|
135
|
+
readonly type: "integer";
|
|
136
|
+
readonly minimum: 0;
|
|
137
|
+
};
|
|
138
|
+
readonly failed: {
|
|
139
|
+
readonly type: "integer";
|
|
140
|
+
readonly minimum: 0;
|
|
141
|
+
};
|
|
142
|
+
readonly skipped: {
|
|
143
|
+
readonly type: "integer";
|
|
144
|
+
readonly minimum: 0;
|
|
145
|
+
};
|
|
146
|
+
};
|
|
115
147
|
};
|
|
116
148
|
readonly deliveryStatus: {
|
|
117
149
|
readonly type: "object";
|
|
@@ -163,7 +195,7 @@ export declare const sosEventSchema: {
|
|
|
163
195
|
};
|
|
164
196
|
};
|
|
165
197
|
};
|
|
166
|
-
readonly
|
|
198
|
+
readonly external: {
|
|
167
199
|
readonly type: "object";
|
|
168
200
|
readonly additionalProperties: false;
|
|
169
201
|
readonly description: "Per-channel live outcomes for one audience.";
|
|
@@ -290,6 +322,68 @@ export declare const sosEventSchema: {
|
|
|
290
322
|
}];
|
|
291
323
|
};
|
|
292
324
|
};
|
|
325
|
+
readonly notes: {
|
|
326
|
+
readonly type: "array";
|
|
327
|
+
readonly default: readonly [];
|
|
328
|
+
readonly description: "Append-only, internal-only post-incident notes. Kept outside the timeline: a note is for the record, never something that was broadcast.";
|
|
329
|
+
readonly items: {
|
|
330
|
+
readonly type: "object";
|
|
331
|
+
readonly additionalProperties: false;
|
|
332
|
+
readonly required: readonly ["id", "text", "by", "at"];
|
|
333
|
+
readonly properties: {
|
|
334
|
+
readonly id: {
|
|
335
|
+
readonly type: "string";
|
|
336
|
+
readonly description: "Unique identifier for the note.";
|
|
337
|
+
};
|
|
338
|
+
readonly text: {
|
|
339
|
+
readonly type: "string";
|
|
340
|
+
readonly description: "Internal, plain-text note body. Never broadcast.";
|
|
341
|
+
};
|
|
342
|
+
readonly by: {
|
|
343
|
+
readonly type: readonly ["object", "null"];
|
|
344
|
+
readonly additionalProperties: false;
|
|
345
|
+
readonly required: readonly ["id", "discriminator"];
|
|
346
|
+
readonly properties: {
|
|
347
|
+
readonly id: {
|
|
348
|
+
readonly type: "string";
|
|
349
|
+
};
|
|
350
|
+
readonly discriminator: {
|
|
351
|
+
readonly type: "string";
|
|
352
|
+
readonly enum: readonly ["user", "device", "automation"];
|
|
353
|
+
};
|
|
354
|
+
};
|
|
355
|
+
readonly description: "Actor that wrote the note; null when unattributed.";
|
|
356
|
+
};
|
|
357
|
+
readonly at: {
|
|
358
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
359
|
+
readonly description: "When the note was recorded.";
|
|
360
|
+
};
|
|
361
|
+
};
|
|
362
|
+
};
|
|
363
|
+
};
|
|
364
|
+
readonly report: {
|
|
365
|
+
readonly type: "object";
|
|
366
|
+
readonly additionalProperties: false;
|
|
367
|
+
readonly required: readonly ["fileId", "url", "filename", "contentHash", "renderedAt"];
|
|
368
|
+
readonly description: "The most recently minted incident-report PDF, kept so a re-export of an unchanged, ended incident can reuse the file instead of rendering again. `contentHash` fingerprints the rendered content (excluding the generated-at stamp).";
|
|
369
|
+
readonly properties: {
|
|
370
|
+
readonly fileId: {
|
|
371
|
+
readonly type: "string";
|
|
372
|
+
};
|
|
373
|
+
readonly url: {
|
|
374
|
+
readonly type: "string";
|
|
375
|
+
};
|
|
376
|
+
readonly filename: {
|
|
377
|
+
readonly type: "string";
|
|
378
|
+
};
|
|
379
|
+
readonly contentHash: {
|
|
380
|
+
readonly type: "string";
|
|
381
|
+
};
|
|
382
|
+
readonly renderedAt: {
|
|
383
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
384
|
+
};
|
|
385
|
+
};
|
|
386
|
+
};
|
|
293
387
|
readonly createdAt: {
|
|
294
388
|
readonly $ref: "definitions.json#/definitions/date";
|
|
295
389
|
readonly description: "When the SOS Event was created.";
|
|
@@ -307,6 +401,7 @@ export declare const sosEventSchema: {
|
|
|
307
401
|
};
|
|
308
402
|
export type SOSEventSchema = FromSchema<typeof sosEventSchema, {
|
|
309
403
|
references: [typeof defs];
|
|
404
|
+
keepDefaultedPropertiesOptional: true;
|
|
310
405
|
deserialize: [
|
|
311
406
|
{
|
|
312
407
|
pattern: {
|
package/dist/schemas/sosEvent.js
CHANGED
|
@@ -86,7 +86,44 @@ const broadcastEntryNode = {
|
|
|
86
86
|
},
|
|
87
87
|
audience: {
|
|
88
88
|
$ref: "definitions.json#/definitions/audience",
|
|
89
|
-
description: "Who this entry was directed at, and who it resolved to. `activation` and `final` entries
|
|
89
|
+
description: "Who this entry was directed at, and who it resolved to. `activation` entries always carry the everyone wildcard; `update` and `final` entries carry whatever the sender named — an empty selector reaches nobody."
|
|
90
|
+
},
|
|
91
|
+
channels: {
|
|
92
|
+
type: "array",
|
|
93
|
+
items: {
|
|
94
|
+
type: "string",
|
|
95
|
+
enum: ["sms", "email"]
|
|
96
|
+
},
|
|
97
|
+
description: "Personal channels the sender selected for this entry. Absent on entries recorded before channel selection existed, which sent over both."
|
|
98
|
+
},
|
|
99
|
+
surfaces: {
|
|
100
|
+
type: "object",
|
|
101
|
+
additionalProperties: false,
|
|
102
|
+
required: [
|
|
103
|
+
"targets",
|
|
104
|
+
"sent",
|
|
105
|
+
"failed",
|
|
106
|
+
"skipped"
|
|
107
|
+
],
|
|
108
|
+
description: "Rollup of the PA-surface dispatch, present when the entry named surfaces. `targets` is the devices the selectors resolved to; `skipped` counts drivers that cannot render content.",
|
|
109
|
+
properties: {
|
|
110
|
+
targets: {
|
|
111
|
+
type: "integer",
|
|
112
|
+
minimum: 0
|
|
113
|
+
},
|
|
114
|
+
sent: {
|
|
115
|
+
type: "integer",
|
|
116
|
+
minimum: 0
|
|
117
|
+
},
|
|
118
|
+
failed: {
|
|
119
|
+
type: "integer",
|
|
120
|
+
minimum: 0
|
|
121
|
+
},
|
|
122
|
+
skipped: {
|
|
123
|
+
type: "integer",
|
|
124
|
+
minimum: 0
|
|
125
|
+
}
|
|
126
|
+
}
|
|
90
127
|
},
|
|
91
128
|
deliveryStatus: {
|
|
92
129
|
type: "object",
|
|
@@ -94,7 +131,7 @@ const broadcastEntryNode = {
|
|
|
94
131
|
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
132
|
properties: {
|
|
96
133
|
internal: audienceDeliveryNode,
|
|
97
|
-
|
|
134
|
+
external: audienceDeliveryNode
|
|
98
135
|
}
|
|
99
136
|
}
|
|
100
137
|
}
|
|
@@ -187,6 +224,34 @@ const automationRunEntryNode = {
|
|
|
187
224
|
}
|
|
188
225
|
}
|
|
189
226
|
};
|
|
227
|
+
const noteNode = {
|
|
228
|
+
type: "object",
|
|
229
|
+
additionalProperties: false,
|
|
230
|
+
required: [
|
|
231
|
+
"id",
|
|
232
|
+
"text",
|
|
233
|
+
"by",
|
|
234
|
+
"at"
|
|
235
|
+
],
|
|
236
|
+
properties: {
|
|
237
|
+
id: {
|
|
238
|
+
type: "string",
|
|
239
|
+
description: "Unique identifier for the note."
|
|
240
|
+
},
|
|
241
|
+
text: {
|
|
242
|
+
type: "string",
|
|
243
|
+
description: "Internal, plain-text note body. Never broadcast."
|
|
244
|
+
},
|
|
245
|
+
by: {
|
|
246
|
+
...sosActorNode,
|
|
247
|
+
description: "Actor that wrote the note; null when unattributed."
|
|
248
|
+
},
|
|
249
|
+
at: {
|
|
250
|
+
$ref: "definitions.json#/definitions/date",
|
|
251
|
+
description: "When the note was recorded."
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
};
|
|
190
255
|
const sosEventSchema = {
|
|
191
256
|
$schema: "http://json-schema.org/draft-07/schema",
|
|
192
257
|
$id: "sosEvent.json",
|
|
@@ -242,6 +307,31 @@ const sosEventSchema = {
|
|
|
242
307
|
description: "Append-only timeline. The first entry is the `activation`; later entries are operator `update`s, automation runs, and a closing `final`.",
|
|
243
308
|
items: { oneOf: [broadcastEntryNode, automationRunEntryNode] }
|
|
244
309
|
},
|
|
310
|
+
notes: {
|
|
311
|
+
type: "array",
|
|
312
|
+
default: [],
|
|
313
|
+
description: "Append-only, internal-only post-incident notes. Kept outside the timeline: a note is for the record, never something that was broadcast.",
|
|
314
|
+
items: noteNode
|
|
315
|
+
},
|
|
316
|
+
report: {
|
|
317
|
+
type: "object",
|
|
318
|
+
additionalProperties: false,
|
|
319
|
+
required: [
|
|
320
|
+
"fileId",
|
|
321
|
+
"url",
|
|
322
|
+
"filename",
|
|
323
|
+
"contentHash",
|
|
324
|
+
"renderedAt"
|
|
325
|
+
],
|
|
326
|
+
description: "The most recently minted incident-report PDF, kept so a re-export of an unchanged, ended incident can reuse the file instead of rendering again. `contentHash` fingerprints the rendered content (excluding the generated-at stamp).",
|
|
327
|
+
properties: {
|
|
328
|
+
fileId: { type: "string" },
|
|
329
|
+
url: { type: "string" },
|
|
330
|
+
filename: { type: "string" },
|
|
331
|
+
contentHash: { type: "string" },
|
|
332
|
+
renderedAt: { $ref: "definitions.json#/definitions/date" }
|
|
333
|
+
}
|
|
334
|
+
},
|
|
245
335
|
createdAt: {
|
|
246
336
|
$ref: "definitions.json#/definitions/date",
|
|
247
337
|
description: "When the SOS Event was created."
|
|
@@ -1 +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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"}
|
|
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` entries always carry the everyone wildcard; `update` and `final` entries carry whatever the sender named — an empty selector reaches nobody.\",\n },\n channels: {\n type: \"array\",\n items: { type: \"string\", enum: [\"sms\", \"email\"] },\n description:\n \"Personal channels the sender selected for this entry. Absent on entries recorded before channel selection existed, which sent over both.\",\n },\n surfaces: {\n type: \"object\",\n additionalProperties: false,\n required: [\"targets\", \"sent\", \"failed\", \"skipped\"],\n description:\n \"Rollup of the PA-surface dispatch, present when the entry named surfaces. `targets` is the devices the selectors resolved to; `skipped` counts drivers that cannot render content.\",\n properties: {\n targets: { type: \"integer\", minimum: 0 },\n sent: { type: \"integer\", minimum: 0 },\n failed: { type: \"integer\", minimum: 0 },\n skipped: { type: \"integer\", minimum: 0 },\n },\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 external: 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\nconst noteNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"text\", \"by\", \"at\"],\n properties: {\n id: {\n type: \"string\",\n description: \"Unique identifier for the note.\",\n },\n text: {\n type: \"string\",\n description: \"Internal, plain-text note body. Never broadcast.\",\n },\n by: {\n ...sosActorNode,\n description: \"Actor that wrote the note; null when unattributed.\",\n },\n at: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the note was recorded.\",\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 notes: {\n type: \"array\",\n default: [],\n description:\n \"Append-only, internal-only post-incident notes. Kept outside the timeline: a note is for the record, never something that was broadcast.\",\n items: noteNode,\n },\n report: {\n type: \"object\",\n additionalProperties: false,\n required: [\"fileId\", \"url\", \"filename\", \"contentHash\", \"renderedAt\"],\n description:\n \"The most recently minted incident-report PDF, kept so a re-export of an unchanged, ended incident can reuse the file instead of rendering again. `contentHash` fingerprints the rendered content (excluding the generated-at stamp).\",\n properties: {\n fileId: { type: \"string\" },\n url: { type: \"string\" },\n filename: { type: \"string\" },\n contentHash: { type: \"string\" },\n renderedAt: { $ref: \"definitions.json#/definitions/date\" },\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 // `notes` carries `default: []` but is not required; keep it optional in\n // the type so pre-notes documents and writers that omit it still fit.\n keepDefaultedPropertiesOptional: true;\n deserialize: [\n {\n pattern: {\n format: \"date-time\";\n };\n output: Date | ISODateString;\n },\n ];\n }\n>;\n"],"mappings":";AAKA,MAAM,eAAe;CACnB,MAAM,CAAC,UAAU,MAAM;CACvB,sBAAsB;CACtB,UAAU,CAAC,MAAM,eAAe;CAChC,YAAY;EACV,IAAI,EAAE,MAAM,SAAS;EACrB,eAAe;GACb,MAAM;GACN,MAAM;IAAC;IAAQ;IAAU;GAAY;EACvC;CACF;AACF;AAMA,MAAM,sBAAsB;CAC1B,MAAM;CACN,sBAAsB;CACtB,UAAU;EAAC;EAAQ;EAAa;CAAQ;CACxC,YAAY;EACV,MAAM;GAAE,MAAM;GAAW,SAAS;EAAE;EACpC,WAAW;GAAE,MAAM;GAAW,SAAS;EAAE;EACzC,QAAQ;GAAE,MAAM;GAAW,SAAS;EAAE;CACxC;AACF;AAEA,MAAM,uBAAuB;CAC3B,MAAM;CACN,sBAAsB;CACtB,aAAa;CACb,YAAY;EACV,KAAK;EACL,OAAO;CACT;AACF;AAKA,MAAM,qBAAqB;CACzB,MAAM;CACN,sBAAsB;CACtB,UAAU;EAAC;EAAM;EAAQ;EAAW;EAAM;EAAM;CAAU;CAC1D,YAAY;EACV,IAAI;GACF,MAAM;GACN,aAAa;EACf;EACA,MAAM;GACJ,MAAM;GACN,MAAM;IAAC;IAAc;IAAU;GAAO;GACtC,aACE;EACJ;EACA,SAAS;GACP,MAAM;GACN,aACE;EACJ;EACA,IAAI;GACF,GAAG;GACH,aAAa;EACf;EACA,IAAI;GACF,MAAM;GACN,aAAa;EACf;EACA,UAAU;GACR,MAAM;GACN,aACE;EACJ;EACA,UAAU;GACR,MAAM;GACN,OAAO;IAAE,MAAM;IAAU,MAAM,CAAC,OAAO,OAAO;GAAE;GAChD,aACE;EACJ;EACA,UAAU;GACR,MAAM;GACN,sBAAsB;GACtB,UAAU;IAAC;IAAW;IAAQ;IAAU;GAAS;GACjD,aACE;GACF,YAAY;IACV,SAAS;KAAE,MAAM;KAAW,SAAS;IAAE;IACvC,MAAM;KAAE,MAAM;KAAW,SAAS;IAAE;IACpC,QAAQ;KAAE,MAAM;KAAW,SAAS;IAAE;IACtC,SAAS;KAAE,MAAM;KAAW,SAAS;IAAE;GACzC;EACF;EACA,gBAAgB;GACd,MAAM;GACN,sBAAsB;GACtB,aACE;GACF,YAAY;IACV,UAAU;IACV,UAAU;GACZ;EACF;CACF;AACF;AA6BA,MAAM,yBAAyB;CAC7B,MAAM;CACN,sBAAsB;CACtB,UAAU;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,YAAY;EACV,IAAI;GACF,MAAM;GACN,aAAa;EACf;EACA,MAAM;GACJ,MAAM;GACN,MAAM,CAAC,eAAe;GACtB,aACE;EACJ;EACA,IAAI;GACF,MAAM;GACN,aACE;EACJ;EACA,IAAI;GACF,MAAM;GACN,sBAAsB;GACtB,UAAU,CAAC,MAAM,eAAe;GAChC,aACE;GACF,YAAY;IACV,IAAI,EAAE,MAAM,SAAS;IACrB,eAAe;KAAE,MAAM;KAAU,MAAM,CAAC,YAAY;IAAE;GACxD;EACF;EACA,gBAAgB;GACd,MAAM;GACN,aACE;EACJ;EACA,OAAO;GACL,MAAM;GACN,aACE;EACJ;EACA,SAAS;GACP,MAAM;GACN,MAAM,CAAC,aAAa,aAAa;GACjC,aAAa;EACf;EACA,SAAS;GACP,MAAM;GACN,SAAS,CAAC;GACV,aAAa;GACb,OAAO;IArFX,MAAM;IACN,sBAAsB;IACtB,UAAU,CAAC,QAAQ,QAAQ;IAC3B,YAAY;KACV,MAAM;MACJ,MAAM;MACN,aAAa;KACf;KACA,QAAQ;MACN,MAAM;MACN,MAAM;OAAC;OAAW;OAAW;MAAS;MACtC,aACE;KACJ;KACA,OAAO;MACL,MAAM,CAAC,UAAU,MAAM;MACvB,aAAa;KACf;KACA,QAAQ;MACN,MAAM;MACN,aACE;KACJ;IACF;GA8DiC;EAC/B;CACF;AACF;AAEA,MAAM,WAAW;CACf,MAAM;CACN,sBAAsB;CACtB,UAAU;EAAC;EAAM;EAAQ;EAAM;CAAI;CACnC,YAAY;EACV,IAAI;GACF,MAAM;GACN,aAAa;EACf;EACA,MAAM;GACJ,MAAM;GACN,aAAa;EACf;EACA,IAAI;GACF,GAAG;GACH,aAAa;EACf;EACA,IAAI;GACF,MAAM;GACN,aAAa;EACf;CACF;AACF;AAEA,MAAa,iBAAiB;CAC5B,SAAS;CACT,KAAK;CACL,OAAO;CACP,aACE;CACF,MAAM;CACN,UAAU;EAAC;EAAM;EAAQ;EAAc;EAAe;CAAU;CAChE,sBAAsB;CACtB,YAAY;EACV,IAAI;GACF,MAAM;GACN,aAAa;EACf;EACA,MAAM;GACJ,MAAM;GACN,MAAM,CAAC,UAAU;GACjB,SAAS;EACX;EACA,YAAY;GACV,MAAM;GACN,aACE;EACJ;EACA,YAAY;GACV,MAAM;GACN,OAAO,EAAE,MAAM,SAAS;GACxB,aAAa;EACf;EACA,aAAa;GACX,MAAM;GACN,aAAa;EACf;EACA,aAAa;GACX,GAAG;GACH,aACE;EACJ;EACA,eAAe;GACb,MAAM;GACN,aACE;EACJ;EACA,eAAe;GACb,GAAG;GACH,aACE;EACJ;EACA,UAAU;GACR,MAAM;GACN,SAAS,CAAC;GACV,aACE;GACF,OAAO,EACL,OAAO,CAAC,oBAAoB,sBAAsB,EACpD;EACF;EACA,OAAO;GACL,MAAM;GACN,SAAS,CAAC;GACV,aACE;GACF,OAAO;EACT;EACA,QAAQ;GACN,MAAM;GACN,sBAAsB;GACtB,UAAU;IAAC;IAAU;IAAO;IAAY;IAAe;GAAY;GACnE,aACE;GACF,YAAY;IACV,QAAQ,EAAE,MAAM,SAAS;IACzB,KAAK,EAAE,MAAM,SAAS;IACtB,UAAU,EAAE,MAAM,SAAS;IAC3B,aAAa,EAAE,MAAM,SAAS;IAC9B,YAAY,EAAE,MAAM,qCAAqC;GAC3D;EACF;EACA,WAAW;GACT,MAAM;GACN,aAAa;EACf;EACA,WAAW;GACT,MAAM;GACN,aAAa;EACf;EACA,WAAW;GACT,MAAM;IAAC;IAAU;IAAU;GAAM;GACjC,QAAQ;GACR,aAAa;EACf;CACF;AACF"}
|
package/dist/schemas/ticket.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export declare const ticketSchema: {
|
|
|
49
49
|
};
|
|
50
50
|
readonly discriminator: {
|
|
51
51
|
readonly type: "string";
|
|
52
|
-
readonly enum: readonly ["message", "opened", "assigned", "rated", "scheduled", "collaboratorAdded", "collaboratorRemoved", "statusChanged", "priorityChanged", "scheduleDateChanged", "locationChanged", "issueChanged", "nudged", "approvalRequested", "approvalApproved", "approvalDenied", "workScheduled", "workRescheduled", "workCanceled", "costRecorded", "costPriceChanged"];
|
|
52
|
+
readonly enum: readonly ["message", "opened", "assigned", "rated", "scheduled", "collaboratorAdded", "collaboratorRemoved", "statusChanged", "priorityChanged", "scheduleDateChanged", "locationChanged", "issueChanged", "nudged", "approvalRequested", "approvalApproved", "approvalDenied", "workScheduled", "workRescheduled", "workCanceled", "costRecorded", "costPriceChanged", "costVoided"];
|
|
53
53
|
readonly default: "message";
|
|
54
54
|
readonly description: "The discriminator of the message.";
|
|
55
55
|
};
|
|
@@ -802,6 +802,11 @@ export declare const ticketSchema: {
|
|
|
802
802
|
readonly default: false;
|
|
803
803
|
readonly description: string;
|
|
804
804
|
};
|
|
805
|
+
readonly voided: {
|
|
806
|
+
readonly type: "boolean";
|
|
807
|
+
readonly default: false;
|
|
808
|
+
readonly description: string;
|
|
809
|
+
};
|
|
805
810
|
readonly billingReview: {
|
|
806
811
|
readonly type: "array";
|
|
807
812
|
readonly default: readonly [];
|
|
@@ -817,7 +822,7 @@ export declare const ticketSchema: {
|
|
|
817
822
|
};
|
|
818
823
|
readonly action: {
|
|
819
824
|
readonly type: "string";
|
|
820
|
-
readonly enum: readonly ["writtenOff", "reinstated", "divergenceAcknowledged"];
|
|
825
|
+
readonly enum: readonly ["writtenOff", "voided", "reinstated", "divergenceAcknowledged"];
|
|
821
826
|
};
|
|
822
827
|
readonly performedBy: {
|
|
823
828
|
readonly type: readonly ["string", "null"];
|
|
@@ -870,6 +875,16 @@ export declare const ticketSchema: {
|
|
|
870
875
|
readonly minimum: 0;
|
|
871
876
|
readonly description: string;
|
|
872
877
|
};
|
|
878
|
+
readonly voided: {
|
|
879
|
+
readonly type: "boolean";
|
|
880
|
+
readonly default: false;
|
|
881
|
+
readonly description: string;
|
|
882
|
+
};
|
|
883
|
+
readonly settled: {
|
|
884
|
+
readonly type: "boolean";
|
|
885
|
+
readonly default: false;
|
|
886
|
+
readonly description: string;
|
|
887
|
+
};
|
|
873
888
|
};
|
|
874
889
|
}];
|
|
875
890
|
};
|