@kohost/api-client 7.15.0 → 7.17.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/.tsbuildinfo +1 -1
- package/dist/commands/getGroups.d.ts +8 -0
- package/dist/commands/getGroups.js +17 -0
- package/dist/commands/getGroups.js.map +1 -0
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.js +3 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/httpClient.js.map +1 -1
- package/dist/lib/emergencyContacts.d.ts +10 -0
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +3 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/sis.d.ts +108 -0
- package/dist/lib/sis.js +11 -0
- package/dist/lib/sis.js.map +1 -0
- package/dist/models/entity.js.map +1 -1
- package/dist/models/group.js +1 -0
- package/dist/models/group.js.map +1 -1
- package/dist/models/system.js +1 -0
- package/dist/models/system.js.map +1 -1
- package/dist/models/systemUser.js +1 -1
- package/dist/models/systemUser.js.map +1 -1
- package/dist/models/ticket.js +2 -0
- package/dist/models/ticket.js.map +1 -1
- package/dist/schemas/announcement.d.ts +16 -1
- package/dist/schemas/announcement.js +16 -1
- package/dist/schemas/announcement.js.map +1 -1
- package/dist/schemas/bill.d.ts +25 -0
- package/dist/schemas/bill.js +25 -0
- package/dist/schemas/bill.js.map +1 -1
- package/dist/schemas/costEntry.d.ts +27 -0
- package/dist/schemas/costEntry.js +36 -21
- package/dist/schemas/costEntry.js.map +1 -1
- package/dist/schemas/definitions.d.ts +96 -3
- package/dist/schemas/definitions.js +58 -3
- package/dist/schemas/definitions.js.map +1 -1
- package/dist/schemas/group.d.ts +4 -0
- package/dist/schemas/group.js +4 -0
- package/dist/schemas/group.js.map +1 -1
- package/dist/schemas/system.d.ts +4 -0
- package/dist/schemas/system.js +4 -0
- package/dist/schemas/system.js.map +1 -1
- package/dist/schemas/systemUser.d.ts +2 -3
- package/dist/schemas/systemUser.js +1 -4
- package/dist/schemas/systemUser.js.map +1 -1
- package/dist/schemas/ticket.d.ts +232 -48
- package/dist/schemas/ticket.js +213 -12
- package/dist/schemas/ticket.js.map +1 -1
- package/dist/useCases/clearAwaitingResponse.d.ts +36 -0
- package/dist/useCases/clearAwaitingResponse.js +47 -0
- package/dist/useCases/clearAwaitingResponse.js.map +1 -0
- package/dist/useCases/clearWorkItemVerification.d.ts +39 -0
- package/dist/useCases/clearWorkItemVerification.js +47 -0
- package/dist/useCases/clearWorkItemVerification.js.map +1 -0
- package/dist/useCases/describeConciergeBillsSummary.d.ts +27 -0
- package/dist/useCases/describeConciergeBillsSummary.js +47 -0
- package/dist/useCases/describeConciergeBillsSummary.js.map +1 -0
- package/dist/useCases/describeConciergeStageCounts.d.ts +27 -0
- package/dist/useCases/describeConciergeStageCounts.js +47 -0
- package/dist/useCases/describeConciergeStageCounts.js.map +1 -0
- package/dist/useCases/describeSISSync.d.ts +27 -0
- package/dist/useCases/describeSISSync.js +47 -0
- package/dist/useCases/describeSISSync.js.map +1 -0
- package/dist/useCases/index.d.ts +12 -0
- package/dist/useCases/index.js +25 -1
- package/dist/useCases/index.js.map +1 -1
- package/dist/useCases/listConciergeWorkspaceBillLines.d.ts +27 -0
- package/dist/useCases/listConciergeWorkspaceBillLines.js +47 -0
- package/dist/useCases/listConciergeWorkspaceBillLines.js.map +1 -0
- package/dist/useCases/listSISHouseholds.d.ts +27 -0
- package/dist/useCases/listSISHouseholds.js +47 -0
- package/dist/useCases/listSISHouseholds.js.map +1 -0
- package/dist/useCases/listSISPeople.d.ts +27 -0
- package/dist/useCases/listSISPeople.js +47 -0
- package/dist/useCases/listSISPeople.js.map +1 -0
- package/dist/useCases/previewAnnouncement.d.ts +27 -0
- package/dist/useCases/previewAnnouncement.js +47 -0
- package/dist/useCases/previewAnnouncement.js.map +1 -0
- package/dist/useCases/setAwaitingResponse.d.ts +36 -0
- package/dist/useCases/setAwaitingResponse.js +47 -0
- package/dist/useCases/setAwaitingResponse.js.map +1 -0
- package/dist/useCases/syncSISRoster.d.ts +27 -0
- package/dist/useCases/syncSISRoster.js +47 -0
- package/dist/useCases/syncSISRoster.js.map +1 -0
- package/dist/useCases/verifyWorkItem.d.ts +39 -0
- package/dist/useCases/verifyWorkItem.js +47 -0
- package/dist/useCases/verifyWorkItem.js.map +1 -0
- package/package.json +5 -5
|
@@ -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\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 \"hanwha\",\n \"honeywell-vista\",\n \"honeywell-resideo\",\n \"honeywell-total-connect\",\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 \"unifi-access\",\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;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"}
|
|
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 * `staff` is everybody synced with nothing but the Staff role (faculty and\n * staff); `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 = [\n \"students\",\n \"parents\",\n \"staff\",\n] 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 optedOut: {\n type: \"integer\",\n minimum: 0,\n description:\n \"Recipients skipped because they opted out of this channel. Counted apart from `failed`; absent on sends recorded before opt-out tracking.\",\n },\n },\n} as const;\n\nexport const SMS_OPT_OUT_REASONS = [\"stop\", \"vendor\"] as const;\nexport const EMAIL_OPT_OUT_REASONS = [\n \"unsubscribe\",\n \"spamReport\",\n \"bounce\",\n] as const;\n\nconst dateNode = { type: [\"string\", \"object\"], format: \"date-time\" } as const;\n\nconst optedOutAtNode = {\n anyOf: [dateNode, { type: \"null\" }],\n description:\n \"When the person opted out of this channel; null while they are reachable.\",\n} as const;\n\n/**\n * Per-channel opt-out state for a person reached over external messaging.\n * Written by inbound STOP/START and vendor suppression events; read before\n * every external send. A channel is opted out exactly when `optedOutAt` holds\n * a date. Lives on SystemUser today; the same\n * node could later sit in a User's per-Organization preferences entry.\n */\nconst consentNode = {\n type: \"object\",\n additionalProperties: false,\n properties: {\n sms: {\n type: \"object\",\n additionalProperties: false,\n required: [\"optedOutAt\"],\n properties: {\n optedOutAt: optedOutAtNode,\n reason: { type: \"string\", enum: SMS_OPT_OUT_REASONS },\n lastOptOutNoticeAt: dateNode,\n },\n },\n email: {\n type: \"object\",\n additionalProperties: false,\n required: [\"optedOutAt\"],\n properties: {\n optedOutAt: optedOutAtNode,\n reason: { type: \"string\", enum: EMAIL_OPT_OUT_REASONS },\n },\n },\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 \"hanwha\",\n \"honeywell-vista\",\n \"honeywell-resideo\",\n \"honeywell-total-connect\",\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 \"unifi-access\",\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 consent: consentNode,\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;;;;;;;;AAWA,MAAa,2BAA2B;CACtC;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;EACtC,UAAU;GACR,MAAM;GACN,SAAS;GACT,aACE;EACJ;CACF;AACF;AAEA,MAAa,sBAAsB,CAAC,QAAQ,QAAQ;AACpD,MAAa,wBAAwB;CACnC;CACA;CACA;AACF;AAEA,MAAM,WAAW;CAAE,MAAM,CAAC,UAAU,QAAQ;CAAG,QAAQ;AAAY;AAEnE,MAAM,iBAAiB;CACrB,OAAO,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;CAClC,aACE;AACJ;AAmCA,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;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,SAAS;GApVX,MAAM;GACN,sBAAsB;GACtB,YAAY;IACV,KAAK;KACH,MAAM;KACN,sBAAsB;KACtB,UAAU,CAAC,YAAY;KACvB,YAAY;MACV,YAAY;MACZ,QAAQ;OAAE,MAAM;OAAU,MAAM;MAAoB;MACpD,oBAAoB;KACtB;IACF;IACA,OAAO;KACL,MAAM;KACN,sBAAsB;KACtB,UAAU,CAAC,YAAY;KACvB,YAAY;MACV,YAAY;MACZ,QAAQ;OAAE,MAAM;OAAU,MAAM;MAAsB;KACxD;IACF;GACF;EA8TqB;EACnB,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"}
|
package/dist/schemas/group.d.ts
CHANGED
|
@@ -18,6 +18,10 @@ export declare const groupSchema: {
|
|
|
18
18
|
readonly driver: {
|
|
19
19
|
readonly $ref: "definitions.json#/definitions/driver";
|
|
20
20
|
};
|
|
21
|
+
readonly propertyId: {
|
|
22
|
+
readonly type: "string";
|
|
23
|
+
readonly description: "ID of the Property this synced group belongs to. Used as a per-document filter inside the org-scoped database.";
|
|
24
|
+
};
|
|
21
25
|
readonly type: {
|
|
22
26
|
readonly type: "string";
|
|
23
27
|
readonly enum: readonly ["group"];
|
package/dist/schemas/group.js
CHANGED
|
@@ -15,6 +15,10 @@ const groupSchema = {
|
|
|
15
15
|
id: { $ref: "definitions.json#/definitions/id" },
|
|
16
16
|
systemId: { $ref: "definitions.json#/definitions/systemId" },
|
|
17
17
|
driver: { $ref: "definitions.json#/definitions/driver" },
|
|
18
|
+
propertyId: {
|
|
19
|
+
type: "string",
|
|
20
|
+
description: "ID of the Property this synced group belongs to. Used as a per-document filter inside the org-scoped database."
|
|
21
|
+
},
|
|
18
22
|
type: {
|
|
19
23
|
type: "string",
|
|
20
24
|
enum: ["group"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","names":[],"sources":["../../.generated/schemas/group.ts"],"sourcesContent":["import defs, { ISODateString } from \"./definitions\";\nimport type { FromSchema } from \"json-schema-to-ts\";\n\nexport const groupSchema = {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"group.json\",\n title: \"Group\",\n description: \"A named collection of members.\",\n type: \"object\",\n required: [\"id\", \"type\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n type: {\n type: \"string\",\n enum: [\"group\"],\n default: \"group\",\n },\n discriminator: {\n type: \"string\",\n enum: [\
|
|
1
|
+
{"version":3,"file":"group.js","names":[],"sources":["../../.generated/schemas/group.ts"],"sourcesContent":["import defs, { ISODateString } from \"./definitions\";\nimport type { FromSchema } from \"json-schema-to-ts\";\n\nexport const groupSchema = {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"group.json\",\n title: \"Group\",\n description: \"A named collection of members.\",\n type: \"object\",\n required: [\"id\", \"type\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n propertyId: {\n type: \"string\",\n description:\n \"ID of the Property this synced group belongs to. Used as a per-document filter inside the org-scoped database.\",\n },\n type: {\n type: \"string\",\n enum: [\"group\"],\n default: \"group\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"social\", \"department\"],\n },\n name: {\n type: \"string\",\n },\n members: {\n type: \"array\",\n items: {\n type: \"object\",\n required: [\"id\", \"type\"],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n name: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n description: \"The type of the member resource.\",\n },\n role: {\n type: \"string\",\n description: \"The role of the member within this group.\",\n },\n },\n },\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n deletedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n },\n} as const;\n\nexport type GroupSchema = FromSchema<\n typeof groupSchema,\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":";AAGA,MAAa,cAAc;CACzB,SAAS;CACT,KAAK;CACL,OAAO;CACP,aAAa;CACb,MAAM;CACN,UAAU;EAAC;EAAM;EAAQ;CAAe;CACxC,sBAAsB;CACtB,YAAY;EACV,IAAI,EACF,MAAM,mCACR;EACA,UAAU,EACR,MAAM,yCACR;EACA,QAAQ,EACN,MAAM,uCACR;EACA,YAAY;GACV,MAAM;GACN,aACE;EACJ;EACA,MAAM;GACJ,MAAM;GACN,MAAM,CAAC,OAAO;GACd,SAAS;EACX;EACA,eAAe;GACb,MAAM;GACN,MAAM,CAAC,UAAU,YAAY;EAC/B;EACA,MAAM,EACJ,MAAM,SACR;EACA,SAAS;GACP,MAAM;GACN,OAAO;IACL,MAAM;IACN,UAAU,CAAC,MAAM,MAAM;IACvB,sBAAsB;IACtB,YAAY;KACV,IAAI,EACF,MAAM,mCACR;KACA,MAAM,EACJ,MAAM,SACR;KACA,MAAM;MACJ,MAAM;MACN,aAAa;KACf;KACA,MAAM;MACJ,MAAM;MACN,aAAa;KACf;IACF;GACF;EACF;EACA,WAAW,EACT,MAAM,qCACR;EACA,WAAW,EACT,MAAM,qCACR;EACA,WAAW,EACT,MAAM,qCACR;CACF;AACF"}
|
package/dist/schemas/system.d.ts
CHANGED
|
@@ -119,6 +119,10 @@ export declare const systemSchema: {
|
|
|
119
119
|
};
|
|
120
120
|
};
|
|
121
121
|
};
|
|
122
|
+
readonly syncedAt: {
|
|
123
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
124
|
+
readonly description: "When the system's roster (people and households) was last synced into the platform.";
|
|
125
|
+
};
|
|
122
126
|
readonly createdAt: {
|
|
123
127
|
readonly $ref: "definitions.json#/definitions/date";
|
|
124
128
|
};
|
package/dist/schemas/system.js
CHANGED
|
@@ -114,6 +114,10 @@ const systemSchema = {
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
},
|
|
117
|
+
syncedAt: {
|
|
118
|
+
$ref: "definitions.json#/definitions/date",
|
|
119
|
+
description: "When the system's roster (people and households) was last synced into the platform."
|
|
120
|
+
},
|
|
117
121
|
createdAt: { $ref: "definitions.json#/definitions/date" },
|
|
118
122
|
updatedAt: { $ref: "definitions.json#/definitions/date" },
|
|
119
123
|
deletedAt: { $ref: "definitions.json#/definitions/date" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","names":[],"sources":["../../.generated/schemas/system.ts"],"sourcesContent":["import defs, { ISODateString } from \"./definitions\";\nimport type { FromSchema } from \"json-schema-to-ts\";\nimport type { mediaFileSchema } from \"./mediaFile\";\n\nexport const systemSchema = {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"system.json\",\n title: \"System\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\", \"entities\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n default: \"system\",\n enum: [\"system\"],\n },\n name: {\n type: \"string\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n example: \"salto\",\n description: \"The driver value that implements the system\",\n },\n organizationId: {\n type: \"string\",\n description: \"The id of the organization that uses the system\",\n },\n propertyId: {\n type: \"string\",\n description: \"The id of the property that uses the system\",\n },\n entities: {\n type: \"array\",\n description: \"The entities produced by the system\",\n default: [],\n items: {\n type: \"object\",\n required: [\"systemId\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The id of the entity\",\n },\n systemId: {\n type: \"string\",\n description: \"The id of the entity as known by the system\",\n },\n type: {\n type: \"string\",\n description: \"The type of the entity\",\n },\n discriminator: {\n type: \"string\",\n description: \"The discriminator of the entity\",\n },\n propertyIds: {\n type: \"array\",\n description:\n \"The ids of the properties where the entity is located\",\n items: {\n type: \"string\",\n },\n },\n },\n },\n },\n driverApiVersion: {\n type: \"string\",\n description: \"The version of the driver API used by the system\",\n },\n logo: {\n $ref: \"mediaFile.json#\",\n },\n config: {\n type: \"object\",\n additionalProperties: true,\n description: \"The runtime configuration of the system\",\n },\n contactInfo: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n websiteUrl: {\n type: \"string\",\n description: \"The website URL of the system\",\n },\n email: {\n type: \"string\",\n description: \"The email address of the system\",\n },\n phone: {\n type: \"string\",\n description: \"The phone number of the system\",\n },\n itunesAppId: {\n type: \"string\",\n example: \"807316865\",\n },\n googleAppId: {\n type: \"string\",\n example: \"tw.com.geovision.gvaccesscontrol\",\n },\n },\n },\n health: {\n type: \"object\",\n properties: {\n offline: {\n type: \"boolean\",\n description: \"Whether the system is offline\",\n },\n lastHeartbeatAt: {\n type: \"string\",\n description:\n \"The date and time of the last communication with the system\",\n format: \"date-time\",\n },\n },\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n deletedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n },\n} as const;\n\nexport type SystemSchema = FromSchema<\n typeof systemSchema,\n {\n references: [typeof defs, typeof mediaFileSchema];\n deserialize: [\n {\n pattern: {\n format: \"date-time\";\n };\n output: Date | ISODateString;\n },\n ];\n }\n>;\n"],"mappings":";AAIA,MAAa,eAAe;CAC1B,SAAS;CACT,KAAK;CACL,OAAO;CACP,MAAM;CACN,UAAU;EAAC;EAAM;EAAQ;EAAU;CAAU;CAC7C,sBAAsB;CACtB,YAAY;EACV,IAAI,EACF,MAAM,SACR;EACA,MAAM;GACJ,MAAM;GACN,SAAS;GACT,MAAM,CAAC,QAAQ;EACjB;EACA,MAAM,EACJ,MAAM,SACR;EACA,QAAQ;GACN,MAAM;GACN,SAAS;GACT,aAAa;EACf;EACA,gBAAgB;GACd,MAAM;GACN,aAAa;EACf;EACA,YAAY;GACV,MAAM;GACN,aAAa;EACf;EACA,UAAU;GACR,MAAM;GACN,aAAa;GACb,SAAS,CAAC;GACV,OAAO;IACL,MAAM;IACN,UAAU,CAAC,UAAU;IACrB,YAAY;KACV,IAAI;MACF,MAAM;MACN,aAAa;KACf;KACA,UAAU;MACR,MAAM;MACN,aAAa;KACf;KACA,MAAM;MACJ,MAAM;MACN,aAAa;KACf;KACA,eAAe;MACb,MAAM;MACN,aAAa;KACf;KACA,aAAa;MACX,MAAM;MACN,aACE;MACF,OAAO,EACL,MAAM,SACR;KACF;IACF;GACF;EACF;EACA,kBAAkB;GAChB,MAAM;GACN,aAAa;EACf;EACA,MAAM,EACJ,MAAM,kBACR;EACA,QAAQ;GACN,MAAM;GACN,sBAAsB;GACtB,aAAa;EACf;EACA,aAAa;GACX,MAAM;GACN,sBAAsB;GACtB,YAAY;IACV,YAAY;KACV,MAAM;KACN,aAAa;IACf;IACA,OAAO;KACL,MAAM;KACN,aAAa;IACf;IACA,OAAO;KACL,MAAM;KACN,aAAa;IACf;IACA,aAAa;KACX,MAAM;KACN,SAAS;IACX;IACA,aAAa;KACX,MAAM;KACN,SAAS;IACX;GACF;EACF;EACA,QAAQ;GACN,MAAM;GACN,YAAY;IACV,SAAS;KACP,MAAM;KACN,aAAa;IACf;IACA,iBAAiB;KACf,MAAM;KACN,aACE;KACF,QAAQ;IACV;GACF;EACF;EACA,WAAW,EACT,MAAM,qCACR;EACA,WAAW,EACT,MAAM,qCACR;EACA,WAAW,EACT,MAAM,qCACR;CACF;AACF"}
|
|
1
|
+
{"version":3,"file":"system.js","names":[],"sources":["../../.generated/schemas/system.ts"],"sourcesContent":["import defs, { ISODateString } from \"./definitions\";\nimport type { FromSchema } from \"json-schema-to-ts\";\nimport type { mediaFileSchema } from \"./mediaFile\";\n\nexport const systemSchema = {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"system.json\",\n title: \"System\",\n type: \"object\",\n required: [\"id\", \"type\", \"driver\", \"entities\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n type: {\n type: \"string\",\n default: \"system\",\n enum: [\"system\"],\n },\n name: {\n type: \"string\",\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n example: \"salto\",\n description: \"The driver value that implements the system\",\n },\n organizationId: {\n type: \"string\",\n description: \"The id of the organization that uses the system\",\n },\n propertyId: {\n type: \"string\",\n description: \"The id of the property that uses the system\",\n },\n entities: {\n type: \"array\",\n description: \"The entities produced by the system\",\n default: [],\n items: {\n type: \"object\",\n required: [\"systemId\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The id of the entity\",\n },\n systemId: {\n type: \"string\",\n description: \"The id of the entity as known by the system\",\n },\n type: {\n type: \"string\",\n description: \"The type of the entity\",\n },\n discriminator: {\n type: \"string\",\n description: \"The discriminator of the entity\",\n },\n propertyIds: {\n type: \"array\",\n description:\n \"The ids of the properties where the entity is located\",\n items: {\n type: \"string\",\n },\n },\n },\n },\n },\n driverApiVersion: {\n type: \"string\",\n description: \"The version of the driver API used by the system\",\n },\n logo: {\n $ref: \"mediaFile.json#\",\n },\n config: {\n type: \"object\",\n additionalProperties: true,\n description: \"The runtime configuration of the system\",\n },\n contactInfo: {\n type: \"object\",\n additionalProperties: false,\n properties: {\n websiteUrl: {\n type: \"string\",\n description: \"The website URL of the system\",\n },\n email: {\n type: \"string\",\n description: \"The email address of the system\",\n },\n phone: {\n type: \"string\",\n description: \"The phone number of the system\",\n },\n itunesAppId: {\n type: \"string\",\n example: \"807316865\",\n },\n googleAppId: {\n type: \"string\",\n example: \"tw.com.geovision.gvaccesscontrol\",\n },\n },\n },\n health: {\n type: \"object\",\n properties: {\n offline: {\n type: \"boolean\",\n description: \"Whether the system is offline\",\n },\n lastHeartbeatAt: {\n type: \"string\",\n description:\n \"The date and time of the last communication with the system\",\n format: \"date-time\",\n },\n },\n },\n syncedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description:\n \"When the system's roster (people and households) was last synced into the platform.\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n deletedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n },\n} as const;\n\nexport type SystemSchema = FromSchema<\n typeof systemSchema,\n {\n references: [typeof defs, typeof mediaFileSchema];\n deserialize: [\n {\n pattern: {\n format: \"date-time\";\n };\n output: Date | ISODateString;\n },\n ];\n }\n>;\n"],"mappings":";AAIA,MAAa,eAAe;CAC1B,SAAS;CACT,KAAK;CACL,OAAO;CACP,MAAM;CACN,UAAU;EAAC;EAAM;EAAQ;EAAU;CAAU;CAC7C,sBAAsB;CACtB,YAAY;EACV,IAAI,EACF,MAAM,SACR;EACA,MAAM;GACJ,MAAM;GACN,SAAS;GACT,MAAM,CAAC,QAAQ;EACjB;EACA,MAAM,EACJ,MAAM,SACR;EACA,QAAQ;GACN,MAAM;GACN,SAAS;GACT,aAAa;EACf;EACA,gBAAgB;GACd,MAAM;GACN,aAAa;EACf;EACA,YAAY;GACV,MAAM;GACN,aAAa;EACf;EACA,UAAU;GACR,MAAM;GACN,aAAa;GACb,SAAS,CAAC;GACV,OAAO;IACL,MAAM;IACN,UAAU,CAAC,UAAU;IACrB,YAAY;KACV,IAAI;MACF,MAAM;MACN,aAAa;KACf;KACA,UAAU;MACR,MAAM;MACN,aAAa;KACf;KACA,MAAM;MACJ,MAAM;MACN,aAAa;KACf;KACA,eAAe;MACb,MAAM;MACN,aAAa;KACf;KACA,aAAa;MACX,MAAM;MACN,aACE;MACF,OAAO,EACL,MAAM,SACR;KACF;IACF;GACF;EACF;EACA,kBAAkB;GAChB,MAAM;GACN,aAAa;EACf;EACA,MAAM,EACJ,MAAM,kBACR;EACA,QAAQ;GACN,MAAM;GACN,sBAAsB;GACtB,aAAa;EACf;EACA,aAAa;GACX,MAAM;GACN,sBAAsB;GACtB,YAAY;IACV,YAAY;KACV,MAAM;KACN,aAAa;IACf;IACA,OAAO;KACL,MAAM;KACN,aAAa;IACf;IACA,OAAO;KACL,MAAM;KACN,aAAa;IACf;IACA,aAAa;KACX,MAAM;KACN,SAAS;IACX;IACA,aAAa;KACX,MAAM;KACN,SAAS;IACX;GACF;EACF;EACA,QAAQ;GACN,MAAM;GACN,YAAY;IACV,SAAS;KACP,MAAM;KACN,aAAa;IACf;IACA,iBAAiB;KACf,MAAM;KACN,aACE;KACF,QAAQ;IACV;GACF;EACF;EACA,UAAU;GACR,MAAM;GACN,aACE;EACJ;EACA,WAAW,EACT,MAAM,qCACR;EACA,WAAW,EACT,MAAM,qCACR;EACA,WAAW,EACT,MAAM,qCACR;CACF;AACF"}
|
|
@@ -101,9 +101,8 @@ export declare const systemUserSchema: {
|
|
|
101
101
|
readonly type: "string";
|
|
102
102
|
readonly description: "ID of the Property this synced user belongs to. Used as a per-document filter inside the org-scoped database.";
|
|
103
103
|
};
|
|
104
|
-
readonly
|
|
105
|
-
readonly $ref: "definitions.json#/definitions/
|
|
106
|
-
readonly description: "When this user was last written through from its source system.";
|
|
104
|
+
readonly consent: {
|
|
105
|
+
readonly $ref: "definitions.json#/definitions/consent";
|
|
107
106
|
};
|
|
108
107
|
};
|
|
109
108
|
};
|
|
@@ -92,10 +92,7 @@ const systemUserSchema = {
|
|
|
92
92
|
type: "string",
|
|
93
93
|
description: "ID of the Property this synced user belongs to. Used as a per-document filter inside the org-scoped database."
|
|
94
94
|
},
|
|
95
|
-
|
|
96
|
-
$ref: "definitions.json#/definitions/date",
|
|
97
|
-
description: "When this user was last written through from its source system."
|
|
98
|
-
}
|
|
95
|
+
consent: { $ref: "definitions.json#/definitions/consent" }
|
|
99
96
|
}
|
|
100
97
|
};
|
|
101
98
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemUser.js","names":[],"sources":["../../.generated/schemas/systemUser.ts"],"sourcesContent":["import defs, { ISODateString } from \"./definitions\";\nimport type { FromSchema } from \"json-schema-to-ts\";\n\nexport const systemUserSchema = {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"systemUser.json\",\n title: \"System User\",\n description:\n \"A system user is a user that originated from an external 3rd party system.\",\n type: \"object\",\n required: [\"id\", \"firstName\", \"lastName\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"systemUser\",\n enum: [\"systemUser\"],\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n firstName: {\n type: \"string\",\n },\n lastName: {\n type: \"string\",\n },\n phone: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\+[0-9]{1,14}$\",\n },\n email: {\n type: [\"string\", \"null\"],\n format: \"email\",\n },\n address: {\n $ref: \"definitions.json#/definitions/address\",\n },\n photo: {\n type: \"string\",\n },\n jobTitle: {\n type: \"string\",\n },\n dob: {\n type: \"string\",\n },\n gender: {\n type: [\"string\", \"null\"],\n enum: [\"male\", \"female\", null],\n },\n roles: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\n \"Administrator\",\n \"Caretaker\",\n \"Colleague\",\n \"Friend\",\n \"Guardian\",\n \"Guest\",\n \"Maintenance\",\n \"Manager\",\n \"Neighbor\",\n \"Parent\",\n \"Relative\",\n \"Staff\",\n \"Student\",\n \"SuperAdmin\",\n \"User\",\n ],\n },\n },\n nationality: {\n type: \"string\",\n minLength: 2,\n maxLength: 2,\n },\n notes: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n files: {\n type: \"array\",\n items: {\n $ref: \"mediaFile.json#\",\n },\n },\n identifications: {\n type: \"array\",\n items: {\n $ref: \"identification.json#\",\n },\n },\n payments: {\n type: \"array\",\n items: {\n $ref: \"payment.json#\",\n },\n },\n revenue: {\n $ref: \"definitions.json#/definitions/revenue\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n propertyId: {\n type: \"string\",\n description:\n \"ID of the Property this synced user belongs to. Used as a per-document filter inside the org-scoped database.\",\n },\n
|
|
1
|
+
{"version":3,"file":"systemUser.js","names":[],"sources":["../../.generated/schemas/systemUser.ts"],"sourcesContent":["import defs, { ISODateString } from \"./definitions\";\nimport type { FromSchema } from \"json-schema-to-ts\";\n\nexport const systemUserSchema = {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"systemUser.json\",\n title: \"System User\",\n description:\n \"A system user is a user that originated from an external 3rd party system.\",\n type: \"object\",\n required: [\"id\", \"firstName\", \"lastName\"],\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n type: {\n type: \"string\",\n default: \"systemUser\",\n enum: [\"systemUser\"],\n },\n driver: {\n $ref: \"definitions.json#/definitions/driver\",\n },\n firstName: {\n type: \"string\",\n },\n lastName: {\n type: \"string\",\n },\n phone: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\+[0-9]{1,14}$\",\n },\n email: {\n type: [\"string\", \"null\"],\n format: \"email\",\n },\n address: {\n $ref: \"definitions.json#/definitions/address\",\n },\n photo: {\n type: \"string\",\n },\n jobTitle: {\n type: \"string\",\n },\n dob: {\n type: \"string\",\n },\n gender: {\n type: [\"string\", \"null\"],\n enum: [\"male\", \"female\", null],\n },\n roles: {\n type: \"array\",\n items: {\n type: \"string\",\n enum: [\n \"Administrator\",\n \"Caretaker\",\n \"Colleague\",\n \"Friend\",\n \"Guardian\",\n \"Guest\",\n \"Maintenance\",\n \"Manager\",\n \"Neighbor\",\n \"Parent\",\n \"Relative\",\n \"Staff\",\n \"Student\",\n \"SuperAdmin\",\n \"User\",\n ],\n },\n },\n nationality: {\n type: \"string\",\n minLength: 2,\n maxLength: 2,\n },\n notes: {\n type: \"array\",\n items: {\n type: \"string\",\n },\n },\n files: {\n type: \"array\",\n items: {\n $ref: \"mediaFile.json#\",\n },\n },\n identifications: {\n type: \"array\",\n items: {\n $ref: \"identification.json#\",\n },\n },\n payments: {\n type: \"array\",\n items: {\n $ref: \"payment.json#\",\n },\n },\n revenue: {\n $ref: \"definitions.json#/definitions/revenue\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n systemId: {\n $ref: \"definitions.json#/definitions/systemId\",\n },\n propertyId: {\n type: \"string\",\n description:\n \"ID of the Property this synced user belongs to. Used as a per-document filter inside the org-scoped database.\",\n },\n consent: {\n $ref: \"definitions.json#/definitions/consent\",\n },\n },\n} as const;\n\nexport type SystemUserSchema = FromSchema<\n typeof systemUserSchema,\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":";AAGA,MAAa,mBAAmB;CAC9B,SAAS;CACT,KAAK;CACL,OAAO;CACP,aACE;CACF,MAAM;CACN,UAAU;EAAC;EAAM;EAAa;CAAU;CACxC,YAAY;EACV,IAAI,EACF,MAAM,mCACR;EACA,MAAM;GACJ,MAAM;GACN,SAAS;GACT,MAAM,CAAC,YAAY;EACrB;EACA,QAAQ,EACN,MAAM,uCACR;EACA,WAAW,EACT,MAAM,SACR;EACA,UAAU,EACR,MAAM,SACR;EACA,OAAO;GACL,MAAM,CAAC,UAAU,MAAM;GACvB,SAAS;EACX;EACA,OAAO;GACL,MAAM,CAAC,UAAU,MAAM;GACvB,QAAQ;EACV;EACA,SAAS,EACP,MAAM,wCACR;EACA,OAAO,EACL,MAAM,SACR;EACA,UAAU,EACR,MAAM,SACR;EACA,KAAK,EACH,MAAM,SACR;EACA,QAAQ;GACN,MAAM,CAAC,UAAU,MAAM;GACvB,MAAM;IAAC;IAAQ;IAAU;GAAI;EAC/B;EACA,OAAO;GACL,MAAM;GACN,OAAO;IACL,MAAM;IACN,MAAM;KACJ;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACF;GACF;EACF;EACA,aAAa;GACX,MAAM;GACN,WAAW;GACX,WAAW;EACb;EACA,OAAO;GACL,MAAM;GACN,OAAO,EACL,MAAM,SACR;EACF;EACA,OAAO;GACL,MAAM;GACN,OAAO,EACL,MAAM,kBACR;EACF;EACA,iBAAiB;GACf,MAAM;GACN,OAAO,EACL,MAAM,uBACR;EACF;EACA,UAAU;GACR,MAAM;GACN,OAAO,EACL,MAAM,gBACR;EACF;EACA,SAAS,EACP,MAAM,wCACR;EACA,WAAW,EACT,MAAM,qCACR;EACA,WAAW,EACT,MAAM,qCACR;EACA,UAAU,EACR,MAAM,yCACR;EACA,YAAY;GACV,MAAM;GACN,aACE;EACJ;EACA,SAAS,EACP,MAAM,wCACR;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", "costVoided"];
|
|
52
|
+
readonly enum: readonly ["message", "opened", "assigned", "rated", "scheduled", "collaboratorAdded", "collaboratorRemoved", "statusChanged", "priorityChanged", "scheduleDateChanged", "locationChanged", "issueChanged", "nudged", "approvalRequested", "approvalApproved", "approvalDenied", "workScheduled", "workRescheduled", "workCanceled", "workCompleted", "workNotCompleted", "workVerificationCleared", "costRecorded", "costPriceChanged", "costVoided", "awaitingResponse", "awaitingResponseCleared"];
|
|
53
53
|
readonly default: "message";
|
|
54
54
|
readonly description: "The discriminator of the message.";
|
|
55
55
|
};
|
|
@@ -392,6 +392,48 @@ export declare const ticketSchema: {
|
|
|
392
392
|
};
|
|
393
393
|
};
|
|
394
394
|
};
|
|
395
|
+
readonly awaitingResponse: {
|
|
396
|
+
readonly type: "object";
|
|
397
|
+
readonly additionalProperties: false;
|
|
398
|
+
readonly required: readonly ["awaiting"];
|
|
399
|
+
readonly description: "Legacy. Earlier releases announced the Awaiting response marker in the conversation; the marker now lives only in the ticket's `awaitingResponse` slot and no new entries of this kind are written.";
|
|
400
|
+
readonly properties: {
|
|
401
|
+
readonly awaiting: {
|
|
402
|
+
readonly type: "object";
|
|
403
|
+
readonly additionalProperties: false;
|
|
404
|
+
readonly required: readonly ["id", "discriminator", "name"];
|
|
405
|
+
readonly properties: {
|
|
406
|
+
readonly id: {
|
|
407
|
+
readonly type: "string";
|
|
408
|
+
};
|
|
409
|
+
readonly discriminator: {
|
|
410
|
+
readonly type: "string";
|
|
411
|
+
readonly enum: readonly ["user"];
|
|
412
|
+
};
|
|
413
|
+
readonly name: {
|
|
414
|
+
readonly type: "string";
|
|
415
|
+
};
|
|
416
|
+
};
|
|
417
|
+
};
|
|
418
|
+
readonly messageId: {
|
|
419
|
+
readonly type: readonly ["string", "null"];
|
|
420
|
+
readonly default: null;
|
|
421
|
+
readonly description: "The conversation message this marker was sent with, when the composer set both in one write.";
|
|
422
|
+
};
|
|
423
|
+
};
|
|
424
|
+
};
|
|
425
|
+
readonly awaitingResponseCleared: {
|
|
426
|
+
readonly type: "object";
|
|
427
|
+
readonly additionalProperties: false;
|
|
428
|
+
readonly required: readonly ["reason"];
|
|
429
|
+
readonly description: "Legacy. Earlier releases announced the end of a wait in the conversation; no new entries of this kind are written.";
|
|
430
|
+
readonly properties: {
|
|
431
|
+
readonly reason: {
|
|
432
|
+
readonly type: "string";
|
|
433
|
+
readonly enum: readonly ["explicit", "left"];
|
|
434
|
+
};
|
|
435
|
+
};
|
|
436
|
+
};
|
|
395
437
|
readonly readBy: {
|
|
396
438
|
readonly type: "array";
|
|
397
439
|
readonly default: readonly [];
|
|
@@ -584,11 +626,11 @@ export declare const ticketSchema: {
|
|
|
584
626
|
readonly work: {
|
|
585
627
|
readonly type: "array";
|
|
586
628
|
readonly default: readonly [];
|
|
587
|
-
readonly description: "Work items scheduled on the ticket: who is coming, when, and what for. Many per ticket, including repeat visits by the same performer. Carries no lifecycle status — the conversation log is the history and a past-dated
|
|
629
|
+
readonly description: "Work items scheduled on the ticket: who is coming, when, and what for. Many per ticket, including repeat visits by the same performer. Carries no lifecycle status — the conversation log is the history, and only a roster verification says whether a past-dated visit happened. Never redacted; vendor identity is already public in assignment.";
|
|
588
630
|
readonly items: {
|
|
589
631
|
readonly type: "object";
|
|
590
632
|
readonly additionalProperties: false;
|
|
591
|
-
readonly required: readonly ["id", "performer"
|
|
633
|
+
readonly required: readonly ["id", "performer"];
|
|
592
634
|
readonly properties: {
|
|
593
635
|
readonly id: {
|
|
594
636
|
readonly type: "string";
|
|
@@ -616,9 +658,16 @@ export declare const ticketSchema: {
|
|
|
616
658
|
};
|
|
617
659
|
};
|
|
618
660
|
readonly date: {
|
|
619
|
-
readonly type: "string";
|
|
661
|
+
readonly type: readonly ["string", "null"];
|
|
620
662
|
readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
|
|
621
|
-
readonly
|
|
663
|
+
readonly default: null;
|
|
664
|
+
readonly description: string;
|
|
665
|
+
};
|
|
666
|
+
readonly blockedUntil: {
|
|
667
|
+
readonly type: readonly ["string", "null"];
|
|
668
|
+
readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
|
|
669
|
+
readonly default: null;
|
|
670
|
+
readonly description: string;
|
|
622
671
|
};
|
|
623
672
|
readonly time: {
|
|
624
673
|
readonly type: readonly ["string", "null"];
|
|
@@ -658,6 +707,45 @@ export declare const ticketSchema: {
|
|
|
658
707
|
};
|
|
659
708
|
};
|
|
660
709
|
};
|
|
710
|
+
readonly verification: {
|
|
711
|
+
readonly type: readonly ["object", "null"];
|
|
712
|
+
readonly additionalProperties: false;
|
|
713
|
+
readonly required: readonly ["outcome", "verifiedBy", "verifiedAt"];
|
|
714
|
+
readonly default: null;
|
|
715
|
+
readonly description: string;
|
|
716
|
+
readonly properties: {
|
|
717
|
+
readonly outcome: {
|
|
718
|
+
readonly type: "string";
|
|
719
|
+
readonly enum: readonly ["completed", "notCompleted"];
|
|
720
|
+
readonly description: string;
|
|
721
|
+
};
|
|
722
|
+
readonly comment: {
|
|
723
|
+
readonly type: readonly ["string", "null"];
|
|
724
|
+
readonly default: null;
|
|
725
|
+
readonly description: string;
|
|
726
|
+
};
|
|
727
|
+
readonly verifiedBy: {
|
|
728
|
+
readonly type: "object";
|
|
729
|
+
readonly additionalProperties: false;
|
|
730
|
+
readonly required: readonly ["id", "name"];
|
|
731
|
+
readonly description: string;
|
|
732
|
+
readonly properties: {
|
|
733
|
+
readonly id: {
|
|
734
|
+
readonly type: "string";
|
|
735
|
+
readonly description: "The ID of the verifying user.";
|
|
736
|
+
};
|
|
737
|
+
readonly name: {
|
|
738
|
+
readonly type: "string";
|
|
739
|
+
readonly description: "The verifying user's name at the time of the write.";
|
|
740
|
+
};
|
|
741
|
+
};
|
|
742
|
+
};
|
|
743
|
+
readonly verifiedAt: {
|
|
744
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
745
|
+
readonly description: "When the outcome was recorded.";
|
|
746
|
+
};
|
|
747
|
+
};
|
|
748
|
+
};
|
|
661
749
|
};
|
|
662
750
|
};
|
|
663
751
|
};
|
|
@@ -684,48 +772,6 @@ export declare const ticketSchema: {
|
|
|
684
772
|
readonly default: "USD";
|
|
685
773
|
readonly description: "ISO 4217 currency code of the entry's amounts.";
|
|
686
774
|
};
|
|
687
|
-
readonly price: {
|
|
688
|
-
readonly type: "object";
|
|
689
|
-
readonly additionalProperties: false;
|
|
690
|
-
readonly required: readonly ["amount", "recordedBy", "recordedAt"];
|
|
691
|
-
readonly description: string;
|
|
692
|
-
readonly properties: {
|
|
693
|
-
readonly amount: {
|
|
694
|
-
readonly type: "integer";
|
|
695
|
-
readonly minimum: 0;
|
|
696
|
-
readonly description: "The amount in integer cents.";
|
|
697
|
-
};
|
|
698
|
-
readonly recordedBy: {
|
|
699
|
-
readonly type: "string";
|
|
700
|
-
readonly description: "The ID of the user who recorded the amount.";
|
|
701
|
-
};
|
|
702
|
-
readonly recordedAt: {
|
|
703
|
-
readonly $ref: "definitions.json#/definitions/date";
|
|
704
|
-
readonly description: "When the amount was recorded.";
|
|
705
|
-
};
|
|
706
|
-
};
|
|
707
|
-
};
|
|
708
|
-
readonly estimate: {
|
|
709
|
-
readonly type: "object";
|
|
710
|
-
readonly additionalProperties: false;
|
|
711
|
-
readonly required: readonly ["amount", "recordedBy", "recordedAt"];
|
|
712
|
-
readonly description: string;
|
|
713
|
-
readonly properties: {
|
|
714
|
-
readonly amount: {
|
|
715
|
-
readonly type: "integer";
|
|
716
|
-
readonly minimum: 0;
|
|
717
|
-
readonly description: "The amount in integer cents.";
|
|
718
|
-
};
|
|
719
|
-
readonly recordedBy: {
|
|
720
|
-
readonly type: "string";
|
|
721
|
-
readonly description: "The ID of the user who recorded the amount.";
|
|
722
|
-
};
|
|
723
|
-
readonly recordedAt: {
|
|
724
|
-
readonly $ref: "definitions.json#/definitions/date";
|
|
725
|
-
readonly description: "When the amount was recorded.";
|
|
726
|
-
};
|
|
727
|
-
};
|
|
728
|
-
};
|
|
729
775
|
readonly actual: {
|
|
730
776
|
readonly type: "object";
|
|
731
777
|
readonly additionalProperties: false;
|
|
@@ -796,6 +842,65 @@ export declare const ticketSchema: {
|
|
|
796
842
|
readonly default: false;
|
|
797
843
|
readonly description: string;
|
|
798
844
|
};
|
|
845
|
+
readonly price: {
|
|
846
|
+
readonly type: readonly ["object", "null"];
|
|
847
|
+
readonly additionalProperties: false;
|
|
848
|
+
readonly required: readonly ["amount", "recordedBy", "recordedAt"];
|
|
849
|
+
readonly default: null;
|
|
850
|
+
readonly description: string;
|
|
851
|
+
readonly properties: {
|
|
852
|
+
readonly amount: {
|
|
853
|
+
readonly type: "integer";
|
|
854
|
+
readonly minimum: 0;
|
|
855
|
+
readonly description: "The amount in integer cents.";
|
|
856
|
+
};
|
|
857
|
+
readonly recordedBy: {
|
|
858
|
+
readonly type: "string";
|
|
859
|
+
readonly description: "The ID of the user who recorded the amount.";
|
|
860
|
+
};
|
|
861
|
+
readonly recordedAt: {
|
|
862
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
863
|
+
readonly description: "When the amount was recorded.";
|
|
864
|
+
};
|
|
865
|
+
};
|
|
866
|
+
};
|
|
867
|
+
readonly estimate: {
|
|
868
|
+
readonly type: readonly ["object", "null"];
|
|
869
|
+
readonly additionalProperties: false;
|
|
870
|
+
readonly required: readonly ["amount", "recordedBy", "recordedAt"];
|
|
871
|
+
readonly default: null;
|
|
872
|
+
readonly description: string;
|
|
873
|
+
readonly properties: {
|
|
874
|
+
readonly amount: {
|
|
875
|
+
readonly type: "integer";
|
|
876
|
+
readonly minimum: 0;
|
|
877
|
+
readonly description: "The amount in integer cents.";
|
|
878
|
+
};
|
|
879
|
+
readonly recordedBy: {
|
|
880
|
+
readonly type: "string";
|
|
881
|
+
readonly description: "The ID of the user who recorded the amount.";
|
|
882
|
+
};
|
|
883
|
+
readonly recordedAt: {
|
|
884
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
885
|
+
readonly description: "When the amount was recorded.";
|
|
886
|
+
};
|
|
887
|
+
};
|
|
888
|
+
};
|
|
889
|
+
readonly createdAt: {
|
|
890
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
891
|
+
readonly description: string;
|
|
892
|
+
};
|
|
893
|
+
readonly createdBy: {
|
|
894
|
+
readonly type: readonly ["string", "null"];
|
|
895
|
+
readonly default: null;
|
|
896
|
+
readonly description: string;
|
|
897
|
+
};
|
|
898
|
+
readonly expectedOn: {
|
|
899
|
+
readonly type: readonly ["string", "null"];
|
|
900
|
+
readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
|
|
901
|
+
readonly default: null;
|
|
902
|
+
readonly description: string;
|
|
903
|
+
};
|
|
799
904
|
readonly billingReview: {
|
|
800
905
|
readonly type: "array";
|
|
801
906
|
readonly default: readonly [];
|
|
@@ -870,10 +975,25 @@ export declare const ticketSchema: {
|
|
|
870
975
|
readonly description: "ISO 4217 currency code of the entry's amounts.";
|
|
871
976
|
};
|
|
872
977
|
readonly price: {
|
|
873
|
-
readonly type: "integer";
|
|
978
|
+
readonly type: readonly ["integer", "null"];
|
|
874
979
|
readonly minimum: 0;
|
|
875
980
|
readonly description: string;
|
|
876
981
|
};
|
|
982
|
+
readonly createdAt: {
|
|
983
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
984
|
+
readonly description: string;
|
|
985
|
+
};
|
|
986
|
+
readonly createdBy: {
|
|
987
|
+
readonly type: readonly ["string", "null"];
|
|
988
|
+
readonly default: null;
|
|
989
|
+
readonly description: string;
|
|
990
|
+
};
|
|
991
|
+
readonly expectedOn: {
|
|
992
|
+
readonly type: readonly ["string", "null"];
|
|
993
|
+
readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
|
|
994
|
+
readonly default: null;
|
|
995
|
+
readonly description: string;
|
|
996
|
+
};
|
|
877
997
|
readonly voided: {
|
|
878
998
|
readonly type: "boolean";
|
|
879
999
|
readonly default: false;
|
|
@@ -955,12 +1075,74 @@ export declare const ticketSchema: {
|
|
|
955
1075
|
readonly minimum: 0;
|
|
956
1076
|
readonly description: "The effective do-not-exceed amount in integer cents the approval gate compares against, resolved per read from the organization and property Concierge settings. Never stored on the document and never set by clients; absent on payloads where it could not be resolved. Viewer-independent: the DNE is the customer's own contract term, so org-side viewers see it.";
|
|
957
1077
|
};
|
|
1078
|
+
readonly stages: {
|
|
1079
|
+
readonly type: "array";
|
|
1080
|
+
readonly description: "The Stages the ticket carries, in the fixed chip order. Derived at read time from the ticket's own facts, never stored and never set by clients, and absent for every viewer outside Kohost's facilities staff. A ticket may carry several at once; `closed` and `pending` tickets carry none.";
|
|
1081
|
+
readonly items: {
|
|
1082
|
+
readonly type: "string";
|
|
1083
|
+
readonly enum: readonly ["awaitingClientApproval", "awaitingClientResponse", "awaitingVendorQuote", "awaitingScheduling", "vendorScheduled", "confirmCosts", "resolveReady"];
|
|
1084
|
+
};
|
|
1085
|
+
};
|
|
958
1086
|
readonly approvalState: {
|
|
959
1087
|
readonly type: "string";
|
|
960
1088
|
readonly enum: readonly ["clear", "awaitingApproval", "denied"];
|
|
961
1089
|
readonly default: "clear";
|
|
962
1090
|
readonly description: "Server-maintained denormalization of the approval gate, updated on every cost or approval write (reopenCount pattern) so queue filters get O(1) access. Never set by clients.";
|
|
963
1091
|
};
|
|
1092
|
+
readonly awaitingResponse: {
|
|
1093
|
+
readonly type: readonly ["object", "null"];
|
|
1094
|
+
readonly default: null;
|
|
1095
|
+
readonly additionalProperties: false;
|
|
1096
|
+
readonly required: readonly ["author", "awaiting", "since"];
|
|
1097
|
+
readonly description: "A Kohost Facilities agent's private note that they are waiting on a reply, from one named participant outside Kohost's side or from anyone outside it. Served only to the Facilities roster; every other viewer receives null. A named wait ends when anyone other than its author posts a public message or when the awaited person leaves the ticket; an anyone wait ends when someone outside Kohost's side posts a public message. Either ends when the roster clears it. Written only through SetAwaitingResponse and ClearAwaitingResponse.";
|
|
1098
|
+
readonly properties: {
|
|
1099
|
+
readonly author: {
|
|
1100
|
+
readonly type: "object";
|
|
1101
|
+
readonly additionalProperties: false;
|
|
1102
|
+
readonly required: readonly ["id", "discriminator", "name"];
|
|
1103
|
+
readonly description: "Who set the marker.";
|
|
1104
|
+
readonly properties: {
|
|
1105
|
+
readonly id: {
|
|
1106
|
+
readonly type: "string";
|
|
1107
|
+
};
|
|
1108
|
+
readonly discriminator: {
|
|
1109
|
+
readonly type: "string";
|
|
1110
|
+
readonly enum: readonly ["user", "vendor", "system"];
|
|
1111
|
+
};
|
|
1112
|
+
readonly name: {
|
|
1113
|
+
readonly type: "string";
|
|
1114
|
+
};
|
|
1115
|
+
};
|
|
1116
|
+
};
|
|
1117
|
+
readonly awaiting: {
|
|
1118
|
+
readonly type: readonly ["object", "null"];
|
|
1119
|
+
readonly additionalProperties: false;
|
|
1120
|
+
readonly required: readonly ["id", "discriminator", "name"];
|
|
1121
|
+
readonly description: "The person the ticket is waiting on. Null when the wait is on anyone outside Kohost's side rather than one named person.";
|
|
1122
|
+
readonly properties: {
|
|
1123
|
+
readonly id: {
|
|
1124
|
+
readonly type: "string";
|
|
1125
|
+
};
|
|
1126
|
+
readonly discriminator: {
|
|
1127
|
+
readonly type: "string";
|
|
1128
|
+
readonly enum: readonly ["user"];
|
|
1129
|
+
};
|
|
1130
|
+
readonly name: {
|
|
1131
|
+
readonly type: "string";
|
|
1132
|
+
};
|
|
1133
|
+
};
|
|
1134
|
+
};
|
|
1135
|
+
readonly since: {
|
|
1136
|
+
readonly $ref: "definitions.json#/definitions/date";
|
|
1137
|
+
readonly description: "When the marker was set.";
|
|
1138
|
+
};
|
|
1139
|
+
readonly messageId: {
|
|
1140
|
+
readonly type: readonly ["string", "null"];
|
|
1141
|
+
readonly default: null;
|
|
1142
|
+
readonly description: "Legacy. Earlier releases linked the marker to the message it was sent with; no longer written.";
|
|
1143
|
+
};
|
|
1144
|
+
};
|
|
1145
|
+
};
|
|
964
1146
|
readonly tags: {
|
|
965
1147
|
readonly type: "array";
|
|
966
1148
|
readonly default: readonly [];
|
|
@@ -1017,6 +1199,8 @@ export type TicketCostEntry = Extract<NonNullable<TicketSchemaBase["costs"]>[num
|
|
|
1017
1199
|
}>;
|
|
1018
1200
|
/** One scheduled performance of work on a ticket. */
|
|
1019
1201
|
export type TicketWorkItem = NonNullable<TicketSchemaBase["work"]>[number];
|
|
1202
|
+
/** One derived Stage a ticket may carry. The API's `resolveStages` owns the rules. */
|
|
1203
|
+
export type TicketStage = NonNullable<TicketSchemaBase["stages"]>[number];
|
|
1020
1204
|
/** One append-only billing review entry on a stored cost entry. */
|
|
1021
1205
|
export type TicketCostBillingReviewEntry = NonNullable<TicketCostEntry["billingReview"]>[number];
|
|
1022
1206
|
export type TicketSchema = Omit<TicketSchemaBase, "costs"> & {
|