@kohost/api-client 7.10.0 → 7.12.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/index.js +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/models/group.d.ts +1 -1
- package/dist/models/group.js +2 -2
- package/dist/models/group.js.map +1 -1
- package/dist/schemas/definitions.d.ts +1 -1
- package/dist/schemas/definitions.js +1 -0
- package/dist/schemas/definitions.js.map +1 -1
- package/dist/schemas/group.d.ts +4 -4
- package/dist/schemas/group.js +4 -5
- package/dist/schemas/group.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/addBillLines.d.ts +36 -0
- package/dist/useCases/addBillLines.js +47 -0
- package/dist/useCases/addBillLines.js.map +1 -0
- package/dist/useCases/index.d.ts +2 -0
- package/dist/useCases/index.js +5 -1
- package/dist/useCases/index.js.map +1 -1
- 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 +3 -6
- package/package.json +6 -6
package/dist/lib/index.js
CHANGED
|
@@ -18,7 +18,7 @@ var lib_exports = /* @__PURE__ */ __exportAll({
|
|
|
18
18
|
DEFAULT_TAX_RATE: () => DEFAULT_TAX_RATE,
|
|
19
19
|
DELIVERY_OUTCOMES: () => DELIVERY_OUTCOMES,
|
|
20
20
|
KFC_STATS_DEFAULT_WINDOW_DAYS: () => 30,
|
|
21
|
-
KFC_STATS_MAX_RANGE_DAYS: () =>
|
|
21
|
+
KFC_STATS_MAX_RANGE_DAYS: () => KFC_STATS_MAX_RANGE_DAYS,
|
|
22
22
|
KFC_STATS_TIMEZONE: () => KFC_STATS_TIMEZONE,
|
|
23
23
|
MAX_MESSAGE_ATTACHMENTS: () => 15,
|
|
24
24
|
MESSAGE_ERROR_CATEGORIES: () => MESSAGE_ERROR_CATEGORIES,
|
|
@@ -14,11 +14,11 @@ export declare const KFC_STATS_TIMEZONE = "America/Los_Angeles";
|
|
|
14
14
|
/** Inclusive span of the default window when no `from` is given. */
|
|
15
15
|
export declare const KFC_STATS_DEFAULT_WINDOW_DAYS = 30;
|
|
16
16
|
/**
|
|
17
|
-
* Widest inclusive span a caller may request —
|
|
18
|
-
* federated aggregation cost scales with the window, so
|
|
19
|
-
* arbitrary caller can ask for.
|
|
17
|
+
* Widest inclusive span a caller may request — three calendar years, including
|
|
18
|
+
* one leap day. Cross-org federated aggregation cost scales with the window, so
|
|
19
|
+
* this caps the work an arbitrary caller can ask for.
|
|
20
20
|
*/
|
|
21
|
-
export declare const KFC_STATS_MAX_RANGE_DAYS =
|
|
21
|
+
export declare const KFC_STATS_MAX_RANGE_DAYS = 1096;
|
|
22
22
|
/** A resolved inclusive day window as `YYYY-MM-DD` civil-date labels. */
|
|
23
23
|
export interface KfcStatsWindowBounds {
|
|
24
24
|
from: string;
|
|
@@ -15,11 +15,11 @@ const KFC_STATS_TIMEZONE = "America/Los_Angeles";
|
|
|
15
15
|
/** Inclusive span of the default window when no `from` is given. */
|
|
16
16
|
const KFC_STATS_DEFAULT_WINDOW_DAYS = 30;
|
|
17
17
|
/**
|
|
18
|
-
* Widest inclusive span a caller may request —
|
|
19
|
-
* federated aggregation cost scales with the window, so
|
|
20
|
-
* arbitrary caller can ask for.
|
|
18
|
+
* Widest inclusive span a caller may request — three calendar years, including
|
|
19
|
+
* one leap day. Cross-org federated aggregation cost scales with the window, so
|
|
20
|
+
* this caps the work an arbitrary caller can ask for.
|
|
21
21
|
*/
|
|
22
|
-
const KFC_STATS_MAX_RANGE_DAYS =
|
|
22
|
+
const KFC_STATS_MAX_RANGE_DAYS = 1096;
|
|
23
23
|
const DAY_MS = 864e5;
|
|
24
24
|
function shiftDateLabel(label, days) {
|
|
25
25
|
const [year, month, day] = label.split("-").map(Number);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kfcStatsWindow.js","names":[],"sources":["../../.generated/lib/kfcStatsWindow.ts"],"sourcesContent":["/**\n * The KFC stats date-window contract, shared verbatim by the API endpoint and\n * the admin console so a `from`/`to` pair means the same window on both sides.\n * The server owns the authoritative resolution — it layers range validation and\n * instant conversion on top — while the client owns the preset and comparison\n * math the server has no notion of. Both must agree on the *constants and the\n * fallback*, though: the default view carries no dates in the URL, so the client\n * has to reconstruct the exact window the server would have chosen. Publishing\n * them once here is what keeps the two from silently disagreeing when the window\n * default or the anchor zone changes.\n */\n\n/** Calendar-day windows are anchored to this fixed zone (#360). */\nexport const KFC_STATS_TIMEZONE = \"America/Los_Angeles\";\n\n/** Inclusive span of the default window when no `from` is given. */\nexport const KFC_STATS_DEFAULT_WINDOW_DAYS = 30;\n\n/**\n * Widest inclusive span a caller may request —
|
|
1
|
+
{"version":3,"file":"kfcStatsWindow.js","names":[],"sources":["../../.generated/lib/kfcStatsWindow.ts"],"sourcesContent":["/**\n * The KFC stats date-window contract, shared verbatim by the API endpoint and\n * the admin console so a `from`/`to` pair means the same window on both sides.\n * The server owns the authoritative resolution — it layers range validation and\n * instant conversion on top — while the client owns the preset and comparison\n * math the server has no notion of. Both must agree on the *constants and the\n * fallback*, though: the default view carries no dates in the URL, so the client\n * has to reconstruct the exact window the server would have chosen. Publishing\n * them once here is what keeps the two from silently disagreeing when the window\n * default or the anchor zone changes.\n */\n\n/** Calendar-day windows are anchored to this fixed zone (#360). */\nexport const KFC_STATS_TIMEZONE = \"America/Los_Angeles\";\n\n/** Inclusive span of the default window when no `from` is given. */\nexport const KFC_STATS_DEFAULT_WINDOW_DAYS = 30;\n\n/**\n * Widest inclusive span a caller may request — three calendar years, including\n * one leap day. Cross-org federated aggregation cost scales with the window, so\n * this caps the work an arbitrary caller can ask for.\n */\nexport const KFC_STATS_MAX_RANGE_DAYS = 1096;\n\n/** A resolved inclusive day window as `YYYY-MM-DD` civil-date labels. */\nexport interface KfcStatsWindowBounds {\n from: string;\n to: string;\n}\n\nconst DAY_MS = 86_400_000;\n\n// Civil-date arithmetic on UTC-anchored instants so a day shift never drifts\n// across a DST boundary; only the calendar fields are ever read back out.\nfunction shiftDateLabel(label: string, days: number): string {\n const [year, month, day] = label.split(\"-\").map(Number);\n const shifted = new Date(Date.UTC(year, month - 1, day) + days * DAY_MS);\n const y = String(shifted.getUTCFullYear()).padStart(4, \"0\");\n const m = String(shifted.getUTCMonth() + 1).padStart(2, \"0\");\n const d = String(shifted.getUTCDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\n/**\n * The fallback both sides apply to a partial window: a missing `to` is `today`\n * (already resolved to the anchor zone by the caller), and a missing `from` is\n * the day `KFC_STATS_DEFAULT_WINDOW_DAYS - 1` before `to`, so the default view\n * spans that many days inclusive of today. Explicit bounds pass through\n * untouched; parsing, ordering, and span limits are the caller's to enforce.\n */\nexport function resolveKfcStatsWindowBounds(\n window: { from?: string | null; to?: string | null },\n today: string,\n): KfcStatsWindowBounds {\n const to = window.to ?? today;\n const from =\n window.from ?? shiftDateLabel(to, -(KFC_STATS_DEFAULT_WINDOW_DAYS - 1));\n return { from, to };\n}\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAa,qBAAqB;;AAGlC,MAAa,gCAAgC;;;;;;AAO7C,MAAa,2BAA2B;AAQxC,MAAM,SAAS;AAIf,SAAS,eAAe,OAAe,MAAsB;CAC3D,MAAM,CAAC,MAAM,OAAO,OAAO,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM;CACtD,MAAM,UAAU,IAAI,KAAK,KAAK,IAAI,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,MAAM;CAIvE,OAAO,GAHG,OAAO,QAAQ,eAAe,CAAC,CAAC,CAAC,SAAS,GAAG,GAG7C,EAAE,GAFF,OAAO,QAAQ,YAAY,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,GAEzC,EAAE,GADP,OAAO,QAAQ,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,GAC/B;AACtB;;;;;;;;AASA,SAAgB,4BACd,QACA,OACsB;CACtB,MAAM,KAAK,OAAO,MAAM;CAGxB,OAAO;EAAE,MADP,OAAO,QAAQ,eAAe,IAAI,GAAoC;EACzD;CAAG;AACpB"}
|
package/dist/models/group.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { groupSchema, type GroupSchema } from "../schemas/group.js";
|
|
|
6
6
|
*/
|
|
7
7
|
export type GroupData = GroupSchema;
|
|
8
8
|
/**
|
|
9
|
-
* A named collection of members.
|
|
9
|
+
* A named collection of members.
|
|
10
10
|
*/
|
|
11
11
|
export interface Group extends GroupSchema {
|
|
12
12
|
}
|
package/dist/models/group.js
CHANGED
|
@@ -9,8 +9,8 @@ var Group = class extends Entity {
|
|
|
9
9
|
if (data.systemId !== void 0) this.systemId = data.systemId;
|
|
10
10
|
if (data.driver !== void 0) this.driver = data.driver;
|
|
11
11
|
this.type = data.type;
|
|
12
|
-
this.
|
|
13
|
-
this.name = data.name;
|
|
12
|
+
this.discriminator = data.discriminator;
|
|
13
|
+
if (data.name !== void 0) this.name = data.name;
|
|
14
14
|
if (data.members !== void 0) this.members = data.members;
|
|
15
15
|
if (data.createdAt !== void 0) this.createdAt = data.createdAt;
|
|
16
16
|
if (data.updatedAt !== void 0) this.updatedAt = data.updatedAt;
|
package/dist/models/group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group.js","names":["validate"],"sources":["../../.generated/models/group.ts"],"sourcesContent":["/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity.js\";\nimport { validateGroup as validate } from \"../validate.js\";\nimport { groupSchema, type GroupSchema } from \"../schemas/group.js\";\n\n/**\n * Data type for Group constructor - exported for backwards compatibility\n */\nexport type GroupData = GroupSchema;\n\n/**\n * A named collection of members
|
|
1
|
+
{"version":3,"file":"group.js","names":["validate"],"sources":["../../.generated/models/group.ts"],"sourcesContent":["/* This file is automatically generated. Do not modify it manually. */\n\nimport { Entity } from \"./entity.js\";\nimport { validateGroup as validate } from \"../validate.js\";\nimport { groupSchema, type GroupSchema } from \"../schemas/group.js\";\n\n/**\n * Data type for Group constructor - exported for backwards compatibility\n */\nexport type GroupData = GroupSchema;\n\n/**\n * A named collection of members.\n */\nexport interface Group extends GroupSchema {}\nexport class Group extends Entity {\n declare schema: typeof groupSchema;\n declare validator: typeof validate;\n\n constructor(data: GroupSchema) {\n super(data);\n this.id = data.id;\n if (data.systemId !== undefined) this.systemId = data.systemId;\n if (data.driver !== undefined) this.driver = data.driver;\n this.type = data.type;\n this.discriminator = data.discriminator;\n if (data.name !== undefined) this.name = data.name;\n if (data.members !== undefined) this.members = data.members;\n if (data.createdAt !== undefined) this.createdAt = data.createdAt;\n if (data.updatedAt !== undefined) this.updatedAt = data.updatedAt;\n if (data.deletedAt !== undefined) this.deletedAt = data.deletedAt;\n }\n\n\n\n\n\n\n\n\n}\n\nObject.defineProperty(Group.prototype, \"schema\", {\n value: groupSchema\n});\n\nObject.defineProperty(Group.prototype, \"validator\", {\n get: function() { return validate; }\n});\n"],"mappings":";;;;AAeA,IAAa,QAAb,cAA2B,OAAO;CAIhC,YAAY,MAAmB;EAC7B,MAAM,IAAI;EACV,KAAK,KAAK,KAAK;EACf,IAAI,KAAK,aAAa,KAAA,GAAW,KAAK,WAAW,KAAK;EACtD,IAAI,KAAK,WAAW,KAAA,GAAW,KAAK,SAAS,KAAK;EAClD,KAAK,OAAO,KAAK;EACjB,KAAK,gBAAgB,KAAK;EAC1B,IAAI,KAAK,SAAS,KAAA,GAAW,KAAK,OAAO,KAAK;EAC9C,IAAI,KAAK,YAAY,KAAA,GAAW,KAAK,UAAU,KAAK;EACpD,IAAI,KAAK,cAAc,KAAA,GAAW,KAAK,YAAY,KAAK;EACxD,IAAI,KAAK,cAAc,KAAA,GAAW,KAAK,YAAY,KAAK;EACxD,IAAI,KAAK,cAAc,KAAA,GAAW,KAAK,YAAY,KAAK;CAC1D;AASF;AAEA,OAAO,eAAe,MAAM,WAAW,UAAU,EAC/C,OAAO,YACT,CAAC;AAED,OAAO,eAAe,MAAM,WAAW,aAAa,EAClD,KAAK,WAAW;CAAE,OAAOA;AAAU,EACrC,CAAC"}
|
|
@@ -93,7 +93,7 @@ declare const defs: {
|
|
|
93
93
|
readonly driver: {
|
|
94
94
|
readonly type: "string";
|
|
95
95
|
readonly description: "Driver used to communicate with the object.";
|
|
96
|
-
readonly enum: readonly ["adlink", "apex-american-audio", "avigilon-alta", "aws-kinesis", "bacnet", "benq", "butler", "comelit", "cool-automation", "crestron", "dell", "digital-watchdog", "distech", "dmp", "doorbird", "dormakaba", "dsc", "dsc-itv2", "earbridge", "ecobee", "epson", "geovision-rs", "geovision-as-manager", "honeywell-vista", "honeywell-resideo", "igor", "inncom", "isapi", "kohost-k7", "kohost", "lapi", "lg", "lg-webos", "linortek", "lirc", "mews", "mht", "mobile-mule", "mock", "modbus", "napco", "newline", "obix", "one-roster", "onvif", "orchid-fusion", "paxton", "pdk", "pelican-wireless", "power-shades", "rachio", "rebrandly", "relay", "reolink", "rtsp", "salto", "salto-irn", "samsung", "se", "sendgrid", "singlewire", "smartboard", "sonifi", "stay-n-touch", "storable", "twilio", "unifi", "valcom", "veracross", "verkada", "vivotek", "vizio", "wisenet", "zkteco", "cloudflare-images", "cloudflare-stream", "insperia-privacy"];
|
|
96
|
+
readonly enum: readonly ["adlink", "apex-american-audio", "avigilon-alta", "aws-kinesis", "bacnet", "benq", "butler", "comelit", "cool-automation", "crestron", "dell", "digital-watchdog", "distech", "dmp", "doorbird", "dormakaba", "dsc", "dsc-itv2", "earbridge", "ecobee", "epson", "geovision-rs", "geovision-as-manager", "hanwha", "honeywell-vista", "honeywell-resideo", "igor", "inncom", "isapi", "kohost-k7", "kohost", "lapi", "lg", "lg-webos", "linortek", "lirc", "mews", "mht", "mobile-mule", "mock", "modbus", "napco", "newline", "obix", "one-roster", "onvif", "orchid-fusion", "paxton", "pdk", "pelican-wireless", "power-shades", "rachio", "rebrandly", "relay", "reolink", "rtsp", "salto", "salto-irn", "samsung", "se", "sendgrid", "singlewire", "smartboard", "sonifi", "stay-n-touch", "storable", "twilio", "unifi", "valcom", "veracross", "verkada", "vivotek", "vizio", "wisenet", "zkteco", "cloudflare-images", "cloudflare-stream", "insperia-privacy"];
|
|
97
97
|
};
|
|
98
98
|
readonly type: {
|
|
99
99
|
readonly type: "string";
|
|
@@ -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 \"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"}
|
|
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 \"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;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"}
|
package/dist/schemas/group.d.ts
CHANGED
|
@@ -4,9 +4,9 @@ export declare const groupSchema: {
|
|
|
4
4
|
readonly $schema: "http://json-schema.org/draft-07/schema";
|
|
5
5
|
readonly $id: "group.json";
|
|
6
6
|
readonly title: "Group";
|
|
7
|
-
readonly description: "A named collection of members.
|
|
7
|
+
readonly description: "A named collection of members.";
|
|
8
8
|
readonly type: "object";
|
|
9
|
-
readonly required: readonly ["id", "type", "
|
|
9
|
+
readonly required: readonly ["id", "type", "discriminator"];
|
|
10
10
|
readonly additionalProperties: false;
|
|
11
11
|
readonly properties: {
|
|
12
12
|
readonly id: {
|
|
@@ -23,9 +23,9 @@ export declare const groupSchema: {
|
|
|
23
23
|
readonly enum: readonly ["group"];
|
|
24
24
|
readonly default: "group";
|
|
25
25
|
};
|
|
26
|
-
readonly
|
|
26
|
+
readonly discriminator: {
|
|
27
27
|
readonly type: "string";
|
|
28
|
-
readonly enum: readonly ["
|
|
28
|
+
readonly enum: readonly ["social", "department"];
|
|
29
29
|
};
|
|
30
30
|
readonly name: {
|
|
31
31
|
readonly type: "string";
|
package/dist/schemas/group.js
CHANGED
|
@@ -3,13 +3,12 @@ const groupSchema = {
|
|
|
3
3
|
$schema: "http://json-schema.org/draft-07/schema",
|
|
4
4
|
$id: "group.json",
|
|
5
5
|
title: "Group",
|
|
6
|
-
description: "A named collection of members.
|
|
6
|
+
description: "A named collection of members.",
|
|
7
7
|
type: "object",
|
|
8
8
|
required: [
|
|
9
9
|
"id",
|
|
10
10
|
"type",
|
|
11
|
-
"
|
|
12
|
-
"name"
|
|
11
|
+
"discriminator"
|
|
13
12
|
],
|
|
14
13
|
additionalProperties: false,
|
|
15
14
|
properties: {
|
|
@@ -21,9 +20,9 @@ const groupSchema = {
|
|
|
21
20
|
enum: ["group"],
|
|
22
21
|
default: "group"
|
|
23
22
|
},
|
|
24
|
-
|
|
23
|
+
discriminator: {
|
|
25
24
|
type: "string",
|
|
26
|
-
enum: ["
|
|
25
|
+
enum: ["social", "department"]
|
|
27
26
|
},
|
|
28
27
|
name: { type: "string" },
|
|
29
28
|
members: {
|
|
@@ -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
|
|
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: [\n \"social\",\n \"department\",\n ],\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,MAAM;GACJ,MAAM;GACN,MAAM,CAAC,OAAO;GACd,SAAS;EACX;EACA,eAAe;GACb,MAAM;GACN,MAAM,CACJ,UACA,YACF;EACF;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/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
|
};
|
package/dist/schemas/ticket.js
CHANGED
|
@@ -175,7 +175,8 @@ const ticketSchema = {
|
|
|
175
175
|
"workRescheduled",
|
|
176
176
|
"workCanceled",
|
|
177
177
|
"costRecorded",
|
|
178
|
-
"costPriceChanged"
|
|
178
|
+
"costPriceChanged",
|
|
179
|
+
"costVoided"
|
|
179
180
|
],
|
|
180
181
|
default: "message",
|
|
181
182
|
description: "The discriminator of the message."
|
|
@@ -787,10 +788,15 @@ const ticketSchema = {
|
|
|
787
788
|
default: false,
|
|
788
789
|
description: "Server-maintained denormalization of billingReview (approvalState pattern): true after a writtenOff entry until a reinstated entry follows. A written-off cost leaves the uninvoiced pool. Never set by clients."
|
|
789
790
|
},
|
|
791
|
+
voided: {
|
|
792
|
+
type: "boolean",
|
|
793
|
+
default: false,
|
|
794
|
+
description: "Server-maintained denormalization of billingReview (writtenOff pattern): true after a voided entry until a reinstated entry follows. A voided cost is withdrawn: it counts toward neither the approval gate nor financial completion and leaves the uninvoiced pool, but stays on the ticket so every viewer sees it was voided. Never set by clients."
|
|
795
|
+
},
|
|
790
796
|
billingReview: {
|
|
791
797
|
type: "array",
|
|
792
798
|
default: [],
|
|
793
|
-
description: "Append-only billing review history for the entry (approval-history pattern): reversible write-offs and billed-vs-price divergence acknowledgements. Internal, redacted org-side.",
|
|
799
|
+
description: "Append-only billing review history for the entry (approval-history pattern): reversible write-offs and voids, and billed-vs-price divergence acknowledgements. Internal, redacted org-side.",
|
|
794
800
|
items: {
|
|
795
801
|
type: "object",
|
|
796
802
|
additionalProperties: false,
|
|
@@ -808,6 +814,7 @@ const ticketSchema = {
|
|
|
808
814
|
type: "string",
|
|
809
815
|
enum: [
|
|
810
816
|
"writtenOff",
|
|
817
|
+
"voided",
|
|
811
818
|
"reinstated",
|
|
812
819
|
"divergenceAcknowledged"
|
|
813
820
|
]
|
|
@@ -867,6 +874,16 @@ const ticketSchema = {
|
|
|
867
874
|
type: "integer",
|
|
868
875
|
minimum: 0,
|
|
869
876
|
description: "The entry's stored customer price in integer cents — the whole of what an org-side viewer receives, flattened out of the stored price phase so none of its recording metadata comes with it."
|
|
877
|
+
},
|
|
878
|
+
voided: {
|
|
879
|
+
type: "boolean",
|
|
880
|
+
default: false,
|
|
881
|
+
description: "Whether the entry was voided (withdrawn). Carried through redaction so an org-side viewer sees the cost no longer counts."
|
|
882
|
+
},
|
|
883
|
+
settled: {
|
|
884
|
+
type: "boolean",
|
|
885
|
+
default: false,
|
|
886
|
+
description: "Whether a bill has claimed the entry or it was written off, so it can no longer be voided. Carried through redaction as a bare flag: neither the bill nor the write-off itself is exposed org-side."
|
|
870
887
|
}
|
|
871
888
|
}
|
|
872
889
|
}] }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket.js","names":[],"sources":["../../.generated/schemas/ticket.ts"],"sourcesContent":["import defs, { ISODateString } from \"./definitions\";\nimport type { FromSchema } from \"json-schema-to-ts\";\nimport type { mediaFileSchema } from \"./mediaFile\";\n\n// Rich-text node vocabulary for parsedBody.content (ADR 0012). Deliberately\n// fixed-depth rather than recursive: json-schema-to-ts cannot derive types\n// from self-referencing schemas, so nested lists are excluded. These consts\n// must not be exported — the model generator treats the first export ending\n// in \"Schema\" as the entity schema.\nconst richTextTextNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"text\"],\n properties: {\n type: { type: \"string\", enum: [\"text\"] },\n text: { type: \"string\" },\n marks: {\n type: \"array\",\n uniqueItems: true,\n items: { type: \"string\", enum: [\"bold\", \"italic\", \"underline\"] },\n },\n },\n} as const;\n\nconst richTextMentionNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"id\", \"discriminator\", \"label\"],\n properties: {\n type: { type: \"string\", enum: [\"mention\"] },\n id: { type: \"string\" },\n discriminator: { type: \"string\", enum: [\"user\", \"vendor\", \"system\"] },\n label: {\n type: \"string\",\n description:\n \"Display name of the mentioned entity, without the leading @.\",\n },\n },\n} as const;\n\nconst richTextHardBreakNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\"],\n properties: {\n type: { type: \"string\", enum: [\"hardBreak\"] },\n },\n} as const;\n\nconst richTextInlineNodes = {\n type: \"array\",\n minItems: 1,\n items: {\n anyOf: [richTextTextNode, richTextMentionNode, richTextHardBreakNode],\n },\n} as const;\n\nconst richTextParagraphNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"content\"],\n properties: {\n type: { type: \"string\", enum: [\"paragraph\"] },\n content: richTextInlineNodes,\n },\n} as const;\n\nconst richTextListItemNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"content\"],\n properties: {\n type: { type: \"string\", enum: [\"listItem\"] },\n content: richTextInlineNodes,\n },\n} as const;\n\nconst richTextBulletListNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"content\"],\n properties: {\n type: { type: \"string\", enum: [\"bulletList\"] },\n content: { type: \"array\", minItems: 1, items: richTextListItemNode },\n },\n} as const;\n\nconst richTextOrderedListNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"content\"],\n properties: {\n type: { type: \"string\", enum: [\"orderedList\"] },\n content: { type: \"array\", minItems: 1, items: richTextListItemNode },\n },\n} as const;\n\n// A cost entry reaches a client in one of two shapes, and both are valid wire\n// payloads a `Ticket` model must accept. A roster viewer or superadmin receives\n// the stored entry (`fullCostEntry`): the customer `price`, the vendor\n// `estimate`, `markup`, and an optional `actual`. Every other viewer receives\n// the redacted projection (`redactedCostEntry`) the API builds field-by-field —\n// the stored price as a bare amount, never the vendor cost or markup behind it\n// (see `redactCostEntry`/`applyTicketVisibility` in the API). The two are\n// disjoint (each forbids the other's discriminating fields via\n// `additionalProperties`, and `price` is an object on one and an integer on the\n// other), so `costs.items` is their `oneOf`.\nconst fullCostEntrySchema = {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"description\", \"currency\", \"price\", \"estimate\", \"markup\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the cost entry.\",\n },\n description: {\n type: \"string\",\n description: \"What the cost covers.\",\n },\n currency: {\n type: \"string\",\n default: \"USD\",\n description: \"ISO 4217 currency code of the entry's amounts.\",\n },\n price: {\n type: \"object\",\n additionalProperties: false,\n required: [\"amount\", \"recordedBy\", \"recordedAt\"],\n description:\n \"The authoritative customer price of the entry — what the org is \" +\n \"charged, what the approval gate totals, and what a bill line bills. \" +\n \"Seeded at recording from the estimate and the markup, and from then \" +\n \"on independent of all three: editing `estimate`, `actual`, or \" +\n \"`markup` never moves it. Only an explicit price write does.\",\n properties: {\n amount: {\n type: \"integer\",\n minimum: 0,\n description: \"Customer price in integer cents.\",\n },\n recordedBy: {\n type: \"string\",\n description: \"The ID of the user who recorded the amount.\",\n },\n recordedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the amount was recorded.\",\n },\n },\n },\n estimate: {\n type: \"object\",\n additionalProperties: false,\n required: [\"amount\", \"recordedBy\", \"recordedAt\"],\n description: \"The vendor cost estimate phase of the entry.\",\n properties: {\n amount: {\n type: \"integer\",\n minimum: 0,\n description: \"Vendor cost estimate in integer cents.\",\n },\n recordedBy: {\n type: \"string\",\n description: \"The ID of the user who recorded the amount.\",\n },\n recordedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the amount was recorded.\",\n },\n },\n },\n actual: {\n type: \"object\",\n additionalProperties: false,\n required: [\"amount\", \"recordedBy\", \"recordedAt\"],\n description:\n \"The actual vendor cost phase of the entry, recorded after the work.\",\n properties: {\n amount: {\n type: \"integer\",\n minimum: 0,\n description: \"Actual vendor cost in integer cents.\",\n },\n recordedBy: {\n type: \"string\",\n description: \"The ID of the user who recorded the amount.\",\n },\n recordedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the amount was recorded.\",\n },\n },\n },\n markup: {\n type: \"object\",\n additionalProperties: false,\n required: [\"percent\"],\n properties: {\n percent: {\n type: \"number\",\n minimum: 0,\n description:\n \"Markup percent the initial price was quoted at, uncapped. \" +\n \"Context for how that quote was arrived at, not the source of \" +\n \"truth for any amount: `price` is stored, so re-keying this \" +\n \"percent prices nothing.\",\n },\n custom: {\n type: \"boolean\",\n default: false,\n description:\n \"Whether the percent was manually overridden rather than keyed from the configured markup tiers. Custom percents are never re-keyed on estimate edits.\",\n },\n },\n },\n vendorInvoices: {\n type: \"array\",\n items: { $ref: \"mediaFile.json\" },\n default: [],\n description:\n \"The vendor's paperwork backing the entry's amounts, attached \" +\n \"around recording the actual (or later) — an invoice plus whatever \" +\n \"came with it. Internal: the file-store cannot enforce roster-only \" +\n \"reads, so the boundary is this field living on the full shape \" +\n \"only — the redacted projection never carries it.\",\n },\n vendorInvoiceNumber: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The vendor's own invoice number. Internal, redacted org-side like \" +\n \"the rest of the cost split.\",\n },\n vendorId: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The Vendor the cost came from. A plain reference — no rollups — \" +\n \"recorded alongside the vendor invoice and redacted org-side with \" +\n \"the rest of the cost split. Independent of `workItemId`: a vendor \" +\n \"cost need not trace to a scheduled visit.\",\n },\n workItemId: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The Work item on this ticket that produced the cost. Many entries \" +\n \"may name one visit, so a single trip's labor and materials can be \" +\n \"itemized. Cleared when the Work item is removed — the money record \" +\n \"outlives the scheduling record. Internal, redacted org-side.\",\n },\n categoryId: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The billing category classifying this cost, picked on the \" +\n \"reconciliation pool before any bill claims the entry. `AddBillLine` \" +\n \"snapshots it onto the claiming line, which owns its own category \" +\n \"from then on. Internal, redacted org-side with the rest of the \" +\n \"cost split.\",\n },\n billId: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"Backlink to the bill whose draft claimed this cost as a line. \" +\n \"Written when a draft bill adds the line, cleared on line removal, \" +\n \"draft delete, or bill void; a claimed cost leaves the uninvoiced \" +\n \"pool, making double-invoicing structurally impossible. \" +\n \"Server-maintained at the repository, never set by clients.\",\n },\n writtenOff: {\n type: \"boolean\",\n default: false,\n description:\n \"Server-maintained denormalization of billingReview (approvalState \" +\n \"pattern): true after a writtenOff entry until a reinstated entry \" +\n \"follows. A written-off cost leaves the uninvoiced pool. Never set \" +\n \"by clients.\",\n },\n billingReview: {\n type: \"array\",\n default: [],\n description:\n \"Append-only billing review history for the entry (approval-history \" +\n \"pattern): reversible write-offs and billed-vs-price divergence \" +\n \"acknowledgements. Internal, redacted org-side.\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"action\", \"performedAt\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the billing review entry.\",\n },\n action: {\n type: \"string\",\n enum: [\"writtenOff\", \"reinstated\", \"divergenceAcknowledged\"],\n },\n performedBy: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The ID of the user whose write appended this entry. Null \" +\n \"when the write was not user-attributable.\",\n },\n performedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the entry was appended.\",\n },\n note: {\n type: [\"string\", \"null\"],\n default: null,\n description: \"Free-text rationale for the action.\",\n },\n billedAmount: {\n type: \"integer\",\n minimum: 0,\n description:\n \"divergenceAcknowledged only: the amount a bill line already \" +\n \"charged for this entry, in integer cents, frozen at ack time.\",\n },\n priceAmount: {\n type: \"integer\",\n minimum: 0,\n description:\n \"divergenceAcknowledged only: the entry's stored customer \" +\n \"price in integer cents at ack time. A divergence is a billed \" +\n \"line that no longer matches the price behind it — a price \" +\n \"corrected after the cost was claimed — so the ack silences \" +\n \"this one pair and any later price move re-flags it. A vendor \" +\n \"actual arriving after billing is not a divergence: it moves \" +\n \"margin, not what the customer owes.\",\n },\n },\n },\n },\n },\n} as const;\n\nconst redactedCostEntrySchema = {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"description\", \"currency\", \"price\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the cost entry.\",\n },\n description: {\n type: \"string\",\n description: \"What the cost covers.\",\n },\n currency: {\n type: \"string\",\n default: \"USD\",\n description: \"ISO 4217 currency code of the entry's amounts.\",\n },\n price: {\n type: \"integer\",\n minimum: 0,\n description:\n \"The entry's stored customer price in integer cents — the whole of \" +\n \"what an org-side viewer receives, flattened out of the stored \" +\n \"price phase so none of its recording metadata comes with it.\",\n },\n },\n} as const;\n\n// A Work item is a scheduled performance of work on the ticket — who is coming,\n// when, and what for. Timing is wall-clock at the property, not an instant: vendors\n// commit to \"Thursday\" as often as to \"Thursday at 10\", and an instant would\n// force a fake time on the day-only case and drift a day across the property's\n// timezone on every render. `date` and `time` therefore mean exactly what the\n// building reads off them, and the conversation event can be minted without\n// resolving a timezone at all.\nconst workItemSchema = {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"performer\", \"date\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the work item.\",\n },\n performer: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n description:\n \"Who is performing the work — a Vendor, or a staff User the work is \" +\n \"scheduled to. A discriminated reference in the same shape as \" +\n \"`assignedTo`, but orthogonal to it: `assignedTo` is who owns the \" +\n \"ticket, this is who shows up for one visit.\",\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the performer.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"vendor\", \"user\"],\n description: \"The discriminator of the performer.\",\n },\n name: {\n type: \"string\",\n description:\n \"The performer's name, denormalized at schedule time for rendering.\",\n },\n },\n },\n date: {\n type: \"string\",\n pattern: \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\n description:\n \"The calendar date of the visit as YYYY-MM-DD, read in the property's timezone.\",\n },\n time: {\n type: [\"string\", \"null\"],\n pattern: \"^([01]\\\\d|2[0-3]):[0-5]\\\\d$\",\n default: null,\n description:\n \"The 24-hour local start time as HH:mm, or null for a day-only \" +\n \"commitment. Day-only is first-class, not a missing value.\",\n },\n description: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"What the visit is for, in the scheduler's words — the scope handed \" +\n \"to whoever shows up. Optional: a booking with nothing to add carries \" +\n \"null, and the performer and the slot are the whole record.\",\n },\n scheduledBy: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The ID of the user whose write created this work item. Null when the write was not user-attributable.\",\n },\n scheduledAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the work item was created.\",\n },\n noCharge: {\n type: [\"object\", \"null\"],\n additionalProperties: false,\n required: [\"setBy\", \"setAt\"],\n default: null,\n description:\n \"The explicit decision that this visit will never be billed, or \" +\n \"null while no decision has been made. A disposition rather than a \" +\n \"zero-dollar cost: nothing was charged, so there is no amount to \" +\n \"record, and financial completion asks whether every visit is \" +\n \"either billed or deliberately not. Reversible while the ticket is \" +\n \"active; frozen once it closes.\",\n properties: {\n setBy: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The ID of the user whose write set the disposition. Null when \" +\n \"the write was not user-attributable.\",\n },\n setAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the disposition was set.\",\n },\n },\n },\n },\n} as const;\n\nexport const ticketSchema = {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"ticket.json\",\n title: \"Ticket\",\n description: \"A ticket is a request from a user.\",\n type: \"object\",\n required: [\n \"id\",\n \"conversation\",\n \"requester\",\n \"openedBy\",\n \"assignedTo\",\n \"status\",\n \"priority\",\n \"tags\",\n \"createdAt\",\n \"updatedAt\",\n ],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n propertyId: {\n type: \"string\",\n description:\n \"ID of the property this entity belongs to. Optional — used as a per-document filter inside the org-scoped database.\",\n },\n type: {\n type: \"string\",\n enum: [\"ticket\"],\n default: \"ticket\",\n },\n number: {\n type: \"string\",\n description: \"The number of the ticket.\",\n },\n issueId: {\n type: \"string\",\n description: \"The ID of the issue that this ticket is associated with.\",\n },\n parentAutomationId: {\n type: \"string\",\n description: \"The ID of the automation that created this ticket.\",\n },\n conversation: {\n type: \"array\",\n default: [],\n description: \"The conversation history of the ticket.\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"timestamp\", \"body\", \"author\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the message.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\n \"message\",\n \"opened\",\n \"assigned\",\n \"rated\",\n \"scheduled\",\n \"collaboratorAdded\",\n \"collaboratorRemoved\",\n \"statusChanged\",\n \"priorityChanged\",\n \"scheduleDateChanged\",\n \"locationChanged\",\n \"issueChanged\",\n \"nudged\",\n \"approvalRequested\",\n \"approvalApproved\",\n \"approvalDenied\",\n \"workScheduled\",\n \"workRescheduled\",\n \"workCanceled\",\n \"costRecorded\",\n \"costPriceChanged\",\n ],\n default: \"message\",\n description: \"The discriminator of the message.\",\n },\n isInternal: {\n type: \"boolean\",\n description:\n \"Whether the message is internal to the assignedTo and collaborators. Internal messages are not visible to the requester.\",\n default: false,\n },\n author: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the author of the message.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\", \"system\"],\n description: \"The discriminator of the author of the message.\",\n },\n name: {\n type: \"string\",\n description: \"The name of the author of the message.\",\n },\n },\n },\n timestamp: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"The ISO 8601 timestamp of the message.\",\n },\n body: {\n type: \"string\",\n description: \"The body of the message.\",\n },\n parsedBody: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"An object containing the parsed body of the message for mentions.\",\n properties: {\n content: {\n type: \"array\",\n minItems: 1,\n description:\n \"Rich-text block nodes (ADR 0012). Present = rich message: `body` is the server-derived plain-text projection of this tree, and the legacy text/mentions fields are not written.\",\n items: {\n anyOf: [\n richTextParagraphNode,\n richTextBulletListNode,\n richTextOrderedListNode,\n ],\n },\n },\n text: {\n type: \"string\",\n description: \"The mention text (legacy tokenized format).\",\n },\n mentions: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\n \"discriminator\",\n \"id\",\n \"index\",\n \"length\",\n \"originalText\",\n ],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the mention.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\", \"system\"],\n description:\n \"The discriminator of entity that was mentioned.\",\n },\n index: {\n type: \"integer\",\n description: \"The index of the mention in the message.\",\n },\n length: {\n type: \"integer\",\n description: \"The length of the mention in the message.\",\n },\n originalText: {\n type: \"string\",\n description: \"The original text of the mention.\",\n },\n },\n },\n },\n },\n },\n statusChanged: {\n type: \"object\",\n additionalProperties: false,\n required: [\"from\", \"to\"],\n description:\n \"Structured status transition for `statusChanged` entries. Lets consumers detect reopens (from solved/closed to open) without parsing the body text.\",\n properties: {\n from: {\n type: \"string\",\n enum: [\"open\", \"pending\", \"solved\", \"closed\"],\n description: \"The status the ticket transitioned from.\",\n },\n to: {\n type: \"string\",\n enum: [\"open\", \"pending\", \"solved\", \"closed\"],\n description: \"The status the ticket transitioned to.\",\n },\n },\n },\n readBy: {\n type: \"array\",\n default: [],\n items: {\n type: \"string\",\n },\n description: \"The IDs of the users who have read the message.\",\n },\n media: {\n anyOf: [{ $ref: \"mediaFile.json\" }, { type: \"null\" }],\n description: \"The media file associated with the message.\",\n },\n attachments: {\n type: \"array\",\n items: { $ref: \"mediaFile.json\" },\n description:\n \"Files attached to the message. Supersedes the singular media.\",\n },\n },\n },\n },\n subject: {\n type: \"string\",\n description: \"The subject of the ticket.\",\n },\n openedBy: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n properties: {\n id: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"system\"],\n },\n name: {\n type: \"string\",\n },\n },\n },\n requester: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the requester.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\", \"system\", \"device\"],\n description: \"The discriminator of the requester.\",\n },\n name: {\n type: \"string\",\n description: \"The name of the requester.\",\n },\n photo: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n description: \"The photo of the requester.\",\n },\n },\n },\n assignedTo: {\n type: [\"object\", \"null\"],\n default: null,\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the assigned to.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\"],\n description: \"The discriminator of the assigned to.\",\n },\n name: {\n type: \"string\",\n description: \"The name of the assigned to.\",\n },\n photo: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n description: \"The photo of the assigned to.\",\n },\n },\n },\n notify: {\n type: \"array\",\n description:\n \"A list of entities to notify when this ticket is created or resolved.\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the entity to notify.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\"],\n },\n },\n },\n },\n collaborators: {\n type: \"array\",\n default: [],\n description: \"A list of entities who will collaborate on this ticket.\",\n items: {\n type: \"object\",\n required: [\"id\", \"name\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n name: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\"],\n },\n },\n },\n },\n location: {\n type: \"object\",\n required: [\"discriminator\", \"name\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"space\", \"property\", \"customText\"],\n },\n name: {\n type: \"string\",\n },\n },\n },\n status: {\n type: \"string\",\n enum: [\"open\", \"pending\", \"solved\", \"closed\"],\n default: \"open\",\n },\n priority: {\n type: \"string\",\n enum: [\"low\", \"normal\", \"high\", \"critical\"],\n default: \"normal\",\n },\n priorityRank: {\n type: \"integer\",\n minimum: 1,\n maximum: 4,\n description:\n \"Server-derived numeric rank of priority (low=1, normal=2, high=3, critical=4). Denormalized to support priority sorting; never set by clients.\",\n },\n reopenCount: {\n type: \"integer\",\n minimum: 0,\n default: 0,\n description:\n 'Server-derived count of transitions back to \"open\" that followed a solve/close. reopenCount > 0 answers \"was this ticket ever reopened?\" in O(1); maintained at the repository layer across every status-write path. Never set by clients.',\n },\n work: {\n type: \"array\",\n default: [],\n description:\n \"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 entry is implicitly done. Never redacted; vendor identity is already public in assignment.\",\n items: workItemSchema,\n },\n costs: {\n type: \"array\",\n default: [],\n description:\n \"Cost line items recorded on the ticket. Each entry stores the customer price and the vendor cost side by side and keeps them independent: the price is seeded from the estimate and markup at recording, and nothing about the vendor side moves it afterwards. Every entry arrives as either the full vendor shape or the redacted price-only shape depending on whether the viewer may see the cost split.\",\n items: {\n oneOf: [fullCostEntrySchema, redactedCostEntrySchema],\n },\n },\n approvals: {\n type: \"array\",\n default: [],\n description:\n \"Approval request history for the ticket. At most one pending record at a time; records are immutable once decided (enforced by use cases).\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"amount\", \"approverUserIds\", \"status\", \"requestedAt\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the approval record.\",\n },\n amount: {\n type: \"integer\",\n minimum: 0,\n description:\n \"The ticket's customer price total in integer cents, frozen at request time.\",\n },\n approverUserIds: {\n type: \"array\",\n minItems: 1,\n items: {\n type: \"string\",\n },\n description:\n \"The effective approver set for this request, frozen at request time.\",\n },\n status: {\n type: \"string\",\n enum: [\"pending\", \"approved\", \"denied\"],\n default: \"pending\",\n },\n requestedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the approval was requested.\",\n },\n requestedBy: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The ID of the user whose write created this request, frozen at request time. Null when the write was not user-attributable.\",\n },\n decidedBy: {\n type: [\"string\", \"null\"],\n default: null,\n description: \"The ID of the approver who decided the request.\",\n },\n decidedAt: {\n anyOf: [\n { $ref: \"definitions.json#/definitions/date\" },\n { type: \"null\" },\n ],\n default: null,\n description: \"When the request was decided.\",\n },\n comment: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The decider's comment. Required on deny, optional on approve (enforced by use cases).\",\n },\n },\n },\n },\n dneAmount: {\n type: [\"integer\", \"null\"],\n minimum: 0,\n description:\n \"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.\",\n },\n approvalState: {\n type: \"string\",\n enum: [\"clear\", \"awaitingApproval\", \"denied\"],\n default: \"clear\",\n description:\n \"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.\",\n },\n tags: {\n type: \"array\",\n default: [],\n items: {\n type: \"string\",\n },\n },\n rating: {\n type: \"number\",\n minimum: 0,\n maximum: 5,\n },\n ratingComment: {\n type: \"string\",\n },\n scheduleDate: {\n $ref: \"definitions.json#/definitions/date\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n solvedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n lastMessageAt: {\n $ref: \"definitions.json#/definitions/date\",\n description:\n \"Server-derived timestamp of the latest conversation message; initialized to createdAt when no message exists. Denormalized to support recency sorting; never set by clients.\",\n },\n closedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n deletedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n },\n} as const;\n\ntype TicketSchemaBase = FromSchema<\n typeof ticketSchema,\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\n/** A stored cost entry: the full shape, with `price`, `estimate` and `markup`. */\nexport type TicketCostEntry = Extract<\n NonNullable<TicketSchemaBase[\"costs\"]>[number],\n { estimate: unknown }\n>;\n\n/** One scheduled performance of work on a ticket. */\nexport type TicketWorkItem = NonNullable<TicketSchemaBase[\"work\"]>[number];\n\n/** One append-only billing review entry on a stored cost entry. */\nexport type TicketCostBillingReviewEntry = NonNullable<\n TicketCostEntry[\"billingReview\"]\n>[number];\n\n// The runtime `costs.items` schema is a `oneOf` so a `Ticket` model validates\n// both wire shapes a read can return (see the schema comment), which makes the\n// derived element type a `full | redacted` union. A stored ticket, though, only\n// ever holds the full shape — the redacted projection exists solely at the API\n// read seam (`redactTicketCostSplit`, which casts through `unknown`). Model and\n// write-path consumers reason about the stored document, so `costs` is narrowed\n// back to the full entry here; the redacted shape stays a validation-only\n// concern rather than leaking into every `ticket.costs` dereference.\nexport type TicketSchema = Omit<TicketSchemaBase, \"costs\"> & {\n costs?: TicketCostEntry[];\n};\n"],"mappings":";AAiDA,MAAM,sBAAsB;CAC1B,MAAM;CACN,UAAU;CACV,OAAO,EACL,OAAO;EAAC;GA3CV,MAAM;GACN,sBAAsB;GACtB,UAAU,CAAC,QAAQ,MAAM;GACzB,YAAY;IACV,MAAM;KAAE,MAAM;KAAU,MAAM,CAAC,MAAM;IAAE;IACvC,MAAM,EAAE,MAAM,SAAS;IACvB,OAAO;KACL,MAAM;KACN,aAAa;KACb,OAAO;MAAE,MAAM;MAAU,MAAM;OAAC;OAAQ;OAAU;MAAW;KAAE;IACjE;GACF;EAgCyB;EAAG;GA5B5B,MAAM;GACN,sBAAsB;GACtB,UAAU;IAAC;IAAQ;IAAM;IAAiB;GAAO;GACjD,YAAY;IACV,MAAM;KAAE,MAAM;KAAU,MAAM,CAAC,SAAS;IAAE;IAC1C,IAAI,EAAE,MAAM,SAAS;IACrB,eAAe;KAAE,MAAM;KAAU,MAAM;MAAC;MAAQ;MAAU;KAAQ;IAAE;IACpE,OAAO;KACL,MAAM;KACN,aACE;IACJ;GACF;EAgB8C;EAAG;GAZjD,MAAM;GACN,sBAAsB;GACtB,UAAU,CAAC,MAAM;GACjB,YAAY,EACV,MAAM;IAAE,MAAM;IAAU,MAAM,CAAC,WAAW;GAAE,EAC9C;EAOqE;CAAC,EACtE;AACF;AAEA,MAAM,wBAAwB;CAC5B,MAAM;CACN,sBAAsB;CACtB,UAAU,CAAC,QAAQ,SAAS;CAC5B,YAAY;EACV,MAAM;GAAE,MAAM;GAAU,MAAM,CAAC,WAAW;EAAE;EAC5C,SAAS;CACX;AACF;AAEA,MAAM,uBAAuB;CAC3B,MAAM;CACN,sBAAsB;CACtB,UAAU,CAAC,QAAQ,SAAS;CAC5B,YAAY;EACV,MAAM;GAAE,MAAM;GAAU,MAAM,CAAC,UAAU;EAAE;EAC3C,SAAS;CACX;AACF;AA+YA,MAAa,eAAe;CAC1B,SAAS;CACT,KAAK;CACL,OAAO;CACP,aAAa;CACb,MAAM;CACN,UAAU;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;CACA,sBAAsB;CACtB,YAAY;EACV,IAAI,EACF,MAAM,mCACR;EACA,YAAY;GACV,MAAM;GACN,aACE;EACJ;EACA,MAAM;GACJ,MAAM;GACN,MAAM,CAAC,QAAQ;GACf,SAAS;EACX;EACA,QAAQ;GACN,MAAM;GACN,aAAa;EACf;EACA,SAAS;GACP,MAAM;GACN,aAAa;EACf;EACA,oBAAoB;GAClB,MAAM;GACN,aAAa;EACf;EACA,cAAc;GACZ,MAAM;GACN,SAAS,CAAC;GACV,aAAa;GACb,OAAO;IACL,MAAM;IACN,sBAAsB;IACtB,UAAU;KAAC;KAAM;KAAiB;KAAa;KAAQ;IAAQ;IAC/D,YAAY;KACV,IAAI;MACF,MAAM;MACN,aAAa;KACf;KACA,eAAe;MACb,MAAM;MACN,MAAM;OACJ;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACF;MACA,SAAS;MACT,aAAa;KACf;KACA,YAAY;MACV,MAAM;MACN,aACE;MACF,SAAS;KACX;KACA,QAAQ;MACN,MAAM;MACN,sBAAsB;MACtB,UAAU;OAAC;OAAM;OAAiB;MAAM;MACxC,YAAY;OACV,IAAI;QACF,MAAM;QACN,aAAa;OACf;OACA,eAAe;QACb,MAAM;QACN,MAAM;SAAC;SAAQ;SAAU;QAAQ;QACjC,aAAa;OACf;OACA,MAAM;QACJ,MAAM;QACN,aAAa;OACf;MACF;KACF;KACA,WAAW;MACT,MAAM;MACN,aAAa;KACf;KACA,MAAM;MACJ,MAAM;MACN,aAAa;KACf;KACA,YAAY;MACV,MAAM;MACN,sBAAsB;MACtB,aACE;MACF,YAAY;OACV,SAAS;QACP,MAAM;QACN,UAAU;QACV,aACE;QACF,OAAO,EACL,OAAO;SACL;SACA;UAlhBlB,MAAM;UACN,sBAAsB;UACtB,UAAU,CAAC,QAAQ,SAAS;UAC5B,YAAY;WACV,MAAM;YAAE,MAAM;YAAU,MAAM,CAAC,YAAY;WAAE;WAC7C,SAAS;YAAE,MAAM;YAAS,UAAU;YAAG,OAAO;WAAqB;UACrE;SA4gBkB;SACA;UAzgBlB,MAAM;UACN,sBAAsB;UACtB,UAAU,CAAC,QAAQ,SAAS;UAC5B,YAAY;WACV,MAAM;YAAE,MAAM;YAAU,MAAM,CAAC,aAAa;WAAE;WAC9C,SAAS;YAAE,MAAM;YAAS,UAAU;YAAG,OAAO;WAAqB;UACrE;SAmgBkB;QACF,EACF;OACF;OACA,MAAM;QACJ,MAAM;QACN,aAAa;OACf;OACA,UAAU;QACR,MAAM;QACN,SAAS,CAAC;QACV,OAAO;SACL,MAAM;SACN,sBAAsB;SACtB,UAAU;UACR;UACA;UACA;UACA;UACA;SACF;SACA,YAAY;UACV,IAAI;WACF,MAAM;WACN,aAAa;UACf;UACA,eAAe;WACb,MAAM;WACN,MAAM;YAAC;YAAQ;YAAU;WAAQ;WACjC,aACE;UACJ;UACA,OAAO;WACL,MAAM;WACN,aAAa;UACf;UACA,QAAQ;WACN,MAAM;WACN,aAAa;UACf;UACA,cAAc;WACZ,MAAM;WACN,aAAa;UACf;SACF;QACF;OACF;MACF;KACF;KACA,eAAe;MACb,MAAM;MACN,sBAAsB;MACtB,UAAU,CAAC,QAAQ,IAAI;MACvB,aACE;MACF,YAAY;OACV,MAAM;QACJ,MAAM;QACN,MAAM;SAAC;SAAQ;SAAW;SAAU;QAAQ;QAC5C,aAAa;OACf;OACA,IAAI;QACF,MAAM;QACN,MAAM;SAAC;SAAQ;SAAW;SAAU;QAAQ;QAC5C,aAAa;OACf;MACF;KACF;KACA,QAAQ;MACN,MAAM;MACN,SAAS,CAAC;MACV,OAAO,EACL,MAAM,SACR;MACA,aAAa;KACf;KACA,OAAO;MACL,OAAO,CAAC,EAAE,MAAM,iBAAiB,GAAG,EAAE,MAAM,OAAO,CAAC;MACpD,aAAa;KACf;KACA,aAAa;MACX,MAAM;MACN,OAAO,EAAE,MAAM,iBAAiB;MAChC,aACE;KACJ;IACF;GACF;EACF;EACA,SAAS;GACP,MAAM;GACN,aAAa;EACf;EACA,UAAU;GACR,MAAM;GACN,sBAAsB;GACtB,UAAU;IAAC;IAAM;IAAiB;GAAM;GACxC,YAAY;IACV,IAAI,EACF,MAAM,SACR;IACA,eAAe;KACb,MAAM;KACN,MAAM,CAAC,QAAQ,QAAQ;IACzB;IACA,MAAM,EACJ,MAAM,SACR;GACF;EACF;EACA,WAAW;GACT,MAAM;GACN,sBAAsB;GACtB,UAAU;IAAC;IAAM;IAAiB;GAAM;GACxC,YAAY;IACV,IAAI;KACF,MAAM;KACN,aAAa;IACf;IACA,eAAe;KACb,MAAM;KACN,MAAM;MAAC;MAAQ;MAAU;MAAU;KAAQ;KAC3C,aAAa;IACf;IACA,MAAM;KACJ,MAAM;KACN,aAAa;IACf;IACA,OAAO;KACL,OAAO;MACL,EAAE,MAAM,iBAAiB;MACzB,EAAE,MAAM,OAAO;MACf,EAAE,MAAM,SAAS;KACnB;KACA,aAAa;IACf;GACF;EACF;EACA,YAAY;GACV,MAAM,CAAC,UAAU,MAAM;GACvB,SAAS;GACT,sBAAsB;GACtB,UAAU;IAAC;IAAM;IAAiB;GAAM;GACxC,YAAY;IACV,IAAI;KACF,MAAM;KACN,aAAa;IACf;IACA,eAAe;KACb,MAAM;KACN,MAAM,CAAC,QAAQ,QAAQ;KACvB,aAAa;IACf;IACA,MAAM;KACJ,MAAM;KACN,aAAa;IACf;IACA,OAAO;KACL,OAAO;MACL,EAAE,MAAM,iBAAiB;MACzB,EAAE,MAAM,OAAO;MACf,EAAE,MAAM,SAAS;KACnB;KACA,aAAa;IACf;GACF;EACF;EACA,QAAQ;GACN,MAAM;GACN,aACE;GACF,SAAS,CAAC;GACV,OAAO;IACL,MAAM;IACN,UAAU,CAAC,MAAM,eAAe;IAChC,sBAAsB;IACtB,YAAY;KACV,IAAI;MACF,MAAM;MACN,aAAa;KACf;KACA,eAAe;MACb,MAAM;MACN,MAAM,CAAC,MAAM;KACf;IACF;GACF;EACF;EACA,eAAe;GACb,MAAM;GACN,SAAS,CAAC;GACV,aAAa;GACb,OAAO;IACL,MAAM;IACN,UAAU;KAAC;KAAM;KAAQ;IAAe;IACxC,sBAAsB;IACtB,YAAY;KACV,IAAI,EACF,MAAM,SACR;KACA,MAAM,EACJ,MAAM,SACR;KACA,eAAe;MACb,MAAM;MACN,MAAM,CAAC,QAAQ,QAAQ;KACzB;IACF;GACF;EACF;EACA,UAAU;GACR,MAAM;GACN,UAAU,CAAC,iBAAiB,MAAM;GAClC,sBAAsB;GACtB,YAAY;IACV,IAAI,EACF,MAAM,SACR;IACA,eAAe;KACb,MAAM;KACN,MAAM;MAAC;MAAS;MAAY;KAAY;IAC1C;IACA,MAAM,EACJ,MAAM,SACR;GACF;EACF;EACA,QAAQ;GACN,MAAM;GACN,MAAM;IAAC;IAAQ;IAAW;IAAU;GAAQ;GAC5C,SAAS;EACX;EACA,UAAU;GACR,MAAM;GACN,MAAM;IAAC;IAAO;IAAU;IAAQ;GAAU;GAC1C,SAAS;EACX;EACA,cAAc;GACZ,MAAM;GACN,SAAS;GACT,SAAS;GACT,aACE;EACJ;EACA,aAAa;GACX,MAAM;GACN,SAAS;GACT,SAAS;GACT,aACE;EACJ;EACA,MAAM;GACJ,MAAM;GACN,SAAS,CAAC;GACV,aACE;GACF,OAAO;IAteX,MAAM;IACN,sBAAsB;IACtB,UAAU;KAAC;KAAM;KAAa;IAAM;IACpC,YAAY;KACV,IAAI;MACF,MAAM;MACN,aAAa;KACf;KACA,WAAW;MACT,MAAM;MACN,sBAAsB;MACtB,UAAU;OAAC;OAAM;OAAiB;MAAM;MACxC,aACE;MAIF,YAAY;OACV,IAAI;QACF,MAAM;QACN,aAAa;OACf;OACA,eAAe;QACb,MAAM;QACN,MAAM,CAAC,UAAU,MAAM;QACvB,aAAa;OACf;OACA,MAAM;QACJ,MAAM;QACN,aACE;OACJ;MACF;KACF;KACA,MAAM;MACJ,MAAM;MACN,SAAS;MACT,aACE;KACJ;KACA,MAAM;MACJ,MAAM,CAAC,UAAU,MAAM;MACvB,SAAS;MACT,SAAS;MACT,aACE;KAEJ;KACA,aAAa;MACX,MAAM,CAAC,UAAU,MAAM;MACvB,SAAS;MACT,aACE;KAGJ;KACA,aAAa;MACX,MAAM,CAAC,UAAU,MAAM;MACvB,SAAS;MACT,aACE;KACJ;KACA,aAAa;MACX,MAAM;MACN,aAAa;KACf;KACA,UAAU;MACR,MAAM,CAAC,UAAU,MAAM;MACvB,sBAAsB;MACtB,UAAU,CAAC,SAAS,OAAO;MAC3B,SAAS;MACT,aACE;MAMF,YAAY;OACV,OAAO;QACL,MAAM,CAAC,UAAU,MAAM;QACvB,SAAS;QACT,aACE;OAEJ;OACA,OAAO;QACL,MAAM;QACN,aAAa;OACf;MACF;KACF;IACF;GA0YW;EACT;EACA,OAAO;GACL,MAAM;GACN,SAAS,CAAC;GACV,aACE;GACF,OAAO,EACL,OAAO,CAAC;IA7vBd,MAAM;IACN,sBAAsB;IACtB,UAAU;KAAC;KAAM;KAAe;KAAY;KAAS;KAAY;IAAQ;IACzE,YAAY;KACV,IAAI;MACF,MAAM;MACN,aAAa;KACf;KACA,aAAa;MACX,MAAM;MACN,aAAa;KACf;KACA,UAAU;MACR,MAAM;MACN,SAAS;MACT,aAAa;KACf;KACA,OAAO;MACL,MAAM;MACN,sBAAsB;MACtB,UAAU;OAAC;OAAU;OAAc;MAAY;MAC/C,aACE;MAKF,YAAY;OACV,QAAQ;QACN,MAAM;QACN,SAAS;QACT,aAAa;OACf;OACA,YAAY;QACV,MAAM;QACN,aAAa;OACf;OACA,YAAY;QACV,MAAM;QACN,aAAa;OACf;MACF;KACF;KACA,UAAU;MACR,MAAM;MACN,sBAAsB;MACtB,UAAU;OAAC;OAAU;OAAc;MAAY;MAC/C,aAAa;MACb,YAAY;OACV,QAAQ;QACN,MAAM;QACN,SAAS;QACT,aAAa;OACf;OACA,YAAY;QACV,MAAM;QACN,aAAa;OACf;OACA,YAAY;QACV,MAAM;QACN,aAAa;OACf;MACF;KACF;KACA,QAAQ;MACN,MAAM;MACN,sBAAsB;MACtB,UAAU;OAAC;OAAU;OAAc;MAAY;MAC/C,aACE;MACF,YAAY;OACV,QAAQ;QACN,MAAM;QACN,SAAS;QACT,aAAa;OACf;OACA,YAAY;QACV,MAAM;QACN,aAAa;OACf;OACA,YAAY;QACV,MAAM;QACN,aAAa;OACf;MACF;KACF;KACA,QAAQ;MACN,MAAM;MACN,sBAAsB;MACtB,UAAU,CAAC,SAAS;MACpB,YAAY;OACV,SAAS;QACP,MAAM;QACN,SAAS;QACT,aACE;OAIJ;OACA,QAAQ;QACN,MAAM;QACN,SAAS;QACT,aACE;OACJ;MACF;KACF;KACA,gBAAgB;MACd,MAAM;MACN,OAAO,EAAE,MAAM,iBAAiB;MAChC,SAAS,CAAC;MACV,aACE;KAKJ;KACA,qBAAqB;MACnB,MAAM,CAAC,UAAU,MAAM;MACvB,SAAS;MACT,aACE;KAEJ;KACA,UAAU;MACR,MAAM,CAAC,UAAU,MAAM;MACvB,SAAS;MACT,aACE;KAIJ;KACA,YAAY;MACV,MAAM,CAAC,UAAU,MAAM;MACvB,SAAS;MACT,aACE;KAIJ;KACA,YAAY;MACV,MAAM,CAAC,UAAU,MAAM;MACvB,SAAS;MACT,aACE;KAKJ;KACA,QAAQ;MACN,MAAM,CAAC,UAAU,MAAM;MACvB,SAAS;MACT,aACE;KAKJ;KACA,YAAY;MACV,MAAM;MACN,SAAS;MACT,aACE;KAIJ;KACA,eAAe;MACb,MAAM;MACN,SAAS,CAAC;MACV,aACE;MAGF,OAAO;OACL,MAAM;OACN,sBAAsB;OACtB,UAAU;QAAC;QAAM;QAAU;OAAa;OACxC,YAAY;QACV,IAAI;SACF,MAAM;SACN,aAAa;QACf;QACA,QAAQ;SACN,MAAM;SACN,MAAM;UAAC;UAAc;UAAc;SAAwB;QAC7D;QACA,aAAa;SACX,MAAM,CAAC,UAAU,MAAM;SACvB,SAAS;SACT,aACE;QAEJ;QACA,aAAa;SACX,MAAM;SACN,aAAa;QACf;QACA,MAAM;SACJ,MAAM,CAAC,UAAU,MAAM;SACvB,SAAS;SACT,aAAa;QACf;QACA,cAAc;SACZ,MAAM;SACN,SAAS;SACT,aACE;QAEJ;QACA,aAAa;SACX,MAAM;SACN,SAAS;SACT,aACE;QAOJ;OACF;MACF;KACF;IACF;GAshBc,GAAqB;IAlhBnC,MAAM;IACN,sBAAsB;IACtB,UAAU;KAAC;KAAM;KAAe;KAAY;IAAO;IACnD,YAAY;KACV,IAAI;MACF,MAAM;MACN,aAAa;KACf;KACA,aAAa;MACX,MAAM;MACN,aAAa;KACf;KACA,UAAU;MACR,MAAM;MACN,SAAS;MACT,aAAa;KACf;KACA,OAAO;MACL,MAAM;MACN,SAAS;MACT,aACE;KAGJ;IACF;GAyfmC,CAAuB,EACtD;EACF;EACA,WAAW;GACT,MAAM;GACN,SAAS,CAAC;GACV,aACE;GACF,OAAO;IACL,MAAM;IACN,sBAAsB;IACtB,UAAU;KAAC;KAAM;KAAU;KAAmB;KAAU;IAAa;IACrE,YAAY;KACV,IAAI;MACF,MAAM;MACN,aAAa;KACf;KACA,QAAQ;MACN,MAAM;MACN,SAAS;MACT,aACE;KACJ;KACA,iBAAiB;MACf,MAAM;MACN,UAAU;MACV,OAAO,EACL,MAAM,SACR;MACA,aACE;KACJ;KACA,QAAQ;MACN,MAAM;MACN,MAAM;OAAC;OAAW;OAAY;MAAQ;MACtC,SAAS;KACX;KACA,aAAa;MACX,MAAM;MACN,aAAa;KACf;KACA,aAAa;MACX,MAAM,CAAC,UAAU,MAAM;MACvB,SAAS;MACT,aACE;KACJ;KACA,WAAW;MACT,MAAM,CAAC,UAAU,MAAM;MACvB,SAAS;MACT,aAAa;KACf;KACA,WAAW;MACT,OAAO,CACL,EAAE,MAAM,qCAAqC,GAC7C,EAAE,MAAM,OAAO,CACjB;MACA,SAAS;MACT,aAAa;KACf;KACA,SAAS;MACP,MAAM,CAAC,UAAU,MAAM;MACvB,SAAS;MACT,aACE;KACJ;IACF;GACF;EACF;EACA,WAAW;GACT,MAAM,CAAC,WAAW,MAAM;GACxB,SAAS;GACT,aACE;EACJ;EACA,eAAe;GACb,MAAM;GACN,MAAM;IAAC;IAAS;IAAoB;GAAQ;GAC5C,SAAS;GACT,aACE;EACJ;EACA,MAAM;GACJ,MAAM;GACN,SAAS,CAAC;GACV,OAAO,EACL,MAAM,SACR;EACF;EACA,QAAQ;GACN,MAAM;GACN,SAAS;GACT,SAAS;EACX;EACA,eAAe,EACb,MAAM,SACR;EACA,cAAc,EACZ,MAAM,qCACR;EACA,WAAW,EACT,MAAM,qCACR;EACA,WAAW,EACT,MAAM,qCACR;EACA,UAAU,EACR,MAAM,qCACR;EACA,eAAe;GACb,MAAM;GACN,aACE;EACJ;EACA,UAAU,EACR,MAAM,qCACR;EACA,WAAW,EACT,MAAM,qCACR;CACF;AACF"}
|
|
1
|
+
{"version":3,"file":"ticket.js","names":[],"sources":["../../.generated/schemas/ticket.ts"],"sourcesContent":["import defs, { ISODateString } from \"./definitions\";\nimport type { FromSchema } from \"json-schema-to-ts\";\nimport type { mediaFileSchema } from \"./mediaFile\";\n\n// Rich-text node vocabulary for parsedBody.content (ADR 0012). Deliberately\n// fixed-depth rather than recursive: json-schema-to-ts cannot derive types\n// from self-referencing schemas, so nested lists are excluded. These consts\n// must not be exported — the model generator treats the first export ending\n// in \"Schema\" as the entity schema.\nconst richTextTextNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"text\"],\n properties: {\n type: { type: \"string\", enum: [\"text\"] },\n text: { type: \"string\" },\n marks: {\n type: \"array\",\n uniqueItems: true,\n items: { type: \"string\", enum: [\"bold\", \"italic\", \"underline\"] },\n },\n },\n} as const;\n\nconst richTextMentionNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"id\", \"discriminator\", \"label\"],\n properties: {\n type: { type: \"string\", enum: [\"mention\"] },\n id: { type: \"string\" },\n discriminator: { type: \"string\", enum: [\"user\", \"vendor\", \"system\"] },\n label: {\n type: \"string\",\n description:\n \"Display name of the mentioned entity, without the leading @.\",\n },\n },\n} as const;\n\nconst richTextHardBreakNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\"],\n properties: {\n type: { type: \"string\", enum: [\"hardBreak\"] },\n },\n} as const;\n\nconst richTextInlineNodes = {\n type: \"array\",\n minItems: 1,\n items: {\n anyOf: [richTextTextNode, richTextMentionNode, richTextHardBreakNode],\n },\n} as const;\n\nconst richTextParagraphNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"content\"],\n properties: {\n type: { type: \"string\", enum: [\"paragraph\"] },\n content: richTextInlineNodes,\n },\n} as const;\n\nconst richTextListItemNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"content\"],\n properties: {\n type: { type: \"string\", enum: [\"listItem\"] },\n content: richTextInlineNodes,\n },\n} as const;\n\nconst richTextBulletListNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"content\"],\n properties: {\n type: { type: \"string\", enum: [\"bulletList\"] },\n content: { type: \"array\", minItems: 1, items: richTextListItemNode },\n },\n} as const;\n\nconst richTextOrderedListNode = {\n type: \"object\",\n additionalProperties: false,\n required: [\"type\", \"content\"],\n properties: {\n type: { type: \"string\", enum: [\"orderedList\"] },\n content: { type: \"array\", minItems: 1, items: richTextListItemNode },\n },\n} as const;\n\n// A cost entry reaches a client in one of two shapes, and both are valid wire\n// payloads a `Ticket` model must accept. A roster viewer or superadmin receives\n// the stored entry (`fullCostEntry`): the customer `price`, the vendor\n// `estimate`, `markup`, and an optional `actual`. Every other viewer receives\n// the redacted projection (`redactedCostEntry`) the API builds field-by-field —\n// the stored price as a bare amount, never the vendor cost or markup behind it\n// (see `redactCostEntry`/`applyTicketVisibility` in the API). The two are\n// disjoint (each forbids the other's discriminating fields via\n// `additionalProperties`, and `price` is an object on one and an integer on the\n// other), so `costs.items` is their `oneOf`.\nconst fullCostEntrySchema = {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"description\", \"currency\", \"price\", \"estimate\", \"markup\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the cost entry.\",\n },\n description: {\n type: \"string\",\n description: \"What the cost covers.\",\n },\n currency: {\n type: \"string\",\n default: \"USD\",\n description: \"ISO 4217 currency code of the entry's amounts.\",\n },\n price: {\n type: \"object\",\n additionalProperties: false,\n required: [\"amount\", \"recordedBy\", \"recordedAt\"],\n description:\n \"The authoritative customer price of the entry — what the org is \" +\n \"charged, what the approval gate totals, and what a bill line bills. \" +\n \"Seeded at recording from the estimate and the markup, and from then \" +\n \"on independent of all three: editing `estimate`, `actual`, or \" +\n \"`markup` never moves it. Only an explicit price write does.\",\n properties: {\n amount: {\n type: \"integer\",\n minimum: 0,\n description: \"Customer price in integer cents.\",\n },\n recordedBy: {\n type: \"string\",\n description: \"The ID of the user who recorded the amount.\",\n },\n recordedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the amount was recorded.\",\n },\n },\n },\n estimate: {\n type: \"object\",\n additionalProperties: false,\n required: [\"amount\", \"recordedBy\", \"recordedAt\"],\n description: \"The vendor cost estimate phase of the entry.\",\n properties: {\n amount: {\n type: \"integer\",\n minimum: 0,\n description: \"Vendor cost estimate in integer cents.\",\n },\n recordedBy: {\n type: \"string\",\n description: \"The ID of the user who recorded the amount.\",\n },\n recordedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the amount was recorded.\",\n },\n },\n },\n actual: {\n type: \"object\",\n additionalProperties: false,\n required: [\"amount\", \"recordedBy\", \"recordedAt\"],\n description:\n \"The actual vendor cost phase of the entry, recorded after the work.\",\n properties: {\n amount: {\n type: \"integer\",\n minimum: 0,\n description: \"Actual vendor cost in integer cents.\",\n },\n recordedBy: {\n type: \"string\",\n description: \"The ID of the user who recorded the amount.\",\n },\n recordedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the amount was recorded.\",\n },\n },\n },\n markup: {\n type: \"object\",\n additionalProperties: false,\n required: [\"percent\"],\n properties: {\n percent: {\n type: \"number\",\n minimum: 0,\n description:\n \"Markup percent the initial price was quoted at, uncapped. \" +\n \"Context for how that quote was arrived at, not the source of \" +\n \"truth for any amount: `price` is stored, so re-keying this \" +\n \"percent prices nothing.\",\n },\n custom: {\n type: \"boolean\",\n default: false,\n description:\n \"Whether the percent was manually overridden rather than keyed from the configured markup tiers. Custom percents are never re-keyed on estimate edits.\",\n },\n },\n },\n vendorInvoices: {\n type: \"array\",\n items: { $ref: \"mediaFile.json\" },\n default: [],\n description:\n \"The vendor's paperwork backing the entry's amounts, attached \" +\n \"around recording the actual (or later) — an invoice plus whatever \" +\n \"came with it. Internal: the file-store cannot enforce roster-only \" +\n \"reads, so the boundary is this field living on the full shape \" +\n \"only — the redacted projection never carries it.\",\n },\n vendorInvoiceNumber: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The vendor's own invoice number. Internal, redacted org-side like \" +\n \"the rest of the cost split.\",\n },\n vendorId: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The Vendor the cost came from. A plain reference — no rollups — \" +\n \"recorded alongside the vendor invoice and redacted org-side with \" +\n \"the rest of the cost split. Independent of `workItemId`: a vendor \" +\n \"cost need not trace to a scheduled visit.\",\n },\n workItemId: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The Work item on this ticket that produced the cost. Many entries \" +\n \"may name one visit, so a single trip's labor and materials can be \" +\n \"itemized. Cleared when the Work item is removed — the money record \" +\n \"outlives the scheduling record. Internal, redacted org-side.\",\n },\n categoryId: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The billing category classifying this cost, picked on the \" +\n \"reconciliation pool before any bill claims the entry. `AddBillLine` \" +\n \"snapshots it onto the claiming line, which owns its own category \" +\n \"from then on. Internal, redacted org-side with the rest of the \" +\n \"cost split.\",\n },\n billId: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"Backlink to the bill whose draft claimed this cost as a line. \" +\n \"Written when a draft bill adds the line, cleared on line removal, \" +\n \"draft delete, or bill void; a claimed cost leaves the uninvoiced \" +\n \"pool, making double-invoicing structurally impossible. \" +\n \"Server-maintained at the repository, never set by clients.\",\n },\n writtenOff: {\n type: \"boolean\",\n default: false,\n description:\n \"Server-maintained denormalization of billingReview (approvalState \" +\n \"pattern): true after a writtenOff entry until a reinstated entry \" +\n \"follows. A written-off cost leaves the uninvoiced pool. Never set \" +\n \"by clients.\",\n },\n voided: {\n type: \"boolean\",\n default: false,\n description:\n \"Server-maintained denormalization of billingReview (writtenOff \" +\n \"pattern): true after a voided entry until a reinstated entry \" +\n \"follows. A voided cost is withdrawn: it counts toward \" +\n \"neither the approval gate nor financial completion and leaves the \" +\n \"uninvoiced pool, but stays on the ticket so every viewer sees it \" +\n \"was voided. Never set by clients.\",\n },\n billingReview: {\n type: \"array\",\n default: [],\n description:\n \"Append-only billing review history for the entry (approval-history \" +\n \"pattern): reversible write-offs and voids, and billed-vs-price \" +\n \"divergence acknowledgements. Internal, redacted org-side.\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"action\", \"performedAt\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the billing review entry.\",\n },\n action: {\n type: \"string\",\n enum: [\n \"writtenOff\",\n \"voided\",\n \"reinstated\",\n \"divergenceAcknowledged\",\n ],\n },\n performedBy: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The ID of the user whose write appended this entry. Null \" +\n \"when the write was not user-attributable.\",\n },\n performedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the entry was appended.\",\n },\n note: {\n type: [\"string\", \"null\"],\n default: null,\n description: \"Free-text rationale for the action.\",\n },\n billedAmount: {\n type: \"integer\",\n minimum: 0,\n description:\n \"divergenceAcknowledged only: the amount a bill line already \" +\n \"charged for this entry, in integer cents, frozen at ack time.\",\n },\n priceAmount: {\n type: \"integer\",\n minimum: 0,\n description:\n \"divergenceAcknowledged only: the entry's stored customer \" +\n \"price in integer cents at ack time. A divergence is a billed \" +\n \"line that no longer matches the price behind it — a price \" +\n \"corrected after the cost was claimed — so the ack silences \" +\n \"this one pair and any later price move re-flags it. A vendor \" +\n \"actual arriving after billing is not a divergence: it moves \" +\n \"margin, not what the customer owes.\",\n },\n },\n },\n },\n },\n} as const;\n\nconst redactedCostEntrySchema = {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"description\", \"currency\", \"price\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the cost entry.\",\n },\n description: {\n type: \"string\",\n description: \"What the cost covers.\",\n },\n currency: {\n type: \"string\",\n default: \"USD\",\n description: \"ISO 4217 currency code of the entry's amounts.\",\n },\n price: {\n type: \"integer\",\n minimum: 0,\n description:\n \"The entry's stored customer price in integer cents — the whole of \" +\n \"what an org-side viewer receives, flattened out of the stored \" +\n \"price phase so none of its recording metadata comes with it.\",\n },\n voided: {\n type: \"boolean\",\n default: false,\n description:\n \"Whether the entry was voided (withdrawn). Carried through \" +\n \"redaction so an org-side viewer sees the cost no longer counts.\",\n },\n settled: {\n type: \"boolean\",\n default: false,\n description:\n \"Whether a bill has claimed the entry or it was written off, so it \" +\n \"can no longer be voided. Carried through redaction as a bare flag: \" +\n \"neither the bill nor the write-off itself is exposed org-side.\",\n },\n },\n} as const;\n\n// A Work item is a scheduled performance of work on the ticket — who is coming,\n// when, and what for. Timing is wall-clock at the property, not an instant: vendors\n// commit to \"Thursday\" as often as to \"Thursday at 10\", and an instant would\n// force a fake time on the day-only case and drift a day across the property's\n// timezone on every render. `date` and `time` therefore mean exactly what the\n// building reads off them, and the conversation event can be minted without\n// resolving a timezone at all.\nconst workItemSchema = {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"performer\", \"date\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the work item.\",\n },\n performer: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n description:\n \"Who is performing the work — a Vendor, or a staff User the work is \" +\n \"scheduled to. A discriminated reference in the same shape as \" +\n \"`assignedTo`, but orthogonal to it: `assignedTo` is who owns the \" +\n \"ticket, this is who shows up for one visit.\",\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the performer.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"vendor\", \"user\"],\n description: \"The discriminator of the performer.\",\n },\n name: {\n type: \"string\",\n description:\n \"The performer's name, denormalized at schedule time for rendering.\",\n },\n },\n },\n date: {\n type: \"string\",\n pattern: \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\n description:\n \"The calendar date of the visit as YYYY-MM-DD, read in the property's timezone.\",\n },\n time: {\n type: [\"string\", \"null\"],\n pattern: \"^([01]\\\\d|2[0-3]):[0-5]\\\\d$\",\n default: null,\n description:\n \"The 24-hour local start time as HH:mm, or null for a day-only \" +\n \"commitment. Day-only is first-class, not a missing value.\",\n },\n description: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"What the visit is for, in the scheduler's words — the scope handed \" +\n \"to whoever shows up. Optional: a booking with nothing to add carries \" +\n \"null, and the performer and the slot are the whole record.\",\n },\n scheduledBy: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The ID of the user whose write created this work item. Null when the write was not user-attributable.\",\n },\n scheduledAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the work item was created.\",\n },\n noCharge: {\n type: [\"object\", \"null\"],\n additionalProperties: false,\n required: [\"setBy\", \"setAt\"],\n default: null,\n description:\n \"The explicit decision that this visit will never be billed, or \" +\n \"null while no decision has been made. A disposition rather than a \" +\n \"zero-dollar cost: nothing was charged, so there is no amount to \" +\n \"record, and financial completion asks whether every visit is \" +\n \"either billed or deliberately not. Reversible while the ticket is \" +\n \"active; frozen once it closes.\",\n properties: {\n setBy: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The ID of the user whose write set the disposition. Null when \" +\n \"the write was not user-attributable.\",\n },\n setAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the disposition was set.\",\n },\n },\n },\n },\n} as const;\n\nexport const ticketSchema = {\n $schema: \"http://json-schema.org/draft-07/schema\",\n $id: \"ticket.json\",\n title: \"Ticket\",\n description: \"A ticket is a request from a user.\",\n type: \"object\",\n required: [\n \"id\",\n \"conversation\",\n \"requester\",\n \"openedBy\",\n \"assignedTo\",\n \"status\",\n \"priority\",\n \"tags\",\n \"createdAt\",\n \"updatedAt\",\n ],\n additionalProperties: false,\n properties: {\n id: {\n $ref: \"definitions.json#/definitions/id\",\n },\n propertyId: {\n type: \"string\",\n description:\n \"ID of the property this entity belongs to. Optional — used as a per-document filter inside the org-scoped database.\",\n },\n type: {\n type: \"string\",\n enum: [\"ticket\"],\n default: \"ticket\",\n },\n number: {\n type: \"string\",\n description: \"The number of the ticket.\",\n },\n issueId: {\n type: \"string\",\n description: \"The ID of the issue that this ticket is associated with.\",\n },\n parentAutomationId: {\n type: \"string\",\n description: \"The ID of the automation that created this ticket.\",\n },\n conversation: {\n type: \"array\",\n default: [],\n description: \"The conversation history of the ticket.\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"timestamp\", \"body\", \"author\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the message.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\n \"message\",\n \"opened\",\n \"assigned\",\n \"rated\",\n \"scheduled\",\n \"collaboratorAdded\",\n \"collaboratorRemoved\",\n \"statusChanged\",\n \"priorityChanged\",\n \"scheduleDateChanged\",\n \"locationChanged\",\n \"issueChanged\",\n \"nudged\",\n \"approvalRequested\",\n \"approvalApproved\",\n \"approvalDenied\",\n \"workScheduled\",\n \"workRescheduled\",\n \"workCanceled\",\n \"costRecorded\",\n \"costPriceChanged\",\n \"costVoided\",\n ],\n default: \"message\",\n description: \"The discriminator of the message.\",\n },\n isInternal: {\n type: \"boolean\",\n description:\n \"Whether the message is internal to the assignedTo and collaborators. Internal messages are not visible to the requester.\",\n default: false,\n },\n author: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the author of the message.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\", \"system\"],\n description: \"The discriminator of the author of the message.\",\n },\n name: {\n type: \"string\",\n description: \"The name of the author of the message.\",\n },\n },\n },\n timestamp: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"The ISO 8601 timestamp of the message.\",\n },\n body: {\n type: \"string\",\n description: \"The body of the message.\",\n },\n parsedBody: {\n type: \"object\",\n additionalProperties: false,\n description:\n \"An object containing the parsed body of the message for mentions.\",\n properties: {\n content: {\n type: \"array\",\n minItems: 1,\n description:\n \"Rich-text block nodes (ADR 0012). Present = rich message: `body` is the server-derived plain-text projection of this tree, and the legacy text/mentions fields are not written.\",\n items: {\n anyOf: [\n richTextParagraphNode,\n richTextBulletListNode,\n richTextOrderedListNode,\n ],\n },\n },\n text: {\n type: \"string\",\n description: \"The mention text (legacy tokenized format).\",\n },\n mentions: {\n type: \"array\",\n default: [],\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\n \"discriminator\",\n \"id\",\n \"index\",\n \"length\",\n \"originalText\",\n ],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the mention.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\", \"system\"],\n description:\n \"The discriminator of entity that was mentioned.\",\n },\n index: {\n type: \"integer\",\n description: \"The index of the mention in the message.\",\n },\n length: {\n type: \"integer\",\n description: \"The length of the mention in the message.\",\n },\n originalText: {\n type: \"string\",\n description: \"The original text of the mention.\",\n },\n },\n },\n },\n },\n },\n statusChanged: {\n type: \"object\",\n additionalProperties: false,\n required: [\"from\", \"to\"],\n description:\n \"Structured status transition for `statusChanged` entries. Lets consumers detect reopens (from solved/closed to open) without parsing the body text.\",\n properties: {\n from: {\n type: \"string\",\n enum: [\"open\", \"pending\", \"solved\", \"closed\"],\n description: \"The status the ticket transitioned from.\",\n },\n to: {\n type: \"string\",\n enum: [\"open\", \"pending\", \"solved\", \"closed\"],\n description: \"The status the ticket transitioned to.\",\n },\n },\n },\n readBy: {\n type: \"array\",\n default: [],\n items: {\n type: \"string\",\n },\n description: \"The IDs of the users who have read the message.\",\n },\n media: {\n anyOf: [{ $ref: \"mediaFile.json\" }, { type: \"null\" }],\n description: \"The media file associated with the message.\",\n },\n attachments: {\n type: \"array\",\n items: { $ref: \"mediaFile.json\" },\n description:\n \"Files attached to the message. Supersedes the singular media.\",\n },\n },\n },\n },\n subject: {\n type: \"string\",\n description: \"The subject of the ticket.\",\n },\n openedBy: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n properties: {\n id: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"system\"],\n },\n name: {\n type: \"string\",\n },\n },\n },\n requester: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the requester.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\", \"system\", \"device\"],\n description: \"The discriminator of the requester.\",\n },\n name: {\n type: \"string\",\n description: \"The name of the requester.\",\n },\n photo: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n description: \"The photo of the requester.\",\n },\n },\n },\n assignedTo: {\n type: [\"object\", \"null\"],\n default: null,\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the assigned to.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\"],\n description: \"The discriminator of the assigned to.\",\n },\n name: {\n type: \"string\",\n description: \"The name of the assigned to.\",\n },\n photo: {\n anyOf: [\n { $ref: \"mediaFile.json\" },\n { type: \"null\" },\n { type: \"string\" },\n ],\n description: \"The photo of the assigned to.\",\n },\n },\n },\n notify: {\n type: \"array\",\n description:\n \"A list of entities to notify when this ticket is created or resolved.\",\n default: [],\n items: {\n type: \"object\",\n required: [\"id\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the entity to notify.\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\"],\n },\n },\n },\n },\n collaborators: {\n type: \"array\",\n default: [],\n description: \"A list of entities who will collaborate on this ticket.\",\n items: {\n type: \"object\",\n required: [\"id\", \"name\", \"discriminator\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n name: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\"],\n },\n },\n },\n },\n location: {\n type: \"object\",\n required: [\"discriminator\", \"name\"],\n additionalProperties: false,\n properties: {\n id: {\n type: \"string\",\n },\n discriminator: {\n type: \"string\",\n enum: [\"space\", \"property\", \"customText\"],\n },\n name: {\n type: \"string\",\n },\n },\n },\n status: {\n type: \"string\",\n enum: [\"open\", \"pending\", \"solved\", \"closed\"],\n default: \"open\",\n },\n priority: {\n type: \"string\",\n enum: [\"low\", \"normal\", \"high\", \"critical\"],\n default: \"normal\",\n },\n priorityRank: {\n type: \"integer\",\n minimum: 1,\n maximum: 4,\n description:\n \"Server-derived numeric rank of priority (low=1, normal=2, high=3, critical=4). Denormalized to support priority sorting; never set by clients.\",\n },\n reopenCount: {\n type: \"integer\",\n minimum: 0,\n default: 0,\n description:\n 'Server-derived count of transitions back to \"open\" that followed a solve/close. reopenCount > 0 answers \"was this ticket ever reopened?\" in O(1); maintained at the repository layer across every status-write path. Never set by clients.',\n },\n work: {\n type: \"array\",\n default: [],\n description:\n \"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 entry is implicitly done. Never redacted; vendor identity is already public in assignment.\",\n items: workItemSchema,\n },\n costs: {\n type: \"array\",\n default: [],\n description:\n \"Cost line items recorded on the ticket. Each entry stores the customer price and the vendor cost side by side and keeps them independent: the price is seeded from the estimate and markup at recording, and nothing about the vendor side moves it afterwards. Every entry arrives as either the full vendor shape or the redacted price-only shape depending on whether the viewer may see the cost split.\",\n items: {\n oneOf: [fullCostEntrySchema, redactedCostEntrySchema],\n },\n },\n approvals: {\n type: \"array\",\n default: [],\n description:\n \"Approval request history for the ticket. At most one pending record at a time; records are immutable once decided (enforced by use cases).\",\n items: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"amount\", \"approverUserIds\", \"status\", \"requestedAt\"],\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the approval record.\",\n },\n amount: {\n type: \"integer\",\n minimum: 0,\n description:\n \"The ticket's customer price total in integer cents, frozen at request time.\",\n },\n approverUserIds: {\n type: \"array\",\n minItems: 1,\n items: {\n type: \"string\",\n },\n description:\n \"The effective approver set for this request, frozen at request time.\",\n },\n status: {\n type: \"string\",\n enum: [\"pending\", \"approved\", \"denied\"],\n default: \"pending\",\n },\n requestedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the approval was requested.\",\n },\n requestedBy: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The ID of the user whose write created this request, frozen at request time. Null when the write was not user-attributable.\",\n },\n decidedBy: {\n type: [\"string\", \"null\"],\n default: null,\n description: \"The ID of the approver who decided the request.\",\n },\n decidedAt: {\n anyOf: [\n { $ref: \"definitions.json#/definitions/date\" },\n { type: \"null\" },\n ],\n default: null,\n description: \"When the request was decided.\",\n },\n comment: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The decider's comment. Required on deny, optional on approve (enforced by use cases).\",\n },\n },\n },\n },\n dneAmount: {\n type: [\"integer\", \"null\"],\n minimum: 0,\n description:\n \"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.\",\n },\n approvalState: {\n type: \"string\",\n enum: [\"clear\", \"awaitingApproval\", \"denied\"],\n default: \"clear\",\n description:\n \"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.\",\n },\n tags: {\n type: \"array\",\n default: [],\n items: {\n type: \"string\",\n },\n },\n rating: {\n type: \"number\",\n minimum: 0,\n maximum: 5,\n },\n ratingComment: {\n type: \"string\",\n },\n scheduleDate: {\n $ref: \"definitions.json#/definitions/date\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n updatedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n solvedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n lastMessageAt: {\n $ref: \"definitions.json#/definitions/date\",\n description:\n \"Server-derived timestamp of the latest conversation message; initialized to createdAt when no message exists. Denormalized to support recency sorting; never set by clients.\",\n },\n closedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n deletedAt: {\n $ref: \"definitions.json#/definitions/date\",\n },\n },\n} as const;\n\ntype TicketSchemaBase = FromSchema<\n typeof ticketSchema,\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\n/** A stored cost entry: the full shape, with `price`, `estimate` and `markup`. */\nexport type TicketCostEntry = Extract<\n NonNullable<TicketSchemaBase[\"costs\"]>[number],\n { estimate: unknown }\n>;\n\n/** One scheduled performance of work on a ticket. */\nexport type TicketWorkItem = NonNullable<TicketSchemaBase[\"work\"]>[number];\n\n/** One append-only billing review entry on a stored cost entry. */\nexport type TicketCostBillingReviewEntry = NonNullable<\n TicketCostEntry[\"billingReview\"]\n>[number];\n\n// The runtime `costs.items` schema is a `oneOf` so a `Ticket` model validates\n// both wire shapes a read can return (see the schema comment), which makes the\n// derived element type a `full | redacted` union. A stored ticket, though, only\n// ever holds the full shape — the redacted projection exists solely at the API\n// read seam (`redactTicketCostSplit`, which casts through `unknown`). Model and\n// write-path consumers reason about the stored document, so `costs` is narrowed\n// back to the full entry here; the redacted shape stays a validation-only\n// concern rather than leaking into every `ticket.costs` dereference.\nexport type TicketSchema = Omit<TicketSchemaBase, \"costs\"> & {\n costs?: TicketCostEntry[];\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface AddBillLinesCommandConfig {
|
|
2
|
+
data?: {
|
|
3
|
+
id: string;
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
} | null;
|
|
6
|
+
headers?: Record<string, string> | null;
|
|
7
|
+
query?: Record<string, unknown> | null;
|
|
8
|
+
}
|
|
9
|
+
export interface AddBillLinesCommandRequestConfig {
|
|
10
|
+
method: "post";
|
|
11
|
+
url: string;
|
|
12
|
+
data: {
|
|
13
|
+
id: string;
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
} | null;
|
|
16
|
+
params: Record<string, unknown> | null;
|
|
17
|
+
headers: Record<string, string> | null;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
export declare class AddBillLinesCommand {
|
|
24
|
+
url: string;
|
|
25
|
+
data: {
|
|
26
|
+
id: string;
|
|
27
|
+
[key: string]: unknown;
|
|
28
|
+
} | null;
|
|
29
|
+
query: Record<string, unknown> | null;
|
|
30
|
+
headers: Record<string, string> | null;
|
|
31
|
+
config: AddBillLinesCommandRequestConfig;
|
|
32
|
+
static params: readonly ["id"];
|
|
33
|
+
static url: string;
|
|
34
|
+
static method: "post";
|
|
35
|
+
constructor(commandConfig: AddBillLinesCommandConfig, options?: Record<string, unknown>);
|
|
36
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
//#region .generated/useCases/addBillLines.ts
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
*/
|
|
5
|
+
var AddBillLinesCommand = class AddBillLinesCommand {
|
|
6
|
+
url;
|
|
7
|
+
data;
|
|
8
|
+
query;
|
|
9
|
+
headers;
|
|
10
|
+
config;
|
|
11
|
+
static params = ["id"];
|
|
12
|
+
static url = "/bills/:id/lines/batch";
|
|
13
|
+
static method = "post";
|
|
14
|
+
constructor(commandConfig, options = {}) {
|
|
15
|
+
const pathParams = AddBillLinesCommand.params;
|
|
16
|
+
let { data, query, headers } = commandConfig ?? {};
|
|
17
|
+
if (typeof data === "undefined") data = null;
|
|
18
|
+
if (typeof query === "undefined") query = null;
|
|
19
|
+
if (typeof headers === "undefined") headers = null;
|
|
20
|
+
let url = AddBillLinesCommand.url;
|
|
21
|
+
if (pathParams && data) for (const param of pathParams) {
|
|
22
|
+
const urlParam = ":" + param;
|
|
23
|
+
url = url.replace(urlParam, data[param]);
|
|
24
|
+
}
|
|
25
|
+
const missingParams = url.match(/:[a-zA-Z0-9]+/g);
|
|
26
|
+
if (missingParams) {
|
|
27
|
+
const missing = missingParams.map((param) => param.replace(":", ""));
|
|
28
|
+
throw new Error("Missing parameters: " + missing.join(", "));
|
|
29
|
+
}
|
|
30
|
+
this.url = url;
|
|
31
|
+
this.data = data;
|
|
32
|
+
this.query = query;
|
|
33
|
+
this.headers = headers;
|
|
34
|
+
this.config = {
|
|
35
|
+
method: AddBillLinesCommand.method,
|
|
36
|
+
url,
|
|
37
|
+
data,
|
|
38
|
+
params: query,
|
|
39
|
+
headers,
|
|
40
|
+
...options
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
//#endregion
|
|
45
|
+
export { AddBillLinesCommand };
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=addBillLines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addBillLines.js","names":[],"sources":["../../.generated/useCases/addBillLines.ts"],"sourcesContent":["/* This file is automatically generated. Do not modify it manually. */\n\nexport interface AddBillLinesCommandConfig {\n data?: { id: string; [key: string]: unknown } | null;\n headers?: Record<string, string> | null;\n query?: Record<string, unknown> | null;\n}\n\nexport interface AddBillLinesCommandRequestConfig {\n method: \"post\";\n url: string;\n data: { id: string; [key: string]: unknown } | null;\n params: Record<string, unknown> | null;\n headers: Record<string, string> | null;\n [key: string]: unknown;\n}\n\n/**\n * \n */\nexport class AddBillLinesCommand {\n url: string;\n data: { id: string; [key: string]: unknown } | null;\n query: Record<string, unknown> | null;\n headers: Record<string, string> | null;\n config: AddBillLinesCommandRequestConfig;\n\n static params = [\"id\"] as const;\n static url = \"/bills/:id/lines/batch\";\n static method = \"post\" as const;\n\n constructor(commandConfig: AddBillLinesCommandConfig, options: Record<string, unknown> = {}) {\n const pathParams = AddBillLinesCommand.params;\n\n let { data, query, headers } = commandConfig ?? {};\n\n if (typeof data === \"undefined\") data = null;\n if (typeof query === \"undefined\") query = null;\n if (typeof headers === \"undefined\") headers = null;\n\n // Replace path parameters with values from data\n let url: string = AddBillLinesCommand.url;\n\n if (pathParams && data) {\n for (const param of pathParams) {\n const urlParam = \":\" + param;\n url = url.replace(urlParam, (data as Record<string, string>)[param]);\n }\n }\n\n // Make sure all parameters have been replaced\n const missingParams = url.match(/:[a-zA-Z0-9]+/g);\n if (missingParams) {\n const missing = missingParams.map((param) => param.replace(\":\", \"\"));\n throw new Error(\"Missing parameters: \" + missing.join(\", \"));\n }\n\n this.url = url;\n this.data = data;\n this.query = query;\n this.headers = headers;\n\n this.config = {\n method: AddBillLinesCommand.method,\n url: url,\n data: data,\n params: query,\n headers: headers,\n ...options,\n };\n }\n}\n"],"mappings":";;;;AAoBA,IAAa,sBAAb,MAAa,oBAAoB;CAC/B;CACA;CACA;CACA;CACA;CAEA,OAAO,SAAS,CAAC,IAAI;CACrB,OAAO,MAAM;CACb,OAAO,SAAS;CAEhB,YAAY,eAA0C,UAAmC,CAAC,GAAG;EAC3F,MAAM,aAAa,oBAAoB;EAEvC,IAAI,EAAE,MAAM,OAAO,YAAY,iBAAiB,CAAC;EAEjD,IAAI,OAAO,SAAS,aAAa,OAAO;EACxC,IAAI,OAAO,UAAU,aAAa,QAAQ;EAC1C,IAAI,OAAO,YAAY,aAAa,UAAU;EAG9C,IAAI,MAAc,oBAAoB;EAEtC,IAAI,cAAc,MAChB,KAAK,MAAM,SAAS,YAAY;GAC9B,MAAM,WAAW,MAAM;GACvB,MAAM,IAAI,QAAQ,UAAW,KAAgC,MAAM;EACrE;EAIF,MAAM,gBAAgB,IAAI,MAAM,gBAAgB;EAChD,IAAI,eAAe;GACjB,MAAM,UAAU,cAAc,KAAK,UAAU,MAAM,QAAQ,KAAK,EAAE,CAAC;GACnE,MAAM,IAAI,MAAM,yBAAyB,QAAQ,KAAK,IAAI,CAAC;EAC7D;EAEA,KAAK,MAAM;EACX,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,UAAU;EAEf,KAAK,SAAS;GACZ,QAAQ,oBAAoB;GACvB;GACC;GACN,QAAQ;GACC;GACT,GAAG;EACL;CACF;AACF"}
|
package/dist/useCases/index.d.ts
CHANGED
|
@@ -159,6 +159,7 @@ export { CreateBillCommand } from "./createBill.js";
|
|
|
159
159
|
export { UpdateBillCommand } from "./updateBill.js";
|
|
160
160
|
export { DeleteBillCommand } from "./deleteBill.js";
|
|
161
161
|
export { AddBillLineCommand } from "./addBillLine.js";
|
|
162
|
+
export { AddBillLinesCommand } from "./addBillLines.js";
|
|
162
163
|
export { UpdateBillLineCommand } from "./updateBillLine.js";
|
|
163
164
|
export { RemoveBillLineCommand } from "./removeBillLine.js";
|
|
164
165
|
export { MarkBillSentCommand } from "./markBillSent.js";
|
|
@@ -202,6 +203,7 @@ export { EditCostEntryCommand } from "./editCostEntry.js";
|
|
|
202
203
|
export { RecordCostActualCommand } from "./recordCostActual.js";
|
|
203
204
|
export { SetCostVendorInvoiceCommand } from "./setCostVendorInvoice.js";
|
|
204
205
|
export { WriteOffCostEntryCommand } from "./writeOffCostEntry.js";
|
|
206
|
+
export { VoidCostEntryCommand } from "./voidCostEntry.js";
|
|
205
207
|
export { ReinstateCostEntryCommand } from "./reinstateCostEntry.js";
|
|
206
208
|
export { AcknowledgeCostDivergenceCommand } from "./acknowledgeCostDivergence.js";
|
|
207
209
|
export { RequestApprovalCommand } from "./requestApproval.js";
|
package/dist/useCases/index.js
CHANGED
|
@@ -160,6 +160,7 @@ import { CreateBillCommand } from "./createBill.js";
|
|
|
160
160
|
import { UpdateBillCommand } from "./updateBill.js";
|
|
161
161
|
import { DeleteBillCommand } from "./deleteBill.js";
|
|
162
162
|
import { AddBillLineCommand } from "./addBillLine.js";
|
|
163
|
+
import { AddBillLinesCommand } from "./addBillLines.js";
|
|
163
164
|
import { UpdateBillLineCommand } from "./updateBillLine.js";
|
|
164
165
|
import { RemoveBillLineCommand } from "./removeBillLine.js";
|
|
165
166
|
import { MarkBillSentCommand } from "./markBillSent.js";
|
|
@@ -203,6 +204,7 @@ import { EditCostEntryCommand } from "./editCostEntry.js";
|
|
|
203
204
|
import { RecordCostActualCommand } from "./recordCostActual.js";
|
|
204
205
|
import { SetCostVendorInvoiceCommand } from "./setCostVendorInvoice.js";
|
|
205
206
|
import { WriteOffCostEntryCommand } from "./writeOffCostEntry.js";
|
|
207
|
+
import { VoidCostEntryCommand } from "./voidCostEntry.js";
|
|
206
208
|
import { ReinstateCostEntryCommand } from "./reinstateCostEntry.js";
|
|
207
209
|
import { AcknowledgeCostDivergenceCommand } from "./acknowledgeCostDivergence.js";
|
|
208
210
|
import { RequestApprovalCommand } from "./requestApproval.js";
|
|
@@ -227,6 +229,7 @@ import { DeleteAnnouncementPresetCommand } from "./deleteAnnouncementPreset.js";
|
|
|
227
229
|
var useCases_exports = /* @__PURE__ */ __exportAll({
|
|
228
230
|
AcknowledgeCostDivergenceCommand: () => AcknowledgeCostDivergenceCommand,
|
|
229
231
|
AddBillLineCommand: () => AddBillLineCommand,
|
|
232
|
+
AddBillLinesCommand: () => AddBillLinesCommand,
|
|
230
233
|
AddSOSEventNoteCommand: () => AddSOSEventNoteCommand,
|
|
231
234
|
AddStaffFunctionMemberCommand: () => AddStaffFunctionMemberCommand,
|
|
232
235
|
AutoAssociateDiscoveredDevicesCommand: () => AutoAssociateDiscoveredDevicesCommand,
|
|
@@ -448,9 +451,10 @@ var useCases_exports = /* @__PURE__ */ __exportAll({
|
|
|
448
451
|
UpsertDiscoveredDeviceCommand: () => UpsertDiscoveredDeviceCommand,
|
|
449
452
|
ValidateAuthCommand: () => ValidateAuthCommand,
|
|
450
453
|
VoidBillCommand: () => VoidBillCommand,
|
|
454
|
+
VoidCostEntryCommand: () => VoidCostEntryCommand,
|
|
451
455
|
WriteOffCostEntryCommand: () => WriteOffCostEntryCommand
|
|
452
456
|
});
|
|
453
457
|
//#endregion
|
|
454
|
-
export { AcknowledgeCostDivergenceCommand, AddBillLineCommand, AddSOSEventNoteCommand, AddStaffFunctionMemberCommand, AutoAssociateDiscoveredDevicesCommand, BulkUpdateIssueCommand, CancelWorkItemCommand, CheckVerificationCodeCommand, ClearWorkItemNoChargeCommand, CopyIssueRoutingCommand, CreateAnnouncementPresetCommand, CreateApiKeyCommand, CreateAutomationCommand, CreateBillCommand, CreateBillingCategoryCommand, CreateCategoryCommand, CreateDefaultAutomationsCommand, CreateDepartmentCommand, CreateDeviceCommand, CreateDeviceCredentialCommand, CreateDiscoveredDeviceAssociationCommand, CreateDiscoveredDeviceAssociationMapCommand, CreateDiscoveredDeviceCommand, CreateIssueCommand, CreateOrganizationCommand, CreatePolicyCommand, CreatePropertyCommand, CreatePwaHandoffTokenCommand, CreateResourceCommand, CreateServerCommand, CreateSpaceCommand, CreateSystemCommand, CreateTicketCommand, CreateTicketMessageCommand, CreateTimeSheetCommand, CreateTimeSheetTimeEntryCommand, CreateUserCommand, CreateVendorCommand, DecideApprovalCommand, DeleteAnnouncementPresetCommand, DeleteAutomationCommand, DeleteBillCommand, DeleteCategoryCommand, DeleteDepartmentCommand, DeleteDeviceCommand, DeleteDeviceCredentialCommand, DeleteDiscoveredDeviceCommand, DeleteIssueCommand, DeleteMediaFileCommand, DeleteOrganizationCommand, DeletePolicyCommand, DeletePropertyCommand, DeleteResourceCommand, DeleteServerCommand, DeleteSessionCommand, DeleteSpaceCommand, DeleteStaffUserCommand, DeleteSystemCommand, DeleteTicketCommand, DeleteTimeSheetCommand, DeleteTimeSheetTimeEntryCommand, DeleteUserCommand, DeleteUserCredentialCommand, DeleteVendorCommand, DescribeAnnouncementCommand, DescribeAutomationCommand, DescribeBillCommand, DescribeCategoryCommand, DescribeConciergeFacilitiesViewerCommand, DescribeConciergeStatsFiltersCommand, DescribeConciergeStatsHeatmapCommand, DescribeConciergeStatsSummaryCommand, DescribeConciergeStatsTicketsCommand, DescribeConciergeWorkspaceFiltersCommand, DescribeDepartmentCommand, DescribeDeviceCommand, DescribeDeviceConfigCommand, DescribeDiscoveredDeviceCommand, DescribeIssueCommand, DescribeMyAuthCommand, DescribeMyOrganizationCommand, DescribeMyPasskeyRegistrationsCommand, DescribeOrgNotificationDefaultsCommand, DescribeOrganizationBillCommand, DescribeOrganizationCommand, DescribePolicyCommand, DescribePropertyCommand, DescribePushVapidPublicKeyCommand, DescribeResourceCommand, DescribeSOSCommand, DescribeSOSEventCommand, DescribeSelfAccessCommand, DescribeSelfCommand, DescribeServerCommand, DescribeSessionCommand, DescribeSpaceCommand, DescribeStaffFunctionsCommand, DescribeSystemCommand, DescribeTicketCommand, DescribeTicketFiltersCommand, DescribeTicketStatsCommand, DescribeTicketStatsFiltersCommand, DescribeTicketStatsHeatmapCommand, DescribeTicketStatsSummaryCommand, DescribeTicketStatsTicketsCommand, DescribeTimeSheetCommand, DescribeTimeSheetStatsCommand, DescribeUserCommand, DescribeVendorCommand, EditCostEntryCommand, EmailUserAccountSetupCommand, ExportSOSEventReportCommand, FetchEmergencyContactPeopleCommand, FetchEmergencyContactsCommand, GetApiKeyCommand, LeaveTicketCommand, ListAnnouncementsCommand, ListAutomationsCommand, ListBillingCategoriesCommand, ListBillsCommand, ListCameraStreamPreviewsCommand, ListCategoriesCommand, ListConciergeUninvoicedCostsCommand, ListConciergeWorkspaceBillsCommand, ListConciergeWorkspaceTicketsCommand, ListDepartmentsCommand, ListDeviceCredentialsCommand, ListDevicesCommand, ListDiscoveredDevicesCommand, ListEligibleApproversCommand, ListFacilitiesStaffIdsCommand, ListIntegrationsCommand, ListIssuesCommand, ListKohostStaffCommand, ListMyOrganizationsCommand, ListMyPropertiesCommand, ListMyPushSubscriptionsCommand, ListMyTimeSheetsCommand, ListOrganizationBillsCommand, ListOrganizationsCommand, ListPoliciesCommand, ListPropertiesCommand, ListPropertyCredentialsCommand, ListResourcesCommand, ListSOSEventsCommand, ListServersCommand, ListSessionsCommand, ListSpacesCommand, ListSystemsCommand, ListTicketLocationsCommand, ListTicketsCommand, ListTimeSheetsCommand, ListUserSpacesCommand, ListUsersCommand, ListVendorsCommand, LogoutUserCommand, MarkBillPaidCommand, MarkBillSentCommand, MergeIssueCommand, MoveDeviceCommand, PreviewBillCommand, PreviewSOSEventReportCommand, RecordCostActualCommand, RecordCostEntryCommand, ReinstateCostEntryCommand, RemoveBillLineCommand, RemoveStaffFunctionMemberCommand, ReplaceDeviceCommand, RequestApprovalCommand, RescheduleWorkItemCommand, RevokeApiKeyCommand, RotateApiKeyCommand, RunAutomationCommand, ScheduleWorkItemCommand, SelectOrganizationCommand, SendAnnouncementCommand, SendNotificationCommand, SendSOSUpdateCommand, SendVerificationCodeCommand, SetCostVendorInvoiceCommand, SetDeviceCommand, SetDevicesCommand, SetUserSuperAdminCommand, SetWorkItemNoChargeCommand, StartSOSCommand, StopSOSCommand, SubscribePushDeviceCommand, UnsubscribePushDeviceCommand, UpdateAnnouncementPresetCommand, UpdateAutomationCommand, UpdateBillCommand, UpdateBillLineCommand, UpdateBillingCategoryCommand, UpdateCategoryCommand, UpdateDepartmentCommand, UpdateDeviceCommand, UpdateDeviceCredentialCommand, UpdateDiscoveredDeviceCommand, UpdateIssueCommand, UpdateMessageReadStatusCommand, UpdateOrgNotificationDefaultsCommand, UpdateOrganizationBillingAddressCommand, UpdateOrganizationBillingContactsCommand, UpdateOrganizationCommand, UpdateOrganizationFeaturesCommand, UpdateOrganizationTaxExemptCommand, UpdatePolicyCommand, UpdatePropertyCommand, UpdatePropertyFeaturesCommand, UpdateResourceCommand, UpdateSelfCommand, UpdateServerCommand, UpdateSpaceCommand, UpdateStaffUserCommand, UpdateSystemCommand, UpdateTicketCommand, UpdateTimeSheetCommand, UpdateTimeSheetTimeEntryCommand, UpdateUserCommand, UpdateVendorCommand, UpsertDiscoveredDeviceCommand, ValidateAuthCommand, VoidBillCommand, WriteOffCostEntryCommand, useCases_exports };
|
|
458
|
+
export { AcknowledgeCostDivergenceCommand, AddBillLineCommand, AddBillLinesCommand, AddSOSEventNoteCommand, AddStaffFunctionMemberCommand, AutoAssociateDiscoveredDevicesCommand, BulkUpdateIssueCommand, CancelWorkItemCommand, CheckVerificationCodeCommand, ClearWorkItemNoChargeCommand, CopyIssueRoutingCommand, CreateAnnouncementPresetCommand, CreateApiKeyCommand, CreateAutomationCommand, CreateBillCommand, CreateBillingCategoryCommand, CreateCategoryCommand, CreateDefaultAutomationsCommand, CreateDepartmentCommand, CreateDeviceCommand, CreateDeviceCredentialCommand, CreateDiscoveredDeviceAssociationCommand, CreateDiscoveredDeviceAssociationMapCommand, CreateDiscoveredDeviceCommand, CreateIssueCommand, CreateOrganizationCommand, CreatePolicyCommand, CreatePropertyCommand, CreatePwaHandoffTokenCommand, CreateResourceCommand, CreateServerCommand, CreateSpaceCommand, CreateSystemCommand, CreateTicketCommand, CreateTicketMessageCommand, CreateTimeSheetCommand, CreateTimeSheetTimeEntryCommand, CreateUserCommand, CreateVendorCommand, DecideApprovalCommand, DeleteAnnouncementPresetCommand, DeleteAutomationCommand, DeleteBillCommand, DeleteCategoryCommand, DeleteDepartmentCommand, DeleteDeviceCommand, DeleteDeviceCredentialCommand, DeleteDiscoveredDeviceCommand, DeleteIssueCommand, DeleteMediaFileCommand, DeleteOrganizationCommand, DeletePolicyCommand, DeletePropertyCommand, DeleteResourceCommand, DeleteServerCommand, DeleteSessionCommand, DeleteSpaceCommand, DeleteStaffUserCommand, DeleteSystemCommand, DeleteTicketCommand, DeleteTimeSheetCommand, DeleteTimeSheetTimeEntryCommand, DeleteUserCommand, DeleteUserCredentialCommand, DeleteVendorCommand, DescribeAnnouncementCommand, DescribeAutomationCommand, DescribeBillCommand, DescribeCategoryCommand, DescribeConciergeFacilitiesViewerCommand, DescribeConciergeStatsFiltersCommand, DescribeConciergeStatsHeatmapCommand, DescribeConciergeStatsSummaryCommand, DescribeConciergeStatsTicketsCommand, DescribeConciergeWorkspaceFiltersCommand, DescribeDepartmentCommand, DescribeDeviceCommand, DescribeDeviceConfigCommand, DescribeDiscoveredDeviceCommand, DescribeIssueCommand, DescribeMyAuthCommand, DescribeMyOrganizationCommand, DescribeMyPasskeyRegistrationsCommand, DescribeOrgNotificationDefaultsCommand, DescribeOrganizationBillCommand, DescribeOrganizationCommand, DescribePolicyCommand, DescribePropertyCommand, DescribePushVapidPublicKeyCommand, DescribeResourceCommand, DescribeSOSCommand, DescribeSOSEventCommand, DescribeSelfAccessCommand, DescribeSelfCommand, DescribeServerCommand, DescribeSessionCommand, DescribeSpaceCommand, DescribeStaffFunctionsCommand, DescribeSystemCommand, DescribeTicketCommand, DescribeTicketFiltersCommand, DescribeTicketStatsCommand, DescribeTicketStatsFiltersCommand, DescribeTicketStatsHeatmapCommand, DescribeTicketStatsSummaryCommand, DescribeTicketStatsTicketsCommand, DescribeTimeSheetCommand, DescribeTimeSheetStatsCommand, DescribeUserCommand, DescribeVendorCommand, EditCostEntryCommand, EmailUserAccountSetupCommand, ExportSOSEventReportCommand, FetchEmergencyContactPeopleCommand, FetchEmergencyContactsCommand, GetApiKeyCommand, LeaveTicketCommand, ListAnnouncementsCommand, ListAutomationsCommand, ListBillingCategoriesCommand, ListBillsCommand, ListCameraStreamPreviewsCommand, ListCategoriesCommand, ListConciergeUninvoicedCostsCommand, ListConciergeWorkspaceBillsCommand, ListConciergeWorkspaceTicketsCommand, ListDepartmentsCommand, ListDeviceCredentialsCommand, ListDevicesCommand, ListDiscoveredDevicesCommand, ListEligibleApproversCommand, ListFacilitiesStaffIdsCommand, ListIntegrationsCommand, ListIssuesCommand, ListKohostStaffCommand, ListMyOrganizationsCommand, ListMyPropertiesCommand, ListMyPushSubscriptionsCommand, ListMyTimeSheetsCommand, ListOrganizationBillsCommand, ListOrganizationsCommand, ListPoliciesCommand, ListPropertiesCommand, ListPropertyCredentialsCommand, ListResourcesCommand, ListSOSEventsCommand, ListServersCommand, ListSessionsCommand, ListSpacesCommand, ListSystemsCommand, ListTicketLocationsCommand, ListTicketsCommand, ListTimeSheetsCommand, ListUserSpacesCommand, ListUsersCommand, ListVendorsCommand, LogoutUserCommand, MarkBillPaidCommand, MarkBillSentCommand, MergeIssueCommand, MoveDeviceCommand, PreviewBillCommand, PreviewSOSEventReportCommand, RecordCostActualCommand, RecordCostEntryCommand, ReinstateCostEntryCommand, RemoveBillLineCommand, RemoveStaffFunctionMemberCommand, ReplaceDeviceCommand, RequestApprovalCommand, RescheduleWorkItemCommand, RevokeApiKeyCommand, RotateApiKeyCommand, RunAutomationCommand, ScheduleWorkItemCommand, SelectOrganizationCommand, SendAnnouncementCommand, SendNotificationCommand, SendSOSUpdateCommand, SendVerificationCodeCommand, SetCostVendorInvoiceCommand, SetDeviceCommand, SetDevicesCommand, SetUserSuperAdminCommand, SetWorkItemNoChargeCommand, StartSOSCommand, StopSOSCommand, SubscribePushDeviceCommand, UnsubscribePushDeviceCommand, UpdateAnnouncementPresetCommand, UpdateAutomationCommand, UpdateBillCommand, UpdateBillLineCommand, UpdateBillingCategoryCommand, UpdateCategoryCommand, UpdateDepartmentCommand, UpdateDeviceCommand, UpdateDeviceCredentialCommand, UpdateDiscoveredDeviceCommand, UpdateIssueCommand, UpdateMessageReadStatusCommand, UpdateOrgNotificationDefaultsCommand, UpdateOrganizationBillingAddressCommand, UpdateOrganizationBillingContactsCommand, UpdateOrganizationCommand, UpdateOrganizationFeaturesCommand, UpdateOrganizationTaxExemptCommand, UpdatePolicyCommand, UpdatePropertyCommand, UpdatePropertyFeaturesCommand, UpdateResourceCommand, UpdateSelfCommand, UpdateServerCommand, UpdateSpaceCommand, UpdateStaffUserCommand, UpdateSystemCommand, UpdateTicketCommand, UpdateTimeSheetCommand, UpdateTimeSheetTimeEntryCommand, UpdateUserCommand, UpdateVendorCommand, UpsertDiscoveredDeviceCommand, ValidateAuthCommand, VoidBillCommand, VoidCostEntryCommand, WriteOffCostEntryCommand, useCases_exports };
|
|
455
459
|
|
|
456
460
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../.generated/useCases/index.ts"],"sourcesContent":["/* This file is automatically generated. Do not modify it manually. */\n\nexport { CreatePwaHandoffTokenCommand } from \"./createPwaHandoffToken.js\";\nexport { LogoutUserCommand } from \"./logoutUser.js\";\nexport { DescribeMyAuthCommand } from \"./describeMyAuth.js\";\nexport { ValidateAuthCommand } from \"./validateAuth.js\";\nexport { SelectOrganizationCommand } from \"./selectOrganization.js\";\nexport { ListMyOrganizationsCommand } from \"./listMyOrganizations.js\";\nexport { DescribeSelfCommand } from \"./describeSelf.js\";\nexport { DescribeSelfAccessCommand } from \"./describeSelfAccess.js\";\nexport { DescribeUserCommand } from \"./describeUser.js\";\nexport { CreateUserCommand } from \"./createUser.js\";\nexport { ListUsersCommand } from \"./listUsers.js\";\nexport { UpdateSelfCommand } from \"./updateSelf.js\";\nexport { UpdateUserCommand } from \"./updateUser.js\";\nexport { DeleteUserCommand } from \"./deleteUser.js\";\nexport { CreateApiKeyCommand } from \"./createApiKey.js\";\nexport { GetApiKeyCommand } from \"./getApiKey.js\";\nexport { RotateApiKeyCommand } from \"./rotateApiKey.js\";\nexport { RevokeApiKeyCommand } from \"./revokeApiKey.js\";\nexport { SendVerificationCodeCommand } from \"./sendVerificationCode.js\";\nexport { CheckVerificationCodeCommand } from \"./checkVerificationCode.js\";\nexport { ListUserSpacesCommand } from \"./listUserSpaces.js\";\nexport { DescribeMyPasskeyRegistrationsCommand } from \"./describeMyPasskeyRegistrations.js\";\nexport { DeleteUserCredentialCommand } from \"./deleteUserCredential.js\";\nexport { CreatePolicyCommand } from \"./createPolicy.js\";\nexport { ListPoliciesCommand } from \"./listPolicies.js\";\nexport { UpdatePolicyCommand } from \"./updatePolicy.js\";\nexport { DeletePolicyCommand } from \"./deletePolicy.js\";\nexport { DescribePolicyCommand } from \"./describePolicy.js\";\nexport { ListSpacesCommand } from \"./listSpaces.js\";\nexport { UpdateSpaceCommand } from \"./updateSpace.js\";\nexport { CreateSpaceCommand } from \"./createSpace.js\";\nexport { DescribeSpaceCommand } from \"./describeSpace.js\";\nexport { DeleteSpaceCommand } from \"./deleteSpace.js\";\nexport { CreateDeviceCommand } from \"./createDevice.js\";\nexport { CreateDeviceCredentialCommand } from \"./createDeviceCredential.js\";\nexport { ListDevicesCommand } from \"./listDevices.js\";\nexport { ListDeviceCredentialsCommand } from \"./listDeviceCredentials.js\";\nexport { ListCameraStreamPreviewsCommand } from \"./listCameraStreamPreviews.js\";\nexport { DescribeDeviceCommand } from \"./describeDevice.js\";\nexport { UpdateDeviceCommand } from \"./updateDevice.js\";\nexport { UpdateDeviceCredentialCommand } from \"./updateDeviceCredential.js\";\nexport { SetDeviceCommand } from \"./setDevice.js\";\nexport { DeleteDeviceCommand } from \"./deleteDevice.js\";\nexport { DeleteDeviceCredentialCommand } from \"./deleteDeviceCredential.js\";\nexport { MoveDeviceCommand } from \"./moveDevice.js\";\nexport { ReplaceDeviceCommand } from \"./replaceDevice.js\";\nexport { DescribeDeviceConfigCommand } from \"./describeDeviceConfig.js\";\nexport { CreateCategoryCommand } from \"./createCategory.js\";\nexport { DeleteCategoryCommand } from \"./deleteCategory.js\";\nexport { DescribeCategoryCommand } from \"./describeCategory.js\";\nexport { ListCategoriesCommand } from \"./listCategories.js\";\nexport { UpdateCategoryCommand } from \"./updateCategory.js\";\nexport { CreateResourceCommand } from \"./createResource.js\";\nexport { DeleteResourceCommand } from \"./deleteResource.js\";\nexport { DescribeResourceCommand } from \"./describeResource.js\";\nexport { ListResourcesCommand } from \"./listResources.js\";\nexport { UpdateResourceCommand } from \"./updateResource.js\";\nexport { DescribeDepartmentCommand } from \"./describeDepartment.js\";\nexport { ListDepartmentsCommand } from \"./listDepartments.js\";\nexport { DeleteDepartmentCommand } from \"./deleteDepartment.js\";\nexport { CreateDepartmentCommand } from \"./createDepartment.js\";\nexport { UpdateDepartmentCommand } from \"./updateDepartment.js\";\nexport { DescribeTicketStatsCommand } from \"./describeTicketStats.js\";\nexport { DescribeTicketStatsSummaryCommand } from \"./describeTicketStatsSummary.js\";\nexport { DescribeTicketStatsTicketsCommand } from \"./describeTicketStatsTickets.js\";\nexport { DescribeTicketStatsHeatmapCommand } from \"./describeTicketStatsHeatmap.js\";\nexport { DescribeTicketStatsFiltersCommand } from \"./describeTicketStatsFilters.js\";\nexport { CreateTicketCommand } from \"./createTicket.js\";\nexport { CreateTicketMessageCommand } from \"./createTicketMessage.js\";\nexport { DeleteTicketCommand } from \"./deleteTicket.js\";\nexport { ListTicketLocationsCommand } from \"./listTicketLocations.js\";\nexport { DescribeTicketFiltersCommand } from \"./describeTicketFilters.js\";\nexport { DescribeTicketCommand } from \"./describeTicket.js\";\nexport { ListTicketsCommand } from \"./listTickets.js\";\nexport { UpdateMessageReadStatusCommand } from \"./updateMessageReadStatus.js\";\nexport { UpdateTicketCommand } from \"./updateTicket.js\";\nexport { LeaveTicketCommand } from \"./leaveTicket.js\";\nexport { CreateDiscoveredDeviceAssociationMapCommand } from \"./createDiscoveredDeviceAssociationMap.js\";\nexport { AutoAssociateDiscoveredDevicesCommand } from \"./autoAssociateDiscoveredDevices.js\";\nexport { CreateDiscoveredDeviceCommand } from \"./createDiscoveredDevice.js\";\nexport { ListDiscoveredDevicesCommand } from \"./listDiscoveredDevices.js\";\nexport { UpdateDiscoveredDeviceCommand } from \"./updateDiscoveredDevice.js\";\nexport { DeleteDiscoveredDeviceCommand } from \"./deleteDiscoveredDevice.js\";\nexport { DescribeDiscoveredDeviceCommand } from \"./describeDiscoveredDevice.js\";\nexport { UpsertDiscoveredDeviceCommand } from \"./upsertDiscoveredDevice.js\";\nexport { CreateDiscoveredDeviceAssociationCommand } from \"./createDiscoveredDeviceAssociation.js\";\nexport { ListIntegrationsCommand } from \"./listIntegrations.js\";\nexport { DescribeMyOrganizationCommand } from \"./describeMyOrganization.js\";\nexport { CreateOrganizationCommand } from \"./createOrganization.js\";\nexport { UpdateOrganizationCommand } from \"./updateOrganization.js\";\nexport { UpdateOrganizationFeaturesCommand } from \"./updateOrganizationFeatures.js\";\nexport { UpdateOrganizationBillingAddressCommand } from \"./updateOrganizationBillingAddress.js\";\nexport { UpdateOrganizationBillingContactsCommand } from \"./updateOrganizationBillingContacts.js\";\nexport { UpdateOrganizationTaxExemptCommand } from \"./updateOrganizationTaxExempt.js\";\nexport { DeleteOrganizationCommand } from \"./deleteOrganization.js\";\nexport { DescribeOrganizationCommand } from \"./describeOrganization.js\";\nexport { ListOrganizationsCommand } from \"./listOrganizations.js\";\nexport { DescribeConciergeStatsSummaryCommand } from \"./describeConciergeStatsSummary.js\";\nexport { DescribeConciergeStatsFiltersCommand } from \"./describeConciergeStatsFilters.js\";\nexport { DescribeConciergeStatsTicketsCommand } from \"./describeConciergeStatsTickets.js\";\nexport { DescribeConciergeStatsHeatmapCommand } from \"./describeConciergeStatsHeatmap.js\";\nexport { ListConciergeWorkspaceBillsCommand } from \"./listConciergeWorkspaceBills.js\";\nexport { ListConciergeWorkspaceTicketsCommand } from \"./listConciergeWorkspaceTickets.js\";\nexport { DescribeConciergeWorkspaceFiltersCommand } from \"./describeConciergeWorkspaceFilters.js\";\nexport { ListConciergeUninvoicedCostsCommand } from \"./listConciergeUninvoicedCosts.js\";\nexport { ListPropertiesCommand } from \"./listProperties.js\";\nexport { ListPropertyCredentialsCommand } from \"./listPropertyCredentials.js\";\nexport { ListMyPropertiesCommand } from \"./listMyProperties.js\";\nexport { CreatePropertyCommand } from \"./createProperty.js\";\nexport { DeletePropertyCommand } from \"./deleteProperty.js\";\nexport { UpdatePropertyCommand } from \"./updateProperty.js\";\nexport { DescribePropertyCommand } from \"./describeProperty.js\";\nexport { UpdatePropertyFeaturesCommand } from \"./updatePropertyFeatures.js\";\nexport { EmailUserAccountSetupCommand } from \"./emailUserAccountSetup.js\";\nexport { DeleteMediaFileCommand } from \"./deleteMediaFile.js\";\nexport { DescribeTimeSheetStatsCommand } from \"./describeTimeSheetStats.js\";\nexport { ListMyTimeSheetsCommand } from \"./listMyTimeSheets.js\";\nexport { DescribeTimeSheetCommand } from \"./describeTimeSheet.js\";\nexport { ListTimeSheetsCommand } from \"./listTimeSheets.js\";\nexport { CreateTimeSheetCommand } from \"./createTimeSheet.js\";\nexport { DeleteTimeSheetCommand } from \"./deleteTimeSheet.js\";\nexport { UpdateTimeSheetCommand } from \"./updateTimeSheet.js\";\nexport { CreateTimeSheetTimeEntryCommand } from \"./createTimeSheetTimeEntry.js\";\nexport { DeleteTimeSheetTimeEntryCommand } from \"./deleteTimeSheetTimeEntry.js\";\nexport { UpdateTimeSheetTimeEntryCommand } from \"./updateTimeSheetTimeEntry.js\";\nexport { StartSOSCommand } from \"./startSOS.js\";\nexport { StopSOSCommand } from \"./stopSOS.js\";\nexport { DescribeSOSCommand } from \"./describeSOS.js\";\nexport { ListSOSEventsCommand } from \"./listSOSEvents.js\";\nexport { DescribeSOSEventCommand } from \"./describeSOSEvent.js\";\nexport { SendSOSUpdateCommand } from \"./sendSOSUpdate.js\";\nexport { AddSOSEventNoteCommand } from \"./addSOSEventNote.js\";\nexport { PreviewSOSEventReportCommand } from \"./previewSOSEventReport.js\";\nexport { ExportSOSEventReportCommand } from \"./exportSOSEventReport.js\";\nexport { FetchEmergencyContactsCommand } from \"./fetchEmergencyContacts.js\";\nexport { FetchEmergencyContactPeopleCommand } from \"./fetchEmergencyContactPeople.js\";\nexport { DescribeIssueCommand } from \"./describeIssue.js\";\nexport { ListIssuesCommand } from \"./listIssues.js\";\nexport { DeleteIssueCommand } from \"./deleteIssue.js\";\nexport { CreateIssueCommand } from \"./createIssue.js\";\nexport { UpdateIssueCommand } from \"./updateIssue.js\";\nexport { MergeIssueCommand } from \"./mergeIssue.js\";\nexport { CopyIssueRoutingCommand } from \"./copyIssueRouting.js\";\nexport { BulkUpdateIssueCommand } from \"./bulkUpdateIssue.js\";\nexport { DescribeVendorCommand } from \"./describeVendor.js\";\nexport { ListVendorsCommand } from \"./listVendors.js\";\nexport { DeleteVendorCommand } from \"./deleteVendor.js\";\nexport { CreateVendorCommand } from \"./createVendor.js\";\nexport { UpdateVendorCommand } from \"./updateVendor.js\";\nexport { ListBillingCategoriesCommand } from \"./listBillingCategories.js\";\nexport { CreateBillingCategoryCommand } from \"./createBillingCategory.js\";\nexport { UpdateBillingCategoryCommand } from \"./updateBillingCategory.js\";\nexport { ListBillsCommand } from \"./listBills.js\";\nexport { DescribeBillCommand } from \"./describeBill.js\";\nexport { PreviewBillCommand } from \"./previewBill.js\";\nexport { ListOrganizationBillsCommand } from \"./listOrganizationBills.js\";\nexport { DescribeOrganizationBillCommand } from \"./describeOrganizationBill.js\";\nexport { CreateBillCommand } from \"./createBill.js\";\nexport { UpdateBillCommand } from \"./updateBill.js\";\nexport { DeleteBillCommand } from \"./deleteBill.js\";\nexport { AddBillLineCommand } from \"./addBillLine.js\";\nexport { UpdateBillLineCommand } from \"./updateBillLine.js\";\nexport { RemoveBillLineCommand } from \"./removeBillLine.js\";\nexport { MarkBillSentCommand } from \"./markBillSent.js\";\nexport { MarkBillPaidCommand } from \"./markBillPaid.js\";\nexport { VoidBillCommand } from \"./voidBill.js\";\nexport { CreateAutomationCommand } from \"./createAutomation.js\";\nexport { ListAutomationsCommand } from \"./listAutomations.js\";\nexport { DescribeAutomationCommand } from \"./describeAutomation.js\";\nexport { UpdateAutomationCommand } from \"./updateAutomation.js\";\nexport { DeleteAutomationCommand } from \"./deleteAutomation.js\";\nexport { CreateDefaultAutomationsCommand } from \"./createDefaultAutomations.js\";\nexport { RunAutomationCommand } from \"./runAutomation.js\";\nexport { SendNotificationCommand } from \"./sendNotification.js\";\nexport { DescribeOrgNotificationDefaultsCommand } from \"./describeOrgNotificationDefaults.js\";\nexport { UpdateOrgNotificationDefaultsCommand } from \"./updateOrgNotificationDefaults.js\";\nexport { ListMyPushSubscriptionsCommand } from \"./listMyPushSubscriptions.js\";\nexport { DescribePushVapidPublicKeyCommand } from \"./describePushVapidPublicKey.js\";\nexport { SubscribePushDeviceCommand } from \"./subscribePushDevice.js\";\nexport { UnsubscribePushDeviceCommand } from \"./unsubscribePushDevice.js\";\nexport { ListSessionsCommand } from \"./listSessions.js\";\nexport { DescribeSessionCommand } from \"./describeSession.js\";\nexport { DeleteSessionCommand } from \"./deleteSession.js\";\nexport { SetDevicesCommand } from \"./setDevices.js\";\nexport { CreateSystemCommand } from \"./createSystem.js\";\nexport { DeleteSystemCommand } from \"./deleteSystem.js\";\nexport { DescribeSystemCommand } from \"./describeSystem.js\";\nexport { ListSystemsCommand } from \"./listSystems.js\";\nexport { UpdateSystemCommand } from \"./updateSystem.js\";\nexport { CreateServerCommand } from \"./createServer.js\";\nexport { DeleteServerCommand } from \"./deleteServer.js\";\nexport { DescribeServerCommand } from \"./describeServer.js\";\nexport { ListServersCommand } from \"./listServers.js\";\nexport { UpdateServerCommand } from \"./updateServer.js\";\nexport { ScheduleWorkItemCommand } from \"./scheduleWorkItem.js\";\nexport { RescheduleWorkItemCommand } from \"./rescheduleWorkItem.js\";\nexport { CancelWorkItemCommand } from \"./cancelWorkItem.js\";\nexport { SetWorkItemNoChargeCommand } from \"./setWorkItemNoCharge.js\";\nexport { ClearWorkItemNoChargeCommand } from \"./clearWorkItemNoCharge.js\";\nexport { RecordCostEntryCommand } from \"./recordCostEntry.js\";\nexport { EditCostEntryCommand } from \"./editCostEntry.js\";\nexport { RecordCostActualCommand } from \"./recordCostActual.js\";\nexport { SetCostVendorInvoiceCommand } from \"./setCostVendorInvoice.js\";\nexport { WriteOffCostEntryCommand } from \"./writeOffCostEntry.js\";\nexport { ReinstateCostEntryCommand } from \"./reinstateCostEntry.js\";\nexport { AcknowledgeCostDivergenceCommand } from \"./acknowledgeCostDivergence.js\";\nexport { RequestApprovalCommand } from \"./requestApproval.js\";\nexport { DecideApprovalCommand } from \"./decideApproval.js\";\nexport { ListEligibleApproversCommand } from \"./listEligibleApprovers.js\";\nexport { DescribeConciergeFacilitiesViewerCommand } from \"./describeConciergeFacilitiesViewer.js\";\nexport { ListKohostStaffCommand } from \"./listKohostStaff.js\";\nexport { SetUserSuperAdminCommand } from \"./setUserSuperAdmin.js\";\nexport { UpdateStaffUserCommand } from \"./updateStaffUser.js\";\nexport { DeleteStaffUserCommand } from \"./deleteStaffUser.js\";\nexport { DescribeStaffFunctionsCommand } from \"./describeStaffFunctions.js\";\nexport { ListFacilitiesStaffIdsCommand } from \"./listFacilitiesStaffIds.js\";\nexport { AddStaffFunctionMemberCommand } from \"./addStaffFunctionMember.js\";\nexport { RemoveStaffFunctionMemberCommand } from \"./removeStaffFunctionMember.js\";\nexport { SendAnnouncementCommand } from \"./sendAnnouncement.js\";\nexport { ListAnnouncementsCommand } from \"./listAnnouncements.js\";\nexport { DescribeAnnouncementCommand } from \"./describeAnnouncement.js\";\nexport { CreateAnnouncementPresetCommand } from \"./createAnnouncementPreset.js\";\nexport { UpdateAnnouncementPresetCommand } from \"./updateAnnouncementPreset.js\";\nexport { DeleteAnnouncementPresetCommand } from \"./deleteAnnouncementPreset.js\";\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../.generated/useCases/index.ts"],"sourcesContent":["/* This file is automatically generated. Do not modify it manually. */\n\nexport { CreatePwaHandoffTokenCommand } from \"./createPwaHandoffToken.js\";\nexport { LogoutUserCommand } from \"./logoutUser.js\";\nexport { DescribeMyAuthCommand } from \"./describeMyAuth.js\";\nexport { ValidateAuthCommand } from \"./validateAuth.js\";\nexport { SelectOrganizationCommand } from \"./selectOrganization.js\";\nexport { ListMyOrganizationsCommand } from \"./listMyOrganizations.js\";\nexport { DescribeSelfCommand } from \"./describeSelf.js\";\nexport { DescribeSelfAccessCommand } from \"./describeSelfAccess.js\";\nexport { DescribeUserCommand } from \"./describeUser.js\";\nexport { CreateUserCommand } from \"./createUser.js\";\nexport { ListUsersCommand } from \"./listUsers.js\";\nexport { UpdateSelfCommand } from \"./updateSelf.js\";\nexport { UpdateUserCommand } from \"./updateUser.js\";\nexport { DeleteUserCommand } from \"./deleteUser.js\";\nexport { CreateApiKeyCommand } from \"./createApiKey.js\";\nexport { GetApiKeyCommand } from \"./getApiKey.js\";\nexport { RotateApiKeyCommand } from \"./rotateApiKey.js\";\nexport { RevokeApiKeyCommand } from \"./revokeApiKey.js\";\nexport { SendVerificationCodeCommand } from \"./sendVerificationCode.js\";\nexport { CheckVerificationCodeCommand } from \"./checkVerificationCode.js\";\nexport { ListUserSpacesCommand } from \"./listUserSpaces.js\";\nexport { DescribeMyPasskeyRegistrationsCommand } from \"./describeMyPasskeyRegistrations.js\";\nexport { DeleteUserCredentialCommand } from \"./deleteUserCredential.js\";\nexport { CreatePolicyCommand } from \"./createPolicy.js\";\nexport { ListPoliciesCommand } from \"./listPolicies.js\";\nexport { UpdatePolicyCommand } from \"./updatePolicy.js\";\nexport { DeletePolicyCommand } from \"./deletePolicy.js\";\nexport { DescribePolicyCommand } from \"./describePolicy.js\";\nexport { ListSpacesCommand } from \"./listSpaces.js\";\nexport { UpdateSpaceCommand } from \"./updateSpace.js\";\nexport { CreateSpaceCommand } from \"./createSpace.js\";\nexport { DescribeSpaceCommand } from \"./describeSpace.js\";\nexport { DeleteSpaceCommand } from \"./deleteSpace.js\";\nexport { CreateDeviceCommand } from \"./createDevice.js\";\nexport { CreateDeviceCredentialCommand } from \"./createDeviceCredential.js\";\nexport { ListDevicesCommand } from \"./listDevices.js\";\nexport { ListDeviceCredentialsCommand } from \"./listDeviceCredentials.js\";\nexport { ListCameraStreamPreviewsCommand } from \"./listCameraStreamPreviews.js\";\nexport { DescribeDeviceCommand } from \"./describeDevice.js\";\nexport { UpdateDeviceCommand } from \"./updateDevice.js\";\nexport { UpdateDeviceCredentialCommand } from \"./updateDeviceCredential.js\";\nexport { SetDeviceCommand } from \"./setDevice.js\";\nexport { DeleteDeviceCommand } from \"./deleteDevice.js\";\nexport { DeleteDeviceCredentialCommand } from \"./deleteDeviceCredential.js\";\nexport { MoveDeviceCommand } from \"./moveDevice.js\";\nexport { ReplaceDeviceCommand } from \"./replaceDevice.js\";\nexport { DescribeDeviceConfigCommand } from \"./describeDeviceConfig.js\";\nexport { CreateCategoryCommand } from \"./createCategory.js\";\nexport { DeleteCategoryCommand } from \"./deleteCategory.js\";\nexport { DescribeCategoryCommand } from \"./describeCategory.js\";\nexport { ListCategoriesCommand } from \"./listCategories.js\";\nexport { UpdateCategoryCommand } from \"./updateCategory.js\";\nexport { CreateResourceCommand } from \"./createResource.js\";\nexport { DeleteResourceCommand } from \"./deleteResource.js\";\nexport { DescribeResourceCommand } from \"./describeResource.js\";\nexport { ListResourcesCommand } from \"./listResources.js\";\nexport { UpdateResourceCommand } from \"./updateResource.js\";\nexport { DescribeDepartmentCommand } from \"./describeDepartment.js\";\nexport { ListDepartmentsCommand } from \"./listDepartments.js\";\nexport { DeleteDepartmentCommand } from \"./deleteDepartment.js\";\nexport { CreateDepartmentCommand } from \"./createDepartment.js\";\nexport { UpdateDepartmentCommand } from \"./updateDepartment.js\";\nexport { DescribeTicketStatsCommand } from \"./describeTicketStats.js\";\nexport { DescribeTicketStatsSummaryCommand } from \"./describeTicketStatsSummary.js\";\nexport { DescribeTicketStatsTicketsCommand } from \"./describeTicketStatsTickets.js\";\nexport { DescribeTicketStatsHeatmapCommand } from \"./describeTicketStatsHeatmap.js\";\nexport { DescribeTicketStatsFiltersCommand } from \"./describeTicketStatsFilters.js\";\nexport { CreateTicketCommand } from \"./createTicket.js\";\nexport { CreateTicketMessageCommand } from \"./createTicketMessage.js\";\nexport { DeleteTicketCommand } from \"./deleteTicket.js\";\nexport { ListTicketLocationsCommand } from \"./listTicketLocations.js\";\nexport { DescribeTicketFiltersCommand } from \"./describeTicketFilters.js\";\nexport { DescribeTicketCommand } from \"./describeTicket.js\";\nexport { ListTicketsCommand } from \"./listTickets.js\";\nexport { UpdateMessageReadStatusCommand } from \"./updateMessageReadStatus.js\";\nexport { UpdateTicketCommand } from \"./updateTicket.js\";\nexport { LeaveTicketCommand } from \"./leaveTicket.js\";\nexport { CreateDiscoveredDeviceAssociationMapCommand } from \"./createDiscoveredDeviceAssociationMap.js\";\nexport { AutoAssociateDiscoveredDevicesCommand } from \"./autoAssociateDiscoveredDevices.js\";\nexport { CreateDiscoveredDeviceCommand } from \"./createDiscoveredDevice.js\";\nexport { ListDiscoveredDevicesCommand } from \"./listDiscoveredDevices.js\";\nexport { UpdateDiscoveredDeviceCommand } from \"./updateDiscoveredDevice.js\";\nexport { DeleteDiscoveredDeviceCommand } from \"./deleteDiscoveredDevice.js\";\nexport { DescribeDiscoveredDeviceCommand } from \"./describeDiscoveredDevice.js\";\nexport { UpsertDiscoveredDeviceCommand } from \"./upsertDiscoveredDevice.js\";\nexport { CreateDiscoveredDeviceAssociationCommand } from \"./createDiscoveredDeviceAssociation.js\";\nexport { ListIntegrationsCommand } from \"./listIntegrations.js\";\nexport { DescribeMyOrganizationCommand } from \"./describeMyOrganization.js\";\nexport { CreateOrganizationCommand } from \"./createOrganization.js\";\nexport { UpdateOrganizationCommand } from \"./updateOrganization.js\";\nexport { UpdateOrganizationFeaturesCommand } from \"./updateOrganizationFeatures.js\";\nexport { UpdateOrganizationBillingAddressCommand } from \"./updateOrganizationBillingAddress.js\";\nexport { UpdateOrganizationBillingContactsCommand } from \"./updateOrganizationBillingContacts.js\";\nexport { UpdateOrganizationTaxExemptCommand } from \"./updateOrganizationTaxExempt.js\";\nexport { DeleteOrganizationCommand } from \"./deleteOrganization.js\";\nexport { DescribeOrganizationCommand } from \"./describeOrganization.js\";\nexport { ListOrganizationsCommand } from \"./listOrganizations.js\";\nexport { DescribeConciergeStatsSummaryCommand } from \"./describeConciergeStatsSummary.js\";\nexport { DescribeConciergeStatsFiltersCommand } from \"./describeConciergeStatsFilters.js\";\nexport { DescribeConciergeStatsTicketsCommand } from \"./describeConciergeStatsTickets.js\";\nexport { DescribeConciergeStatsHeatmapCommand } from \"./describeConciergeStatsHeatmap.js\";\nexport { ListConciergeWorkspaceBillsCommand } from \"./listConciergeWorkspaceBills.js\";\nexport { ListConciergeWorkspaceTicketsCommand } from \"./listConciergeWorkspaceTickets.js\";\nexport { DescribeConciergeWorkspaceFiltersCommand } from \"./describeConciergeWorkspaceFilters.js\";\nexport { ListConciergeUninvoicedCostsCommand } from \"./listConciergeUninvoicedCosts.js\";\nexport { ListPropertiesCommand } from \"./listProperties.js\";\nexport { ListPropertyCredentialsCommand } from \"./listPropertyCredentials.js\";\nexport { ListMyPropertiesCommand } from \"./listMyProperties.js\";\nexport { CreatePropertyCommand } from \"./createProperty.js\";\nexport { DeletePropertyCommand } from \"./deleteProperty.js\";\nexport { UpdatePropertyCommand } from \"./updateProperty.js\";\nexport { DescribePropertyCommand } from \"./describeProperty.js\";\nexport { UpdatePropertyFeaturesCommand } from \"./updatePropertyFeatures.js\";\nexport { EmailUserAccountSetupCommand } from \"./emailUserAccountSetup.js\";\nexport { DeleteMediaFileCommand } from \"./deleteMediaFile.js\";\nexport { DescribeTimeSheetStatsCommand } from \"./describeTimeSheetStats.js\";\nexport { ListMyTimeSheetsCommand } from \"./listMyTimeSheets.js\";\nexport { DescribeTimeSheetCommand } from \"./describeTimeSheet.js\";\nexport { ListTimeSheetsCommand } from \"./listTimeSheets.js\";\nexport { CreateTimeSheetCommand } from \"./createTimeSheet.js\";\nexport { DeleteTimeSheetCommand } from \"./deleteTimeSheet.js\";\nexport { UpdateTimeSheetCommand } from \"./updateTimeSheet.js\";\nexport { CreateTimeSheetTimeEntryCommand } from \"./createTimeSheetTimeEntry.js\";\nexport { DeleteTimeSheetTimeEntryCommand } from \"./deleteTimeSheetTimeEntry.js\";\nexport { UpdateTimeSheetTimeEntryCommand } from \"./updateTimeSheetTimeEntry.js\";\nexport { StartSOSCommand } from \"./startSOS.js\";\nexport { StopSOSCommand } from \"./stopSOS.js\";\nexport { DescribeSOSCommand } from \"./describeSOS.js\";\nexport { ListSOSEventsCommand } from \"./listSOSEvents.js\";\nexport { DescribeSOSEventCommand } from \"./describeSOSEvent.js\";\nexport { SendSOSUpdateCommand } from \"./sendSOSUpdate.js\";\nexport { AddSOSEventNoteCommand } from \"./addSOSEventNote.js\";\nexport { PreviewSOSEventReportCommand } from \"./previewSOSEventReport.js\";\nexport { ExportSOSEventReportCommand } from \"./exportSOSEventReport.js\";\nexport { FetchEmergencyContactsCommand } from \"./fetchEmergencyContacts.js\";\nexport { FetchEmergencyContactPeopleCommand } from \"./fetchEmergencyContactPeople.js\";\nexport { DescribeIssueCommand } from \"./describeIssue.js\";\nexport { ListIssuesCommand } from \"./listIssues.js\";\nexport { DeleteIssueCommand } from \"./deleteIssue.js\";\nexport { CreateIssueCommand } from \"./createIssue.js\";\nexport { UpdateIssueCommand } from \"./updateIssue.js\";\nexport { MergeIssueCommand } from \"./mergeIssue.js\";\nexport { CopyIssueRoutingCommand } from \"./copyIssueRouting.js\";\nexport { BulkUpdateIssueCommand } from \"./bulkUpdateIssue.js\";\nexport { DescribeVendorCommand } from \"./describeVendor.js\";\nexport { ListVendorsCommand } from \"./listVendors.js\";\nexport { DeleteVendorCommand } from \"./deleteVendor.js\";\nexport { CreateVendorCommand } from \"./createVendor.js\";\nexport { UpdateVendorCommand } from \"./updateVendor.js\";\nexport { ListBillingCategoriesCommand } from \"./listBillingCategories.js\";\nexport { CreateBillingCategoryCommand } from \"./createBillingCategory.js\";\nexport { UpdateBillingCategoryCommand } from \"./updateBillingCategory.js\";\nexport { ListBillsCommand } from \"./listBills.js\";\nexport { DescribeBillCommand } from \"./describeBill.js\";\nexport { PreviewBillCommand } from \"./previewBill.js\";\nexport { ListOrganizationBillsCommand } from \"./listOrganizationBills.js\";\nexport { DescribeOrganizationBillCommand } from \"./describeOrganizationBill.js\";\nexport { CreateBillCommand } from \"./createBill.js\";\nexport { UpdateBillCommand } from \"./updateBill.js\";\nexport { DeleteBillCommand } from \"./deleteBill.js\";\nexport { AddBillLineCommand } from \"./addBillLine.js\";\nexport { AddBillLinesCommand } from \"./addBillLines.js\";\nexport { UpdateBillLineCommand } from \"./updateBillLine.js\";\nexport { RemoveBillLineCommand } from \"./removeBillLine.js\";\nexport { MarkBillSentCommand } from \"./markBillSent.js\";\nexport { MarkBillPaidCommand } from \"./markBillPaid.js\";\nexport { VoidBillCommand } from \"./voidBill.js\";\nexport { CreateAutomationCommand } from \"./createAutomation.js\";\nexport { ListAutomationsCommand } from \"./listAutomations.js\";\nexport { DescribeAutomationCommand } from \"./describeAutomation.js\";\nexport { UpdateAutomationCommand } from \"./updateAutomation.js\";\nexport { DeleteAutomationCommand } from \"./deleteAutomation.js\";\nexport { CreateDefaultAutomationsCommand } from \"./createDefaultAutomations.js\";\nexport { RunAutomationCommand } from \"./runAutomation.js\";\nexport { SendNotificationCommand } from \"./sendNotification.js\";\nexport { DescribeOrgNotificationDefaultsCommand } from \"./describeOrgNotificationDefaults.js\";\nexport { UpdateOrgNotificationDefaultsCommand } from \"./updateOrgNotificationDefaults.js\";\nexport { ListMyPushSubscriptionsCommand } from \"./listMyPushSubscriptions.js\";\nexport { DescribePushVapidPublicKeyCommand } from \"./describePushVapidPublicKey.js\";\nexport { SubscribePushDeviceCommand } from \"./subscribePushDevice.js\";\nexport { UnsubscribePushDeviceCommand } from \"./unsubscribePushDevice.js\";\nexport { ListSessionsCommand } from \"./listSessions.js\";\nexport { DescribeSessionCommand } from \"./describeSession.js\";\nexport { DeleteSessionCommand } from \"./deleteSession.js\";\nexport { SetDevicesCommand } from \"./setDevices.js\";\nexport { CreateSystemCommand } from \"./createSystem.js\";\nexport { DeleteSystemCommand } from \"./deleteSystem.js\";\nexport { DescribeSystemCommand } from \"./describeSystem.js\";\nexport { ListSystemsCommand } from \"./listSystems.js\";\nexport { UpdateSystemCommand } from \"./updateSystem.js\";\nexport { CreateServerCommand } from \"./createServer.js\";\nexport { DeleteServerCommand } from \"./deleteServer.js\";\nexport { DescribeServerCommand } from \"./describeServer.js\";\nexport { ListServersCommand } from \"./listServers.js\";\nexport { UpdateServerCommand } from \"./updateServer.js\";\nexport { ScheduleWorkItemCommand } from \"./scheduleWorkItem.js\";\nexport { RescheduleWorkItemCommand } from \"./rescheduleWorkItem.js\";\nexport { CancelWorkItemCommand } from \"./cancelWorkItem.js\";\nexport { SetWorkItemNoChargeCommand } from \"./setWorkItemNoCharge.js\";\nexport { ClearWorkItemNoChargeCommand } from \"./clearWorkItemNoCharge.js\";\nexport { RecordCostEntryCommand } from \"./recordCostEntry.js\";\nexport { EditCostEntryCommand } from \"./editCostEntry.js\";\nexport { RecordCostActualCommand } from \"./recordCostActual.js\";\nexport { SetCostVendorInvoiceCommand } from \"./setCostVendorInvoice.js\";\nexport { WriteOffCostEntryCommand } from \"./writeOffCostEntry.js\";\nexport { VoidCostEntryCommand } from \"./voidCostEntry.js\";\nexport { ReinstateCostEntryCommand } from \"./reinstateCostEntry.js\";\nexport { AcknowledgeCostDivergenceCommand } from \"./acknowledgeCostDivergence.js\";\nexport { RequestApprovalCommand } from \"./requestApproval.js\";\nexport { DecideApprovalCommand } from \"./decideApproval.js\";\nexport { ListEligibleApproversCommand } from \"./listEligibleApprovers.js\";\nexport { DescribeConciergeFacilitiesViewerCommand } from \"./describeConciergeFacilitiesViewer.js\";\nexport { ListKohostStaffCommand } from \"./listKohostStaff.js\";\nexport { SetUserSuperAdminCommand } from \"./setUserSuperAdmin.js\";\nexport { UpdateStaffUserCommand } from \"./updateStaffUser.js\";\nexport { DeleteStaffUserCommand } from \"./deleteStaffUser.js\";\nexport { DescribeStaffFunctionsCommand } from \"./describeStaffFunctions.js\";\nexport { ListFacilitiesStaffIdsCommand } from \"./listFacilitiesStaffIds.js\";\nexport { AddStaffFunctionMemberCommand } from \"./addStaffFunctionMember.js\";\nexport { RemoveStaffFunctionMemberCommand } from \"./removeStaffFunctionMember.js\";\nexport { SendAnnouncementCommand } from \"./sendAnnouncement.js\";\nexport { ListAnnouncementsCommand } from \"./listAnnouncements.js\";\nexport { DescribeAnnouncementCommand } from \"./describeAnnouncement.js\";\nexport { CreateAnnouncementPresetCommand } from \"./createAnnouncementPreset.js\";\nexport { UpdateAnnouncementPresetCommand } from \"./updateAnnouncementPreset.js\";\nexport { DeleteAnnouncementPresetCommand } from \"./deleteAnnouncementPreset.js\";\n"],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface VoidCostEntryCommandConfig {
|
|
2
|
+
data?: {
|
|
3
|
+
id: string;
|
|
4
|
+
costId: string;
|
|
5
|
+
[key: string]: unknown;
|
|
6
|
+
} | null;
|
|
7
|
+
headers?: Record<string, string> | null;
|
|
8
|
+
query?: Record<string, unknown> | null;
|
|
9
|
+
}
|
|
10
|
+
export interface VoidCostEntryCommandRequestConfig {
|
|
11
|
+
method: "post";
|
|
12
|
+
url: string;
|
|
13
|
+
data: {
|
|
14
|
+
id: string;
|
|
15
|
+
costId: string;
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
} | null;
|
|
18
|
+
params: Record<string, unknown> | null;
|
|
19
|
+
headers: Record<string, string> | null;
|
|
20
|
+
[key: string]: unknown;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
export declare class VoidCostEntryCommand {
|
|
26
|
+
url: string;
|
|
27
|
+
data: {
|
|
28
|
+
id: string;
|
|
29
|
+
costId: string;
|
|
30
|
+
[key: string]: unknown;
|
|
31
|
+
} | null;
|
|
32
|
+
query: Record<string, unknown> | null;
|
|
33
|
+
headers: Record<string, string> | null;
|
|
34
|
+
config: VoidCostEntryCommandRequestConfig;
|
|
35
|
+
static params: readonly ["id", "costId"];
|
|
36
|
+
static url: string;
|
|
37
|
+
static method: "post";
|
|
38
|
+
constructor(commandConfig: VoidCostEntryCommandConfig, options?: Record<string, unknown>);
|
|
39
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
//#region .generated/useCases/voidCostEntry.ts
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
*/
|
|
5
|
+
var VoidCostEntryCommand = class VoidCostEntryCommand {
|
|
6
|
+
url;
|
|
7
|
+
data;
|
|
8
|
+
query;
|
|
9
|
+
headers;
|
|
10
|
+
config;
|
|
11
|
+
static params = ["id", "costId"];
|
|
12
|
+
static url = "/tickets/:id/costs/:costId/void";
|
|
13
|
+
static method = "post";
|
|
14
|
+
constructor(commandConfig, options = {}) {
|
|
15
|
+
const pathParams = VoidCostEntryCommand.params;
|
|
16
|
+
let { data, query, headers } = commandConfig ?? {};
|
|
17
|
+
if (typeof data === "undefined") data = null;
|
|
18
|
+
if (typeof query === "undefined") query = null;
|
|
19
|
+
if (typeof headers === "undefined") headers = null;
|
|
20
|
+
let url = VoidCostEntryCommand.url;
|
|
21
|
+
if (pathParams && data) for (const param of pathParams) {
|
|
22
|
+
const urlParam = ":" + param;
|
|
23
|
+
url = url.replace(urlParam, data[param]);
|
|
24
|
+
}
|
|
25
|
+
const missingParams = url.match(/:[a-zA-Z0-9]+/g);
|
|
26
|
+
if (missingParams) {
|
|
27
|
+
const missing = missingParams.map((param) => param.replace(":", ""));
|
|
28
|
+
throw new Error("Missing parameters: " + missing.join(", "));
|
|
29
|
+
}
|
|
30
|
+
this.url = url;
|
|
31
|
+
this.data = data;
|
|
32
|
+
this.query = query;
|
|
33
|
+
this.headers = headers;
|
|
34
|
+
this.config = {
|
|
35
|
+
method: VoidCostEntryCommand.method,
|
|
36
|
+
url,
|
|
37
|
+
data,
|
|
38
|
+
params: query,
|
|
39
|
+
headers,
|
|
40
|
+
...options
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
//#endregion
|
|
45
|
+
export { VoidCostEntryCommand };
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=voidCostEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voidCostEntry.js","names":[],"sources":["../../.generated/useCases/voidCostEntry.ts"],"sourcesContent":["/* This file is automatically generated. Do not modify it manually. */\n\nexport interface VoidCostEntryCommandConfig {\n data?: { id: string; costId: string; [key: string]: unknown } | null;\n headers?: Record<string, string> | null;\n query?: Record<string, unknown> | null;\n}\n\nexport interface VoidCostEntryCommandRequestConfig {\n method: \"post\";\n url: string;\n data: { id: string; costId: string; [key: string]: unknown } | null;\n params: Record<string, unknown> | null;\n headers: Record<string, string> | null;\n [key: string]: unknown;\n}\n\n/**\n * \n */\nexport class VoidCostEntryCommand {\n url: string;\n data: { id: string; costId: string; [key: string]: unknown } | null;\n query: Record<string, unknown> | null;\n headers: Record<string, string> | null;\n config: VoidCostEntryCommandRequestConfig;\n\n static params = [\"id\",\"costId\"] as const;\n static url = \"/tickets/:id/costs/:costId/void\";\n static method = \"post\" as const;\n\n constructor(commandConfig: VoidCostEntryCommandConfig, options: Record<string, unknown> = {}) {\n const pathParams = VoidCostEntryCommand.params;\n\n let { data, query, headers } = commandConfig ?? {};\n\n if (typeof data === \"undefined\") data = null;\n if (typeof query === \"undefined\") query = null;\n if (typeof headers === \"undefined\") headers = null;\n\n // Replace path parameters with values from data\n let url: string = VoidCostEntryCommand.url;\n\n if (pathParams && data) {\n for (const param of pathParams) {\n const urlParam = \":\" + param;\n url = url.replace(urlParam, (data as Record<string, string>)[param]);\n }\n }\n\n // Make sure all parameters have been replaced\n const missingParams = url.match(/:[a-zA-Z0-9]+/g);\n if (missingParams) {\n const missing = missingParams.map((param) => param.replace(\":\", \"\"));\n throw new Error(\"Missing parameters: \" + missing.join(\", \"));\n }\n\n this.url = url;\n this.data = data;\n this.query = query;\n this.headers = headers;\n\n this.config = {\n method: VoidCostEntryCommand.method,\n url: url,\n data: data,\n params: query,\n headers: headers,\n ...options,\n };\n }\n}\n"],"mappings":";;;;AAoBA,IAAa,uBAAb,MAAa,qBAAqB;CAChC;CACA;CACA;CACA;CACA;CAEA,OAAO,SAAS,CAAC,MAAK,QAAQ;CAC9B,OAAO,MAAM;CACb,OAAO,SAAS;CAEhB,YAAY,eAA2C,UAAmC,CAAC,GAAG;EAC5F,MAAM,aAAa,qBAAqB;EAExC,IAAI,EAAE,MAAM,OAAO,YAAY,iBAAiB,CAAC;EAEjD,IAAI,OAAO,SAAS,aAAa,OAAO;EACxC,IAAI,OAAO,UAAU,aAAa,QAAQ;EAC1C,IAAI,OAAO,YAAY,aAAa,UAAU;EAG9C,IAAI,MAAc,qBAAqB;EAEvC,IAAI,cAAc,MAChB,KAAK,MAAM,SAAS,YAAY;GAC9B,MAAM,WAAW,MAAM;GACvB,MAAM,IAAI,QAAQ,UAAW,KAAgC,MAAM;EACrE;EAIF,MAAM,gBAAgB,IAAI,MAAM,gBAAgB;EAChD,IAAI,eAAe;GACjB,MAAM,UAAU,cAAc,KAAK,UAAU,MAAM,QAAQ,KAAK,EAAE,CAAC;GACnE,MAAM,IAAI,MAAM,yBAAyB,QAAQ,KAAK,IAAI,CAAC;EAC7D;EAEA,KAAK,MAAM;EACX,KAAK,OAAO;EACZ,KAAK,QAAQ;EACb,KAAK,UAAU;EAEf,KAAK,SAAS;GACZ,QAAQ,qBAAqB;GACxB;GACC;GACN,QAAQ;GACC;GACT,GAAG;EACL;CACF;AACF"}
|
package/dist/validate.d.ts
CHANGED
|
@@ -244,16 +244,13 @@ export declare const validateGateway: import("ajv").ValidateFunction<{
|
|
|
244
244
|
type: any;
|
|
245
245
|
}>;
|
|
246
246
|
export declare const validateGroup: import("ajv").ValidateFunction<{
|
|
247
|
+
discriminator: any;
|
|
247
248
|
id: any;
|
|
248
|
-
kind: any;
|
|
249
|
-
name: any;
|
|
250
249
|
type: any;
|
|
251
250
|
} & {
|
|
252
|
-
|
|
253
|
-
} & {
|
|
254
|
-
kind: any;
|
|
251
|
+
discriminator: any;
|
|
255
252
|
} & {
|
|
256
|
-
|
|
253
|
+
id: any;
|
|
257
254
|
} & {
|
|
258
255
|
type: any;
|
|
259
256
|
}>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kohost/api-client",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.12.0",
|
|
4
4
|
"description": "API client, models, schemas, commands, and events for Kohost applications",
|
|
5
5
|
"author": "Ian Rogers",
|
|
6
6
|
"readme": "README.md",
|
|
@@ -111,17 +111,17 @@
|
|
|
111
111
|
"@eslint/js": "^10.0.1",
|
|
112
112
|
"@types/debug": "^4.1.13",
|
|
113
113
|
"@types/events": "^3.0.3",
|
|
114
|
-
"@types/node": "^
|
|
115
|
-
"eslint": "^10.
|
|
114
|
+
"@types/node": "^24.13.3",
|
|
115
|
+
"eslint": "^10.9.1",
|
|
116
116
|
"eslint-config-prettier": "^10.1.8",
|
|
117
|
-
"globals": "^17.
|
|
117
|
+
"globals": "^17.11.0",
|
|
118
118
|
"husky": "^9.1.7",
|
|
119
119
|
"lint-staged": "^17.3.0",
|
|
120
120
|
"prettier": "^3.9.6",
|
|
121
121
|
"tsdown": "^0.22.14",
|
|
122
|
-
"tsx": "^4.23.
|
|
122
|
+
"tsx": "^4.23.12",
|
|
123
123
|
"typescript": "^7.0.2",
|
|
124
|
-
"vitest": "^4.1.
|
|
124
|
+
"vitest": "^4.1.11"
|
|
125
125
|
},
|
|
126
126
|
"dependencies": {
|
|
127
127
|
"ajv": "^8.20.0",
|