@kohost/api-client 7.16.0 → 7.18.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.
Files changed (59) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/commands/getGroups.d.ts +8 -0
  3. package/dist/commands/getGroups.js +17 -0
  4. package/dist/commands/getGroups.js.map +1 -0
  5. package/dist/commands/index.d.ts +1 -0
  6. package/dist/commands/index.js +3 -1
  7. package/dist/commands/index.js.map +1 -1
  8. package/dist/httpClient.js.map +1 -1
  9. package/dist/lib/emergencyContacts.d.ts +10 -0
  10. package/dist/lib/index.d.ts +1 -0
  11. package/dist/lib/index.js +3 -1
  12. package/dist/lib/index.js.map +1 -1
  13. package/dist/lib/sis.d.ts +108 -0
  14. package/dist/lib/sis.js +11 -0
  15. package/dist/lib/sis.js.map +1 -0
  16. package/dist/models/entity.js.map +1 -1
  17. package/dist/models/group.js +1 -0
  18. package/dist/models/group.js.map +1 -1
  19. package/dist/models/system.js +3 -0
  20. package/dist/models/system.js.map +1 -1
  21. package/dist/models/systemUser.js +1 -1
  22. package/dist/models/systemUser.js.map +1 -1
  23. package/dist/schemas/announcement.d.ts +16 -1
  24. package/dist/schemas/announcement.js +16 -1
  25. package/dist/schemas/announcement.js.map +1 -1
  26. package/dist/schemas/definitions.d.ts +96 -3
  27. package/dist/schemas/definitions.js +58 -3
  28. package/dist/schemas/definitions.js.map +1 -1
  29. package/dist/schemas/group.d.ts +4 -0
  30. package/dist/schemas/group.js +4 -0
  31. package/dist/schemas/group.js.map +1 -1
  32. package/dist/schemas/system.d.ts +27 -0
  33. package/dist/schemas/system.js +33 -1
  34. package/dist/schemas/system.js.map +1 -1
  35. package/dist/schemas/systemUser.d.ts +2 -3
  36. package/dist/schemas/systemUser.js +1 -4
  37. package/dist/schemas/systemUser.js.map +1 -1
  38. package/dist/schemas/ticket.d.ts +33 -5
  39. package/dist/schemas/ticket.js +35 -10
  40. package/dist/schemas/ticket.js.map +1 -1
  41. package/dist/useCases/describeSISSync.d.ts +27 -0
  42. package/dist/useCases/describeSISSync.js +47 -0
  43. package/dist/useCases/describeSISSync.js.map +1 -0
  44. package/dist/useCases/index.d.ts +5 -0
  45. package/dist/useCases/index.js +11 -1
  46. package/dist/useCases/index.js.map +1 -1
  47. package/dist/useCases/listSISHouseholds.d.ts +27 -0
  48. package/dist/useCases/listSISHouseholds.js +47 -0
  49. package/dist/useCases/listSISHouseholds.js.map +1 -0
  50. package/dist/useCases/listSISPeople.d.ts +27 -0
  51. package/dist/useCases/listSISPeople.js +47 -0
  52. package/dist/useCases/listSISPeople.js.map +1 -0
  53. package/dist/useCases/previewAnnouncement.d.ts +27 -0
  54. package/dist/useCases/previewAnnouncement.js +47 -0
  55. package/dist/useCases/previewAnnouncement.js.map +1 -0
  56. package/dist/useCases/syncSISRoster.d.ts +27 -0
  57. package/dist/useCases/syncSISRoster.js +47 -0
  58. package/dist/useCases/syncSISRoster.js.map +1 -0
  59. package/package.json +5 -5
