@happyvertical/smrt-support 0.39.2

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 (96) hide show
  1. package/AGENTS.md +270 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +7 -0
  4. package/dist/__smrt-register__.d.ts +2 -0
  5. package/dist/__smrt-register__.d.ts.map +1 -0
  6. package/dist/index.d.ts +5 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +4358 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/manifest.json +6770 -0
  11. package/dist/models/index.d.ts +17 -0
  12. package/dist/models/index.d.ts.map +1 -0
  13. package/dist/models/service-time-entry.d.ts +75 -0
  14. package/dist/models/service-time-entry.d.ts.map +1 -0
  15. package/dist/models/support-ai-run.d.ts +45 -0
  16. package/dist/models/support-ai-run.d.ts.map +1 -0
  17. package/dist/models/support-case-event.d.ts +25 -0
  18. package/dist/models/support-case-event.d.ts.map +1 -0
  19. package/dist/models/support-case.d.ts +125 -0
  20. package/dist/models/support-case.d.ts.map +1 -0
  21. package/dist/models/support-channel-binding.d.ts +47 -0
  22. package/dist/models/support-channel-binding.d.ts.map +1 -0
  23. package/dist/models/support-compensation-plan.d.ts +42 -0
  24. package/dist/models/support-compensation-plan.d.ts.map +1 -0
  25. package/dist/models/support-interaction.d.ts +49 -0
  26. package/dist/models/support-interaction.d.ts.map +1 -0
  27. package/dist/models/support-plan.d.ts +92 -0
  28. package/dist/models/support-plan.d.ts.map +1 -0
  29. package/dist/models/support-policy.d.ts +84 -0
  30. package/dist/models/support-policy.d.ts.map +1 -0
  31. package/dist/models/support-service-target.d.ts +90 -0
  32. package/dist/models/support-service-target.d.ts.map +1 -0
  33. package/dist/models/support-settlement.d.ts +58 -0
  34. package/dist/models/support-settlement.d.ts.map +1 -0
  35. package/dist/models/support-specialist.d.ts +71 -0
  36. package/dist/models/support-specialist.d.ts.map +1 -0
  37. package/dist/models/support-work-link.d.ts +31 -0
  38. package/dist/models/support-work-link.d.ts.map +1 -0
  39. package/dist/permissions.d.ts +32 -0
  40. package/dist/permissions.d.ts.map +1 -0
  41. package/dist/services/coverage-calendar.d.ts +53 -0
  42. package/dist/services/coverage-calendar.d.ts.map +1 -0
  43. package/dist/services/human-handoff-service.d.ts +113 -0
  44. package/dist/services/human-handoff-service.d.ts.map +1 -0
  45. package/dist/services/index.d.ts +15 -0
  46. package/dist/services/index.d.ts.map +1 -0
  47. package/dist/services/keyed-mutex.d.ts +22 -0
  48. package/dist/services/keyed-mutex.d.ts.map +1 -0
  49. package/dist/services/service-target-engine.d.ts +133 -0
  50. package/dist/services/service-target-engine.d.ts.map +1 -0
  51. package/dist/services/service-time-entry-service.d.ts +73 -0
  52. package/dist/services/service-time-entry-service.d.ts.map +1 -0
  53. package/dist/services/support-ai-workflow.d.ts +178 -0
  54. package/dist/services/support-ai-workflow.d.ts.map +1 -0
  55. package/dist/services/support-case-service.d.ts +162 -0
  56. package/dist/services/support-case-service.d.ts.map +1 -0
  57. package/dist/services/support-intake-service.d.ts +106 -0
  58. package/dist/services/support-intake-service.d.ts.map +1 -0
  59. package/dist/services/support-plan-admin-service.d.ts +45 -0
  60. package/dist/services/support-plan-admin-service.d.ts.map +1 -0
  61. package/dist/services/support-routing-service.d.ts +117 -0
  62. package/dist/services/support-routing-service.d.ts.map +1 -0
  63. package/dist/services/time-entry-approval-service.d.ts +162 -0
  64. package/dist/services/time-entry-approval-service.d.ts.map +1 -0
  65. package/dist/smrt-knowledge.json +4242 -0
  66. package/dist/svelte/components/CaseDetail.svelte +277 -0
  67. package/dist/svelte/components/CaseDetail.svelte.d.ts +10 -0
  68. package/dist/svelte/components/CaseDetail.svelte.d.ts.map +1 -0
  69. package/dist/svelte/components/CaseQueue.svelte +148 -0
  70. package/dist/svelte/components/CaseQueue.svelte.d.ts +12 -0
  71. package/dist/svelte/components/CaseQueue.svelte.d.ts.map +1 -0
  72. package/dist/svelte/components/RoutingRationale.svelte +131 -0
  73. package/dist/svelte/components/RoutingRationale.svelte.d.ts +11 -0
  74. package/dist/svelte/components/RoutingRationale.svelte.d.ts.map +1 -0
  75. package/dist/svelte/components/TargetList.svelte +127 -0
  76. package/dist/svelte/components/TargetList.svelte.d.ts +9 -0
  77. package/dist/svelte/components/TargetList.svelte.d.ts.map +1 -0
  78. package/dist/svelte/components/TimeEntryApprovalQueue.svelte +226 -0
  79. package/dist/svelte/components/TimeEntryApprovalQueue.svelte.d.ts +11 -0
  80. package/dist/svelte/components/TimeEntryApprovalQueue.svelte.d.ts.map +1 -0
  81. package/dist/svelte/components/__tests__/CaseDetail.test.js +86 -0
  82. package/dist/svelte/components/__tests__/CaseQueue.test.js +67 -0
  83. package/dist/svelte/components/__tests__/RoutingRationale.test.js +69 -0
  84. package/dist/svelte/components/__tests__/TargetList.test.js +84 -0
  85. package/dist/svelte/components/__tests__/TimeEntryApprovalQueue.test.js +105 -0
  86. package/dist/svelte/index.d.ts +25 -0
  87. package/dist/svelte/index.d.ts.map +1 -0
  88. package/dist/svelte/index.js +18 -0
  89. package/dist/svelte/types.d.ts +129 -0
  90. package/dist/svelte/types.d.ts.map +1 -0
  91. package/dist/svelte/types.js +182 -0
  92. package/dist/types.d.ts +130 -0
  93. package/dist/types.d.ts.map +1 -0
  94. package/dist/types.js +109 -0
  95. package/dist/types.js.map +1 -0
  96. package/package.json +86 -0