@@ -630,7 +630,7 @@ export declare const ticketSchema: {
630
630
  readonly items: {
631
631
  readonly type: "object";
632
632
  readonly additionalProperties: false;
633
- readonly required: readonly ["id", "performer", "date"];
633
+ readonly required: readonly ["id", "performer"];
634
634
  readonly properties: {
635
635
  readonly id: {
636
636
  readonly type: "string";
@@ -658,9 +658,16 @@ export declare const ticketSchema: {
658
658
  };
659
659
  };
660
660
  readonly date: {
661
- readonly type: "string";
661
+ readonly type: readonly ["string", "null"];
662
662
  readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
663
- readonly description: "The calendar date of the visit as YYYY-MM-DD, read in the property's timezone.";
663
+ readonly default: null;
664
+ readonly description: string;
665
+ };
666
+ readonly blockedUntil: {
667
+ readonly type: readonly ["string", "null"];
668
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
669
+ readonly default: null;
670
+ readonly description: string;
664
671
  };
665
672
  readonly time: {
666
673
  readonly type: readonly ["string", "null"];
@@ -888,6 +895,12 @@ export declare const ticketSchema: {
888
895
  readonly default: null;
889
896
  readonly description: string;
890
897
  };
898
+ readonly expectedOn: {
899
+ readonly type: readonly ["string", "null"];
900
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
901
+ readonly default: null;
902
+ readonly description: string;
903
+ };
891
904
  readonly billingReview: {
892
905
  readonly type: "array";
893
906
  readonly default: readonly [];
@@ -962,10 +975,25 @@ export declare const ticketSchema: {
962
975
  readonly description: "ISO 4217 currency code of the entry's amounts.";
963
976
  };
964
977
  readonly price: {
965
- readonly type: "integer";
978
+ readonly type: readonly ["integer", "null"];
966
979
  readonly minimum: 0;
967
980
  readonly description: string;
968
981
  };
982
+ readonly createdAt: {
983
+ readonly $ref: "definitions.json#/definitions/date";
984
+ readonly description: string;
985
+ };
986
+ readonly createdBy: {
987
+ readonly type: readonly ["string", "null"];
988
+ readonly default: null;
989
+ readonly description: string;
990
+ };
991
+ readonly expectedOn: {
992
+ readonly type: readonly ["string", "null"];
993
+ readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
994
+ readonly default: null;
995
+ readonly description: string;
996
+ };
969
997
  readonly voided: {
970
998
  readonly type: "boolean";
971
999
  readonly default: false;
@@ -1052,7 +1080,7 @@ export declare const ticketSchema: {
1052
1080
  readonly description: "The Stages the ticket carries, in the fixed chip order. Derived at read time from the ticket's own facts, never stored and never set by clients, and absent for every viewer outside Kohost's facilities staff. A ticket may carry several at once; `closed` and `pending` tickets carry none.";
1053
1081
  readonly items: {
1054
1082
  readonly type: "string";
1055
- readonly enum: readonly ["awaitingClientApproval", "awaitingClientResponse", "awaitingVendorQuote", "vendorScheduled", "confirmCosts", "resolveReady"];
1083
+ readonly enum: readonly ["awaitingClientApproval", "awaitingClientResponse", "awaitingVendorQuote", "awaitingScheduling", "vendorScheduled", "confirmCosts", "resolveReady"];
1056
1084
  };
1057
1085
  };
1058
1086
  readonly approvalState: {
@@ -130,7 +130,7 @@ const fullCostEntrySchema = {
130
130
  required: costEntryRequired,
131
131
  properties: {
132
132
  ...costEntryProperties,
133
- price: nullableMoney("The authoritative customer price, what the org is charged, what the approval gate totals, and what a bill line bills. Seeded at pricing from the estimate and the markup, and from then on independent of all three: editing `estimate`, `actual`, or `markup` never moves it. Only an explicit price write does. Null while the entry is a Pending cost, which prices nothing and never reaches an org-side viewer."),
133
+ price: nullableMoney("The authoritative customer price, what the org is charged, what the approval gate totals, and what a bill line bills. Seeded at pricing from the estimate and the markup, and from then on independent of all three: editing `estimate`, `actual`, or `markup` never moves it. Only an explicit price write does. Null while the entry is a Pending cost, which prices nothing."),
134
134
  estimate: nullableMoney("The vendor cost estimate phase of the entry. Null while the entry is a Pending cost: this field is what says an amount is known, so a null here is the whole definition of pending. Clearing a recorded amount back to null is refused; void the entry and record it again."),
135
135
  createdAt: {
136
136
  $ref: "definitions.json#/definitions/date",
@@ -141,6 +141,12 @@ const fullCostEntrySchema = {
141
141
  default: null,
142
142
  description: "The ID of the user who recorded the entry. Null when the write was not user-attributable. Stands in for `price.recordedBy` as the entry's author while it is a Pending cost."
143
143
  },
144
+ expectedOn: {
145
+ type: ["string", "null"],
146
+ pattern: "^\\d{4}-\\d{2}-\\d{2}$",
147
+ default: null,
148
+ description: "The Quote-expected date: the calendar day the vendor promised the quote, as YYYY-MM-DD read in the property's timezone. Required while the entry is a Pending cost and cleared once it is priced; null on entries recorded before the date existed. Overwritten in place when the vendor slips. Survives redaction."
149
+ },
144
150
  billingReview: costBillingReview([
145
151
  "writtenOff",
146
152
  "voided",
@@ -633,11 +639,7 @@ const ticketSchema = {
633
639
  items: {
634
640
  type: "object",
635
641
  additionalProperties: false,
636
- required: [
637
- "id",
638
- "performer",
639
- "date"
640
- ],
642
+ required: ["id", "performer"],
641
643
  properties: {
642
644
  id: {
643
645
  type: "string",
@@ -669,9 +671,16 @@ const ticketSchema = {
669
671
  }
670
672
  },
671
673
  date: {
672
- type: "string",
674
+ type: ["string", "null"],
673
675
  pattern: "^\\d{4}-\\d{2}-\\d{2}$",
674
- description: "The calendar date of the visit as YYYY-MM-DD, read in the property's timezone."
676
+ default: null,
677
+ description: "The calendar date of the visit as YYYY-MM-DD, read in the property's timezone. Null while the item is Pending work, which carries `blockedUntil` instead; exactly one of the two is set."
678
+ },
679
+ blockedUntil: {
680
+ type: ["string", "null"],
681
+ pattern: "^\\d{4}-\\d{2}-\\d{2}$",
682
+ default: null,
683
+ description: "The Blocked-until date of Pending work: the day the roster expects the blocker to clear and scheduling to become possible, as YYYY-MM-DD in the property's timezone. Not a promise the work happens that day. Set only while `date` is null; cleared the moment the item is scheduled. Overwritten in place when it slips."
675
684
  },
676
685
  time: {
677
686
  type: ["string", "null"],
@@ -785,9 +794,24 @@ const ticketSchema = {
785
794
  description: "ISO 4217 currency code of the entry's amounts."
786
795
  },
787
796
  price: {
788
- type: "integer",
797
+ type: ["integer", "null"],
789
798
  minimum: 0,
790
- 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."
799
+ 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. Null while the entry is a Pending cost: the org sees a quote is owed, and nothing else until it lands."
800
+ },
801
+ createdAt: {
802
+ $ref: "definitions.json#/definitions/date",
803
+ description: "When the entry was recorded. Carried through redaction so a Pending cost, which has no priced phase to be dated by, still has a time."
804
+ },
805
+ createdBy: {
806
+ type: ["string", "null"],
807
+ default: null,
808
+ description: "The ID of the user who recorded the entry, carried through redaction so the org side's cost controls know a Pending cost is the roster's, not theirs."
809
+ },
810
+ expectedOn: {
811
+ type: ["string", "null"],
812
+ pattern: "^\\d{4}-\\d{2}-\\d{2}$",
813
+ default: null,
814
+ description: "The Quote-expected date on a Pending cost, YYYY-MM-DD at the property. Carried through redaction: the day is the one fact an org-side viewer gets about a quote that is owed."
791
815
  },
792
816
  voided: {
793
817
  type: "boolean",
@@ -882,6 +906,7 @@ const ticketSchema = {
882
906
  "awaitingClientApproval",
883
907
  "awaitingClientResponse",
884
908
  "awaitingVendorQuote",
909
+ "awaitingScheduling",
885
910
  "vendorScheduled",
886
911
  "confirmCosts",
887
912
  "resolveReady"
@@ -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 {\n costBillingReview,\n costEntryProperties,\n costEntryRequired,\n nullableMoney,\n} from \"./costEntry\";\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: costEntryRequired,\n properties: {\n ...costEntryProperties,\n // Both amounts are null together on a Pending cost: an entry the roster\n // recorded before the vendor quoted it. Nothing prices until the first\n // amount lands, which seeds the estimate and derives the price from it.\n price: nullableMoney(\n \"The authoritative customer price, what the org is charged, what the \" +\n \"approval gate totals, and what a bill line bills. Seeded at pricing \" +\n \"from the estimate and the markup, and from then on independent of \" +\n \"all three: editing `estimate`, `actual`, or `markup` never moves it. \" +\n \"Only an explicit price write does. Null while the entry is a Pending \" +\n \"cost, which prices nothing and never reaches an org-side viewer.\",\n ),\n estimate: nullableMoney(\n \"The vendor cost estimate phase of the entry. Null while the entry is \" +\n \"a Pending cost: this field is what says an amount is known, so a \" +\n \"null here is the whole definition of pending. Clearing a recorded \" +\n \"amount back to null is refused; void the entry and record it again.\",\n ),\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n description:\n \"When the entry was recorded, whether or not it carried an amount. \" +\n \"A Pending cost has no estimate to be dated by, so this is how long \" +\n \"the roster has been waiting on the quote.\",\n },\n createdBy: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The ID of the user who recorded the entry. Null when the write was \" +\n \"not user-attributable. Stands in for `price.recordedBy` as the \" +\n \"entry's author while it is a Pending cost.\",\n },\n // A ticket cost can also be voided, which the standalone kind has no\n // ticket to be withdrawn from.\n billingReview: costBillingReview([\n \"writtenOff\",\n \"voided\",\n \"reinstated\",\n \"divergenceAcknowledged\",\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 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 },\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 verification: {\n type: [\"object\", \"null\"],\n additionalProperties: false,\n required: [\"outcome\", \"verifiedBy\", \"verifiedAt\"],\n default: null,\n description:\n \"What a facilities roster member saw at this visit, or null while \" +\n \"nobody has recorded it. The date passing is not an outcome: an \" +\n \"unverified past-dated visit is unverified, and this slot is the \" +\n \"only thing that says whether the visit happened. Reversible by the \" +\n \"roster while the ticket is active; frozen once it closes.\",\n properties: {\n outcome: {\n type: \"string\",\n enum: [\"completed\", \"notCompleted\"],\n description:\n \"Whether the work the visit was booked for got done. A \" +\n \"not-completed visit is frozen: the return trip is a new work \" +\n \"item, not a re-dated one.\",\n },\n comment: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"What the verifier wants on the record, required when the visit \" +\n \"was not completed and optional when it was.\",\n },\n verifiedBy: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"name\"],\n description:\n \"The roster member who recorded the outcome, named here so a \" +\n \"later rename cannot rewrite what the thread already said.\",\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the verifying user.\",\n },\n name: {\n type: \"string\",\n description:\n \"The verifying user's name at the time of the write.\",\n },\n },\n },\n verifiedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the outcome was recorded.\",\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 \"workCompleted\",\n \"workNotCompleted\",\n \"workVerificationCleared\",\n \"costRecorded\",\n \"costPriceChanged\",\n \"costVoided\",\n \"awaitingResponse\",\n \"awaitingResponseCleared\",\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 awaitingResponse: {\n type: \"object\",\n additionalProperties: false,\n required: [\"awaiting\"],\n description:\n \"Legacy. Earlier releases announced the Awaiting response marker in the conversation; the marker now lives only in the ticket's `awaitingResponse` slot and no new entries of this kind are written.\",\n properties: {\n awaiting: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n properties: {\n id: { type: \"string\" },\n discriminator: { type: \"string\", enum: [\"user\"] },\n name: { type: \"string\" },\n },\n },\n messageId: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The conversation message this marker was sent with, when the composer set both in one write.\",\n },\n },\n },\n awaitingResponseCleared: {\n type: \"object\",\n additionalProperties: false,\n required: [\"reason\"],\n description:\n \"Legacy. Earlier releases announced the end of a wait in the conversation; no new entries of this kind are written.\",\n properties: {\n reason: {\n type: \"string\",\n enum: [\"explicit\", \"left\"],\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 only a roster verification says whether a past-dated visit happened. 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 stages: {\n type: \"array\",\n description:\n \"The Stages the ticket carries, in the fixed chip order. Derived at read time from the ticket's own facts, never stored and never set by clients, and absent for every viewer outside Kohost's facilities staff. A ticket may carry several at once; `closed` and `pending` tickets carry none.\",\n items: {\n type: \"string\",\n enum: [\n \"awaitingClientApproval\",\n \"awaitingClientResponse\",\n \"awaitingVendorQuote\",\n \"vendorScheduled\",\n \"confirmCosts\",\n \"resolveReady\",\n ],\n },\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 awaitingResponse: {\n type: [\"object\", \"null\"],\n default: null,\n additionalProperties: false,\n required: [\"author\", \"awaiting\", \"since\"],\n description:\n \"A Kohost Facilities agent's private note that they are waiting on a reply, from one named participant outside Kohost's side or from anyone outside it. Served only to the Facilities roster; every other viewer receives null. A named wait ends when anyone other than its author posts a public message or when the awaited person leaves the ticket; an anyone wait ends when someone outside Kohost's side posts a public message. Either ends when the roster clears it. Written only through SetAwaitingResponse and ClearAwaitingResponse.\",\n properties: {\n author: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n description: \"Who set the marker.\",\n properties: {\n id: { type: \"string\" },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\", \"system\"],\n },\n name: { type: \"string\" },\n },\n },\n awaiting: {\n type: [\"object\", \"null\"],\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n description:\n \"The person the ticket is waiting on. Null when the wait is on anyone outside Kohost's side rather than one named person.\",\n properties: {\n id: { type: \"string\" },\n discriminator: { type: \"string\", enum: [\"user\"] },\n name: { type: \"string\" },\n },\n },\n since: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the marker was set.\",\n },\n messageId: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"Legacy. Earlier releases linked the marker to the message it was sent with; no longer written.\",\n },\n },\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 derived Stage a ticket may carry. The API's `resolveStages` owns the rules. */\nexport type TicketStage = NonNullable<TicketSchemaBase[\"stages\"]>[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":";;AAuDA,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;AAEA,MAAM,yBAAyB;CAC7B,MAAM;CACN,sBAAsB;CACtB,UAAU,CAAC,QAAQ,SAAS;CAC5B,YAAY;EACV,MAAM;GAAE,MAAM;GAAU,MAAM,CAAC,YAAY;EAAE;EAC7C,SAAS;GAAE,MAAM;GAAS,UAAU;GAAG,OAAO;EAAqB;CACrE;AACF;AAEA,MAAM,0BAA0B;CAC9B,MAAM;CACN,sBAAsB;CACtB,UAAU,CAAC,QAAQ,SAAS;CAC5B,YAAY;EACV,MAAM;GAAE,MAAM;GAAU,MAAM,CAAC,aAAa;EAAE;EAC9C,SAAS;GAAE,MAAM;GAAS,UAAU;GAAG,OAAO;EAAqB;CACrE;AACF;AAYA,MAAM,sBAAsB;CAC1B,MAAM;CACN,sBAAsB;CACtB,UAAU;CACV,YAAY;EACV,GAAG;EAIH,OAAO,cACL,sZAMF;EACA,UAAU,cACR,6QAIF;EACA,WAAW;GACT,MAAM;GACN,aACE;EAGJ;EACA,WAAW;GACT,MAAM,CAAC,UAAU,MAAM;GACvB,SAAS;GACT,aACE;EAGJ;EAGA,eAAe,kBAAkB;GAC/B;GACA;GACA;GACA;EACF,CAAC;EACD,YAAY;GACV,MAAM,CAAC,UAAU,MAAM;GACvB,SAAS;GACT,aACE;EAIJ;EACA,QAAQ;GACN,MAAM;GACN,SAAS;GACT,aACE;EAMJ;CACF;AACF;AAyMA,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;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;SACA;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,kBAAkB;MAChB,MAAM;MACN,sBAAsB;MACtB,UAAU,CAAC,UAAU;MACrB,aACE;MACF,YAAY;OACV,UAAU;QACR,MAAM;QACN,sBAAsB;QACtB,UAAU;SAAC;SAAM;SAAiB;QAAM;QACxC,YAAY;SACV,IAAI,EAAE,MAAM,SAAS;SACrB,eAAe;UAAE,MAAM;UAAU,MAAM,CAAC,MAAM;SAAE;SAChD,MAAM,EAAE,MAAM,SAAS;QACzB;OACF;OACA,WAAW;QACT,MAAM,CAAC,UAAU,MAAM;QACvB,SAAS;QACT,aACE;OACJ;MACF;KACF;KACA,yBAAyB;MACvB,MAAM;MACN,sBAAsB;MACtB,UAAU,CAAC,QAAQ;MACnB,aACE;MACF,YAAY,EACV,QAAQ;OACN,MAAM;OACN,MAAM,CAAC,YAAY,MAAM;MAC3B,EACF;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;IAtkBX,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;KACA,cAAc;MACZ,MAAM,CAAC,UAAU,MAAM;MACvB,sBAAsB;MACtB,UAAU;OAAC;OAAW;OAAc;MAAY;MAChD,SAAS;MACT,aACE;MAKF,YAAY;OACV,SAAS;QACP,MAAM;QACN,MAAM,CAAC,aAAa,cAAc;QAClC,aACE;OAGJ;OACA,SAAS;QACP,MAAM,CAAC,UAAU,MAAM;QACvB,SAAS;QACT,aACE;OAEJ;OACA,YAAY;QACV,MAAM;QACN,sBAAsB;QACtB,UAAU,CAAC,MAAM,MAAM;QACvB,aACE;QAEF,YAAY;SACV,IAAI;UACF,MAAM;UACN,aAAa;SACf;SACA,MAAM;UACJ,MAAM;UACN,aACE;SACJ;QACF;OACF;OACA,YAAY;QACV,MAAM;QACN,aAAa;OACf;MACF;KACF;IACF;GAsbW;EACT;EACA,OAAO;GACL,MAAM;GACN,SAAS,CAAC;GACV,aACE;GACF,OAAO,EACL,OAAO,CAAC,qBAAqB;IAjoBnC,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;KACA,QAAQ;MACN,MAAM;MACN,SAAS;MACT,aACE;KAEJ;KACA,SAAS;MACP,MAAM;MACN,SAAS;MACT,aACE;KAGJ;IACF;GAylBmC,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,QAAQ;GACN,MAAM;GACN,aACE;GACF,OAAO;IACL,MAAM;IACN,MAAM;KACJ;KACA;KACA;KACA;KACA;KACA;IACF;GACF;EACF;EACA,eAAe;GACb,MAAM;GACN,MAAM;IAAC;IAAS;IAAoB;GAAQ;GAC5C,SAAS;GACT,aACE;EACJ;EACA,kBAAkB;GAChB,MAAM,CAAC,UAAU,MAAM;GACvB,SAAS;GACT,sBAAsB;GACtB,UAAU;IAAC;IAAU;IAAY;GAAO;GACxC,aACE;GACF,YAAY;IACV,QAAQ;KACN,MAAM;KACN,sBAAsB;KACtB,UAAU;MAAC;MAAM;MAAiB;KAAM;KACxC,aAAa;KACb,YAAY;MACV,IAAI,EAAE,MAAM,SAAS;MACrB,eAAe;OACb,MAAM;OACN,MAAM;QAAC;QAAQ;QAAU;OAAQ;MACnC;MACA,MAAM,EAAE,MAAM,SAAS;KACzB;IACF;IACA,UAAU;KACR,MAAM,CAAC,UAAU,MAAM;KACvB,sBAAsB;KACtB,UAAU;MAAC;MAAM;MAAiB;KAAM;KACxC,aACE;KACF,YAAY;MACV,IAAI,EAAE,MAAM,SAAS;MACrB,eAAe;OAAE,MAAM;OAAU,MAAM,CAAC,MAAM;MAAE;MAChD,MAAM,EAAE,MAAM,SAAS;KACzB;IACF;IACA,OAAO;KACL,MAAM;KACN,aAAa;IACf;IACA,WAAW;KACT,MAAM,CAAC,UAAU,MAAM;KACvB,SAAS;KACT,aACE;IACJ;GACF;EACF;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 {\n costBillingReview,\n costEntryProperties,\n costEntryRequired,\n nullableMoney,\n} from \"./costEntry\";\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: costEntryRequired,\n properties: {\n ...costEntryProperties,\n // Both amounts are null together on a Pending cost: an entry the roster\n // recorded before the vendor quoted it. Nothing prices until the first\n // amount lands, which seeds the estimate and derives the price from it.\n price: nullableMoney(\n \"The authoritative customer price, what the org is charged, what the \" +\n \"approval gate totals, and what a bill line bills. Seeded at pricing \" +\n \"from the estimate and the markup, and from then on independent of \" +\n \"all three: editing `estimate`, `actual`, or `markup` never moves it. \" +\n \"Only an explicit price write does. Null while the entry is a Pending \" +\n \"cost, which prices nothing.\",\n ),\n estimate: nullableMoney(\n \"The vendor cost estimate phase of the entry. Null while the entry is \" +\n \"a Pending cost: this field is what says an amount is known, so a \" +\n \"null here is the whole definition of pending. Clearing a recorded \" +\n \"amount back to null is refused; void the entry and record it again.\",\n ),\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n description:\n \"When the entry was recorded, whether or not it carried an amount. \" +\n \"A Pending cost has no estimate to be dated by, so this is how long \" +\n \"the roster has been waiting on the quote.\",\n },\n createdBy: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The ID of the user who recorded the entry. Null when the write was \" +\n \"not user-attributable. Stands in for `price.recordedBy` as the \" +\n \"entry's author while it is a Pending cost.\",\n },\n expectedOn: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\n default: null,\n description:\n \"The Quote-expected date: the calendar day the vendor promised the \" +\n \"quote, as YYYY-MM-DD read in the property's timezone. Required \" +\n \"while the entry is a Pending cost and cleared once it is priced; \" +\n \"null on entries recorded before the date existed. Overwritten in \" +\n \"place when the vendor slips. Survives redaction.\",\n },\n // A ticket cost can also be voided, which the standalone kind has no\n // ticket to be withdrawn from.\n billingReview: costBillingReview([\n \"writtenOff\",\n \"voided\",\n \"reinstated\",\n \"divergenceAcknowledged\",\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 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 },\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\", \"null\"],\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. Null \" +\n \"while the entry is a Pending cost: the org sees a quote is owed, \" +\n \"and nothing else until it lands.\",\n },\n createdAt: {\n $ref: \"definitions.json#/definitions/date\",\n description:\n \"When the entry was recorded. Carried through redaction so a Pending \" +\n \"cost, which has no priced phase to be dated by, still has a time.\",\n },\n createdBy: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The ID of the user who recorded the entry, carried through \" +\n \"redaction so the org side's cost controls know a Pending cost is \" +\n \"the roster's, not theirs.\",\n },\n expectedOn: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\n default: null,\n description:\n \"The Quote-expected date on a Pending cost, YYYY-MM-DD at the \" +\n \"property. Carried through redaction: the day is the one fact an \" +\n \"org-side viewer gets about a quote that is owed.\",\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\"],\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\", \"null\"],\n pattern: \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\n default: null,\n description:\n \"The calendar date of the visit as YYYY-MM-DD, read in the property's \" +\n \"timezone. Null while the item is Pending work, which carries \" +\n \"`blockedUntil` instead; exactly one of the two is set.\",\n },\n blockedUntil: {\n type: [\"string\", \"null\"],\n pattern: \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\",\n default: null,\n description:\n \"The Blocked-until date of Pending work: the day the roster expects \" +\n \"the blocker to clear and scheduling to become possible, as \" +\n \"YYYY-MM-DD in the property's timezone. Not a promise the work \" +\n \"happens that day. Set only while `date` is null; cleared the moment \" +\n \"the item is scheduled. Overwritten in place when it slips.\",\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 verification: {\n type: [\"object\", \"null\"],\n additionalProperties: false,\n required: [\"outcome\", \"verifiedBy\", \"verifiedAt\"],\n default: null,\n description:\n \"What a facilities roster member saw at this visit, or null while \" +\n \"nobody has recorded it. The date passing is not an outcome: an \" +\n \"unverified past-dated visit is unverified, and this slot is the \" +\n \"only thing that says whether the visit happened. Reversible by the \" +\n \"roster while the ticket is active; frozen once it closes.\",\n properties: {\n outcome: {\n type: \"string\",\n enum: [\"completed\", \"notCompleted\"],\n description:\n \"Whether the work the visit was booked for got done. A \" +\n \"not-completed visit is frozen: the return trip is a new work \" +\n \"item, not a re-dated one.\",\n },\n comment: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"What the verifier wants on the record, required when the visit \" +\n \"was not completed and optional when it was.\",\n },\n verifiedBy: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"name\"],\n description:\n \"The roster member who recorded the outcome, named here so a \" +\n \"later rename cannot rewrite what the thread already said.\",\n properties: {\n id: {\n type: \"string\",\n description: \"The ID of the verifying user.\",\n },\n name: {\n type: \"string\",\n description:\n \"The verifying user's name at the time of the write.\",\n },\n },\n },\n verifiedAt: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the outcome was recorded.\",\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 \"workCompleted\",\n \"workNotCompleted\",\n \"workVerificationCleared\",\n \"costRecorded\",\n \"costPriceChanged\",\n \"costVoided\",\n \"awaitingResponse\",\n \"awaitingResponseCleared\",\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 awaitingResponse: {\n type: \"object\",\n additionalProperties: false,\n required: [\"awaiting\"],\n description:\n \"Legacy. Earlier releases announced the Awaiting response marker in the conversation; the marker now lives only in the ticket's `awaitingResponse` slot and no new entries of this kind are written.\",\n properties: {\n awaiting: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n properties: {\n id: { type: \"string\" },\n discriminator: { type: \"string\", enum: [\"user\"] },\n name: { type: \"string\" },\n },\n },\n messageId: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"The conversation message this marker was sent with, when the composer set both in one write.\",\n },\n },\n },\n awaitingResponseCleared: {\n type: \"object\",\n additionalProperties: false,\n required: [\"reason\"],\n description:\n \"Legacy. Earlier releases announced the end of a wait in the conversation; no new entries of this kind are written.\",\n properties: {\n reason: {\n type: \"string\",\n enum: [\"explicit\", \"left\"],\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 only a roster verification says whether a past-dated visit happened. 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 stages: {\n type: \"array\",\n description:\n \"The Stages the ticket carries, in the fixed chip order. Derived at read time from the ticket's own facts, never stored and never set by clients, and absent for every viewer outside Kohost's facilities staff. A ticket may carry several at once; `closed` and `pending` tickets carry none.\",\n items: {\n type: \"string\",\n enum: [\n \"awaitingClientApproval\",\n \"awaitingClientResponse\",\n \"awaitingVendorQuote\",\n \"awaitingScheduling\",\n \"vendorScheduled\",\n \"confirmCosts\",\n \"resolveReady\",\n ],\n },\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 awaitingResponse: {\n type: [\"object\", \"null\"],\n default: null,\n additionalProperties: false,\n required: [\"author\", \"awaiting\", \"since\"],\n description:\n \"A Kohost Facilities agent's private note that they are waiting on a reply, from one named participant outside Kohost's side or from anyone outside it. Served only to the Facilities roster; every other viewer receives null. A named wait ends when anyone other than its author posts a public message or when the awaited person leaves the ticket; an anyone wait ends when someone outside Kohost's side posts a public message. Either ends when the roster clears it. Written only through SetAwaitingResponse and ClearAwaitingResponse.\",\n properties: {\n author: {\n type: \"object\",\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n description: \"Who set the marker.\",\n properties: {\n id: { type: \"string\" },\n discriminator: {\n type: \"string\",\n enum: [\"user\", \"vendor\", \"system\"],\n },\n name: { type: \"string\" },\n },\n },\n awaiting: {\n type: [\"object\", \"null\"],\n additionalProperties: false,\n required: [\"id\", \"discriminator\", \"name\"],\n description:\n \"The person the ticket is waiting on. Null when the wait is on anyone outside Kohost's side rather than one named person.\",\n properties: {\n id: { type: \"string\" },\n discriminator: { type: \"string\", enum: [\"user\"] },\n name: { type: \"string\" },\n },\n },\n since: {\n $ref: \"definitions.json#/definitions/date\",\n description: \"When the marker was set.\",\n },\n messageId: {\n type: [\"string\", \"null\"],\n default: null,\n description:\n \"Legacy. Earlier releases linked the marker to the message it was sent with; no longer written.\",\n },\n },\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 derived Stage a ticket may carry. The API's `resolveStages` owns the rules. */\nexport type TicketStage = NonNullable<TicketSchemaBase[\"stages\"]>[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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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;SACA;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;M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"}
@@ -0,0 +1,27 @@
1
+ export interface DescribeSISSyncCommandConfig {
2
+ data?: Record<string, unknown> | unknown[] | null;
3
+ headers?: Record<string, string> | null;
4
+ query?: Record<string, unknown> | null;
5
+ }
6
+ export interface DescribeSISSyncCommandRequestConfig {
7
+ method: "get";
8
+ url: string;
9
+ data: Record<string, unknown> | unknown[] | null;
10
+ params: Record<string, unknown> | null;
11
+ headers: Record<string, string> | null;
12
+ [key: string]: unknown;
13
+ }
14
+ /**
15
+ *
16
+ */
17
+ export declare class DescribeSISSyncCommand {
18
+ url: string;
19
+ data: Record<string, unknown> | unknown[] | null;
20
+ query: Record<string, unknown> | null;
21
+ headers: Record<string, string> | null;
22
+ config: DescribeSISSyncCommandRequestConfig;
23
+ static params: readonly [];
24
+ static url: string;
25
+ static method: "get";
26
+ constructor(commandConfig: DescribeSISSyncCommandConfig, options?: Record<string, unknown>);
27
+ }
@@ -0,0 +1,47 @@
1
+ //#region .generated/useCases/describeSISSync.ts
2
+ /**
3
+ *
4
+ */
5
+ var DescribeSISSyncCommand = class DescribeSISSyncCommand {
6
+ url;
7
+ data;
8
+ query;
9
+ headers;
10
+ config;
11
+ static params = [];
12
+ static url = "/sis/sync";
13
+ static method = "get";
14
+ constructor(commandConfig, options = {}) {
15
+ const pathParams = DescribeSISSyncCommand.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 = DescribeSISSyncCommand.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: DescribeSISSyncCommand.method,
36
+ url,
37
+ data,
38
+ params: query,
39
+ headers,
40
+ ...options
41
+ };
42
+ }
43
+ };
44
+ //#endregion
45
+ export { DescribeSISSyncCommand };
46
+
47
+ //# sourceMappingURL=describeSISSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describeSISSync.js","names":[],"sources":["../../.generated/useCases/describeSISSync.ts"],"sourcesContent":["/* This file is automatically generated. Do not modify it manually. */\n\nexport interface DescribeSISSyncCommandConfig {\n data?: Record<string, unknown> | unknown[] | null;\n headers?: Record<string, string> | null;\n query?: Record<string, unknown> | null;\n}\n\nexport interface DescribeSISSyncCommandRequestConfig {\n method: \"get\";\n url: string;\n data: Record<string, unknown> | 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 DescribeSISSyncCommand {\n url: string;\n data: Record<string, unknown> | unknown[] | null;\n query: Record<string, unknown> | null;\n headers: Record<string, string> | null;\n config: DescribeSISSyncCommandRequestConfig;\n\n static params = [] as const;\n static url = \"/sis/sync\";\n static method = \"get\" as const;\n\n constructor(commandConfig: DescribeSISSyncCommandConfig, options: Record<string, unknown> = {}) {\n const pathParams = DescribeSISSyncCommand.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 = DescribeSISSyncCommand.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: DescribeSISSyncCommand.method,\n url: url,\n data: data,\n params: query,\n headers: headers,\n ...options,\n };\n }\n}\n"],"mappings":";;;;AAoBA,IAAa,yBAAb,MAAa,uBAAuB;CAClC;CACA;CACA;CACA;CACA;CAEA,OAAO,SAAS,CAAC;CACjB,OAAO,MAAM;CACb,OAAO,SAAS;CAEhB,YAAY,eAA6C,UAAmC,CAAC,GAAG;EAC9F,MAAM,aAAa,uBAAuB;EAE1C,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,uBAAuB;EAEzC,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,uBAAuB;GAC1B;GACC;GACN,QAAQ;GACC;GACT,GAAG;EACL;CACF;AACF"}
@@ -137,6 +137,10 @@ export { PreviewSOSEventReportCommand } from "./previewSOSEventReport.js";
137
137
  export { ExportSOSEventReportCommand } from "./exportSOSEventReport.js";
138
138
  export { FetchEmergencyContactsCommand } from "./fetchEmergencyContacts.js";
139
139
  export { FetchEmergencyContactPeopleCommand } from "./fetchEmergencyContactPeople.js";
140
+ export { SyncSISRosterCommand } from "./syncSISRoster.js";
141
+ export { DescribeSISSyncCommand } from "./describeSISSync.js";
142
+ export { ListSISPeopleCommand } from "./listSISPeople.js";
143
+ export { ListSISHouseholdsCommand } from "./listSISHouseholds.js";
140
144
  export { DescribeIssueCommand } from "./describeIssue.js";
141
145
  export { ListIssuesCommand } from "./listIssues.js";
142
146
  export { DeleteIssueCommand } from "./deleteIssue.js";
@@ -231,6 +235,7 @@ export { ListFacilitiesStaffIdsCommand } from "./listFacilitiesStaffIds.js";
231
235
  export { AddStaffFunctionMemberCommand } from "./addStaffFunctionMember.js";
232
236
  export { RemoveStaffFunctionMemberCommand } from "./removeStaffFunctionMember.js";
233
237
  export { SendAnnouncementCommand } from "./sendAnnouncement.js";
238
+ export { PreviewAnnouncementCommand } from "./previewAnnouncement.js";
234
239
  export { ListAnnouncementsCommand } from "./listAnnouncements.js";
235
240
  export { DescribeAnnouncementCommand } from "./describeAnnouncement.js";
236
241
  export { CreateAnnouncementPresetCommand } from "./createAnnouncementPreset.js";
@@ -138,6 +138,10 @@ import { PreviewSOSEventReportCommand } from "./previewSOSEventReport.js";
138
138
  import { ExportSOSEventReportCommand } from "./exportSOSEventReport.js";
139
139
  import { FetchEmergencyContactsCommand } from "./fetchEmergencyContacts.js";
140
140
  import { FetchEmergencyContactPeopleCommand } from "./fetchEmergencyContactPeople.js";
141
+ import { SyncSISRosterCommand } from "./syncSISRoster.js";
142
+ import { DescribeSISSyncCommand } from "./describeSISSync.js";
143
+ import { ListSISPeopleCommand } from "./listSISPeople.js";
144
+ import { ListSISHouseholdsCommand } from "./listSISHouseholds.js";
141
145
  import { DescribeIssueCommand } from "./describeIssue.js";
142
146
  import { ListIssuesCommand } from "./listIssues.js";
143
147
  import { DeleteIssueCommand } from "./deleteIssue.js";
@@ -232,6 +236,7 @@ import { ListFacilitiesStaffIdsCommand } from "./listFacilitiesStaffIds.js";
232
236
  import { AddStaffFunctionMemberCommand } from "./addStaffFunctionMember.js";
233
237
  import { RemoveStaffFunctionMemberCommand } from "./removeStaffFunctionMember.js";
234
238
  import { SendAnnouncementCommand } from "./sendAnnouncement.js";
239
+ import { PreviewAnnouncementCommand } from "./previewAnnouncement.js";
235
240
  import { ListAnnouncementsCommand } from "./listAnnouncements.js";
236
241
  import { DescribeAnnouncementCommand } from "./describeAnnouncement.js";
237
242
  import { CreateAnnouncementPresetCommand } from "./createAnnouncementPreset.js";
@@ -334,6 +339,7 @@ var useCases_exports = /* @__PURE__ */ __exportAll({
334
339
  DescribePropertyCommand: () => DescribePropertyCommand,
335
340
  DescribePushVapidPublicKeyCommand: () => DescribePushVapidPublicKeyCommand,
336
341
  DescribeResourceCommand: () => DescribeResourceCommand,
342
+ DescribeSISSyncCommand: () => DescribeSISSyncCommand,
337
343
  DescribeSOSCommand: () => DescribeSOSCommand,
338
344
  DescribeSOSEventCommand: () => DescribeSOSEventCommand,
339
345
  DescribeSelfAccessCommand: () => DescribeSelfAccessCommand,
@@ -391,6 +397,8 @@ var useCases_exports = /* @__PURE__ */ __exportAll({
391
397
  ListPropertiesCommand: () => ListPropertiesCommand,
392
398
  ListPropertyCredentialsCommand: () => ListPropertyCredentialsCommand,
393
399
  ListResourcesCommand: () => ListResourcesCommand,
400
+ ListSISHouseholdsCommand: () => ListSISHouseholdsCommand,
401
+ ListSISPeopleCommand: () => ListSISPeopleCommand,
394
402
  ListSOSEventsCommand: () => ListSOSEventsCommand,
395
403
  ListServersCommand: () => ListServersCommand,
396
404
  ListSessionsCommand: () => ListSessionsCommand,
@@ -407,6 +415,7 @@ var useCases_exports = /* @__PURE__ */ __exportAll({
407
415
  MarkBillSentCommand: () => MarkBillSentCommand,
408
416
  MergeIssueCommand: () => MergeIssueCommand,
409
417
  MoveDeviceCommand: () => MoveDeviceCommand,
418
+ PreviewAnnouncementCommand: () => PreviewAnnouncementCommand,
410
419
  PreviewBillCommand: () => PreviewBillCommand,
411
420
  PreviewSOSEventReportCommand: () => PreviewSOSEventReportCommand,
412
421
  RecordCostActualCommand: () => RecordCostActualCommand,
@@ -437,6 +446,7 @@ var useCases_exports = /* @__PURE__ */ __exportAll({
437
446
  StartSOSCommand: () => StartSOSCommand,
438
447
  StopSOSCommand: () => StopSOSCommand,
439
448
  SubscribePushDeviceCommand: () => SubscribePushDeviceCommand,
449
+ SyncSISRosterCommand: () => SyncSISRosterCommand,
440
450
  UnsubscribePushDeviceCommand: () => UnsubscribePushDeviceCommand,
441
451
  UpdateAnnouncementPresetCommand: () => UpdateAnnouncementPresetCommand,
442
452
  UpdateAutomationCommand: () => UpdateAutomationCommand,
@@ -479,6 +489,6 @@ var useCases_exports = /* @__PURE__ */ __exportAll({
479
489
  WriteOffCostEntryCommand: () => WriteOffCostEntryCommand
480
490
  });
481
491
  //#endregion
482
- export { AcknowledgeCostDivergenceCommand, AddBillLineCommand, AddBillLinesCommand, AddSOSEventNoteCommand, AddStaffFunctionMemberCommand, AutoAssociateDiscoveredDevicesCommand, BulkUpdateIssueCommand, CancelWorkItemCommand, CheckVerificationCodeCommand, ClearAwaitingResponseCommand, ClearWorkItemNoChargeCommand, ClearWorkItemVerificationCommand, CopyIssueRoutingCommand, CreateAnnouncementPresetCommand, CreateApiKeyCommand, CreateAutomationCommand, CreateBillCommand, CreateBillingCategoryCommand, CreateCategoryCommand, CreateCostCommand, 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, DescribeConciergeBillsSummaryCommand, DescribeConciergeFacilitiesViewerCommand, DescribeConciergeStageCountsCommand, 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, EditCostCommand, EditCostEntryCommand, EmailUserAccountSetupCommand, ExportSOSEventReportCommand, FetchEmergencyContactPeopleCommand, FetchEmergencyContactsCommand, GetApiKeyCommand, LeaveTicketCommand, ListAnnouncementsCommand, ListAutomationsCommand, ListBillingCategoriesCommand, ListBillsCommand, ListCameraStreamPreviewsCommand, ListCategoriesCommand, ListConciergeUninvoicedCostsCommand, ListConciergeWorkspaceBillLinesCommand, 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, ReinstateCostCommand, ReinstateCostEntryCommand, RemoveBillLineCommand, RemoveStaffFunctionMemberCommand, ReplaceDeviceCommand, RequestApprovalCommand, RescheduleWorkItemCommand, RevokeApiKeyCommand, RotateApiKeyCommand, RunAutomationCommand, ScheduleWorkItemCommand, SelectOrganizationCommand, SendAnnouncementCommand, SendNotificationCommand, SendSOSUpdateCommand, SendVerificationCodeCommand, SetAwaitingResponseCommand, SetCostInvoiceCommand, 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, VerifyWorkItemCommand, VoidBillCommand, VoidCostEntryCommand, WriteOffCostCommand, WriteOffCostEntryCommand, useCases_exports };
492
+ export { AcknowledgeCostDivergenceCommand, AddBillLineCommand, AddBillLinesCommand, AddSOSEventNoteCommand, AddStaffFunctionMemberCommand, AutoAssociateDiscoveredDevicesCommand, BulkUpdateIssueCommand, CancelWorkItemCommand, CheckVerificationCodeCommand, ClearAwaitingResponseCommand, ClearWorkItemNoChargeCommand, ClearWorkItemVerificationCommand, CopyIssueRoutingCommand, CreateAnnouncementPresetCommand, CreateApiKeyCommand, CreateAutomationCommand, CreateBillCommand, CreateBillingCategoryCommand, CreateCategoryCommand, CreateCostCommand, 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, DescribeConciergeBillsSummaryCommand, DescribeConciergeFacilitiesViewerCommand, DescribeConciergeStageCountsCommand, DescribeConciergeStatsFiltersCommand, DescribeConciergeStatsHeatmapCommand, DescribeConciergeStatsSummaryCommand, DescribeConciergeStatsTicketsCommand, DescribeConciergeWorkspaceFiltersCommand, DescribeDepartmentCommand, DescribeDeviceCommand, DescribeDeviceConfigCommand, DescribeDiscoveredDeviceCommand, DescribeIssueCommand, DescribeMyAuthCommand, DescribeMyOrganizationCommand, DescribeMyPasskeyRegistrationsCommand, DescribeOrgNotificationDefaultsCommand, DescribeOrganizationBillCommand, DescribeOrganizationCommand, DescribePolicyCommand, DescribePropertyCommand, DescribePushVapidPublicKeyCommand, DescribeResourceCommand, DescribeSISSyncCommand, DescribeSOSCommand, DescribeSOSEventCommand, DescribeSelfAccessCommand, DescribeSelfCommand, DescribeServerCommand, DescribeSessionCommand, DescribeSpaceCommand, DescribeStaffFunctionsCommand, DescribeSystemCommand, DescribeTicketCommand, DescribeTicketFiltersCommand, DescribeTicketStatsCommand, DescribeTicketStatsFiltersCommand, DescribeTicketStatsHeatmapCommand, DescribeTicketStatsSummaryCommand, DescribeTicketStatsTicketsCommand, DescribeTimeSheetCommand, DescribeTimeSheetStatsCommand, DescribeUserCommand, DescribeVendorCommand, EditCostCommand, EditCostEntryCommand, EmailUserAccountSetupCommand, ExportSOSEventReportCommand, FetchEmergencyContactPeopleCommand, FetchEmergencyContactsCommand, GetApiKeyCommand, LeaveTicketCommand, ListAnnouncementsCommand, ListAutomationsCommand, ListBillingCategoriesCommand, ListBillsCommand, ListCameraStreamPreviewsCommand, ListCategoriesCommand, ListConciergeUninvoicedCostsCommand, ListConciergeWorkspaceBillLinesCommand, ListConciergeWorkspaceBillsCommand, ListConciergeWorkspaceTicketsCommand, ListDepartmentsCommand, ListDeviceCredentialsCommand, ListDevicesCommand, ListDiscoveredDevicesCommand, ListEligibleApproversCommand, ListFacilitiesStaffIdsCommand, ListIntegrationsCommand, ListIssuesCommand, ListKohostStaffCommand, ListMyOrganizationsCommand, ListMyPropertiesCommand, ListMyPushSubscriptionsCommand, ListMyTimeSheetsCommand, ListOrganizationBillsCommand, ListOrganizationsCommand, ListPoliciesCommand, ListPropertiesCommand, ListPropertyCredentialsCommand, ListResourcesCommand, ListSISHouseholdsCommand, ListSISPeopleCommand, ListSOSEventsCommand, ListServersCommand, ListSessionsCommand, ListSpacesCommand, ListSystemsCommand, ListTicketLocationsCommand, ListTicketsCommand, ListTimeSheetsCommand, ListUserSpacesCommand, ListUsersCommand, ListVendorsCommand, LogoutUserCommand, MarkBillPaidCommand, MarkBillSentCommand, MergeIssueCommand, MoveDeviceCommand, PreviewAnnouncementCommand, PreviewBillCommand, PreviewSOSEventReportCommand, RecordCostActualCommand, RecordCostEntryCommand, ReinstateCostCommand, ReinstateCostEntryCommand, RemoveBillLineCommand, RemoveStaffFunctionMemberCommand, ReplaceDeviceCommand, RequestApprovalCommand, RescheduleWorkItemCommand, RevokeApiKeyCommand, RotateApiKeyCommand, RunAutomationCommand, ScheduleWorkItemCommand, SelectOrganizationCommand, SendAnnouncementCommand, SendNotificationCommand, SendSOSUpdateCommand, SendVerificationCodeCommand, SetAwaitingResponseCommand, SetCostInvoiceCommand, SetCostVendorInvoiceCommand, SetDeviceCommand, SetDevicesCommand, SetUserSuperAdminCommand, SetWorkItemNoChargeCommand, StartSOSCommand, StopSOSCommand, SubscribePushDeviceCommand, SyncSISRosterCommand, 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, VerifyWorkItemCommand, VoidBillCommand, VoidCostEntryCommand, WriteOffCostCommand, WriteOffCostEntryCommand, useCases_exports };
483
493
 
484
494
  //# sourceMappingURL=index.js.map