@@ -0,0 +1,4242 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "generatedAt": "2026-07-11T03:51:24.204Z",
4
+ "packageName": "@happyvertical/smrt-support",
5
+ "packageVersion": "0.39.2",
6
+ "sourceManifestPath": "dist/manifest.json",
7
+ "agentDocPath": "AGENTS.md",
8
+ "sourceHashes": {
9
+ "manifest": "515273cf483249e07fbda5dfef347f52ab61c626acf281948a87ae6baa2be13b",
10
+ "packageJson": "730c7cf53a4f59546c4652526044a5e0076935f221a92e181ad0a81c710a6178",
11
+ "agents": "7fa08df9e553d6f53e4c650e8fdcdffabfb8fb12ca7ce91a368955c85de24148"
12
+ },
13
+ "exports": [
14
+ ".",
15
+ "./manifest",
16
+ "./manifest.json",
17
+ "./svelte"
18
+ ],
19
+ "dependencies": {
20
+ "@happyvertical/logger": "catalog:",
21
+ "@happyvertical/smrt-chat": "workspace:*",
22
+ "@happyvertical/smrt-core": "workspace:*",
23
+ "@happyvertical/smrt-jobs": "workspace:*",
24
+ "@happyvertical/smrt-messages": "workspace:*",
25
+ "@happyvertical/smrt-tenancy": "workspace:*",
26
+ "@happyvertical/smrt-ui": "workspace:*",
27
+ "@happyvertical/smrt-users": "workspace:*",
28
+ "@happyvertical/sql": "catalog:",
29
+ "@happyvertical/smrt-vitest": "workspace:*",
30
+ "@sveltejs/package": "^2.5.8",
31
+ "@sveltejs/vite-plugin-svelte": "^7.1.2",
32
+ "@types/node": "24.13.2",
33
+ "svelte": "^5.56.4",
34
+ "svelte-check": "^4.7.1",
35
+ "typescript": "^5.9.3",
36
+ "vite": "^8.1.3",
37
+ "vitest": "^4.1.9"
38
+ },
39
+ "smrtDependencies": [
40
+ "@happyvertical/smrt-chat",
41
+ "@happyvertical/smrt-core",
42
+ "@happyvertical/smrt-jobs",
43
+ "@happyvertical/smrt-messages",
44
+ "@happyvertical/smrt-tenancy",
45
+ "@happyvertical/smrt-ui",
46
+ "@happyvertical/smrt-users",
47
+ "@happyvertical/smrt-vitest"
48
+ ],
49
+ "sdkDependencies": [
50
+ "@happyvertical/logger",
51
+ "@happyvertical/sql"
52
+ ],
53
+ "tags": [],
54
+ "risks": [],
55
+ "objects": [
56
+ {
57
+ "name": "ServiceTimeEntry",
58
+ "qualifiedName": "@happyvertical/smrt-support:ServiceTimeEntry",
59
+ "collection": "servicetimeentries",
60
+ "tableName": "service_time_entries",
61
+ "packageName": "@happyvertical/smrt-support",
62
+ "extends": "SmrtObject",
63
+ "fields": [
64
+ {
65
+ "name": "tenantId",
66
+ "type": "text",
67
+ "required": false,
68
+ "columnType": "UUID"
69
+ },
70
+ {
71
+ "name": "caseId",
72
+ "type": "foreignKey",
73
+ "required": false,
74
+ "related": "SupportCase",
75
+ "columnType": "UUID"
76
+ },
77
+ {
78
+ "name": "workRefType",
79
+ "type": "text",
80
+ "required": false,
81
+ "columnType": "TEXT"
82
+ },
83
+ {
84
+ "name": "workRefId",
85
+ "type": "text",
86
+ "required": false,
87
+ "columnType": "TEXT"
88
+ },
89
+ {
90
+ "name": "specialistId",
91
+ "type": "foreignKey",
92
+ "required": false,
93
+ "related": "SupportSpecialist",
94
+ "columnType": "UUID"
95
+ },
96
+ {
97
+ "name": "participantKind",
98
+ "type": "text",
99
+ "required": false,
100
+ "columnType": "TEXT"
101
+ },
102
+ {
103
+ "name": "participantProfileId",
104
+ "type": "crossPackageRef",
105
+ "required": false,
106
+ "related": "@happyvertical/smrt-profiles:Profile",
107
+ "columnType": "UUID"
108
+ },
109
+ {
110
+ "name": "agentRef",
111
+ "type": "text",
112
+ "required": false,
113
+ "columnType": "TEXT"
114
+ },
115
+ {
116
+ "name": "source",
117
+ "type": "text",
118
+ "required": false,
119
+ "columnType": "TEXT"
120
+ },
121
+ {
122
+ "name": "description",
123
+ "type": "text",
124
+ "required": false,
125
+ "columnType": "TEXT"
126
+ },
127
+ {
128
+ "name": "startedAt",
129
+ "type": "datetime",
130
+ "required": false,
131
+ "columnType": "TIMESTAMP"
132
+ },
133
+ {
134
+ "name": "endedAt",
135
+ "type": "datetime",
136
+ "required": false,
137
+ "columnType": "TIMESTAMP"
138
+ },
139
+ {
140
+ "name": "durationSeconds",
141
+ "type": "integer",
142
+ "required": false,
143
+ "columnType": "INTEGER"
144
+ },
145
+ {
146
+ "name": "evidence",
147
+ "type": "text",
148
+ "required": false,
149
+ "columnType": "TEXT"
150
+ },
151
+ {
152
+ "name": "status",
153
+ "type": "text",
154
+ "required": false,
155
+ "columnType": "TEXT"
156
+ },
157
+ {
158
+ "name": "submittedAt",
159
+ "type": "datetime",
160
+ "required": false,
161
+ "columnType": "TIMESTAMP"
162
+ },
163
+ {
164
+ "name": "submittedByProfileId",
165
+ "type": "crossPackageRef",
166
+ "required": false,
167
+ "related": "@happyvertical/smrt-profiles:Profile",
168
+ "columnType": "UUID"
169
+ },
170
+ {
171
+ "name": "approvedAt",
172
+ "type": "datetime",
173
+ "required": false,
174
+ "columnType": "TIMESTAMP"
175
+ },
176
+ {
177
+ "name": "approvedByProfileId",
178
+ "type": "crossPackageRef",
179
+ "required": false,
180
+ "related": "@happyvertical/smrt-profiles:Profile",
181
+ "columnType": "UUID"
182
+ },
183
+ {
184
+ "name": "approvalPath",
185
+ "type": "text",
186
+ "required": false,
187
+ "columnType": "TEXT"
188
+ },
189
+ {
190
+ "name": "rejectedAt",
191
+ "type": "datetime",
192
+ "required": false,
193
+ "columnType": "TIMESTAMP"
194
+ },
195
+ {
196
+ "name": "rejectedByProfileId",
197
+ "type": "crossPackageRef",
198
+ "required": false,
199
+ "related": "@happyvertical/smrt-profiles:Profile",
200
+ "columnType": "UUID"
201
+ },
202
+ {
203
+ "name": "rejectionReason",
204
+ "type": "text",
205
+ "required": false,
206
+ "columnType": "TEXT"
207
+ },
208
+ {
209
+ "name": "correctionOfId",
210
+ "type": "foreignKey",
211
+ "required": false,
212
+ "related": "ServiceTimeEntry",
213
+ "columnType": "UUID"
214
+ },
215
+ {
216
+ "name": "metadata",
217
+ "type": "text",
218
+ "required": false,
219
+ "columnType": "TEXT"
220
+ }
221
+ ],
222
+ "relationships": [
223
+ {
224
+ "name": "caseId",
225
+ "type": "foreignKey",
226
+ "required": false,
227
+ "related": "SupportCase",
228
+ "columnType": "UUID"
229
+ },
230
+ {
231
+ "name": "specialistId",
232
+ "type": "foreignKey",
233
+ "required": false,
234
+ "related": "SupportSpecialist",
235
+ "columnType": "UUID"
236
+ },
237
+ {
238
+ "name": "participantProfileId",
239
+ "type": "crossPackageRef",
240
+ "required": false,
241
+ "related": "@happyvertical/smrt-profiles:Profile",
242
+ "columnType": "UUID"
243
+ },
244
+ {
245
+ "name": "submittedByProfileId",
246
+ "type": "crossPackageRef",
247
+ "required": false,
248
+ "related": "@happyvertical/smrt-profiles:Profile",
249
+ "columnType": "UUID"
250
+ },
251
+ {
252
+ "name": "approvedByProfileId",
253
+ "type": "crossPackageRef",
254
+ "required": false,
255
+ "related": "@happyvertical/smrt-profiles:Profile",
256
+ "columnType": "UUID"
257
+ },
258
+ {
259
+ "name": "rejectedByProfileId",
260
+ "type": "crossPackageRef",
261
+ "required": false,
262
+ "related": "@happyvertical/smrt-profiles:Profile",
263
+ "columnType": "UUID"
264
+ },
265
+ {
266
+ "name": "correctionOfId",
267
+ "type": "foreignKey",
268
+ "required": false,
269
+ "related": "ServiceTimeEntry",
270
+ "columnType": "UUID"
271
+ }
272
+ ],
273
+ "methods": [
274
+ "durationHours",
275
+ "getEvidence",
276
+ "getMetadata",
277
+ "initialize",
278
+ "save",
279
+ "setEvidence",
280
+ "setMetadata"
281
+ ],
282
+ "surfaces": [
283
+ {
284
+ "kind": "api",
285
+ "name": "servicetimeentries.list",
286
+ "operation": "list",
287
+ "objectName": "@happyvertical/smrt-support:ServiceTimeEntry",
288
+ "path": "/servicetimeentries",
289
+ "method": "GET"
290
+ },
291
+ {
292
+ "kind": "api",
293
+ "name": "servicetimeentries.get",
294
+ "operation": "get",
295
+ "objectName": "@happyvertical/smrt-support:ServiceTimeEntry",
296
+ "path": "/servicetimeentries/[id]",
297
+ "method": "GET"
298
+ },
299
+ {
300
+ "kind": "cli",
301
+ "name": "servicetimeentry_list",
302
+ "operation": "list",
303
+ "objectName": "@happyvertical/smrt-support:ServiceTimeEntry"
304
+ },
305
+ {
306
+ "kind": "cli",
307
+ "name": "servicetimeentry_get",
308
+ "operation": "get",
309
+ "objectName": "@happyvertical/smrt-support:ServiceTimeEntry"
310
+ },
311
+ {
312
+ "kind": "mcp",
313
+ "name": "servicetimeentry_list",
314
+ "operation": "list",
315
+ "objectName": "@happyvertical/smrt-support:ServiceTimeEntry"
316
+ },
317
+ {
318
+ "kind": "mcp",
319
+ "name": "servicetimeentry_get",
320
+ "operation": "get",
321
+ "objectName": "@happyvertical/smrt-support:ServiceTimeEntry"
322
+ }
323
+ ],
324
+ "relationshipFeatures": [
325
+ "crossPackageRef",
326
+ "foreignKey",
327
+ "uuidColumns"
328
+ ],
329
+ "tags": [],
330
+ "risks": []
331
+ },
332
+ {
333
+ "name": "ServiceTimeEntryCollection",
334
+ "qualifiedName": "@happyvertical/smrt-support:ServiceTimeEntryCollection",
335
+ "collection": "servicetimeentries",
336
+ "tableName": "service_time_entries",
337
+ "packageName": "@happyvertical/smrt-support",
338
+ "extends": "SmrtCollection",
339
+ "fields": [],
340
+ "relationships": [],
341
+ "methods": [
342
+ "forCase",
343
+ "forSpecialist",
344
+ "pendingApproval"
345
+ ],
346
+ "surfaces": [],
347
+ "relationshipFeatures": [
348
+ "uuidColumns"
349
+ ],
350
+ "tags": [],
351
+ "risks": []
352
+ },
353
+ {
354
+ "name": "SupportAiRun",
355
+ "qualifiedName": "@happyvertical/smrt-support:SupportAiRun",
356
+ "collection": "supportairuns",
357
+ "tableName": "support_ai_runs",
358
+ "packageName": "@happyvertical/smrt-support",
359
+ "extends": "SmrtObject",
360
+ "fields": [
361
+ {
362
+ "name": "tenantId",
363
+ "type": "text",
364
+ "required": false,
365
+ "columnType": "UUID"
366
+ },
367
+ {
368
+ "name": "caseId",
369
+ "type": "foreignKey",
370
+ "required": true,
371
+ "related": "SupportCase",
372
+ "columnType": "UUID"
373
+ },
374
+ {
375
+ "name": "interactionId",
376
+ "type": "foreignKey",
377
+ "required": false,
378
+ "related": "SupportInteraction",
379
+ "columnType": "UUID"
380
+ },
381
+ {
382
+ "name": "phase",
383
+ "type": "text",
384
+ "required": false,
385
+ "columnType": "TEXT"
386
+ },
387
+ {
388
+ "name": "outcome",
389
+ "type": "text",
390
+ "required": false,
391
+ "columnType": "TEXT"
392
+ },
393
+ {
394
+ "name": "confidence",
395
+ "type": "decimal",
396
+ "required": false,
397
+ "columnType": "REAL"
398
+ },
399
+ {
400
+ "name": "classification",
401
+ "type": "text",
402
+ "required": false,
403
+ "columnType": "TEXT"
404
+ },
405
+ {
406
+ "name": "responseInteractionId",
407
+ "type": "foreignKey",
408
+ "required": false,
409
+ "related": "SupportInteraction",
410
+ "columnType": "UUID"
411
+ },
412
+ {
413
+ "name": "knowledgeRefs",
414
+ "type": "text",
415
+ "required": false,
416
+ "columnType": "TEXT"
417
+ },
418
+ {
419
+ "name": "toolCalls",
420
+ "type": "text",
421
+ "required": false,
422
+ "columnType": "TEXT"
423
+ },
424
+ {
425
+ "name": "error",
426
+ "type": "text",
427
+ "required": false,
428
+ "columnType": "TEXT"
429
+ },
430
+ {
431
+ "name": "correlationId",
432
+ "type": "text",
433
+ "required": false,
434
+ "columnType": "TEXT"
435
+ },
436
+ {
437
+ "name": "model",
438
+ "type": "text",
439
+ "required": false,
440
+ "columnType": "TEXT"
441
+ },
442
+ {
443
+ "name": "startedAt",
444
+ "type": "datetime",
445
+ "required": false,
446
+ "columnType": "TIMESTAMP"
447
+ },
448
+ {
449
+ "name": "completedAt",
450
+ "type": "datetime",
451
+ "required": false,
452
+ "columnType": "TIMESTAMP"
453
+ },
454
+ {
455
+ "name": "metadata",
456
+ "type": "text",
457
+ "required": false,
458
+ "columnType": "TEXT"
459
+ }
460
+ ],
461
+ "relationships": [
462
+ {
463
+ "name": "caseId",
464
+ "type": "foreignKey",
465
+ "required": true,
466
+ "related": "SupportCase",
467
+ "columnType": "UUID"
468
+ },
469
+ {
470
+ "name": "interactionId",
471
+ "type": "foreignKey",
472
+ "required": false,
473
+ "related": "SupportInteraction",
474
+ "columnType": "UUID"
475
+ },
476
+ {
477
+ "name": "responseInteractionId",
478
+ "type": "foreignKey",
479
+ "required": false,
480
+ "related": "SupportInteraction",
481
+ "columnType": "UUID"
482
+ }
483
+ ],
484
+ "methods": [
485
+ "getClassification",
486
+ "getKnowledgeRefs",
487
+ "getToolCalls",
488
+ "setClassification",
489
+ "setKnowledgeRefs",
490
+ "setToolCalls"
491
+ ],
492
+ "surfaces": [
493
+ {
494
+ "kind": "api",
495
+ "name": "supportairuns.list",
496
+ "operation": "list",
497
+ "objectName": "@happyvertical/smrt-support:SupportAiRun",
498
+ "path": "/supportairuns",
499
+ "method": "GET"
500
+ },
501
+ {
502
+ "kind": "api",
503
+ "name": "supportairuns.get",
504
+ "operation": "get",
505
+ "objectName": "@happyvertical/smrt-support:SupportAiRun",
506
+ "path": "/supportairuns/[id]",
507
+ "method": "GET"
508
+ },
509
+ {
510
+ "kind": "cli",
511
+ "name": "supportairun_list",
512
+ "operation": "list",
513
+ "objectName": "@happyvertical/smrt-support:SupportAiRun"
514
+ },
515
+ {
516
+ "kind": "cli",
517
+ "name": "supportairun_get",
518
+ "operation": "get",
519
+ "objectName": "@happyvertical/smrt-support:SupportAiRun"
520
+ },
521
+ {
522
+ "kind": "mcp",
523
+ "name": "supportairun_list",
524
+ "operation": "list",
525
+ "objectName": "@happyvertical/smrt-support:SupportAiRun"
526
+ },
527
+ {
528
+ "kind": "mcp",
529
+ "name": "supportairun_get",
530
+ "operation": "get",
531
+ "objectName": "@happyvertical/smrt-support:SupportAiRun"
532
+ }
533
+ ],
534
+ "relationshipFeatures": [
535
+ "foreignKey",
536
+ "uuidColumns"
537
+ ],
538
+ "tags": [],
539
+ "risks": []
540
+ },
541
+ {
542
+ "name": "SupportAiRunCollection",
543
+ "qualifiedName": "@happyvertical/smrt-support:SupportAiRunCollection",
544
+ "collection": "supportairuns",
545
+ "tableName": "support_ai_runs",
546
+ "packageName": "@happyvertical/smrt-support",
547
+ "extends": "SmrtCollection",
548
+ "fields": [],
549
+ "relationships": [],
550
+ "methods": [
551
+ "forCase"
552
+ ],
553
+ "surfaces": [],
554
+ "relationshipFeatures": [
555
+ "uuidColumns"
556
+ ],
557
+ "tags": [],
558
+ "risks": []
559
+ },
560
+ {
561
+ "name": "SupportCaseEvent",
562
+ "qualifiedName": "@happyvertical/smrt-support:SupportCaseEvent",
563
+ "collection": "supportcaseevents",
564
+ "tableName": "support_case_events",
565
+ "packageName": "@happyvertical/smrt-support",
566
+ "extends": "SmrtObject",
567
+ "fields": [
568
+ {
569
+ "name": "tenantId",
570
+ "type": "text",
571
+ "required": false,
572
+ "columnType": "UUID"
573
+ },
574
+ {
575
+ "name": "caseId",
576
+ "type": "foreignKey",
577
+ "required": true,
578
+ "related": "SupportCase",
579
+ "columnType": "UUID"
580
+ },
581
+ {
582
+ "name": "eventType",
583
+ "type": "text",
584
+ "required": false,
585
+ "columnType": "TEXT"
586
+ },
587
+ {
588
+ "name": "actorKind",
589
+ "type": "text",
590
+ "required": false,
591
+ "columnType": "TEXT"
592
+ },
593
+ {
594
+ "name": "actorProfileId",
595
+ "type": "crossPackageRef",
596
+ "required": false,
597
+ "related": "@happyvertical/smrt-profiles:Profile",
598
+ "columnType": "UUID"
599
+ },
600
+ {
601
+ "name": "occurredAt",
602
+ "type": "datetime",
603
+ "required": false,
604
+ "columnType": "TIMESTAMP"
605
+ },
606
+ {
607
+ "name": "summary",
608
+ "type": "text",
609
+ "required": false,
610
+ "columnType": "TEXT"
611
+ },
612
+ {
613
+ "name": "payload",
614
+ "type": "text",
615
+ "required": false,
616
+ "columnType": "TEXT"
617
+ }
618
+ ],
619
+ "relationships": [
620
+ {
621
+ "name": "caseId",
622
+ "type": "foreignKey",
623
+ "required": true,
624
+ "related": "SupportCase",
625
+ "columnType": "UUID"
626
+ },
627
+ {
628
+ "name": "actorProfileId",
629
+ "type": "crossPackageRef",
630
+ "required": false,
631
+ "related": "@happyvertical/smrt-profiles:Profile",
632
+ "columnType": "UUID"
633
+ }
634
+ ],
635
+ "methods": [
636
+ "getPayload",
637
+ "setPayload"
638
+ ],
639
+ "surfaces": [
640
+ {
641
+ "kind": "api",
642
+ "name": "supportcaseevents.list",
643
+ "operation": "list",
644
+ "objectName": "@happyvertical/smrt-support:SupportCaseEvent",
645
+ "path": "/supportcaseevents",
646
+ "method": "GET"
647
+ },
648
+ {
649
+ "kind": "api",
650
+ "name": "supportcaseevents.get",
651
+ "operation": "get",
652
+ "objectName": "@happyvertical/smrt-support:SupportCaseEvent",
653
+ "path": "/supportcaseevents/[id]",
654
+ "method": "GET"
655
+ },
656
+ {
657
+ "kind": "cli",
658
+ "name": "supportcaseevent_list",
659
+ "operation": "list",
660
+ "objectName": "@happyvertical/smrt-support:SupportCaseEvent"
661
+ },
662
+ {
663
+ "kind": "cli",
664
+ "name": "supportcaseevent_get",
665
+ "operation": "get",
666
+ "objectName": "@happyvertical/smrt-support:SupportCaseEvent"
667
+ },
668
+ {
669
+ "kind": "mcp",
670
+ "name": "supportcaseevent_list",
671
+ "operation": "list",
672
+ "objectName": "@happyvertical/smrt-support:SupportCaseEvent"
673
+ },
674
+ {
675
+ "kind": "mcp",
676
+ "name": "supportcaseevent_get",
677
+ "operation": "get",
678
+ "objectName": "@happyvertical/smrt-support:SupportCaseEvent"
679
+ }
680
+ ],
681
+ "relationshipFeatures": [
682
+ "crossPackageRef",
683
+ "foreignKey",
684
+ "uuidColumns"
685
+ ],
686
+ "tags": [],
687
+ "risks": []
688
+ },
689
+ {
690
+ "name": "SupportCaseEventCollection",
691
+ "qualifiedName": "@happyvertical/smrt-support:SupportCaseEventCollection",
692
+ "collection": "supportcaseevents",
693
+ "tableName": "support_case_events",
694
+ "packageName": "@happyvertical/smrt-support",
695
+ "extends": "SmrtCollection",
696
+ "fields": [],
697
+ "relationships": [],
698
+ "methods": [
699
+ "forCase"
700
+ ],
701
+ "surfaces": [],
702
+ "relationshipFeatures": [
703
+ "uuidColumns"
704
+ ],
705
+ "tags": [],
706
+ "risks": []
707
+ },
708
+ {
709
+ "name": "SupportCase",
710
+ "qualifiedName": "@happyvertical/smrt-support:SupportCase",
711
+ "collection": "supportcases",
712
+ "tableName": "support_cases",
713
+ "packageName": "@happyvertical/smrt-support",
714
+ "extends": "SmrtObject",
715
+ "fields": [
716
+ {
717
+ "name": "tenantId",
718
+ "type": "text",
719
+ "required": false,
720
+ "columnType": "UUID"
721
+ },
722
+ {
723
+ "name": "caseNumber",
724
+ "type": "text",
725
+ "required": false,
726
+ "columnType": "TEXT"
727
+ },
728
+ {
729
+ "name": "subject",
730
+ "type": "text",
731
+ "required": false,
732
+ "columnType": "TEXT"
733
+ },
734
+ {
735
+ "name": "description",
736
+ "type": "text",
737
+ "required": false,
738
+ "columnType": "TEXT"
739
+ },
740
+ {
741
+ "name": "status",
742
+ "type": "text",
743
+ "required": false,
744
+ "columnType": "TEXT"
745
+ },
746
+ {
747
+ "name": "priority",
748
+ "type": "text",
749
+ "required": false,
750
+ "columnType": "TEXT"
751
+ },
752
+ {
753
+ "name": "severity",
754
+ "type": "text",
755
+ "required": false,
756
+ "columnType": "TEXT"
757
+ },
758
+ {
759
+ "name": "category",
760
+ "type": "text",
761
+ "required": false,
762
+ "columnType": "TEXT"
763
+ },
764
+ {
765
+ "name": "sensitive",
766
+ "type": "boolean",
767
+ "required": false,
768
+ "columnType": "BOOLEAN"
769
+ },
770
+ {
771
+ "name": "channelKind",
772
+ "type": "text",
773
+ "required": false,
774
+ "columnType": "TEXT"
775
+ },
776
+ {
777
+ "name": "clientProfileId",
778
+ "type": "crossPackageRef",
779
+ "required": false,
780
+ "related": "@happyvertical/smrt-profiles:Profile",
781
+ "columnType": "UUID"
782
+ },
783
+ {
784
+ "name": "openedByProfileId",
785
+ "type": "crossPackageRef",
786
+ "required": false,
787
+ "related": "@happyvertical/smrt-profiles:Profile",
788
+ "columnType": "UUID"
789
+ },
790
+ {
791
+ "name": "projectId",
792
+ "type": "text",
793
+ "required": false,
794
+ "columnType": "TEXT"
795
+ },
796
+ {
797
+ "name": "bindingId",
798
+ "type": "foreignKey",
799
+ "required": false,
800
+ "related": "SupportChannelBinding",
801
+ "columnType": "UUID"
802
+ },
803
+ {
804
+ "name": "threadKey",
805
+ "type": "text",
806
+ "required": false,
807
+ "columnType": "TEXT"
808
+ },
809
+ {
810
+ "name": "planId",
811
+ "type": "foreignKey",
812
+ "required": false,
813
+ "related": "SupportPlan",
814
+ "columnType": "UUID"
815
+ },
816
+ {
817
+ "name": "planSnapshot",
818
+ "type": "text",
819
+ "required": false,
820
+ "columnType": "TEXT"
821
+ },
822
+ {
823
+ "name": "assignedSpecialistId",
824
+ "type": "foreignKey",
825
+ "required": false,
826
+ "related": "SupportSpecialist",
827
+ "columnType": "UUID"
828
+ },
829
+ {
830
+ "name": "assignedAt",
831
+ "type": "datetime",
832
+ "required": false,
833
+ "columnType": "TIMESTAMP"
834
+ },
835
+ {
836
+ "name": "preferredSpecialistId",
837
+ "type": "foreignKey",
838
+ "required": false,
839
+ "related": "SupportSpecialist",
840
+ "columnType": "UUID"
841
+ },
842
+ {
843
+ "name": "escalationLevel",
844
+ "type": "integer",
845
+ "required": false,
846
+ "columnType": "INTEGER"
847
+ },
848
+ {
849
+ "name": "escalatedAt",
850
+ "type": "datetime",
851
+ "required": false,
852
+ "columnType": "TIMESTAMP"
853
+ },
854
+ {
855
+ "name": "acknowledgedAt",
856
+ "type": "datetime",
857
+ "required": false,
858
+ "columnType": "TIMESTAMP"
859
+ },
860
+ {
861
+ "name": "firstRespondedAt",
862
+ "type": "datetime",
863
+ "required": false,
864
+ "columnType": "TIMESTAMP"
865
+ },
866
+ {
867
+ "name": "humanRequestedAt",
868
+ "type": "datetime",
869
+ "required": false,
870
+ "columnType": "TIMESTAMP"
871
+ },
872
+ {
873
+ "name": "resolvedAt",
874
+ "type": "datetime",
875
+ "required": false,
876
+ "columnType": "TIMESTAMP"
877
+ },
878
+ {
879
+ "name": "resolvedByProfileId",
880
+ "type": "crossPackageRef",
881
+ "required": false,
882
+ "related": "@happyvertical/smrt-profiles:Profile",
883
+ "columnType": "UUID"
884
+ },
885
+ {
886
+ "name": "resolutionKind",
887
+ "type": "text",
888
+ "required": false,
889
+ "columnType": "TEXT"
890
+ },
891
+ {
892
+ "name": "resolutionSummary",
893
+ "type": "text",
894
+ "required": false,
895
+ "columnType": "TEXT"
896
+ },
897
+ {
898
+ "name": "closedAt",
899
+ "type": "datetime",
900
+ "required": false,
901
+ "columnType": "TIMESTAMP"
902
+ },
903
+ {
904
+ "name": "reopenCount",
905
+ "type": "integer",
906
+ "required": false,
907
+ "columnType": "INTEGER"
908
+ },
909
+ {
910
+ "name": "lastReopenedAt",
911
+ "type": "datetime",
912
+ "required": false,
913
+ "columnType": "TIMESTAMP"
914
+ },
915
+ {
916
+ "name": "aiEnabled",
917
+ "type": "boolean",
918
+ "required": false,
919
+ "columnType": "BOOLEAN"
920
+ },
921
+ {
922
+ "name": "metadata",
923
+ "type": "text",
924
+ "required": false,
925
+ "columnType": "TEXT"
926
+ }
927
+ ],
928
+ "relationships": [
929
+ {
930
+ "name": "clientProfileId",
931
+ "type": "crossPackageRef",
932
+ "required": false,
933
+ "related": "@happyvertical/smrt-profiles:Profile",
934
+ "columnType": "UUID"
935
+ },
936
+ {
937
+ "name": "openedByProfileId",
938
+ "type": "crossPackageRef",
939
+ "required": false,
940
+ "related": "@happyvertical/smrt-profiles:Profile",
941
+ "columnType": "UUID"
942
+ },
943
+ {
944
+ "name": "bindingId",
945
+ "type": "foreignKey",
946
+ "required": false,
947
+ "related": "SupportChannelBinding",
948
+ "columnType": "UUID"
949
+ },
950
+ {
951
+ "name": "planId",
952
+ "type": "foreignKey",
953
+ "required": false,
954
+ "related": "SupportPlan",
955
+ "columnType": "UUID"
956
+ },
957
+ {
958
+ "name": "assignedSpecialistId",
959
+ "type": "foreignKey",
960
+ "required": false,
961
+ "related": "SupportSpecialist",
962
+ "columnType": "UUID"
963
+ },
964
+ {
965
+ "name": "preferredSpecialistId",
966
+ "type": "foreignKey",
967
+ "required": false,
968
+ "related": "SupportSpecialist",
969
+ "columnType": "UUID"
970
+ },
971
+ {
972
+ "name": "resolvedByProfileId",
973
+ "type": "crossPackageRef",
974
+ "required": false,
975
+ "related": "@happyvertical/smrt-profiles:Profile",
976
+ "columnType": "UUID"
977
+ }
978
+ ],
979
+ "methods": [
980
+ "getMetadata",
981
+ "getPlanSnapshot",
982
+ "initialize",
983
+ "isOpen",
984
+ "save",
985
+ "setMetadata",
986
+ "setPlanSnapshot",
987
+ "updateMetadata"
988
+ ],
989
+ "surfaces": [
990
+ {
991
+ "kind": "api",
992
+ "name": "supportcases.list",
993
+ "operation": "list",
994
+ "objectName": "@happyvertical/smrt-support:SupportCase",
995
+ "path": "/supportcases",
996
+ "method": "GET"
997
+ },
998
+ {
999
+ "kind": "api",
1000
+ "name": "supportcases.get",
1001
+ "operation": "get",
1002
+ "objectName": "@happyvertical/smrt-support:SupportCase",
1003
+ "path": "/supportcases/[id]",
1004
+ "method": "GET"
1005
+ },
1006
+ {
1007
+ "kind": "cli",
1008
+ "name": "supportcase_list",
1009
+ "operation": "list",
1010
+ "objectName": "@happyvertical/smrt-support:SupportCase"
1011
+ },
1012
+ {
1013
+ "kind": "cli",
1014
+ "name": "supportcase_get",
1015
+ "operation": "get",
1016
+ "objectName": "@happyvertical/smrt-support:SupportCase"
1017
+ },
1018
+ {
1019
+ "kind": "mcp",
1020
+ "name": "supportcase_list",
1021
+ "operation": "list",
1022
+ "objectName": "@happyvertical/smrt-support:SupportCase"
1023
+ },
1024
+ {
1025
+ "kind": "mcp",
1026
+ "name": "supportcase_get",
1027
+ "operation": "get",
1028
+ "objectName": "@happyvertical/smrt-support:SupportCase"
1029
+ }
1030
+ ],
1031
+ "relationshipFeatures": [
1032
+ "crossPackageRef",
1033
+ "foreignKey",
1034
+ "uuidColumns"
1035
+ ],
1036
+ "tags": [],
1037
+ "risks": []
1038
+ },
1039
+ {
1040
+ "name": "SupportCaseCollection",
1041
+ "qualifiedName": "@happyvertical/smrt-support:SupportCaseCollection",
1042
+ "collection": "supportcases",
1043
+ "tableName": "support_cases",
1044
+ "packageName": "@happyvertical/smrt-support",
1045
+ "extends": "SmrtCollection",
1046
+ "fields": [],
1047
+ "relationships": [],
1048
+ "methods": [
1049
+ "findOpenByThreadKey",
1050
+ "findQueue"
1051
+ ],
1052
+ "surfaces": [],
1053
+ "relationshipFeatures": [
1054
+ "uuidColumns"
1055
+ ],
1056
+ "tags": [],
1057
+ "risks": []
1058
+ },
1059
+ {
1060
+ "name": "SupportChannelBinding",
1061
+ "qualifiedName": "@happyvertical/smrt-support:SupportChannelBinding",
1062
+ "collection": "supportchannelbindings",
1063
+ "tableName": "support_channel_bindings",
1064
+ "packageName": "@happyvertical/smrt-support",
1065
+ "extends": "SmrtObject",
1066
+ "fields": [
1067
+ {
1068
+ "name": "tenantId",
1069
+ "type": "text",
1070
+ "required": false,
1071
+ "columnType": "UUID"
1072
+ },
1073
+ {
1074
+ "name": "name",
1075
+ "type": "text",
1076
+ "required": false,
1077
+ "columnType": "TEXT"
1078
+ },
1079
+ {
1080
+ "name": "bindingKind",
1081
+ "type": "text",
1082
+ "required": false,
1083
+ "columnType": "TEXT"
1084
+ },
1085
+ {
1086
+ "name": "channelKind",
1087
+ "type": "text",
1088
+ "required": false,
1089
+ "columnType": "TEXT"
1090
+ },
1091
+ {
1092
+ "name": "targetType",
1093
+ "type": "text",
1094
+ "required": false,
1095
+ "columnType": "TEXT"
1096
+ },
1097
+ {
1098
+ "name": "targetId",
1099
+ "type": "text",
1100
+ "required": false,
1101
+ "columnType": "TEXT"
1102
+ },
1103
+ {
1104
+ "name": "clientProfileId",
1105
+ "type": "crossPackageRef",
1106
+ "required": false,
1107
+ "related": "@happyvertical/smrt-profiles:Profile",
1108
+ "columnType": "UUID"
1109
+ },
1110
+ {
1111
+ "name": "projectId",
1112
+ "type": "text",
1113
+ "required": false,
1114
+ "columnType": "TEXT"
1115
+ },
1116
+ {
1117
+ "name": "planId",
1118
+ "type": "foreignKey",
1119
+ "required": false,
1120
+ "related": "SupportPlan",
1121
+ "columnType": "UUID"
1122
+ },
1123
+ {
1124
+ "name": "enabled",
1125
+ "type": "boolean",
1126
+ "required": false,
1127
+ "columnType": "BOOLEAN"
1128
+ },
1129
+ {
1130
+ "name": "selfAddresses",
1131
+ "type": "text",
1132
+ "required": false,
1133
+ "columnType": "TEXT"
1134
+ },
1135
+ {
1136
+ "name": "metadata",
1137
+ "type": "text",
1138
+ "required": false,
1139
+ "columnType": "TEXT"
1140
+ }
1141
+ ],
1142
+ "relationships": [
1143
+ {
1144
+ "name": "clientProfileId",
1145
+ "type": "crossPackageRef",
1146
+ "required": false,
1147
+ "related": "@happyvertical/smrt-profiles:Profile",
1148
+ "columnType": "UUID"
1149
+ },
1150
+ {
1151
+ "name": "planId",
1152
+ "type": "foreignKey",
1153
+ "required": false,
1154
+ "related": "SupportPlan",
1155
+ "columnType": "UUID"
1156
+ }
1157
+ ],
1158
+ "methods": [
1159
+ "getMetadata",
1160
+ "getSelfAddresses",
1161
+ "setMetadata",
1162
+ "setSelfAddresses"
1163
+ ],
1164
+ "surfaces": [
1165
+ {
1166
+ "kind": "api",
1167
+ "name": "supportchannelbindings.list",
1168
+ "operation": "list",
1169
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding",
1170
+ "path": "/supportchannelbindings",
1171
+ "method": "GET"
1172
+ },
1173
+ {
1174
+ "kind": "api",
1175
+ "name": "supportchannelbindings.get",
1176
+ "operation": "get",
1177
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding",
1178
+ "path": "/supportchannelbindings/[id]",
1179
+ "method": "GET"
1180
+ },
1181
+ {
1182
+ "kind": "api",
1183
+ "name": "supportchannelbindings.create",
1184
+ "operation": "create",
1185
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding",
1186
+ "path": "/supportchannelbindings",
1187
+ "method": "POST"
1188
+ },
1189
+ {
1190
+ "kind": "api",
1191
+ "name": "supportchannelbindings.update",
1192
+ "operation": "update",
1193
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding",
1194
+ "path": "/supportchannelbindings/[id]",
1195
+ "method": "PATCH"
1196
+ },
1197
+ {
1198
+ "kind": "api",
1199
+ "name": "supportchannelbindings.delete",
1200
+ "operation": "delete",
1201
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding",
1202
+ "path": "/supportchannelbindings/[id]",
1203
+ "method": "DELETE"
1204
+ },
1205
+ {
1206
+ "kind": "cli",
1207
+ "name": "supportchannelbinding_list",
1208
+ "operation": "list",
1209
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding"
1210
+ },
1211
+ {
1212
+ "kind": "cli",
1213
+ "name": "supportchannelbinding_get",
1214
+ "operation": "get",
1215
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding"
1216
+ },
1217
+ {
1218
+ "kind": "mcp",
1219
+ "name": "supportchannelbinding_list",
1220
+ "operation": "list",
1221
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding"
1222
+ },
1223
+ {
1224
+ "kind": "mcp",
1225
+ "name": "supportchannelbinding_get",
1226
+ "operation": "get",
1227
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding"
1228
+ }
1229
+ ],
1230
+ "relationshipFeatures": [
1231
+ "crossPackageRef",
1232
+ "foreignKey",
1233
+ "uuidColumns"
1234
+ ],
1235
+ "tags": [],
1236
+ "risks": []
1237
+ },
1238
+ {
1239
+ "name": "SupportChannelBindingCollection",
1240
+ "qualifiedName": "@happyvertical/smrt-support:SupportChannelBindingCollection",
1241
+ "collection": "supportchannelbindings",
1242
+ "tableName": "support_channel_bindings",
1243
+ "packageName": "@happyvertical/smrt-support",
1244
+ "extends": "SmrtCollection",
1245
+ "fields": [],
1246
+ "relationships": [],
1247
+ "methods": [
1248
+ "findForTarget"
1249
+ ],
1250
+ "surfaces": [],
1251
+ "relationshipFeatures": [
1252
+ "uuidColumns"
1253
+ ],
1254
+ "tags": [],
1255
+ "risks": []
1256
+ },
1257
+ {
1258
+ "name": "SupportCompensationPlan",
1259
+ "qualifiedName": "@happyvertical/smrt-support:SupportCompensationPlan",
1260
+ "collection": "supportcompensationplans",
1261
+ "tableName": "support_compensation_plans",
1262
+ "packageName": "@happyvertical/smrt-support",
1263
+ "extends": "SmrtObject",
1264
+ "fields": [
1265
+ {
1266
+ "name": "tenantId",
1267
+ "type": "text",
1268
+ "required": false,
1269
+ "columnType": "UUID"
1270
+ },
1271
+ {
1272
+ "name": "specialistId",
1273
+ "type": "foreignKey",
1274
+ "required": false,
1275
+ "related": "SupportSpecialist",
1276
+ "columnType": "UUID"
1277
+ },
1278
+ {
1279
+ "name": "name",
1280
+ "type": "text",
1281
+ "required": false,
1282
+ "columnType": "TEXT"
1283
+ },
1284
+ {
1285
+ "name": "hourlyRate",
1286
+ "type": "decimal",
1287
+ "required": false,
1288
+ "columnType": "REAL"
1289
+ },
1290
+ {
1291
+ "name": "currency",
1292
+ "type": "text",
1293
+ "required": false,
1294
+ "columnType": "TEXT"
1295
+ },
1296
+ {
1297
+ "name": "effectiveFrom",
1298
+ "type": "datetime",
1299
+ "required": false,
1300
+ "columnType": "TIMESTAMP"
1301
+ },
1302
+ {
1303
+ "name": "effectiveTo",
1304
+ "type": "datetime",
1305
+ "required": false,
1306
+ "columnType": "TIMESTAMP"
1307
+ },
1308
+ {
1309
+ "name": "status",
1310
+ "type": "text",
1311
+ "required": false,
1312
+ "columnType": "TEXT"
1313
+ },
1314
+ {
1315
+ "name": "terms",
1316
+ "type": "text",
1317
+ "required": false,
1318
+ "columnType": "TEXT"
1319
+ }
1320
+ ],
1321
+ "relationships": [
1322
+ {
1323
+ "name": "specialistId",
1324
+ "type": "foreignKey",
1325
+ "required": false,
1326
+ "related": "SupportSpecialist",
1327
+ "columnType": "UUID"
1328
+ }
1329
+ ],
1330
+ "methods": [
1331
+ "getTerms",
1332
+ "isEffectiveAt",
1333
+ "setTerms"
1334
+ ],
1335
+ "surfaces": [
1336
+ {
1337
+ "kind": "api",
1338
+ "name": "supportcompensationplans.list",
1339
+ "operation": "list",
1340
+ "objectName": "@happyvertical/smrt-support:SupportCompensationPlan",
1341
+ "path": "/supportcompensationplans",
1342
+ "method": "GET"
1343
+ },
1344
+ {
1345
+ "kind": "api",
1346
+ "name": "supportcompensationplans.get",
1347
+ "operation": "get",
1348
+ "objectName": "@happyvertical/smrt-support:SupportCompensationPlan",
1349
+ "path": "/supportcompensationplans/[id]",
1350
+ "method": "GET"
1351
+ },
1352
+ {
1353
+ "kind": "cli",
1354
+ "name": "supportcompensationplan_list",
1355
+ "operation": "list",
1356
+ "objectName": "@happyvertical/smrt-support:SupportCompensationPlan"
1357
+ },
1358
+ {
1359
+ "kind": "cli",
1360
+ "name": "supportcompensationplan_get",
1361
+ "operation": "get",
1362
+ "objectName": "@happyvertical/smrt-support:SupportCompensationPlan"
1363
+ },
1364
+ {
1365
+ "kind": "mcp",
1366
+ "name": "supportcompensationplan_list",
1367
+ "operation": "list",
1368
+ "objectName": "@happyvertical/smrt-support:SupportCompensationPlan"
1369
+ },
1370
+ {
1371
+ "kind": "mcp",
1372
+ "name": "supportcompensationplan_get",
1373
+ "operation": "get",
1374
+ "objectName": "@happyvertical/smrt-support:SupportCompensationPlan"
1375
+ }
1376
+ ],
1377
+ "relationshipFeatures": [
1378
+ "foreignKey",
1379
+ "uuidColumns"
1380
+ ],
1381
+ "tags": [],
1382
+ "risks": []
1383
+ },
1384
+ {
1385
+ "name": "SupportCompensationPlanCollection",
1386
+ "qualifiedName": "@happyvertical/smrt-support:SupportCompensationPlanCollection",
1387
+ "collection": "supportcompensationplans",
1388
+ "tableName": "support_compensation_plans",
1389
+ "packageName": "@happyvertical/smrt-support",
1390
+ "extends": "SmrtCollection",
1391
+ "fields": [],
1392
+ "relationships": [],
1393
+ "methods": [
1394
+ "resolveForSpecialist"
1395
+ ],
1396
+ "surfaces": [],
1397
+ "relationshipFeatures": [
1398
+ "uuidColumns"
1399
+ ],
1400
+ "tags": [],
1401
+ "risks": []
1402
+ },
1403
+ {
1404
+ "name": "SupportInteraction",
1405
+ "qualifiedName": "@happyvertical/smrt-support:SupportInteraction",
1406
+ "collection": "supportinteractions",
1407
+ "tableName": "support_interactions",
1408
+ "packageName": "@happyvertical/smrt-support",
1409
+ "extends": "SmrtObject",
1410
+ "fields": [
1411
+ {
1412
+ "name": "tenantId",
1413
+ "type": "text",
1414
+ "required": false,
1415
+ "columnType": "UUID"
1416
+ },
1417
+ {
1418
+ "name": "caseId",
1419
+ "type": "foreignKey",
1420
+ "required": true,
1421
+ "related": "SupportCase",
1422
+ "columnType": "UUID"
1423
+ },
1424
+ {
1425
+ "name": "direction",
1426
+ "type": "text",
1427
+ "required": false,
1428
+ "columnType": "TEXT"
1429
+ },
1430
+ {
1431
+ "name": "channelKind",
1432
+ "type": "text",
1433
+ "required": false,
1434
+ "columnType": "TEXT"
1435
+ },
1436
+ {
1437
+ "name": "actorKind",
1438
+ "type": "text",
1439
+ "required": false,
1440
+ "columnType": "TEXT"
1441
+ },
1442
+ {
1443
+ "name": "authorProfileId",
1444
+ "type": "crossPackageRef",
1445
+ "required": false,
1446
+ "related": "@happyvertical/smrt-profiles:Profile",
1447
+ "columnType": "UUID"
1448
+ },
1449
+ {
1450
+ "name": "occurredAt",
1451
+ "type": "datetime",
1452
+ "required": false,
1453
+ "columnType": "TIMESTAMP"
1454
+ },
1455
+ {
1456
+ "name": "body",
1457
+ "type": "text",
1458
+ "required": false,
1459
+ "columnType": "TEXT"
1460
+ },
1461
+ {
1462
+ "name": "sourceType",
1463
+ "type": "text",
1464
+ "required": false,
1465
+ "columnType": "TEXT"
1466
+ },
1467
+ {
1468
+ "name": "sourceId",
1469
+ "type": "text",
1470
+ "required": false,
1471
+ "columnType": "TEXT"
1472
+ },
1473
+ {
1474
+ "name": "sourceKey",
1475
+ "type": "text",
1476
+ "required": false,
1477
+ "columnType": "TEXT"
1478
+ },
1479
+ {
1480
+ "name": "rfcMessageId",
1481
+ "type": "text",
1482
+ "required": false,
1483
+ "columnType": "TEXT"
1484
+ },
1485
+ {
1486
+ "name": "metadata",
1487
+ "type": "text",
1488
+ "required": false,
1489
+ "columnType": "TEXT"
1490
+ }
1491
+ ],
1492
+ "relationships": [
1493
+ {
1494
+ "name": "caseId",
1495
+ "type": "foreignKey",
1496
+ "required": true,
1497
+ "related": "SupportCase",
1498
+ "columnType": "UUID"
1499
+ },
1500
+ {
1501
+ "name": "authorProfileId",
1502
+ "type": "crossPackageRef",
1503
+ "required": false,
1504
+ "related": "@happyvertical/smrt-profiles:Profile",
1505
+ "columnType": "UUID"
1506
+ }
1507
+ ],
1508
+ "methods": [
1509
+ "getMetadata",
1510
+ "setMetadata"
1511
+ ],
1512
+ "surfaces": [
1513
+ {
1514
+ "kind": "api",
1515
+ "name": "supportinteractions.list",
1516
+ "operation": "list",
1517
+ "objectName": "@happyvertical/smrt-support:SupportInteraction",
1518
+ "path": "/supportinteractions",
1519
+ "method": "GET"
1520
+ },
1521
+ {
1522
+ "kind": "api",
1523
+ "name": "supportinteractions.get",
1524
+ "operation": "get",
1525
+ "objectName": "@happyvertical/smrt-support:SupportInteraction",
1526
+ "path": "/supportinteractions/[id]",
1527
+ "method": "GET"
1528
+ },
1529
+ {
1530
+ "kind": "cli",
1531
+ "name": "supportinteraction_list",
1532
+ "operation": "list",
1533
+ "objectName": "@happyvertical/smrt-support:SupportInteraction"
1534
+ },
1535
+ {
1536
+ "kind": "cli",
1537
+ "name": "supportinteraction_get",
1538
+ "operation": "get",
1539
+ "objectName": "@happyvertical/smrt-support:SupportInteraction"
1540
+ },
1541
+ {
1542
+ "kind": "mcp",
1543
+ "name": "supportinteraction_list",
1544
+ "operation": "list",
1545
+ "objectName": "@happyvertical/smrt-support:SupportInteraction"
1546
+ },
1547
+ {
1548
+ "kind": "mcp",
1549
+ "name": "supportinteraction_get",
1550
+ "operation": "get",
1551
+ "objectName": "@happyvertical/smrt-support:SupportInteraction"
1552
+ }
1553
+ ],
1554
+ "relationshipFeatures": [
1555
+ "crossPackageRef",
1556
+ "foreignKey",
1557
+ "uuidColumns"
1558
+ ],
1559
+ "tags": [],
1560
+ "risks": []
1561
+ },
1562
+ {
1563
+ "name": "SupportInteractionCollection",
1564
+ "qualifiedName": "@happyvertical/smrt-support:SupportInteractionCollection",
1565
+ "collection": "supportinteractions",
1566
+ "tableName": "support_interactions",
1567
+ "packageName": "@happyvertical/smrt-support",
1568
+ "extends": "SmrtCollection",
1569
+ "fields": [],
1570
+ "relationships": [],
1571
+ "methods": [
1572
+ "byRfcMessageId",
1573
+ "bySourceKey",
1574
+ "forCase"
1575
+ ],
1576
+ "surfaces": [],
1577
+ "relationshipFeatures": [
1578
+ "uuidColumns"
1579
+ ],
1580
+ "tags": [],
1581
+ "risks": []
1582
+ },
1583
+ {
1584
+ "name": "SupportPlan",
1585
+ "qualifiedName": "@happyvertical/smrt-support:SupportPlan",
1586
+ "collection": "supportplans",
1587
+ "tableName": "support_plans",
1588
+ "packageName": "@happyvertical/smrt-support",
1589
+ "extends": "SmrtObject",
1590
+ "fields": [
1591
+ {
1592
+ "name": "tenantId",
1593
+ "type": "text",
1594
+ "required": false,
1595
+ "columnType": "UUID"
1596
+ },
1597
+ {
1598
+ "name": "planKey",
1599
+ "type": "text",
1600
+ "required": false,
1601
+ "columnType": "TEXT"
1602
+ },
1603
+ {
1604
+ "name": "name",
1605
+ "type": "text",
1606
+ "required": false,
1607
+ "columnType": "TEXT"
1608
+ },
1609
+ {
1610
+ "name": "description",
1611
+ "type": "text",
1612
+ "required": false,
1613
+ "columnType": "TEXT"
1614
+ },
1615
+ {
1616
+ "name": "status",
1617
+ "type": "text",
1618
+ "required": false,
1619
+ "columnType": "TEXT"
1620
+ },
1621
+ {
1622
+ "name": "channels",
1623
+ "type": "text",
1624
+ "required": false,
1625
+ "columnType": "TEXT"
1626
+ },
1627
+ {
1628
+ "name": "timezone",
1629
+ "type": "text",
1630
+ "required": false,
1631
+ "columnType": "TEXT"
1632
+ },
1633
+ {
1634
+ "name": "coverage",
1635
+ "type": "text",
1636
+ "required": false,
1637
+ "columnType": "TEXT"
1638
+ },
1639
+ {
1640
+ "name": "holidays",
1641
+ "type": "text",
1642
+ "required": false,
1643
+ "columnType": "TEXT"
1644
+ },
1645
+ {
1646
+ "name": "severityDefinitions",
1647
+ "type": "text",
1648
+ "required": false,
1649
+ "columnType": "TEXT"
1650
+ },
1651
+ {
1652
+ "name": "targets",
1653
+ "type": "text",
1654
+ "required": false,
1655
+ "columnType": "TEXT"
1656
+ },
1657
+ {
1658
+ "name": "pauseStatuses",
1659
+ "type": "text",
1660
+ "required": false,
1661
+ "columnType": "TEXT"
1662
+ },
1663
+ {
1664
+ "name": "escalationPolicy",
1665
+ "type": "text",
1666
+ "required": false,
1667
+ "columnType": "TEXT"
1668
+ },
1669
+ {
1670
+ "name": "availabilityFeeAmount",
1671
+ "type": "decimal",
1672
+ "required": false,
1673
+ "columnType": "REAL"
1674
+ },
1675
+ {
1676
+ "name": "currency",
1677
+ "type": "text",
1678
+ "required": false,
1679
+ "columnType": "TEXT"
1680
+ },
1681
+ {
1682
+ "name": "includedMinutes",
1683
+ "type": "integer",
1684
+ "required": false,
1685
+ "columnType": "INTEGER"
1686
+ },
1687
+ {
1688
+ "name": "overageHourlyRate",
1689
+ "type": "decimal",
1690
+ "required": false,
1691
+ "columnType": "REAL"
1692
+ },
1693
+ {
1694
+ "name": "onCallHourlyRate",
1695
+ "type": "decimal",
1696
+ "required": false,
1697
+ "columnType": "REAL"
1698
+ },
1699
+ {
1700
+ "name": "timeApprovalPolicy",
1701
+ "type": "text",
1702
+ "required": false,
1703
+ "columnType": "TEXT"
1704
+ },
1705
+ {
1706
+ "name": "subscriptionPlanKey",
1707
+ "type": "text",
1708
+ "required": false,
1709
+ "columnType": "TEXT"
1710
+ },
1711
+ {
1712
+ "name": "metadata",
1713
+ "type": "text",
1714
+ "required": false,
1715
+ "columnType": "TEXT"
1716
+ }
1717
+ ],
1718
+ "relationships": [],
1719
+ "methods": [
1720
+ "getChannels",
1721
+ "getCoverage",
1722
+ "getEscalationPolicy",
1723
+ "getHolidays",
1724
+ "getMetadata",
1725
+ "getPauseStatuses",
1726
+ "getSeverityDefinitions",
1727
+ "getTargets",
1728
+ "getTimeApprovalPolicy",
1729
+ "setChannels",
1730
+ "setCoverage",
1731
+ "setEscalationPolicy",
1732
+ "setHolidays",
1733
+ "setMetadata",
1734
+ "setPauseStatuses",
1735
+ "setSeverityDefinitions",
1736
+ "setTargets",
1737
+ "setTimeApprovalPolicy",
1738
+ "snapshotTerms",
1739
+ "targetsForSeverity"
1740
+ ],
1741
+ "surfaces": [
1742
+ {
1743
+ "kind": "api",
1744
+ "name": "supportplans.list",
1745
+ "operation": "list",
1746
+ "objectName": "@happyvertical/smrt-support:SupportPlan",
1747
+ "path": "/supportplans",
1748
+ "method": "GET"
1749
+ },
1750
+ {
1751
+ "kind": "api",
1752
+ "name": "supportplans.get",
1753
+ "operation": "get",
1754
+ "objectName": "@happyvertical/smrt-support:SupportPlan",
1755
+ "path": "/supportplans/[id]",
1756
+ "method": "GET"
1757
+ },
1758
+ {
1759
+ "kind": "cli",
1760
+ "name": "supportplan_list",
1761
+ "operation": "list",
1762
+ "objectName": "@happyvertical/smrt-support:SupportPlan"
1763
+ },
1764
+ {
1765
+ "kind": "cli",
1766
+ "name": "supportplan_get",
1767
+ "operation": "get",
1768
+ "objectName": "@happyvertical/smrt-support:SupportPlan"
1769
+ },
1770
+ {
1771
+ "kind": "mcp",
1772
+ "name": "supportplan_list",
1773
+ "operation": "list",
1774
+ "objectName": "@happyvertical/smrt-support:SupportPlan"
1775
+ },
1776
+ {
1777
+ "kind": "mcp",
1778
+ "name": "supportplan_get",
1779
+ "operation": "get",
1780
+ "objectName": "@happyvertical/smrt-support:SupportPlan"
1781
+ }
1782
+ ],
1783
+ "relationshipFeatures": [
1784
+ "uuidColumns"
1785
+ ],
1786
+ "tags": [],
1787
+ "risks": []
1788
+ },
1789
+ {
1790
+ "name": "SupportPlanCollection",
1791
+ "qualifiedName": "@happyvertical/smrt-support:SupportPlanCollection",
1792
+ "collection": "supportplans",
1793
+ "tableName": "support_plans",
1794
+ "packageName": "@happyvertical/smrt-support",
1795
+ "extends": "SmrtCollection",
1796
+ "fields": [],
1797
+ "relationships": [],
1798
+ "methods": [
1799
+ "byPlanKey"
1800
+ ],
1801
+ "surfaces": [],
1802
+ "relationshipFeatures": [
1803
+ "uuidColumns"
1804
+ ],
1805
+ "tags": [],
1806
+ "risks": []
1807
+ },
1808
+ {
1809
+ "name": "SupportPolicy",
1810
+ "qualifiedName": "@happyvertical/smrt-support:SupportPolicy",
1811
+ "collection": "supportpolicies",
1812
+ "tableName": "support_policies",
1813
+ "packageName": "@happyvertical/smrt-support",
1814
+ "extends": "SmrtObject",
1815
+ "fields": [
1816
+ {
1817
+ "name": "tenantId",
1818
+ "type": "text",
1819
+ "required": false,
1820
+ "columnType": "UUID"
1821
+ },
1822
+ {
1823
+ "name": "name",
1824
+ "type": "text",
1825
+ "required": false,
1826
+ "columnType": "TEXT"
1827
+ },
1828
+ {
1829
+ "name": "planId",
1830
+ "type": "foreignKey",
1831
+ "required": false,
1832
+ "related": "SupportPlan",
1833
+ "columnType": "UUID"
1834
+ },
1835
+ {
1836
+ "name": "projectId",
1837
+ "type": "text",
1838
+ "required": false,
1839
+ "columnType": "TEXT"
1840
+ },
1841
+ {
1842
+ "name": "enabled",
1843
+ "type": "boolean",
1844
+ "required": false,
1845
+ "columnType": "BOOLEAN"
1846
+ },
1847
+ {
1848
+ "name": "autoAcknowledge",
1849
+ "type": "boolean",
1850
+ "required": false,
1851
+ "columnType": "BOOLEAN"
1852
+ },
1853
+ {
1854
+ "name": "autoClassify",
1855
+ "type": "boolean",
1856
+ "required": false,
1857
+ "columnType": "BOOLEAN"
1858
+ },
1859
+ {
1860
+ "name": "autoAnswer",
1861
+ "type": "boolean",
1862
+ "required": false,
1863
+ "columnType": "BOOLEAN"
1864
+ },
1865
+ {
1866
+ "name": "autoTroubleshoot",
1867
+ "type": "boolean",
1868
+ "required": false,
1869
+ "columnType": "BOOLEAN"
1870
+ },
1871
+ {
1872
+ "name": "autoResolve",
1873
+ "type": "boolean",
1874
+ "required": false,
1875
+ "columnType": "BOOLEAN"
1876
+ },
1877
+ {
1878
+ "name": "autoResolveMaxSeverity",
1879
+ "type": "text",
1880
+ "required": false,
1881
+ "columnType": "TEXT"
1882
+ },
1883
+ {
1884
+ "name": "confidenceThreshold",
1885
+ "type": "decimal",
1886
+ "required": false,
1887
+ "columnType": "REAL"
1888
+ },
1889
+ {
1890
+ "name": "maxAutoAttempts",
1891
+ "type": "integer",
1892
+ "required": false,
1893
+ "columnType": "INTEGER"
1894
+ },
1895
+ {
1896
+ "name": "autoSendEmailReplies",
1897
+ "type": "boolean",
1898
+ "required": false,
1899
+ "columnType": "BOOLEAN"
1900
+ },
1901
+ {
1902
+ "name": "sensitiveCategories",
1903
+ "type": "text",
1904
+ "required": false,
1905
+ "columnType": "TEXT"
1906
+ },
1907
+ {
1908
+ "name": "allowedTools",
1909
+ "type": "text",
1910
+ "required": false,
1911
+ "columnType": "TEXT"
1912
+ },
1913
+ {
1914
+ "name": "metadata",
1915
+ "type": "text",
1916
+ "required": false,
1917
+ "columnType": "TEXT"
1918
+ }
1919
+ ],
1920
+ "relationships": [
1921
+ {
1922
+ "name": "planId",
1923
+ "type": "foreignKey",
1924
+ "required": false,
1925
+ "related": "SupportPlan",
1926
+ "columnType": "UUID"
1927
+ }
1928
+ ],
1929
+ "methods": [
1930
+ "getAllowedTools",
1931
+ "getMetadata",
1932
+ "getSensitiveCategories",
1933
+ "scopeRank",
1934
+ "setAllowedTools",
1935
+ "setMetadata",
1936
+ "setSensitiveCategories"
1937
+ ],
1938
+ "surfaces": [
1939
+ {
1940
+ "kind": "api",
1941
+ "name": "supportpolicies.list",
1942
+ "operation": "list",
1943
+ "objectName": "@happyvertical/smrt-support:SupportPolicy",
1944
+ "path": "/supportpolicies",
1945
+ "method": "GET"
1946
+ },
1947
+ {
1948
+ "kind": "api",
1949
+ "name": "supportpolicies.get",
1950
+ "operation": "get",
1951
+ "objectName": "@happyvertical/smrt-support:SupportPolicy",
1952
+ "path": "/supportpolicies/[id]",
1953
+ "method": "GET"
1954
+ },
1955
+ {
1956
+ "kind": "api",
1957
+ "name": "supportpolicies.create",
1958
+ "operation": "create",
1959
+ "objectName": "@happyvertical/smrt-support:SupportPolicy",
1960
+ "path": "/supportpolicies",
1961
+ "method": "POST"
1962
+ },
1963
+ {
1964
+ "kind": "api",
1965
+ "name": "supportpolicies.update",
1966
+ "operation": "update",
1967
+ "objectName": "@happyvertical/smrt-support:SupportPolicy",
1968
+ "path": "/supportpolicies/[id]",
1969
+ "method": "PATCH"
1970
+ },
1971
+ {
1972
+ "kind": "api",
1973
+ "name": "supportpolicies.delete",
1974
+ "operation": "delete",
1975
+ "objectName": "@happyvertical/smrt-support:SupportPolicy",
1976
+ "path": "/supportpolicies/[id]",
1977
+ "method": "DELETE"
1978
+ },
1979
+ {
1980
+ "kind": "cli",
1981
+ "name": "supportpolicy_list",
1982
+ "operation": "list",
1983
+ "objectName": "@happyvertical/smrt-support:SupportPolicy"
1984
+ },
1985
+ {
1986
+ "kind": "cli",
1987
+ "name": "supportpolicy_get",
1988
+ "operation": "get",
1989
+ "objectName": "@happyvertical/smrt-support:SupportPolicy"
1990
+ },
1991
+ {
1992
+ "kind": "mcp",
1993
+ "name": "supportpolicy_list",
1994
+ "operation": "list",
1995
+ "objectName": "@happyvertical/smrt-support:SupportPolicy"
1996
+ },
1997
+ {
1998
+ "kind": "mcp",
1999
+ "name": "supportpolicy_get",
2000
+ "operation": "get",
2001
+ "objectName": "@happyvertical/smrt-support:SupportPolicy"
2002
+ }
2003
+ ],
2004
+ "relationshipFeatures": [
2005
+ "foreignKey",
2006
+ "uuidColumns"
2007
+ ],
2008
+ "tags": [],
2009
+ "risks": []
2010
+ },
2011
+ {
2012
+ "name": "SupportPolicyCollection",
2013
+ "qualifiedName": "@happyvertical/smrt-support:SupportPolicyCollection",
2014
+ "collection": "supportpolicies",
2015
+ "tableName": "support_policies",
2016
+ "packageName": "@happyvertical/smrt-support",
2017
+ "extends": "SmrtCollection",
2018
+ "fields": [],
2019
+ "relationships": [],
2020
+ "methods": [
2021
+ "resolveForScope"
2022
+ ],
2023
+ "surfaces": [],
2024
+ "relationshipFeatures": [
2025
+ "uuidColumns"
2026
+ ],
2027
+ "tags": [],
2028
+ "risks": []
2029
+ },
2030
+ {
2031
+ "name": "SupportServiceTarget",
2032
+ "qualifiedName": "@happyvertical/smrt-support:SupportServiceTarget",
2033
+ "collection": "supportservicetargets",
2034
+ "tableName": "support_service_targets",
2035
+ "packageName": "@happyvertical/smrt-support",
2036
+ "extends": "SmrtObject",
2037
+ "fields": [
2038
+ {
2039
+ "name": "tenantId",
2040
+ "type": "text",
2041
+ "required": false,
2042
+ "columnType": "UUID"
2043
+ },
2044
+ {
2045
+ "name": "caseId",
2046
+ "type": "foreignKey",
2047
+ "required": true,
2048
+ "related": "SupportCase",
2049
+ "columnType": "UUID"
2050
+ },
2051
+ {
2052
+ "name": "targetType",
2053
+ "type": "text",
2054
+ "required": false,
2055
+ "columnType": "TEXT"
2056
+ },
2057
+ {
2058
+ "name": "cycle",
2059
+ "type": "integer",
2060
+ "required": false,
2061
+ "columnType": "INTEGER"
2062
+ },
2063
+ {
2064
+ "name": "severity",
2065
+ "type": "text",
2066
+ "required": false,
2067
+ "columnType": "TEXT"
2068
+ },
2069
+ {
2070
+ "name": "baseMinutes",
2071
+ "type": "integer",
2072
+ "required": false,
2073
+ "columnType": "INTEGER"
2074
+ },
2075
+ {
2076
+ "name": "startedAt",
2077
+ "type": "datetime",
2078
+ "required": false,
2079
+ "columnType": "TIMESTAMP"
2080
+ },
2081
+ {
2082
+ "name": "dueAt",
2083
+ "type": "datetime",
2084
+ "required": false,
2085
+ "columnType": "TIMESTAMP"
2086
+ },
2087
+ {
2088
+ "name": "status",
2089
+ "type": "text",
2090
+ "required": false,
2091
+ "columnType": "TEXT"
2092
+ },
2093
+ {
2094
+ "name": "pausedAt",
2095
+ "type": "datetime",
2096
+ "required": false,
2097
+ "columnType": "TIMESTAMP"
2098
+ },
2099
+ {
2100
+ "name": "pausedTotalSeconds",
2101
+ "type": "integer",
2102
+ "required": false,
2103
+ "columnType": "INTEGER"
2104
+ },
2105
+ {
2106
+ "name": "satisfiedAt",
2107
+ "type": "datetime",
2108
+ "required": false,
2109
+ "columnType": "TIMESTAMP"
2110
+ },
2111
+ {
2112
+ "name": "breachedAt",
2113
+ "type": "datetime",
2114
+ "required": false,
2115
+ "columnType": "TIMESTAMP"
2116
+ },
2117
+ {
2118
+ "name": "cancelledAt",
2119
+ "type": "datetime",
2120
+ "required": false,
2121
+ "columnType": "TIMESTAMP"
2122
+ },
2123
+ {
2124
+ "name": "escalationJobId",
2125
+ "type": "text",
2126
+ "required": false,
2127
+ "columnType": "TEXT"
2128
+ },
2129
+ {
2130
+ "name": "metadata",
2131
+ "type": "text",
2132
+ "required": false,
2133
+ "columnType": "TEXT"
2134
+ }
2135
+ ],
2136
+ "relationships": [
2137
+ {
2138
+ "name": "caseId",
2139
+ "type": "foreignKey",
2140
+ "required": true,
2141
+ "related": "SupportCase",
2142
+ "columnType": "UUID"
2143
+ }
2144
+ ],
2145
+ "methods": [
2146
+ "checkAndEscalate",
2147
+ "getMetadata",
2148
+ "isRunning",
2149
+ "setMetadata"
2150
+ ],
2151
+ "surfaces": [
2152
+ {
2153
+ "kind": "api",
2154
+ "name": "supportservicetargets.list",
2155
+ "operation": "list",
2156
+ "objectName": "@happyvertical/smrt-support:SupportServiceTarget",
2157
+ "path": "/supportservicetargets",
2158
+ "method": "GET"
2159
+ },
2160
+ {
2161
+ "kind": "api",
2162
+ "name": "supportservicetargets.get",
2163
+ "operation": "get",
2164
+ "objectName": "@happyvertical/smrt-support:SupportServiceTarget",
2165
+ "path": "/supportservicetargets/[id]",
2166
+ "method": "GET"
2167
+ },
2168
+ {
2169
+ "kind": "cli",
2170
+ "name": "supportservicetarget_list",
2171
+ "operation": "list",
2172
+ "objectName": "@happyvertical/smrt-support:SupportServiceTarget"
2173
+ },
2174
+ {
2175
+ "kind": "cli",
2176
+ "name": "supportservicetarget_get",
2177
+ "operation": "get",
2178
+ "objectName": "@happyvertical/smrt-support:SupportServiceTarget"
2179
+ },
2180
+ {
2181
+ "kind": "mcp",
2182
+ "name": "supportservicetarget_list",
2183
+ "operation": "list",
2184
+ "objectName": "@happyvertical/smrt-support:SupportServiceTarget"
2185
+ },
2186
+ {
2187
+ "kind": "mcp",
2188
+ "name": "supportservicetarget_get",
2189
+ "operation": "get",
2190
+ "objectName": "@happyvertical/smrt-support:SupportServiceTarget"
2191
+ }
2192
+ ],
2193
+ "relationshipFeatures": [
2194
+ "foreignKey",
2195
+ "uuidColumns"
2196
+ ],
2197
+ "tags": [],
2198
+ "risks": []
2199
+ },
2200
+ {
2201
+ "name": "SupportServiceTargetCollection",
2202
+ "qualifiedName": "@happyvertical/smrt-support:SupportServiceTargetCollection",
2203
+ "collection": "supportservicetargets",
2204
+ "tableName": "support_service_targets",
2205
+ "packageName": "@happyvertical/smrt-support",
2206
+ "extends": "SmrtCollection",
2207
+ "fields": [],
2208
+ "relationships": [],
2209
+ "methods": [
2210
+ "activeTarget",
2211
+ "forCase"
2212
+ ],
2213
+ "surfaces": [],
2214
+ "relationshipFeatures": [
2215
+ "uuidColumns"
2216
+ ],
2217
+ "tags": [],
2218
+ "risks": []
2219
+ },
2220
+ {
2221
+ "name": "SupportEscalation",
2222
+ "qualifiedName": "@happyvertical/smrt-support:SupportEscalation",
2223
+ "collection": "supportescalations",
2224
+ "tableName": "support_escalations",
2225
+ "packageName": "@happyvertical/smrt-support",
2226
+ "extends": "SmrtObject",
2227
+ "fields": [
2228
+ {
2229
+ "name": "tenantId",
2230
+ "type": "text",
2231
+ "required": false,
2232
+ "columnType": "UUID"
2233
+ },
2234
+ {
2235
+ "name": "caseId",
2236
+ "type": "foreignKey",
2237
+ "required": true,
2238
+ "related": "SupportCase",
2239
+ "columnType": "UUID"
2240
+ },
2241
+ {
2242
+ "name": "level",
2243
+ "type": "integer",
2244
+ "required": false,
2245
+ "columnType": "INTEGER"
2246
+ },
2247
+ {
2248
+ "name": "reason",
2249
+ "type": "text",
2250
+ "required": false,
2251
+ "columnType": "TEXT"
2252
+ },
2253
+ {
2254
+ "name": "targetId",
2255
+ "type": "foreignKey",
2256
+ "required": false,
2257
+ "related": "SupportServiceTarget",
2258
+ "columnType": "UUID"
2259
+ },
2260
+ {
2261
+ "name": "targetType",
2262
+ "type": "text",
2263
+ "required": false,
2264
+ "columnType": "TEXT"
2265
+ },
2266
+ {
2267
+ "name": "action",
2268
+ "type": "text",
2269
+ "required": false,
2270
+ "columnType": "TEXT"
2271
+ },
2272
+ {
2273
+ "name": "fromSpecialistId",
2274
+ "type": "foreignKey",
2275
+ "required": false,
2276
+ "related": "SupportSpecialist",
2277
+ "columnType": "UUID"
2278
+ },
2279
+ {
2280
+ "name": "toSpecialistId",
2281
+ "type": "foreignKey",
2282
+ "required": false,
2283
+ "related": "SupportSpecialist",
2284
+ "columnType": "UUID"
2285
+ },
2286
+ {
2287
+ "name": "notifiedProfileIds",
2288
+ "type": "text",
2289
+ "required": false,
2290
+ "columnType": "TEXT"
2291
+ },
2292
+ {
2293
+ "name": "occurredAt",
2294
+ "type": "datetime",
2295
+ "required": false,
2296
+ "columnType": "TIMESTAMP"
2297
+ },
2298
+ {
2299
+ "name": "note",
2300
+ "type": "text",
2301
+ "required": false,
2302
+ "columnType": "TEXT"
2303
+ }
2304
+ ],
2305
+ "relationships": [
2306
+ {
2307
+ "name": "caseId",
2308
+ "type": "foreignKey",
2309
+ "required": true,
2310
+ "related": "SupportCase",
2311
+ "columnType": "UUID"
2312
+ },
2313
+ {
2314
+ "name": "targetId",
2315
+ "type": "foreignKey",
2316
+ "required": false,
2317
+ "related": "SupportServiceTarget",
2318
+ "columnType": "UUID"
2319
+ },
2320
+ {
2321
+ "name": "fromSpecialistId",
2322
+ "type": "foreignKey",
2323
+ "required": false,
2324
+ "related": "SupportSpecialist",
2325
+ "columnType": "UUID"
2326
+ },
2327
+ {
2328
+ "name": "toSpecialistId",
2329
+ "type": "foreignKey",
2330
+ "required": false,
2331
+ "related": "SupportSpecialist",
2332
+ "columnType": "UUID"
2333
+ }
2334
+ ],
2335
+ "methods": [
2336
+ "getNotifiedProfileIds",
2337
+ "setNotifiedProfileIds"
2338
+ ],
2339
+ "surfaces": [
2340
+ {
2341
+ "kind": "api",
2342
+ "name": "supportescalations.list",
2343
+ "operation": "list",
2344
+ "objectName": "@happyvertical/smrt-support:SupportEscalation",
2345
+ "path": "/supportescalations",
2346
+ "method": "GET"
2347
+ },
2348
+ {
2349
+ "kind": "api",
2350
+ "name": "supportescalations.get",
2351
+ "operation": "get",
2352
+ "objectName": "@happyvertical/smrt-support:SupportEscalation",
2353
+ "path": "/supportescalations/[id]",
2354
+ "method": "GET"
2355
+ },
2356
+ {
2357
+ "kind": "cli",
2358
+ "name": "supportescalation_list",
2359
+ "operation": "list",
2360
+ "objectName": "@happyvertical/smrt-support:SupportEscalation"
2361
+ },
2362
+ {
2363
+ "kind": "cli",
2364
+ "name": "supportescalation_get",
2365
+ "operation": "get",
2366
+ "objectName": "@happyvertical/smrt-support:SupportEscalation"
2367
+ },
2368
+ {
2369
+ "kind": "mcp",
2370
+ "name": "supportescalation_list",
2371
+ "operation": "list",
2372
+ "objectName": "@happyvertical/smrt-support:SupportEscalation"
2373
+ },
2374
+ {
2375
+ "kind": "mcp",
2376
+ "name": "supportescalation_get",
2377
+ "operation": "get",
2378
+ "objectName": "@happyvertical/smrt-support:SupportEscalation"
2379
+ }
2380
+ ],
2381
+ "relationshipFeatures": [
2382
+ "foreignKey",
2383
+ "uuidColumns"
2384
+ ],
2385
+ "tags": [],
2386
+ "risks": []
2387
+ },
2388
+ {
2389
+ "name": "SupportEscalationCollection",
2390
+ "qualifiedName": "@happyvertical/smrt-support:SupportEscalationCollection",
2391
+ "collection": "supportescalations",
2392
+ "tableName": "support_escalations",
2393
+ "packageName": "@happyvertical/smrt-support",
2394
+ "extends": "SmrtCollection",
2395
+ "fields": [],
2396
+ "relationships": [],
2397
+ "methods": [
2398
+ "forCase"
2399
+ ],
2400
+ "surfaces": [],
2401
+ "relationshipFeatures": [
2402
+ "uuidColumns"
2403
+ ],
2404
+ "tags": [],
2405
+ "risks": []
2406
+ },
2407
+ {
2408
+ "name": "SupportCharge",
2409
+ "qualifiedName": "@happyvertical/smrt-support:SupportCharge",
2410
+ "collection": "supportcharges",
2411
+ "tableName": "support_charges",
2412
+ "packageName": "@happyvertical/smrt-support",
2413
+ "extends": "SmrtObject",
2414
+ "fields": [
2415
+ {
2416
+ "name": "tenantId",
2417
+ "type": "text",
2418
+ "required": false,
2419
+ "columnType": "UUID"
2420
+ },
2421
+ {
2422
+ "name": "timeEntryId",
2423
+ "type": "foreignKey",
2424
+ "required": true,
2425
+ "related": "ServiceTimeEntry",
2426
+ "columnType": "UUID"
2427
+ },
2428
+ {
2429
+ "name": "caseId",
2430
+ "type": "foreignKey",
2431
+ "required": false,
2432
+ "related": "SupportCase",
2433
+ "columnType": "UUID"
2434
+ },
2435
+ {
2436
+ "name": "planId",
2437
+ "type": "foreignKey",
2438
+ "required": false,
2439
+ "related": "SupportPlan",
2440
+ "columnType": "UUID"
2441
+ },
2442
+ {
2443
+ "name": "amount",
2444
+ "type": "decimal",
2445
+ "required": false,
2446
+ "columnType": "REAL"
2447
+ },
2448
+ {
2449
+ "name": "currency",
2450
+ "type": "text",
2451
+ "required": false,
2452
+ "columnType": "TEXT"
2453
+ },
2454
+ {
2455
+ "name": "billableSeconds",
2456
+ "type": "integer",
2457
+ "required": false,
2458
+ "columnType": "INTEGER"
2459
+ },
2460
+ {
2461
+ "name": "includedSecondsApplied",
2462
+ "type": "integer",
2463
+ "required": false,
2464
+ "columnType": "INTEGER"
2465
+ },
2466
+ {
2467
+ "name": "rateSnapshot",
2468
+ "type": "text",
2469
+ "required": false,
2470
+ "columnType": "TEXT"
2471
+ },
2472
+ {
2473
+ "name": "status",
2474
+ "type": "text",
2475
+ "required": false,
2476
+ "columnType": "TEXT"
2477
+ },
2478
+ {
2479
+ "name": "finalizedAt",
2480
+ "type": "datetime",
2481
+ "required": false,
2482
+ "columnType": "TIMESTAMP"
2483
+ },
2484
+ {
2485
+ "name": "metadata",
2486
+ "type": "text",
2487
+ "required": false,
2488
+ "columnType": "TEXT"
2489
+ }
2490
+ ],
2491
+ "relationships": [
2492
+ {
2493
+ "name": "timeEntryId",
2494
+ "type": "foreignKey",
2495
+ "required": true,
2496
+ "related": "ServiceTimeEntry",
2497
+ "columnType": "UUID"
2498
+ },
2499
+ {
2500
+ "name": "caseId",
2501
+ "type": "foreignKey",
2502
+ "required": false,
2503
+ "related": "SupportCase",
2504
+ "columnType": "UUID"
2505
+ },
2506
+ {
2507
+ "name": "planId",
2508
+ "type": "foreignKey",
2509
+ "required": false,
2510
+ "related": "SupportPlan",
2511
+ "columnType": "UUID"
2512
+ }
2513
+ ],
2514
+ "methods": [
2515
+ "getRateSnapshot",
2516
+ "setRateSnapshot"
2517
+ ],
2518
+ "surfaces": [
2519
+ {
2520
+ "kind": "api",
2521
+ "name": "supportcharges.list",
2522
+ "operation": "list",
2523
+ "objectName": "@happyvertical/smrt-support:SupportCharge",
2524
+ "path": "/supportcharges",
2525
+ "method": "GET"
2526
+ },
2527
+ {
2528
+ "kind": "api",
2529
+ "name": "supportcharges.get",
2530
+ "operation": "get",
2531
+ "objectName": "@happyvertical/smrt-support:SupportCharge",
2532
+ "path": "/supportcharges/[id]",
2533
+ "method": "GET"
2534
+ },
2535
+ {
2536
+ "kind": "cli",
2537
+ "name": "supportcharge_list",
2538
+ "operation": "list",
2539
+ "objectName": "@happyvertical/smrt-support:SupportCharge"
2540
+ },
2541
+ {
2542
+ "kind": "cli",
2543
+ "name": "supportcharge_get",
2544
+ "operation": "get",
2545
+ "objectName": "@happyvertical/smrt-support:SupportCharge"
2546
+ },
2547
+ {
2548
+ "kind": "mcp",
2549
+ "name": "supportcharge_list",
2550
+ "operation": "list",
2551
+ "objectName": "@happyvertical/smrt-support:SupportCharge"
2552
+ },
2553
+ {
2554
+ "kind": "mcp",
2555
+ "name": "supportcharge_get",
2556
+ "operation": "get",
2557
+ "objectName": "@happyvertical/smrt-support:SupportCharge"
2558
+ }
2559
+ ],
2560
+ "relationshipFeatures": [
2561
+ "foreignKey",
2562
+ "uuidColumns"
2563
+ ],
2564
+ "tags": [],
2565
+ "risks": []
2566
+ },
2567
+ {
2568
+ "name": "SupportChargeCollection",
2569
+ "qualifiedName": "@happyvertical/smrt-support:SupportChargeCollection",
2570
+ "collection": "supportcharges",
2571
+ "tableName": "support_charges",
2572
+ "packageName": "@happyvertical/smrt-support",
2573
+ "extends": "SmrtCollection",
2574
+ "fields": [],
2575
+ "relationships": [],
2576
+ "methods": [
2577
+ "forCase",
2578
+ "forTimeEntry"
2579
+ ],
2580
+ "surfaces": [],
2581
+ "relationshipFeatures": [
2582
+ "uuidColumns"
2583
+ ],
2584
+ "tags": [],
2585
+ "risks": []
2586
+ },
2587
+ {
2588
+ "name": "SupportCompensation",
2589
+ "qualifiedName": "@happyvertical/smrt-support:SupportCompensation",
2590
+ "collection": "supportcompensations",
2591
+ "tableName": "support_compensations",
2592
+ "packageName": "@happyvertical/smrt-support",
2593
+ "extends": "SmrtObject",
2594
+ "fields": [
2595
+ {
2596
+ "name": "tenantId",
2597
+ "type": "text",
2598
+ "required": false,
2599
+ "columnType": "UUID"
2600
+ },
2601
+ {
2602
+ "name": "timeEntryId",
2603
+ "type": "foreignKey",
2604
+ "required": true,
2605
+ "related": "ServiceTimeEntry",
2606
+ "columnType": "UUID"
2607
+ },
2608
+ {
2609
+ "name": "specialistId",
2610
+ "type": "foreignKey",
2611
+ "required": false,
2612
+ "related": "SupportSpecialist",
2613
+ "columnType": "UUID"
2614
+ },
2615
+ {
2616
+ "name": "compensationPlanId",
2617
+ "type": "foreignKey",
2618
+ "required": false,
2619
+ "related": "SupportCompensationPlan",
2620
+ "columnType": "UUID"
2621
+ },
2622
+ {
2623
+ "name": "amount",
2624
+ "type": "decimal",
2625
+ "required": false,
2626
+ "columnType": "REAL"
2627
+ },
2628
+ {
2629
+ "name": "currency",
2630
+ "type": "text",
2631
+ "required": false,
2632
+ "columnType": "TEXT"
2633
+ },
2634
+ {
2635
+ "name": "payableSeconds",
2636
+ "type": "integer",
2637
+ "required": false,
2638
+ "columnType": "INTEGER"
2639
+ },
2640
+ {
2641
+ "name": "rateSnapshot",
2642
+ "type": "text",
2643
+ "required": false,
2644
+ "columnType": "TEXT"
2645
+ },
2646
+ {
2647
+ "name": "status",
2648
+ "type": "text",
2649
+ "required": false,
2650
+ "columnType": "TEXT"
2651
+ },
2652
+ {
2653
+ "name": "finalizedAt",
2654
+ "type": "datetime",
2655
+ "required": false,
2656
+ "columnType": "TIMESTAMP"
2657
+ },
2658
+ {
2659
+ "name": "metadata",
2660
+ "type": "text",
2661
+ "required": false,
2662
+ "columnType": "TEXT"
2663
+ }
2664
+ ],
2665
+ "relationships": [
2666
+ {
2667
+ "name": "timeEntryId",
2668
+ "type": "foreignKey",
2669
+ "required": true,
2670
+ "related": "ServiceTimeEntry",
2671
+ "columnType": "UUID"
2672
+ },
2673
+ {
2674
+ "name": "specialistId",
2675
+ "type": "foreignKey",
2676
+ "required": false,
2677
+ "related": "SupportSpecialist",
2678
+ "columnType": "UUID"
2679
+ },
2680
+ {
2681
+ "name": "compensationPlanId",
2682
+ "type": "foreignKey",
2683
+ "required": false,
2684
+ "related": "SupportCompensationPlan",
2685
+ "columnType": "UUID"
2686
+ }
2687
+ ],
2688
+ "methods": [
2689
+ "getRateSnapshot",
2690
+ "setRateSnapshot"
2691
+ ],
2692
+ "surfaces": [
2693
+ {
2694
+ "kind": "api",
2695
+ "name": "supportcompensations.list",
2696
+ "operation": "list",
2697
+ "objectName": "@happyvertical/smrt-support:SupportCompensation",
2698
+ "path": "/supportcompensations",
2699
+ "method": "GET"
2700
+ },
2701
+ {
2702
+ "kind": "api",
2703
+ "name": "supportcompensations.get",
2704
+ "operation": "get",
2705
+ "objectName": "@happyvertical/smrt-support:SupportCompensation",
2706
+ "path": "/supportcompensations/[id]",
2707
+ "method": "GET"
2708
+ },
2709
+ {
2710
+ "kind": "cli",
2711
+ "name": "supportcompensation_list",
2712
+ "operation": "list",
2713
+ "objectName": "@happyvertical/smrt-support:SupportCompensation"
2714
+ },
2715
+ {
2716
+ "kind": "cli",
2717
+ "name": "supportcompensation_get",
2718
+ "operation": "get",
2719
+ "objectName": "@happyvertical/smrt-support:SupportCompensation"
2720
+ },
2721
+ {
2722
+ "kind": "mcp",
2723
+ "name": "supportcompensation_list",
2724
+ "operation": "list",
2725
+ "objectName": "@happyvertical/smrt-support:SupportCompensation"
2726
+ },
2727
+ {
2728
+ "kind": "mcp",
2729
+ "name": "supportcompensation_get",
2730
+ "operation": "get",
2731
+ "objectName": "@happyvertical/smrt-support:SupportCompensation"
2732
+ }
2733
+ ],
2734
+ "relationshipFeatures": [
2735
+ "foreignKey",
2736
+ "uuidColumns"
2737
+ ],
2738
+ "tags": [],
2739
+ "risks": []
2740
+ },
2741
+ {
2742
+ "name": "SupportCompensationCollection",
2743
+ "qualifiedName": "@happyvertical/smrt-support:SupportCompensationCollection",
2744
+ "collection": "supportcompensations",
2745
+ "tableName": "support_compensations",
2746
+ "packageName": "@happyvertical/smrt-support",
2747
+ "extends": "SmrtCollection",
2748
+ "fields": [],
2749
+ "relationships": [],
2750
+ "methods": [
2751
+ "forSpecialist",
2752
+ "forTimeEntry"
2753
+ ],
2754
+ "surfaces": [],
2755
+ "relationshipFeatures": [
2756
+ "uuidColumns"
2757
+ ],
2758
+ "tags": [],
2759
+ "risks": []
2760
+ },
2761
+ {
2762
+ "name": "SupportSpecialist",
2763
+ "qualifiedName": "@happyvertical/smrt-support:SupportSpecialist",
2764
+ "collection": "supportspecialists",
2765
+ "tableName": "support_specialists",
2766
+ "packageName": "@happyvertical/smrt-support",
2767
+ "extends": "SmrtObject",
2768
+ "fields": [
2769
+ {
2770
+ "name": "tenantId",
2771
+ "type": "text",
2772
+ "required": false,
2773
+ "columnType": "UUID"
2774
+ },
2775
+ {
2776
+ "name": "profileId",
2777
+ "type": "crossPackageRef",
2778
+ "required": true,
2779
+ "related": "@happyvertical/smrt-profiles:Profile",
2780
+ "columnType": "UUID"
2781
+ },
2782
+ {
2783
+ "name": "displayName",
2784
+ "type": "text",
2785
+ "required": false,
2786
+ "columnType": "TEXT"
2787
+ },
2788
+ {
2789
+ "name": "status",
2790
+ "type": "text",
2791
+ "required": false,
2792
+ "columnType": "TEXT"
2793
+ },
2794
+ {
2795
+ "name": "languages",
2796
+ "type": "text",
2797
+ "required": false,
2798
+ "columnType": "TEXT"
2799
+ },
2800
+ {
2801
+ "name": "timezone",
2802
+ "type": "text",
2803
+ "required": false,
2804
+ "columnType": "TEXT"
2805
+ },
2806
+ {
2807
+ "name": "maxConcurrentCases",
2808
+ "type": "integer",
2809
+ "required": false,
2810
+ "columnType": "INTEGER"
2811
+ },
2812
+ {
2813
+ "name": "onCallPriority",
2814
+ "type": "integer",
2815
+ "required": false,
2816
+ "columnType": "INTEGER"
2817
+ },
2818
+ {
2819
+ "name": "notes",
2820
+ "type": "text",
2821
+ "required": false,
2822
+ "columnType": "TEXT"
2823
+ },
2824
+ {
2825
+ "name": "metadata",
2826
+ "type": "text",
2827
+ "required": false,
2828
+ "columnType": "TEXT"
2829
+ }
2830
+ ],
2831
+ "relationships": [
2832
+ {
2833
+ "name": "profileId",
2834
+ "type": "crossPackageRef",
2835
+ "required": true,
2836
+ "related": "@happyvertical/smrt-profiles:Profile",
2837
+ "columnType": "UUID"
2838
+ }
2839
+ ],
2840
+ "methods": [
2841
+ "getLanguages",
2842
+ "getMetadata",
2843
+ "isActive",
2844
+ "setLanguages",
2845
+ "setMetadata"
2846
+ ],
2847
+ "surfaces": [
2848
+ {
2849
+ "kind": "api",
2850
+ "name": "supportspecialists.list",
2851
+ "operation": "list",
2852
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist",
2853
+ "path": "/supportspecialists",
2854
+ "method": "GET"
2855
+ },
2856
+ {
2857
+ "kind": "api",
2858
+ "name": "supportspecialists.get",
2859
+ "operation": "get",
2860
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist",
2861
+ "path": "/supportspecialists/[id]",
2862
+ "method": "GET"
2863
+ },
2864
+ {
2865
+ "kind": "api",
2866
+ "name": "supportspecialists.create",
2867
+ "operation": "create",
2868
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist",
2869
+ "path": "/supportspecialists",
2870
+ "method": "POST"
2871
+ },
2872
+ {
2873
+ "kind": "api",
2874
+ "name": "supportspecialists.update",
2875
+ "operation": "update",
2876
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist",
2877
+ "path": "/supportspecialists/[id]",
2878
+ "method": "PATCH"
2879
+ },
2880
+ {
2881
+ "kind": "api",
2882
+ "name": "supportspecialists.delete",
2883
+ "operation": "delete",
2884
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist",
2885
+ "path": "/supportspecialists/[id]",
2886
+ "method": "DELETE"
2887
+ },
2888
+ {
2889
+ "kind": "cli",
2890
+ "name": "supportspecialist_list",
2891
+ "operation": "list",
2892
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist"
2893
+ },
2894
+ {
2895
+ "kind": "cli",
2896
+ "name": "supportspecialist_get",
2897
+ "operation": "get",
2898
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist"
2899
+ },
2900
+ {
2901
+ "kind": "mcp",
2902
+ "name": "supportspecialist_list",
2903
+ "operation": "list",
2904
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist"
2905
+ },
2906
+ {
2907
+ "kind": "mcp",
2908
+ "name": "supportspecialist_get",
2909
+ "operation": "get",
2910
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist"
2911
+ }
2912
+ ],
2913
+ "relationshipFeatures": [
2914
+ "crossPackageRef",
2915
+ "uuidColumns"
2916
+ ],
2917
+ "tags": [],
2918
+ "risks": []
2919
+ },
2920
+ {
2921
+ "name": "SupportSpecialistCollection",
2922
+ "qualifiedName": "@happyvertical/smrt-support:SupportSpecialistCollection",
2923
+ "collection": "supportspecialists",
2924
+ "tableName": "support_specialists",
2925
+ "packageName": "@happyvertical/smrt-support",
2926
+ "extends": "SmrtCollection",
2927
+ "fields": [],
2928
+ "relationships": [],
2929
+ "methods": [
2930
+ "byProfile",
2931
+ "findActive"
2932
+ ],
2933
+ "surfaces": [],
2934
+ "relationshipFeatures": [
2935
+ "uuidColumns"
2936
+ ],
2937
+ "tags": [],
2938
+ "risks": []
2939
+ },
2940
+ {
2941
+ "name": "SupportQualification",
2942
+ "qualifiedName": "@happyvertical/smrt-support:SupportQualification",
2943
+ "collection": "supportqualifications",
2944
+ "tableName": "support_qualifications",
2945
+ "packageName": "@happyvertical/smrt-support",
2946
+ "extends": "SmrtObject",
2947
+ "fields": [
2948
+ {
2949
+ "name": "tenantId",
2950
+ "type": "text",
2951
+ "required": false,
2952
+ "columnType": "UUID"
2953
+ },
2954
+ {
2955
+ "name": "specialistId",
2956
+ "type": "foreignKey",
2957
+ "required": true,
2958
+ "related": "SupportSpecialist",
2959
+ "columnType": "UUID"
2960
+ },
2961
+ {
2962
+ "name": "projectId",
2963
+ "type": "text",
2964
+ "required": false,
2965
+ "columnType": "TEXT"
2966
+ },
2967
+ {
2968
+ "name": "level",
2969
+ "type": "text",
2970
+ "required": false,
2971
+ "columnType": "TEXT"
2972
+ },
2973
+ {
2974
+ "name": "effectiveFrom",
2975
+ "type": "datetime",
2976
+ "required": false,
2977
+ "columnType": "TIMESTAMP"
2978
+ },
2979
+ {
2980
+ "name": "effectiveTo",
2981
+ "type": "datetime",
2982
+ "required": false,
2983
+ "columnType": "TIMESTAMP"
2984
+ },
2985
+ {
2986
+ "name": "grantedByProfileId",
2987
+ "type": "crossPackageRef",
2988
+ "required": false,
2989
+ "related": "@happyvertical/smrt-profiles:Profile",
2990
+ "columnType": "UUID"
2991
+ },
2992
+ {
2993
+ "name": "notes",
2994
+ "type": "text",
2995
+ "required": false,
2996
+ "columnType": "TEXT"
2997
+ }
2998
+ ],
2999
+ "relationships": [
3000
+ {
3001
+ "name": "specialistId",
3002
+ "type": "foreignKey",
3003
+ "required": true,
3004
+ "related": "SupportSpecialist",
3005
+ "columnType": "UUID"
3006
+ },
3007
+ {
3008
+ "name": "grantedByProfileId",
3009
+ "type": "crossPackageRef",
3010
+ "required": false,
3011
+ "related": "@happyvertical/smrt-profiles:Profile",
3012
+ "columnType": "UUID"
3013
+ }
3014
+ ],
3015
+ "methods": [
3016
+ "isEffectiveAt"
3017
+ ],
3018
+ "surfaces": [
3019
+ {
3020
+ "kind": "api",
3021
+ "name": "supportqualifications.list",
3022
+ "operation": "list",
3023
+ "objectName": "@happyvertical/smrt-support:SupportQualification",
3024
+ "path": "/supportqualifications",
3025
+ "method": "GET"
3026
+ },
3027
+ {
3028
+ "kind": "api",
3029
+ "name": "supportqualifications.get",
3030
+ "operation": "get",
3031
+ "objectName": "@happyvertical/smrt-support:SupportQualification",
3032
+ "path": "/supportqualifications/[id]",
3033
+ "method": "GET"
3034
+ },
3035
+ {
3036
+ "kind": "api",
3037
+ "name": "supportqualifications.create",
3038
+ "operation": "create",
3039
+ "objectName": "@happyvertical/smrt-support:SupportQualification",
3040
+ "path": "/supportqualifications",
3041
+ "method": "POST"
3042
+ },
3043
+ {
3044
+ "kind": "api",
3045
+ "name": "supportqualifications.update",
3046
+ "operation": "update",
3047
+ "objectName": "@happyvertical/smrt-support:SupportQualification",
3048
+ "path": "/supportqualifications/[id]",
3049
+ "method": "PATCH"
3050
+ },
3051
+ {
3052
+ "kind": "api",
3053
+ "name": "supportqualifications.delete",
3054
+ "operation": "delete",
3055
+ "objectName": "@happyvertical/smrt-support:SupportQualification",
3056
+ "path": "/supportqualifications/[id]",
3057
+ "method": "DELETE"
3058
+ },
3059
+ {
3060
+ "kind": "cli",
3061
+ "name": "supportqualification_list",
3062
+ "operation": "list",
3063
+ "objectName": "@happyvertical/smrt-support:SupportQualification"
3064
+ },
3065
+ {
3066
+ "kind": "cli",
3067
+ "name": "supportqualification_get",
3068
+ "operation": "get",
3069
+ "objectName": "@happyvertical/smrt-support:SupportQualification"
3070
+ },
3071
+ {
3072
+ "kind": "mcp",
3073
+ "name": "supportqualification_list",
3074
+ "operation": "list",
3075
+ "objectName": "@happyvertical/smrt-support:SupportQualification"
3076
+ },
3077
+ {
3078
+ "kind": "mcp",
3079
+ "name": "supportqualification_get",
3080
+ "operation": "get",
3081
+ "objectName": "@happyvertical/smrt-support:SupportQualification"
3082
+ }
3083
+ ],
3084
+ "relationshipFeatures": [
3085
+ "crossPackageRef",
3086
+ "foreignKey",
3087
+ "uuidColumns"
3088
+ ],
3089
+ "tags": [],
3090
+ "risks": []
3091
+ },
3092
+ {
3093
+ "name": "SupportQualificationCollection",
3094
+ "qualifiedName": "@happyvertical/smrt-support:SupportQualificationCollection",
3095
+ "collection": "supportqualifications",
3096
+ "tableName": "support_qualifications",
3097
+ "packageName": "@happyvertical/smrt-support",
3098
+ "extends": "SmrtCollection",
3099
+ "fields": [],
3100
+ "relationships": [],
3101
+ "methods": [
3102
+ "forProject",
3103
+ "forSpecialist"
3104
+ ],
3105
+ "surfaces": [],
3106
+ "relationshipFeatures": [
3107
+ "uuidColumns"
3108
+ ],
3109
+ "tags": [],
3110
+ "risks": []
3111
+ },
3112
+ {
3113
+ "name": "SupportAvailability",
3114
+ "qualifiedName": "@happyvertical/smrt-support:SupportAvailability",
3115
+ "collection": "supportavailabilities",
3116
+ "tableName": "support_availability_windows",
3117
+ "packageName": "@happyvertical/smrt-support",
3118
+ "extends": "SmrtObject",
3119
+ "fields": [
3120
+ {
3121
+ "name": "tenantId",
3122
+ "type": "text",
3123
+ "required": false,
3124
+ "columnType": "UUID"
3125
+ },
3126
+ {
3127
+ "name": "specialistId",
3128
+ "type": "foreignKey",
3129
+ "required": true,
3130
+ "related": "SupportSpecialist",
3131
+ "columnType": "UUID"
3132
+ },
3133
+ {
3134
+ "name": "kind",
3135
+ "type": "text",
3136
+ "required": false,
3137
+ "columnType": "TEXT"
3138
+ },
3139
+ {
3140
+ "name": "weekday",
3141
+ "type": "integer",
3142
+ "required": false,
3143
+ "columnType": "INTEGER"
3144
+ },
3145
+ {
3146
+ "name": "startMinute",
3147
+ "type": "integer",
3148
+ "required": false,
3149
+ "columnType": "INTEGER"
3150
+ },
3151
+ {
3152
+ "name": "endMinute",
3153
+ "type": "integer",
3154
+ "required": false,
3155
+ "columnType": "INTEGER"
3156
+ },
3157
+ {
3158
+ "name": "startsAt",
3159
+ "type": "datetime",
3160
+ "required": false,
3161
+ "columnType": "TIMESTAMP"
3162
+ },
3163
+ {
3164
+ "name": "endsAt",
3165
+ "type": "datetime",
3166
+ "required": false,
3167
+ "columnType": "TIMESTAMP"
3168
+ },
3169
+ {
3170
+ "name": "notes",
3171
+ "type": "text",
3172
+ "required": false,
3173
+ "columnType": "TEXT"
3174
+ }
3175
+ ],
3176
+ "relationships": [
3177
+ {
3178
+ "name": "specialistId",
3179
+ "type": "foreignKey",
3180
+ "required": true,
3181
+ "related": "SupportSpecialist",
3182
+ "columnType": "UUID"
3183
+ }
3184
+ ],
3185
+ "methods": [],
3186
+ "surfaces": [
3187
+ {
3188
+ "kind": "api",
3189
+ "name": "supportavailabilities.list",
3190
+ "operation": "list",
3191
+ "objectName": "@happyvertical/smrt-support:SupportAvailability",
3192
+ "path": "/supportavailabilities",
3193
+ "method": "GET"
3194
+ },
3195
+ {
3196
+ "kind": "api",
3197
+ "name": "supportavailabilities.get",
3198
+ "operation": "get",
3199
+ "objectName": "@happyvertical/smrt-support:SupportAvailability",
3200
+ "path": "/supportavailabilities/[id]",
3201
+ "method": "GET"
3202
+ },
3203
+ {
3204
+ "kind": "api",
3205
+ "name": "supportavailabilities.create",
3206
+ "operation": "create",
3207
+ "objectName": "@happyvertical/smrt-support:SupportAvailability",
3208
+ "path": "/supportavailabilities",
3209
+ "method": "POST"
3210
+ },
3211
+ {
3212
+ "kind": "api",
3213
+ "name": "supportavailabilities.update",
3214
+ "operation": "update",
3215
+ "objectName": "@happyvertical/smrt-support:SupportAvailability",
3216
+ "path": "/supportavailabilities/[id]",
3217
+ "method": "PATCH"
3218
+ },
3219
+ {
3220
+ "kind": "api",
3221
+ "name": "supportavailabilities.delete",
3222
+ "operation": "delete",
3223
+ "objectName": "@happyvertical/smrt-support:SupportAvailability",
3224
+ "path": "/supportavailabilities/[id]",
3225
+ "method": "DELETE"
3226
+ },
3227
+ {
3228
+ "kind": "cli",
3229
+ "name": "supportavailability_list",
3230
+ "operation": "list",
3231
+ "objectName": "@happyvertical/smrt-support:SupportAvailability"
3232
+ },
3233
+ {
3234
+ "kind": "cli",
3235
+ "name": "supportavailability_get",
3236
+ "operation": "get",
3237
+ "objectName": "@happyvertical/smrt-support:SupportAvailability"
3238
+ },
3239
+ {
3240
+ "kind": "mcp",
3241
+ "name": "supportavailability_list",
3242
+ "operation": "list",
3243
+ "objectName": "@happyvertical/smrt-support:SupportAvailability"
3244
+ },
3245
+ {
3246
+ "kind": "mcp",
3247
+ "name": "supportavailability_get",
3248
+ "operation": "get",
3249
+ "objectName": "@happyvertical/smrt-support:SupportAvailability"
3250
+ }
3251
+ ],
3252
+ "relationshipFeatures": [
3253
+ "foreignKey",
3254
+ "uuidColumns"
3255
+ ],
3256
+ "tags": [],
3257
+ "risks": []
3258
+ },
3259
+ {
3260
+ "name": "SupportAvailabilityCollection",
3261
+ "qualifiedName": "@happyvertical/smrt-support:SupportAvailabilityCollection",
3262
+ "collection": "supportavailabilities",
3263
+ "tableName": "support_availability_windows",
3264
+ "packageName": "@happyvertical/smrt-support",
3265
+ "extends": "SmrtCollection",
3266
+ "fields": [],
3267
+ "relationships": [],
3268
+ "methods": [
3269
+ "forSpecialist"
3270
+ ],
3271
+ "surfaces": [],
3272
+ "relationshipFeatures": [
3273
+ "uuidColumns"
3274
+ ],
3275
+ "tags": [],
3276
+ "risks": []
3277
+ },
3278
+ {
3279
+ "name": "SupportWorkLink",
3280
+ "qualifiedName": "@happyvertical/smrt-support:SupportWorkLink",
3281
+ "collection": "supportworklinks",
3282
+ "tableName": "support_work_links",
3283
+ "packageName": "@happyvertical/smrt-support",
3284
+ "extends": "SmrtObject",
3285
+ "fields": [
3286
+ {
3287
+ "name": "tenantId",
3288
+ "type": "text",
3289
+ "required": false,
3290
+ "columnType": "UUID"
3291
+ },
3292
+ {
3293
+ "name": "caseId",
3294
+ "type": "foreignKey",
3295
+ "required": true,
3296
+ "related": "SupportCase",
3297
+ "columnType": "UUID"
3298
+ },
3299
+ {
3300
+ "name": "linkKind",
3301
+ "type": "text",
3302
+ "required": false,
3303
+ "columnType": "TEXT"
3304
+ },
3305
+ {
3306
+ "name": "targetType",
3307
+ "type": "text",
3308
+ "required": false,
3309
+ "columnType": "TEXT"
3310
+ },
3311
+ {
3312
+ "name": "targetId",
3313
+ "type": "text",
3314
+ "required": false,
3315
+ "columnType": "TEXT"
3316
+ },
3317
+ {
3318
+ "name": "targetLabel",
3319
+ "type": "text",
3320
+ "required": false,
3321
+ "columnType": "TEXT"
3322
+ },
3323
+ {
3324
+ "name": "externalUrl",
3325
+ "type": "text",
3326
+ "required": false,
3327
+ "columnType": "TEXT"
3328
+ },
3329
+ {
3330
+ "name": "status",
3331
+ "type": "text",
3332
+ "required": false,
3333
+ "columnType": "TEXT"
3334
+ },
3335
+ {
3336
+ "name": "lastStatusAt",
3337
+ "type": "datetime",
3338
+ "required": false,
3339
+ "columnType": "TIMESTAMP"
3340
+ },
3341
+ {
3342
+ "name": "metadata",
3343
+ "type": "text",
3344
+ "required": false,
3345
+ "columnType": "TEXT"
3346
+ }
3347
+ ],
3348
+ "relationships": [
3349
+ {
3350
+ "name": "caseId",
3351
+ "type": "foreignKey",
3352
+ "required": true,
3353
+ "related": "SupportCase",
3354
+ "columnType": "UUID"
3355
+ }
3356
+ ],
3357
+ "methods": [
3358
+ "getMetadata",
3359
+ "setMetadata"
3360
+ ],
3361
+ "surfaces": [
3362
+ {
3363
+ "kind": "api",
3364
+ "name": "supportworklinks.list",
3365
+ "operation": "list",
3366
+ "objectName": "@happyvertical/smrt-support:SupportWorkLink",
3367
+ "path": "/supportworklinks",
3368
+ "method": "GET"
3369
+ },
3370
+ {
3371
+ "kind": "api",
3372
+ "name": "supportworklinks.get",
3373
+ "operation": "get",
3374
+ "objectName": "@happyvertical/smrt-support:SupportWorkLink",
3375
+ "path": "/supportworklinks/[id]",
3376
+ "method": "GET"
3377
+ },
3378
+ {
3379
+ "kind": "cli",
3380
+ "name": "supportworklink_list",
3381
+ "operation": "list",
3382
+ "objectName": "@happyvertical/smrt-support:SupportWorkLink"
3383
+ },
3384
+ {
3385
+ "kind": "cli",
3386
+ "name": "supportworklink_get",
3387
+ "operation": "get",
3388
+ "objectName": "@happyvertical/smrt-support:SupportWorkLink"
3389
+ },
3390
+ {
3391
+ "kind": "mcp",
3392
+ "name": "supportworklink_list",
3393
+ "operation": "list",
3394
+ "objectName": "@happyvertical/smrt-support:SupportWorkLink"
3395
+ },
3396
+ {
3397
+ "kind": "mcp",
3398
+ "name": "supportworklink_get",
3399
+ "operation": "get",
3400
+ "objectName": "@happyvertical/smrt-support:SupportWorkLink"
3401
+ }
3402
+ ],
3403
+ "relationshipFeatures": [
3404
+ "foreignKey",
3405
+ "uuidColumns"
3406
+ ],
3407
+ "tags": [],
3408
+ "risks": []
3409
+ },
3410
+ {
3411
+ "name": "SupportWorkLinkCollection",
3412
+ "qualifiedName": "@happyvertical/smrt-support:SupportWorkLinkCollection",
3413
+ "collection": "supportworklinks",
3414
+ "tableName": "support_work_links",
3415
+ "packageName": "@happyvertical/smrt-support",
3416
+ "extends": "SmrtCollection",
3417
+ "fields": [],
3418
+ "relationships": [],
3419
+ "methods": [
3420
+ "forCase"
3421
+ ],
3422
+ "surfaces": [],
3423
+ "relationshipFeatures": [
3424
+ "uuidColumns"
3425
+ ],
3426
+ "tags": [],
3427
+ "risks": []
3428
+ }
3429
+ ],
3430
+ "surfaces": [
3431
+ {
3432
+ "kind": "api",
3433
+ "name": "servicetimeentries.list",
3434
+ "operation": "list",
3435
+ "objectName": "@happyvertical/smrt-support:ServiceTimeEntry",
3436
+ "path": "/servicetimeentries",
3437
+ "method": "GET"
3438
+ },
3439
+ {
3440
+ "kind": "api",
3441
+ "name": "servicetimeentries.get",
3442
+ "operation": "get",
3443
+ "objectName": "@happyvertical/smrt-support:ServiceTimeEntry",
3444
+ "path": "/servicetimeentries/[id]",
3445
+ "method": "GET"
3446
+ },
3447
+ {
3448
+ "kind": "cli",
3449
+ "name": "servicetimeentry_list",
3450
+ "operation": "list",
3451
+ "objectName": "@happyvertical/smrt-support:ServiceTimeEntry"
3452
+ },
3453
+ {
3454
+ "kind": "cli",
3455
+ "name": "servicetimeentry_get",
3456
+ "operation": "get",
3457
+ "objectName": "@happyvertical/smrt-support:ServiceTimeEntry"
3458
+ },
3459
+ {
3460
+ "kind": "mcp",
3461
+ "name": "servicetimeentry_list",
3462
+ "operation": "list",
3463
+ "objectName": "@happyvertical/smrt-support:ServiceTimeEntry"
3464
+ },
3465
+ {
3466
+ "kind": "mcp",
3467
+ "name": "servicetimeentry_get",
3468
+ "operation": "get",
3469
+ "objectName": "@happyvertical/smrt-support:ServiceTimeEntry"
3470
+ },
3471
+ {
3472
+ "kind": "api",
3473
+ "name": "supportairuns.list",
3474
+ "operation": "list",
3475
+ "objectName": "@happyvertical/smrt-support:SupportAiRun",
3476
+ "path": "/supportairuns",
3477
+ "method": "GET"
3478
+ },
3479
+ {
3480
+ "kind": "api",
3481
+ "name": "supportairuns.get",
3482
+ "operation": "get",
3483
+ "objectName": "@happyvertical/smrt-support:SupportAiRun",
3484
+ "path": "/supportairuns/[id]",
3485
+ "method": "GET"
3486
+ },
3487
+ {
3488
+ "kind": "cli",
3489
+ "name": "supportairun_list",
3490
+ "operation": "list",
3491
+ "objectName": "@happyvertical/smrt-support:SupportAiRun"
3492
+ },
3493
+ {
3494
+ "kind": "cli",
3495
+ "name": "supportairun_get",
3496
+ "operation": "get",
3497
+ "objectName": "@happyvertical/smrt-support:SupportAiRun"
3498
+ },
3499
+ {
3500
+ "kind": "mcp",
3501
+ "name": "supportairun_list",
3502
+ "operation": "list",
3503
+ "objectName": "@happyvertical/smrt-support:SupportAiRun"
3504
+ },
3505
+ {
3506
+ "kind": "mcp",
3507
+ "name": "supportairun_get",
3508
+ "operation": "get",
3509
+ "objectName": "@happyvertical/smrt-support:SupportAiRun"
3510
+ },
3511
+ {
3512
+ "kind": "api",
3513
+ "name": "supportcaseevents.list",
3514
+ "operation": "list",
3515
+ "objectName": "@happyvertical/smrt-support:SupportCaseEvent",
3516
+ "path": "/supportcaseevents",
3517
+ "method": "GET"
3518
+ },
3519
+ {
3520
+ "kind": "api",
3521
+ "name": "supportcaseevents.get",
3522
+ "operation": "get",
3523
+ "objectName": "@happyvertical/smrt-support:SupportCaseEvent",
3524
+ "path": "/supportcaseevents/[id]",
3525
+ "method": "GET"
3526
+ },
3527
+ {
3528
+ "kind": "cli",
3529
+ "name": "supportcaseevent_list",
3530
+ "operation": "list",
3531
+ "objectName": "@happyvertical/smrt-support:SupportCaseEvent"
3532
+ },
3533
+ {
3534
+ "kind": "cli",
3535
+ "name": "supportcaseevent_get",
3536
+ "operation": "get",
3537
+ "objectName": "@happyvertical/smrt-support:SupportCaseEvent"
3538
+ },
3539
+ {
3540
+ "kind": "mcp",
3541
+ "name": "supportcaseevent_list",
3542
+ "operation": "list",
3543
+ "objectName": "@happyvertical/smrt-support:SupportCaseEvent"
3544
+ },
3545
+ {
3546
+ "kind": "mcp",
3547
+ "name": "supportcaseevent_get",
3548
+ "operation": "get",
3549
+ "objectName": "@happyvertical/smrt-support:SupportCaseEvent"
3550
+ },
3551
+ {
3552
+ "kind": "api",
3553
+ "name": "supportcases.list",
3554
+ "operation": "list",
3555
+ "objectName": "@happyvertical/smrt-support:SupportCase",
3556
+ "path": "/supportcases",
3557
+ "method": "GET"
3558
+ },
3559
+ {
3560
+ "kind": "api",
3561
+ "name": "supportcases.get",
3562
+ "operation": "get",
3563
+ "objectName": "@happyvertical/smrt-support:SupportCase",
3564
+ "path": "/supportcases/[id]",
3565
+ "method": "GET"
3566
+ },
3567
+ {
3568
+ "kind": "cli",
3569
+ "name": "supportcase_list",
3570
+ "operation": "list",
3571
+ "objectName": "@happyvertical/smrt-support:SupportCase"
3572
+ },
3573
+ {
3574
+ "kind": "cli",
3575
+ "name": "supportcase_get",
3576
+ "operation": "get",
3577
+ "objectName": "@happyvertical/smrt-support:SupportCase"
3578
+ },
3579
+ {
3580
+ "kind": "mcp",
3581
+ "name": "supportcase_list",
3582
+ "operation": "list",
3583
+ "objectName": "@happyvertical/smrt-support:SupportCase"
3584
+ },
3585
+ {
3586
+ "kind": "mcp",
3587
+ "name": "supportcase_get",
3588
+ "operation": "get",
3589
+ "objectName": "@happyvertical/smrt-support:SupportCase"
3590
+ },
3591
+ {
3592
+ "kind": "api",
3593
+ "name": "supportchannelbindings.list",
3594
+ "operation": "list",
3595
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding",
3596
+ "path": "/supportchannelbindings",
3597
+ "method": "GET"
3598
+ },
3599
+ {
3600
+ "kind": "api",
3601
+ "name": "supportchannelbindings.get",
3602
+ "operation": "get",
3603
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding",
3604
+ "path": "/supportchannelbindings/[id]",
3605
+ "method": "GET"
3606
+ },
3607
+ {
3608
+ "kind": "api",
3609
+ "name": "supportchannelbindings.create",
3610
+ "operation": "create",
3611
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding",
3612
+ "path": "/supportchannelbindings",
3613
+ "method": "POST"
3614
+ },
3615
+ {
3616
+ "kind": "api",
3617
+ "name": "supportchannelbindings.update",
3618
+ "operation": "update",
3619
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding",
3620
+ "path": "/supportchannelbindings/[id]",
3621
+ "method": "PATCH"
3622
+ },
3623
+ {
3624
+ "kind": "api",
3625
+ "name": "supportchannelbindings.delete",
3626
+ "operation": "delete",
3627
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding",
3628
+ "path": "/supportchannelbindings/[id]",
3629
+ "method": "DELETE"
3630
+ },
3631
+ {
3632
+ "kind": "cli",
3633
+ "name": "supportchannelbinding_list",
3634
+ "operation": "list",
3635
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding"
3636
+ },
3637
+ {
3638
+ "kind": "cli",
3639
+ "name": "supportchannelbinding_get",
3640
+ "operation": "get",
3641
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding"
3642
+ },
3643
+ {
3644
+ "kind": "mcp",
3645
+ "name": "supportchannelbinding_list",
3646
+ "operation": "list",
3647
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding"
3648
+ },
3649
+ {
3650
+ "kind": "mcp",
3651
+ "name": "supportchannelbinding_get",
3652
+ "operation": "get",
3653
+ "objectName": "@happyvertical/smrt-support:SupportChannelBinding"
3654
+ },
3655
+ {
3656
+ "kind": "api",
3657
+ "name": "supportcompensationplans.list",
3658
+ "operation": "list",
3659
+ "objectName": "@happyvertical/smrt-support:SupportCompensationPlan",
3660
+ "path": "/supportcompensationplans",
3661
+ "method": "GET"
3662
+ },
3663
+ {
3664
+ "kind": "api",
3665
+ "name": "supportcompensationplans.get",
3666
+ "operation": "get",
3667
+ "objectName": "@happyvertical/smrt-support:SupportCompensationPlan",
3668
+ "path": "/supportcompensationplans/[id]",
3669
+ "method": "GET"
3670
+ },
3671
+ {
3672
+ "kind": "cli",
3673
+ "name": "supportcompensationplan_list",
3674
+ "operation": "list",
3675
+ "objectName": "@happyvertical/smrt-support:SupportCompensationPlan"
3676
+ },
3677
+ {
3678
+ "kind": "cli",
3679
+ "name": "supportcompensationplan_get",
3680
+ "operation": "get",
3681
+ "objectName": "@happyvertical/smrt-support:SupportCompensationPlan"
3682
+ },
3683
+ {
3684
+ "kind": "mcp",
3685
+ "name": "supportcompensationplan_list",
3686
+ "operation": "list",
3687
+ "objectName": "@happyvertical/smrt-support:SupportCompensationPlan"
3688
+ },
3689
+ {
3690
+ "kind": "mcp",
3691
+ "name": "supportcompensationplan_get",
3692
+ "operation": "get",
3693
+ "objectName": "@happyvertical/smrt-support:SupportCompensationPlan"
3694
+ },
3695
+ {
3696
+ "kind": "api",
3697
+ "name": "supportinteractions.list",
3698
+ "operation": "list",
3699
+ "objectName": "@happyvertical/smrt-support:SupportInteraction",
3700
+ "path": "/supportinteractions",
3701
+ "method": "GET"
3702
+ },
3703
+ {
3704
+ "kind": "api",
3705
+ "name": "supportinteractions.get",
3706
+ "operation": "get",
3707
+ "objectName": "@happyvertical/smrt-support:SupportInteraction",
3708
+ "path": "/supportinteractions/[id]",
3709
+ "method": "GET"
3710
+ },
3711
+ {
3712
+ "kind": "cli",
3713
+ "name": "supportinteraction_list",
3714
+ "operation": "list",
3715
+ "objectName": "@happyvertical/smrt-support:SupportInteraction"
3716
+ },
3717
+ {
3718
+ "kind": "cli",
3719
+ "name": "supportinteraction_get",
3720
+ "operation": "get",
3721
+ "objectName": "@happyvertical/smrt-support:SupportInteraction"
3722
+ },
3723
+ {
3724
+ "kind": "mcp",
3725
+ "name": "supportinteraction_list",
3726
+ "operation": "list",
3727
+ "objectName": "@happyvertical/smrt-support:SupportInteraction"
3728
+ },
3729
+ {
3730
+ "kind": "mcp",
3731
+ "name": "supportinteraction_get",
3732
+ "operation": "get",
3733
+ "objectName": "@happyvertical/smrt-support:SupportInteraction"
3734
+ },
3735
+ {
3736
+ "kind": "api",
3737
+ "name": "supportplans.list",
3738
+ "operation": "list",
3739
+ "objectName": "@happyvertical/smrt-support:SupportPlan",
3740
+ "path": "/supportplans",
3741
+ "method": "GET"
3742
+ },
3743
+ {
3744
+ "kind": "api",
3745
+ "name": "supportplans.get",
3746
+ "operation": "get",
3747
+ "objectName": "@happyvertical/smrt-support:SupportPlan",
3748
+ "path": "/supportplans/[id]",
3749
+ "method": "GET"
3750
+ },
3751
+ {
3752
+ "kind": "cli",
3753
+ "name": "supportplan_list",
3754
+ "operation": "list",
3755
+ "objectName": "@happyvertical/smrt-support:SupportPlan"
3756
+ },
3757
+ {
3758
+ "kind": "cli",
3759
+ "name": "supportplan_get",
3760
+ "operation": "get",
3761
+ "objectName": "@happyvertical/smrt-support:SupportPlan"
3762
+ },
3763
+ {
3764
+ "kind": "mcp",
3765
+ "name": "supportplan_list",
3766
+ "operation": "list",
3767
+ "objectName": "@happyvertical/smrt-support:SupportPlan"
3768
+ },
3769
+ {
3770
+ "kind": "mcp",
3771
+ "name": "supportplan_get",
3772
+ "operation": "get",
3773
+ "objectName": "@happyvertical/smrt-support:SupportPlan"
3774
+ },
3775
+ {
3776
+ "kind": "api",
3777
+ "name": "supportpolicies.list",
3778
+ "operation": "list",
3779
+ "objectName": "@happyvertical/smrt-support:SupportPolicy",
3780
+ "path": "/supportpolicies",
3781
+ "method": "GET"
3782
+ },
3783
+ {
3784
+ "kind": "api",
3785
+ "name": "supportpolicies.get",
3786
+ "operation": "get",
3787
+ "objectName": "@happyvertical/smrt-support:SupportPolicy",
3788
+ "path": "/supportpolicies/[id]",
3789
+ "method": "GET"
3790
+ },
3791
+ {
3792
+ "kind": "api",
3793
+ "name": "supportpolicies.create",
3794
+ "operation": "create",
3795
+ "objectName": "@happyvertical/smrt-support:SupportPolicy",
3796
+ "path": "/supportpolicies",
3797
+ "method": "POST"
3798
+ },
3799
+ {
3800
+ "kind": "api",
3801
+ "name": "supportpolicies.update",
3802
+ "operation": "update",
3803
+ "objectName": "@happyvertical/smrt-support:SupportPolicy",
3804
+ "path": "/supportpolicies/[id]",
3805
+ "method": "PATCH"
3806
+ },
3807
+ {
3808
+ "kind": "api",
3809
+ "name": "supportpolicies.delete",
3810
+ "operation": "delete",
3811
+ "objectName": "@happyvertical/smrt-support:SupportPolicy",
3812
+ "path": "/supportpolicies/[id]",
3813
+ "method": "DELETE"
3814
+ },
3815
+ {
3816
+ "kind": "cli",
3817
+ "name": "supportpolicy_list",
3818
+ "operation": "list",
3819
+ "objectName": "@happyvertical/smrt-support:SupportPolicy"
3820
+ },
3821
+ {
3822
+ "kind": "cli",
3823
+ "name": "supportpolicy_get",
3824
+ "operation": "get",
3825
+ "objectName": "@happyvertical/smrt-support:SupportPolicy"
3826
+ },
3827
+ {
3828
+ "kind": "mcp",
3829
+ "name": "supportpolicy_list",
3830
+ "operation": "list",
3831
+ "objectName": "@happyvertical/smrt-support:SupportPolicy"
3832
+ },
3833
+ {
3834
+ "kind": "mcp",
3835
+ "name": "supportpolicy_get",
3836
+ "operation": "get",
3837
+ "objectName": "@happyvertical/smrt-support:SupportPolicy"
3838
+ },
3839
+ {
3840
+ "kind": "api",
3841
+ "name": "supportservicetargets.list",
3842
+ "operation": "list",
3843
+ "objectName": "@happyvertical/smrt-support:SupportServiceTarget",
3844
+ "path": "/supportservicetargets",
3845
+ "method": "GET"
3846
+ },
3847
+ {
3848
+ "kind": "api",
3849
+ "name": "supportservicetargets.get",
3850
+ "operation": "get",
3851
+ "objectName": "@happyvertical/smrt-support:SupportServiceTarget",
3852
+ "path": "/supportservicetargets/[id]",
3853
+ "method": "GET"
3854
+ },
3855
+ {
3856
+ "kind": "cli",
3857
+ "name": "supportservicetarget_list",
3858
+ "operation": "list",
3859
+ "objectName": "@happyvertical/smrt-support:SupportServiceTarget"
3860
+ },
3861
+ {
3862
+ "kind": "cli",
3863
+ "name": "supportservicetarget_get",
3864
+ "operation": "get",
3865
+ "objectName": "@happyvertical/smrt-support:SupportServiceTarget"
3866
+ },
3867
+ {
3868
+ "kind": "mcp",
3869
+ "name": "supportservicetarget_list",
3870
+ "operation": "list",
3871
+ "objectName": "@happyvertical/smrt-support:SupportServiceTarget"
3872
+ },
3873
+ {
3874
+ "kind": "mcp",
3875
+ "name": "supportservicetarget_get",
3876
+ "operation": "get",
3877
+ "objectName": "@happyvertical/smrt-support:SupportServiceTarget"
3878
+ },
3879
+ {
3880
+ "kind": "api",
3881
+ "name": "supportescalations.list",
3882
+ "operation": "list",
3883
+ "objectName": "@happyvertical/smrt-support:SupportEscalation",
3884
+ "path": "/supportescalations",
3885
+ "method": "GET"
3886
+ },
3887
+ {
3888
+ "kind": "api",
3889
+ "name": "supportescalations.get",
3890
+ "operation": "get",
3891
+ "objectName": "@happyvertical/smrt-support:SupportEscalation",
3892
+ "path": "/supportescalations/[id]",
3893
+ "method": "GET"
3894
+ },
3895
+ {
3896
+ "kind": "cli",
3897
+ "name": "supportescalation_list",
3898
+ "operation": "list",
3899
+ "objectName": "@happyvertical/smrt-support:SupportEscalation"
3900
+ },
3901
+ {
3902
+ "kind": "cli",
3903
+ "name": "supportescalation_get",
3904
+ "operation": "get",
3905
+ "objectName": "@happyvertical/smrt-support:SupportEscalation"
3906
+ },
3907
+ {
3908
+ "kind": "mcp",
3909
+ "name": "supportescalation_list",
3910
+ "operation": "list",
3911
+ "objectName": "@happyvertical/smrt-support:SupportEscalation"
3912
+ },
3913
+ {
3914
+ "kind": "mcp",
3915
+ "name": "supportescalation_get",
3916
+ "operation": "get",
3917
+ "objectName": "@happyvertical/smrt-support:SupportEscalation"
3918
+ },
3919
+ {
3920
+ "kind": "api",
3921
+ "name": "supportcharges.list",
3922
+ "operation": "list",
3923
+ "objectName": "@happyvertical/smrt-support:SupportCharge",
3924
+ "path": "/supportcharges",
3925
+ "method": "GET"
3926
+ },
3927
+ {
3928
+ "kind": "api",
3929
+ "name": "supportcharges.get",
3930
+ "operation": "get",
3931
+ "objectName": "@happyvertical/smrt-support:SupportCharge",
3932
+ "path": "/supportcharges/[id]",
3933
+ "method": "GET"
3934
+ },
3935
+ {
3936
+ "kind": "cli",
3937
+ "name": "supportcharge_list",
3938
+ "operation": "list",
3939
+ "objectName": "@happyvertical/smrt-support:SupportCharge"
3940
+ },
3941
+ {
3942
+ "kind": "cli",
3943
+ "name": "supportcharge_get",
3944
+ "operation": "get",
3945
+ "objectName": "@happyvertical/smrt-support:SupportCharge"
3946
+ },
3947
+ {
3948
+ "kind": "mcp",
3949
+ "name": "supportcharge_list",
3950
+ "operation": "list",
3951
+ "objectName": "@happyvertical/smrt-support:SupportCharge"
3952
+ },
3953
+ {
3954
+ "kind": "mcp",
3955
+ "name": "supportcharge_get",
3956
+ "operation": "get",
3957
+ "objectName": "@happyvertical/smrt-support:SupportCharge"
3958
+ },
3959
+ {
3960
+ "kind": "api",
3961
+ "name": "supportcompensations.list",
3962
+ "operation": "list",
3963
+ "objectName": "@happyvertical/smrt-support:SupportCompensation",
3964
+ "path": "/supportcompensations",
3965
+ "method": "GET"
3966
+ },
3967
+ {
3968
+ "kind": "api",
3969
+ "name": "supportcompensations.get",
3970
+ "operation": "get",
3971
+ "objectName": "@happyvertical/smrt-support:SupportCompensation",
3972
+ "path": "/supportcompensations/[id]",
3973
+ "method": "GET"
3974
+ },
3975
+ {
3976
+ "kind": "cli",
3977
+ "name": "supportcompensation_list",
3978
+ "operation": "list",
3979
+ "objectName": "@happyvertical/smrt-support:SupportCompensation"
3980
+ },
3981
+ {
3982
+ "kind": "cli",
3983
+ "name": "supportcompensation_get",
3984
+ "operation": "get",
3985
+ "objectName": "@happyvertical/smrt-support:SupportCompensation"
3986
+ },
3987
+ {
3988
+ "kind": "mcp",
3989
+ "name": "supportcompensation_list",
3990
+ "operation": "list",
3991
+ "objectName": "@happyvertical/smrt-support:SupportCompensation"
3992
+ },
3993
+ {
3994
+ "kind": "mcp",
3995
+ "name": "supportcompensation_get",
3996
+ "operation": "get",
3997
+ "objectName": "@happyvertical/smrt-support:SupportCompensation"
3998
+ },
3999
+ {
4000
+ "kind": "api",
4001
+ "name": "supportspecialists.list",
4002
+ "operation": "list",
4003
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist",
4004
+ "path": "/supportspecialists",
4005
+ "method": "GET"
4006
+ },
4007
+ {
4008
+ "kind": "api",
4009
+ "name": "supportspecialists.get",
4010
+ "operation": "get",
4011
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist",
4012
+ "path": "/supportspecialists/[id]",
4013
+ "method": "GET"
4014
+ },
4015
+ {
4016
+ "kind": "api",
4017
+ "name": "supportspecialists.create",
4018
+ "operation": "create",
4019
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist",
4020
+ "path": "/supportspecialists",
4021
+ "method": "POST"
4022
+ },
4023
+ {
4024
+ "kind": "api",
4025
+ "name": "supportspecialists.update",
4026
+ "operation": "update",
4027
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist",
4028
+ "path": "/supportspecialists/[id]",
4029
+ "method": "PATCH"
4030
+ },
4031
+ {
4032
+ "kind": "api",
4033
+ "name": "supportspecialists.delete",
4034
+ "operation": "delete",
4035
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist",
4036
+ "path": "/supportspecialists/[id]",
4037
+ "method": "DELETE"
4038
+ },
4039
+ {
4040
+ "kind": "cli",
4041
+ "name": "supportspecialist_list",
4042
+ "operation": "list",
4043
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist"
4044
+ },
4045
+ {
4046
+ "kind": "cli",
4047
+ "name": "supportspecialist_get",
4048
+ "operation": "get",
4049
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist"
4050
+ },
4051
+ {
4052
+ "kind": "mcp",
4053
+ "name": "supportspecialist_list",
4054
+ "operation": "list",
4055
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist"
4056
+ },
4057
+ {
4058
+ "kind": "mcp",
4059
+ "name": "supportspecialist_get",
4060
+ "operation": "get",
4061
+ "objectName": "@happyvertical/smrt-support:SupportSpecialist"
4062
+ },
4063
+ {
4064
+ "kind": "api",
4065
+ "name": "supportqualifications.list",
4066
+ "operation": "list",
4067
+ "objectName": "@happyvertical/smrt-support:SupportQualification",
4068
+ "path": "/supportqualifications",
4069
+ "method": "GET"
4070
+ },
4071
+ {
4072
+ "kind": "api",
4073
+ "name": "supportqualifications.get",
4074
+ "operation": "get",
4075
+ "objectName": "@happyvertical/smrt-support:SupportQualification",
4076
+ "path": "/supportqualifications/[id]",
4077
+ "method": "GET"
4078
+ },
4079
+ {
4080
+ "kind": "api",
4081
+ "name": "supportqualifications.create",
4082
+ "operation": "create",
4083
+ "objectName": "@happyvertical/smrt-support:SupportQualification",
4084
+ "path": "/supportqualifications",
4085
+ "method": "POST"
4086
+ },
4087
+ {
4088
+ "kind": "api",
4089
+ "name": "supportqualifications.update",
4090
+ "operation": "update",
4091
+ "objectName": "@happyvertical/smrt-support:SupportQualification",
4092
+ "path": "/supportqualifications/[id]",
4093
+ "method": "PATCH"
4094
+ },
4095
+ {
4096
+ "kind": "api",
4097
+ "name": "supportqualifications.delete",
4098
+ "operation": "delete",
4099
+ "objectName": "@happyvertical/smrt-support:SupportQualification",
4100
+ "path": "/supportqualifications/[id]",
4101
+ "method": "DELETE"
4102
+ },
4103
+ {
4104
+ "kind": "cli",
4105
+ "name": "supportqualification_list",
4106
+ "operation": "list",
4107
+ "objectName": "@happyvertical/smrt-support:SupportQualification"
4108
+ },
4109
+ {
4110
+ "kind": "cli",
4111
+ "name": "supportqualification_get",
4112
+ "operation": "get",
4113
+ "objectName": "@happyvertical/smrt-support:SupportQualification"
4114
+ },
4115
+ {
4116
+ "kind": "mcp",
4117
+ "name": "supportqualification_list",
4118
+ "operation": "list",
4119
+ "objectName": "@happyvertical/smrt-support:SupportQualification"
4120
+ },
4121
+ {
4122
+ "kind": "mcp",
4123
+ "name": "supportqualification_get",
4124
+ "operation": "get",
4125
+ "objectName": "@happyvertical/smrt-support:SupportQualification"
4126
+ },
4127
+ {
4128
+ "kind": "api",
4129
+ "name": "supportavailabilities.list",
4130
+ "operation": "list",
4131
+ "objectName": "@happyvertical/smrt-support:SupportAvailability",
4132
+ "path": "/supportavailabilities",
4133
+ "method": "GET"
4134
+ },
4135
+ {
4136
+ "kind": "api",
4137
+ "name": "supportavailabilities.get",
4138
+ "operation": "get",
4139
+ "objectName": "@happyvertical/smrt-support:SupportAvailability",
4140
+ "path": "/supportavailabilities/[id]",
4141
+ "method": "GET"
4142
+ },
4143
+ {
4144
+ "kind": "api",
4145
+ "name": "supportavailabilities.create",
4146
+ "operation": "create",
4147
+ "objectName": "@happyvertical/smrt-support:SupportAvailability",
4148
+ "path": "/supportavailabilities",
4149
+ "method": "POST"
4150
+ },
4151
+ {
4152
+ "kind": "api",
4153
+ "name": "supportavailabilities.update",
4154
+ "operation": "update",
4155
+ "objectName": "@happyvertical/smrt-support:SupportAvailability",
4156
+ "path": "/supportavailabilities/[id]",
4157
+ "method": "PATCH"
4158
+ },
4159
+ {
4160
+ "kind": "api",
4161
+ "name": "supportavailabilities.delete",
4162
+ "operation": "delete",
4163
+ "objectName": "@happyvertical/smrt-support:SupportAvailability",
4164
+ "path": "/supportavailabilities/[id]",
4165
+ "method": "DELETE"
4166
+ },
4167
+ {
4168
+ "kind": "cli",
4169
+ "name": "supportavailability_list",
4170
+ "operation": "list",
4171
+ "objectName": "@happyvertical/smrt-support:SupportAvailability"
4172
+ },
4173
+ {
4174
+ "kind": "cli",
4175
+ "name": "supportavailability_get",
4176
+ "operation": "get",
4177
+ "objectName": "@happyvertical/smrt-support:SupportAvailability"
4178
+ },
4179
+ {
4180
+ "kind": "mcp",
4181
+ "name": "supportavailability_list",
4182
+ "operation": "list",
4183
+ "objectName": "@happyvertical/smrt-support:SupportAvailability"
4184
+ },
4185
+ {
4186
+ "kind": "mcp",
4187
+ "name": "supportavailability_get",
4188
+ "operation": "get",
4189
+ "objectName": "@happyvertical/smrt-support:SupportAvailability"
4190
+ },
4191
+ {
4192
+ "kind": "api",
4193
+ "name": "supportworklinks.list",
4194
+ "operation": "list",
4195
+ "objectName": "@happyvertical/smrt-support:SupportWorkLink",
4196
+ "path": "/supportworklinks",
4197
+ "method": "GET"
4198
+ },
4199
+ {
4200
+ "kind": "api",
4201
+ "name": "supportworklinks.get",
4202
+ "operation": "get",
4203
+ "objectName": "@happyvertical/smrt-support:SupportWorkLink",
4204
+ "path": "/supportworklinks/[id]",
4205
+ "method": "GET"
4206
+ },
4207
+ {
4208
+ "kind": "cli",
4209
+ "name": "supportworklink_list",
4210
+ "operation": "list",
4211
+ "objectName": "@happyvertical/smrt-support:SupportWorkLink"
4212
+ },
4213
+ {
4214
+ "kind": "cli",
4215
+ "name": "supportworklink_get",
4216
+ "operation": "get",
4217
+ "objectName": "@happyvertical/smrt-support:SupportWorkLink"
4218
+ },
4219
+ {
4220
+ "kind": "mcp",
4221
+ "name": "supportworklink_list",
4222
+ "operation": "list",
4223
+ "objectName": "@happyvertical/smrt-support:SupportWorkLink"
4224
+ },
4225
+ {
4226
+ "kind": "mcp",
4227
+ "name": "supportworklink_get",
4228
+ "operation": "get",
4229
+ "objectName": "@happyvertical/smrt-support:SupportWorkLink"
4230
+ }
4231
+ ],
4232
+ "prompts": [],
4233
+ "relationshipsV2": {
4234
+ "foreignKeyFields": 29,
4235
+ "crossPackageRefFields": 12,
4236
+ "junctionCollections": 0,
4237
+ "hierarchicalObjects": 0,
4238
+ "polymorphicAssociations": 0,
4239
+ "uuidColumns": 92
4240
+ },
4241
+ "agentDoc": "# @happyvertical/smrt-support\n\nAI-first Support Cases for the SMRT framework (epic #1934). Every inbound\nsupport interaction — chat message or email — creates or joins one canonical,\ntenant-scoped **Support Case**; channels stay transports, never separate\nsystems of record. The package owns the case lifecycle, channel intake, the\nAutomated Support Response workflow with lossless **Human Handoff**,\nProject-qualified routing, **Service Target** clocks with timed escalation,\nand auditable **Service Time Entries** whose client charges and provider\ncompensation stay separate.\n\n**Boundary (FR-29a):** Support owns tickets, interactions, routing, and\nservice targets. Delivery Operations owns repository work — a **Delivery\nHandoff** links a case to a Development Work Item (e.g.\n`@happyvertical/smrt-projects:Issue`) via a `SupportWorkLink` without ever\ndriving its execution; the delivery side reports status echoes back.\n\n## Models\n\nCase-side models are **internal**: generated API/CLI/MCP surfaces are\nread-only (`list`/`get`) and every write goes through the service facades\n(the `smrt-chat` `ChatService` idiom). Operational configuration models\n(bindings, policies, specialists, qualifications, availability) expose full\ngenerated CRUD; **commercial terms** (`SupportPlan`,\n`SupportCompensationPlan`) are read-only too — their writes flow through the\n`support.manage-plans`-gated `SupportPlanAdminService`.\n\n### Case core (#1926)\n\n- **SupportCase** (`support_cases`) — canonical ticket: `caseNumber`,\n `subject`, `status` (`new → triaged → assigned → in_progress →\n waiting_on_client|escalated → resolved → closed`, guarded at save time via\n the WeakMap + authoritative-DB-read idiom from S5 #1390), `priority`,\n `severity` (plan-defined key), `category`, `sensitive`, `channelKind`,\n `clientProfileId`/`openedByProfileId` (crossPackageRef → Profile),\n `projectId` (app-defined string — deliberately not an FK), `bindingId`,\n `threadKey` (create-or-join dedup key), `planId` + `planSnapshot` (terms\n frozen at apply time), assignment fields, response stamps\n (`acknowledgedAt`, `firstRespondedAt`), `humanRequestedAt`, resolution\n fields, `reopenCount`/`lastReopenedAt`, `aiEnabled`.\n- **SupportInteraction** (`support_interactions`,\n `conflictColumns: ['source_key']`) — channel-neutral transport record:\n `direction` (`inbound`/`outbound`/`internal`), `channelKind`, `actorKind`\n (`client`/`specialist`/`agent`/`system`), denormalized `body`, and the\n qualified `sourceType`/`sourceId` + globally unique `sourceKey`\n (`chat:<messageId>`, `email:<emailId>`, `manual:<uuid>`) that makes\n re-ingestion idempotent.\n- **SupportCaseEvent** (`support_case_events`) — append-only audit trail\n (transitions, assignments, AI runs, handoffs, escalations, target state,\n work links, reopens). Together with interactions this is the complete\n context a Human Handoff transfers.\n- **SupportChannelBinding** (`support_channel_bindings`,\n `conflictColumns: ['target_type','target_id']`) — marks a container as a\n support intake channel: `bindingKind` (`chat_room`/`email_account`),\n qualified `targetType` + `targetId`, default client/project/plan,\n `selfAddresses` (email direction heuristic). Unbound containers are never\n touched.\n- **SupportWorkLink** (`support_work_links`) — Support/Development Work Item\n links with a read-only `status` echo.\n\n### AI workflow (#1928)\n\n- **SupportPolicy** (`support_policies`) — what the AI may do without a\n human: `autoAcknowledge`/`autoClassify`/`autoAnswer` (on by default),\n `autoTroubleshoot`/`autoResolve` (off by default),\n `autoResolveMaxSeverity`, `confidenceThreshold`, `maxAutoAttempts`,\n `sensitiveCategories`, `allowedTools`, `autoSendEmailReplies` (off —\n email replies are drafted, not sent). Resolution is most-specific-wins on\n `(planId, projectId)`; no row → `DEFAULT_SUPPORT_POLICY` (conservative).\n- **SupportAiRun** (`support_ai_runs`) — append-only audit of each phase\n (`acknowledge`/`classify`/`answer`/`troubleshoot`/`resolve`) with\n `confidence`, classification output, knowledge refs, tool calls, outcome\n (`completed`/`skipped`/`failed`/`handed_off`), and `correlationId`.\n\n### Routing, targets, escalation (#1929)\n\n- **SupportSpecialist** (`support_specialists`) — specialist role record on a\n Profile (the commerce `Customer` role-record idiom): `languages`,\n `timezone`, `maxConcurrentCases`, `onCallPriority`, status.\n- **SupportQualification** (`support_qualifications`) — effective-dated\n Project Support Qualification (`trainee`/`qualified`/`expert`).\n- **SupportAvailability** (`support_availability_windows`) — weekly windows\n plus `on_call`/`time_off` spans.\n- **SupportPlan** (`support_plans`, `conflictColumns:\n ['tenant_id','plan_key']`) — the Managed Support Plan: coverage calendar +\n holidays + timezone, channels, severity definitions, per-severity\n acknowledgement/response/update/resolution target minutes, `pauseStatuses`\n (clocks pause only when the plan says so), escalation policy steps,\n availability fee, `includedMinutes`, `overageHourlyRate`,\n `onCallHourlyRate`, time-approval policy, optional\n `subscriptionPlanKey` binding (string, not a dependency).\n `snapshotTerms()` feeds `SupportCase.planSnapshot`.\n- **SupportServiceTarget** (`support_service_targets`,\n `conflictColumns: ['case_id','target_type','cycle']`) — one clock per\n target type (update clocks recur via `cycle`), with pause accounting and\n `escalationJobId` (the one-shot `_smrt_jobs` row scheduled at `dueAt`,\n cancelled on satisfy).\n- **SupportEscalation** (`support_escalations`) — the audit record of one\n escalation firing.\n- **SupportCompensationPlan** (`support_compensation_plans`) —\n effective-dated Support Specialist earning terms; specialist-specific plan\n wins over the tenant default at the work instant. Deliberately separate\n from `SupportPlan` (client pricing) so margin stays measurable.\n\n### Service time (#1930)\n\n- **ServiceTimeEntry** (`service_time_entries`) — auditable Professional\n Service duration: work-context-generic (`caseId` and/or polymorphic\n `workRefType`/`workRefId`), delivering Participant (`participantKind`\n `human`/`agent` + `participantProfileId`/`agentRef`), `source`\n (`timer`/`manual`/`import`/`agent` — one shared validation/audit\n contract), evidence JSON, and lifecycle `draft → submitted →\n approved|rejected`, `approved → corrected` only. **Approved entries are\n immutable**: the work-defining fields are frozen at save time (the\n `LicenseSale` WeakMap-freeze idiom, backed by an authoritative DB-row\n comparison); disputes create explicit corrections via `correctionOfId`.\n- **SupportCharge** / **SupportCompensation** (`support_charges` /\n `support_compensations`, one per time entry) — derived commercial\n snapshots: client amount from the Managed Support Plan (included-time\n consumption then metered overage) vs provider amount from the Support\n Compensation Plan, each with a frozen `rateSnapshot`. Margin = charge −\n compensation, computed by readers; settlement/invoicing composes at the\n app/accounting boundary (#1925) and is out of scope here.\n\n## Services\n\n- **SupportCaseService** — the closed write facade: `openCase`,\n `recordInteraction` (idempotent on `sourceKey`; stamps\n `acknowledgedAt`/`firstRespondedAt`; inbound un-parks\n `waiting_on_client`), `transition`, `assign`, `resolve`, `close`,\n `reopen` (preserves prior resolution in the reopen event), `requestHuman`,\n `linkWork`/`recordWorkStatus` (Delivery Handoff), `recordEvent`,\n `getTimeline` (merged interactions + events).\n- **SupportIntakeService** — create-or-join intake for both channels:\n `ingestChatMessage` (bound `ChatRoom`; `chat:<roomId>[:<threadId>]` thread\n keys; only `role: 'user'` messages), `ingestEmail` (bound `EmailAccount`;\n RFC-thread joins via `inReplyTo`; `selfAddresses` skip; unresolved senders\n park the case with `metadata.unresolvedClient`), plus\n `registerSupportIntake()` — an opt-in `GlobalInterceptors.afterSave`\n observer keyed on the `ChatMessage`/`Email` class names that never throws\n into the source package's save path. Join semantics: open case → join;\n resolved → reopen; closed → new case.\n- **SupportAiWorkflow** — the Automated Support Response (FR-28a):\n `processIntake`/`processCase` run acknowledge → classify → answer →\n resolve under the resolved `SupportPolicy` (conservative defaults), each\n phase writing a `SupportAiRun` + `ai_run` case event. AI calls go through\n the injected `SupportAiBoundary` (default uses `supportCase.do()` with\n defensive JSON parsing that fails toward the human); knowledge comes from\n the pluggable `SupportKnowledgeProvider` (default no-op). Classification\n never overwrites human triage; email answers are drafted\n (`metadata.draft`) unless the policy allows sending. Handoff triggers —\n `client_request`, `low_confidence`, `high_severity`, `sensitive`,\n `failed_resolution`, `policy` (attempt budget) — are always active.\n- **HumanHandoffService** — the lossless Human Handoff (FR-28b):\n `handoff` assembles the full context package (case state + compact\n timeline + AI runs) into the `handoff` event, stamps\n `metadata.activeHandoff` for the no-repeat guarantee (repeat triggers are\n deduped events), routes through the injected `assignSpecialist` seam\n (#1929's routing service plugs in; default queues `new` cases to\n `triaged`), and `releaseHandoff` clears the flag.\n- **ServiceTargetEngine** — Service Target clocks (FR-30/31):\n `startTargetsForCase` derives per-severity clocks from the case's\n `planSnapshot` (live plan fallback) with due times computed in covered\n time (`coverage-calendar.ts`: timezone-aware weekly windows + holidays;\n empty coverage = 24×7) and schedules one-shot `_smrt_jobs` escalation jobs\n at `dueAt`; `onInteractionRecorded` satisfies acknowledgement/response and\n recurs `update` cycles; `onCaseTransition` pauses/resumes clocks only when\n the plan's `pauseStatuses` say so (recomputing remaining covered minutes)\n and settles targets on resolve. Breach → `SupportServiceTarget.\n checkAndEscalate` (background-eligible, at-least-once-safe) marks the\n breach and escalates through the plan's policy steps (notify/reassign,\n delayed follow-up levels), transitioning the case to `escalated`.\n- **SupportPlanAdminService** — the permission-gated write surface for\n commercial terms: create/update/archive for Managed Support Plans and\n Support Compensation Plans, every act behind `support.manage-plans` with\n cross-tenant writes refused (generated CRUD on both models is read-only).\n- **SupportRoutingService** — explainable ranked routing (FR-30):\n `rankSpecialists` hard-filters on active status, effective Project\n Support Qualification, workload cap, and availability windows (specialist\n timezone), then scores preferred-specialist, qualification level, on-call,\n workload headroom, and language (weights in `ROUTING_WEIGHTS`; every\n factor recorded so ineligible specialists show why); `autoAssign` writes\n the assignment with its rationale; `reassign` is gated by\n `support.reassign-case` and refuses cross-tenant principals.\n- **ServiceTimeEntryService** — the ONE recording contract for all four\n entry sources (FR-40): `record` validates duration (explicit or derived\n from the period; `timer` needs both bounds), participant coherence\n (`human` → `participantProfileId`, `agent` → `agentRef`), and the work\n context (case and/or work ref; case entries copy the tenant and append a\n `time_recorded` event); `submit` stamps the submitter.\n- **TimeEntryApprovalService** — the approval gate and only writer of the\n commercial snapshots (FR-36): `approve` resolves the governing terms (case\n `planSnapshot` first, live plan fallback, zero-rate default), gates by\n policy path (`automatic`/`threshold`/`operator`/`client`; operator paths\n behind `support.approve-time-entry`; cross-tenant principals refused), then\n derives the `SupportCharge` (included time first, then overage/on-call) and\n `SupportCompensation` (effective-dated plan) rows; `reject` and `correct`\n (supersede + linked fresh draft via `correctionOfId`) round out the\n lifecycle. Case events carry the charge amount only — compensation never\n leaks case-side.\n\n## Permissions\n\nContributed to the runtime catalog on import (the\n`personas.activate-directive` pattern): `support.reassign-case`,\n`support.approve-time-entry`, `support.manage-plans`. Privileged service\noperations take a `SupportPrincipal` (`can(slug)`), built from explicit slugs\nor a `PermissionResolver`.\n\n## Svelte UI\n\n`@happyvertical/smrt-support/svelte` ships presentational Svelte 5 surfaces:\n`CaseQueue` (priority/status/assignment/channel at a glance, `onselect`),\n`CaseDetail` (header, meta, linked work, merged timeline), `TargetList`\n(Service Target clocks with due/paused/satisfied/breached badges),\n`RoutingRationale` (ranked specialists with eligibility + factor chips and\nan optional reassign action), and `TimeEntryApprovalQueue`\n(date/hours/description/worker/status/amount with\napprove/reject-with-reason actions on submitted rows). Hosts adapt models\nwith `toSupportCaseView` / `toCaseTimelineItemView` / `toServiceTargetView`\n/ `toSupportTimeEntryView` — the time-entry view's first eight fields\ndeliberately match `smrt-projects`' presentation `TimeEntry` contract.\nComponents use `smrt-ui` primitives (`smrtRawPrimitives: \"strict\"`).\n\n## Dependencies\n\nLeaf package (nothing depends back on it): `smrt-core`, `smrt-tenancy`,\n`smrt-chat`, `smrt-messages`, `smrt-jobs`, `smrt-users`, `smrt-ui`,\n`@happyvertical/logger`, `@happyvertical/sql`. Profile / smrt-projects /\nsubscriptions references are `@crossPackageRef` string ids or plain string\nkeys only — no package edge. No inter-`smrt-*` `peerDependencies`.\n\n## Validation\n\n```sh\npnpm --filter @happyvertical/smrt-support test\npnpm --filter @happyvertical/smrt-support typecheck\npnpm --filter @happyvertical/smrt-support build\n```\n\n## Gotchas\n\n- **Writes go through the facades** — the case-side generated routes are\n read-only on purpose; `create`/`update` on them is not a bug to \"fix\".\n- **`projectId` is an app-defined string** — the consuming app owns the\n Project concept; don't turn it into an FK or a crossPackageRef to\n `smrt-projects:Project` (that class is a provider board, not a client\n initiative).\n- **`SupportCase.threadKey` + `SupportInteraction.sourceKey` carry intake\n correctness** — `sourceKey` is globally unique (`conflictColumns`), so\n replayed transport rows are no-ops; new manual interactions must use a\n fresh `manual:<uuid>` key.\n- **High-volume models avoid the inherited `name` field** (`subject`,\n `displayName`, …) so the default `(slug, context, _meta_type)` unique index\n falls back to id-derived slugs; named config models carry\n `conflictColumns` instead (which replaces that index).\n- **Approved time entries never change** — corrections are new rows linked\n by `correctionOfId`; the original flips to `corrected` with its snapshot\n intact.\n- **Plan edits never rewrite history** — cases keep `planSnapshot`, charges\n and compensation keep `rateSnapshot`.\n- **Create-or-join and included-time consumption serialize in-process** —\n `SupportIntakeService` (per conversation key) and\n `TimeEntryApprovalService` (per case) use a `KeyedMutex`, which covers the\n single-app-process deployment these paths run in. Multi-replica\n deployments must serialize at the app layer (route a conversation's\n intake / a case's approvals through one worker, or add an app-level\n claim) — the framework exposes no cross-adapter transaction primitive at\n this seam. Escalation is additionally idempotent per `(target, level)`,\n so at-least-once job redelivery never stacks duplicate escalations.\n"
4242
+ }