@trii/types 2.10.744 → 2.10.746
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Tickets/Category.d.ts +18 -0
- package/dist/Tickets/Common.d.ts +9 -0
- package/dist/Tickets/Dashboard.d.ts +98 -1
- package/dist/Tickets/Fields.d.ts +98 -0
- package/dist/Tickets/Routing.d.ts +43 -0
- package/dist/Tickets/Routing.js +6 -1
- package/dist/Tickets/SelfService.d.ts +26 -2
- package/dist/Tickets/Sla.d.ts +35 -0
- package/dist/Tickets/Ticket.d.ts +5 -0
- package/dist/Tickets/Workflow.d.ts +32 -0
- package/package.json +1 -1
|
@@ -69,3 +69,21 @@ export interface IUpdateTicketResolutionTypeDto {
|
|
|
69
69
|
fieldDefinitionIds?: string[] | null;
|
|
70
70
|
layoutIds?: string[] | null;
|
|
71
71
|
}
|
|
72
|
+
/** Body of GET /categories/{id}/usages. */
|
|
73
|
+
export interface ICategoryUsages {
|
|
74
|
+
subcategoryCount: number;
|
|
75
|
+
requestTypeCount: number;
|
|
76
|
+
fieldCount: number;
|
|
77
|
+
layoutCount: number;
|
|
78
|
+
activeTicketCount: number;
|
|
79
|
+
}
|
|
80
|
+
/** Body of GET /resolution-types/{id}/usages. */
|
|
81
|
+
export interface IResolutionTypeUsages {
|
|
82
|
+
ticketCount: number;
|
|
83
|
+
}
|
|
84
|
+
/** One rejected reference in a 422 from the resolution-type write endpoints. */
|
|
85
|
+
export interface IResolutionTypeReferenceProblem {
|
|
86
|
+
fieldName: 'fieldDefinitionIds' | 'layoutIds';
|
|
87
|
+
code: 'REFERENCE_NOT_FOUND' | 'REFERENCE_DISABLED';
|
|
88
|
+
message: string;
|
|
89
|
+
}
|
package/dist/Tickets/Common.d.ts
CHANGED
|
@@ -150,3 +150,12 @@ export interface ITicketMetricGroup {
|
|
|
150
150
|
label: string;
|
|
151
151
|
value: number;
|
|
152
152
|
}
|
|
153
|
+
/** The stored value of a FILE custom field. The blob lives under
|
|
154
|
+
* tickets/{ticketId}/files/ and is written through media-api. */
|
|
155
|
+
export interface ITicketFileValue {
|
|
156
|
+
url: string;
|
|
157
|
+
storageKey: string;
|
|
158
|
+
fileName: string;
|
|
159
|
+
mimeType: string;
|
|
160
|
+
sizeBytes: number;
|
|
161
|
+
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ChannelType } from "../Common/Channels/ChannelType";
|
|
2
|
-
import { ITicketDateRange, ITicketMetricGroup, ITicketMetricPoint, TicketPropertyValue } from "./Common";
|
|
2
|
+
import { ITicketDateRange, ITicketMetricGroup, ITicketMetricPoint, TicketPriority, TicketPropertyValue } from "./Common";
|
|
3
3
|
import { ITicketFilter } from "./Api";
|
|
4
|
+
import type { SlaStatus } from "./Sla";
|
|
5
|
+
import type { AgentAvailabilityStatus } from "./Routing";
|
|
4
6
|
export declare enum TicketAnalyticsAudience {
|
|
5
7
|
AGENT = "AGENT",
|
|
6
8
|
SUPERVISOR = "SUPERVISOR",
|
|
@@ -484,3 +486,98 @@ export interface ITicketDashboardMetrics {
|
|
|
484
486
|
byCategory: ITicketMetricGroup[];
|
|
485
487
|
byAssignee: ITicketMetricGroup[];
|
|
486
488
|
}
|
|
489
|
+
export interface IAgentDashboardQueueItem {
|
|
490
|
+
ticketId: string;
|
|
491
|
+
number: number;
|
|
492
|
+
title: string;
|
|
493
|
+
priority: TicketPriority;
|
|
494
|
+
statusId: string;
|
|
495
|
+
statusLabel: string;
|
|
496
|
+
dueAt?: Date;
|
|
497
|
+
/**
|
|
498
|
+
* PENDING / BREACHED / NOT_APPLICABLE are the only values this backend can
|
|
499
|
+
* derive from dueAt — MET and PAUSED need real SLA cycles, which are not
|
|
500
|
+
* persisted yet. "At risk" is NOT a SlaStatus value: the domain models it as a
|
|
501
|
+
* separate warning threshold, which is why it is a boolean of its own.
|
|
502
|
+
*/
|
|
503
|
+
slaStatus: SlaStatus;
|
|
504
|
+
slaAtRisk: boolean;
|
|
505
|
+
createdAt: Date;
|
|
506
|
+
updatedAt?: Date;
|
|
507
|
+
}
|
|
508
|
+
export interface IAgentDashboardCapacity {
|
|
509
|
+
maximum: number;
|
|
510
|
+
occupied: number;
|
|
511
|
+
freePercentage: number;
|
|
512
|
+
inProgress: number;
|
|
513
|
+
waitingCustomer: number;
|
|
514
|
+
new: number;
|
|
515
|
+
}
|
|
516
|
+
export interface IAgentDashboardQualityGoal {
|
|
517
|
+
actual: number;
|
|
518
|
+
target: number;
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* The agent's PERSONAL dashboard. Not to be confused with
|
|
522
|
+
* ITicketDashboardMetrics, which is the space-wide aggregate: everything here is
|
|
523
|
+
* filtered by the acting agent.
|
|
524
|
+
*/
|
|
525
|
+
export interface IAgentDashboardMetrics {
|
|
526
|
+
range: {
|
|
527
|
+
from: Date;
|
|
528
|
+
to: Date;
|
|
529
|
+
};
|
|
530
|
+
activeLoad: number;
|
|
531
|
+
resolvedCount: number;
|
|
532
|
+
resolvedChangePercentage?: number;
|
|
533
|
+
receivedCount: number;
|
|
534
|
+
awaitingResponseCount: number;
|
|
535
|
+
averageFirstResponseMinutes: number;
|
|
536
|
+
averageResolutionMinutes: number;
|
|
537
|
+
slaAttentionCount: number;
|
|
538
|
+
slaBreachedCount: number;
|
|
539
|
+
slaAtRiskCount: number;
|
|
540
|
+
priorityQueue: IAgentDashboardQueueItem[];
|
|
541
|
+
capacity: IAgentDashboardCapacity;
|
|
542
|
+
loadByPriority: {
|
|
543
|
+
priority: TicketPriority;
|
|
544
|
+
count: number;
|
|
545
|
+
}[];
|
|
546
|
+
availabilityStatus: AgentAvailabilityStatus;
|
|
547
|
+
resolutionRhythm: {
|
|
548
|
+
series: ITicketMetricPoint[];
|
|
549
|
+
changePercentage?: number;
|
|
550
|
+
};
|
|
551
|
+
qualityGoals: {
|
|
552
|
+
firstResponseSla: IAgentDashboardQualityGoal;
|
|
553
|
+
resolutionSla: IAgentDashboardQualityGoal;
|
|
554
|
+
assignmentAcceptanceRate: IAgentDashboardQualityGoal;
|
|
555
|
+
};
|
|
556
|
+
csatScore: IAgentDashboardQualityGoal;
|
|
557
|
+
warnings: string[];
|
|
558
|
+
}
|
|
559
|
+
/** A metric of the catalog, plus the dimensions a query MUST supply for it. */
|
|
560
|
+
export interface IMetricCatalogEntry extends ITicketMetricDefinition {
|
|
561
|
+
requiredDimensions?: TicketAnalyticsDimension[];
|
|
562
|
+
}
|
|
563
|
+
export type IWidgetPresetQuery = Omit<ITicketMetricQuery, 'filter'>;
|
|
564
|
+
export type WidgetPresetCategory = 'kpi' | 'trend' | 'breakdown' | 'sla';
|
|
565
|
+
/**
|
|
566
|
+
* A ready-made widget the user can drop on a dashboard. `queries` drops `filter`
|
|
567
|
+
* on purpose: the preset defines WHAT is measured, the dashboard defines over
|
|
568
|
+
* which slice.
|
|
569
|
+
*/
|
|
570
|
+
export interface IWidgetPreset {
|
|
571
|
+
key: string;
|
|
572
|
+
label: string;
|
|
573
|
+
description: string;
|
|
574
|
+
category: WidgetPresetCategory;
|
|
575
|
+
audiences: TicketAnalyticsAudience[];
|
|
576
|
+
defaultSize: {
|
|
577
|
+
width: number;
|
|
578
|
+
height: number;
|
|
579
|
+
};
|
|
580
|
+
widget: Omit<ITicketWidgetConfiguration, 'id' | 'position' | 'queries'> & {
|
|
581
|
+
queries: IWidgetPresetQuery[];
|
|
582
|
+
};
|
|
583
|
+
}
|
package/dist/Tickets/Fields.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ITicketAuditedEntity, TicketPropertyValue } from './Common';
|
|
2
2
|
import { TicketConditionOperator } from './Workflow';
|
|
3
3
|
import { TicketDataClassification, TicketMaskingStrategy } from './Security';
|
|
4
|
+
import type { TicketLayoutVisibility } from './Layouts';
|
|
4
5
|
export declare enum TicketFieldType {
|
|
5
6
|
SHORT_TEXT = "SHORT_TEXT",
|
|
6
7
|
LONG_TEXT = "LONG_TEXT",
|
|
@@ -135,3 +136,100 @@ export interface IUpdateTicketFieldDefinitionDto extends Partial<Omit<ICreateTic
|
|
|
135
136
|
sortable?: boolean;
|
|
136
137
|
exportable?: boolean;
|
|
137
138
|
}
|
|
139
|
+
export interface ITicketFormField {
|
|
140
|
+
fieldNameKey: string;
|
|
141
|
+
order: number;
|
|
142
|
+
column: number;
|
|
143
|
+
width: number;
|
|
144
|
+
visible: boolean;
|
|
145
|
+
/**
|
|
146
|
+
* One EDIT layout serves both the read and the edit screen, so `visible` is
|
|
147
|
+
* not enough to tell them apart: `visibility` is what says whether the field
|
|
148
|
+
* shows only on create, only on edit, or only on read.
|
|
149
|
+
*/
|
|
150
|
+
visibility?: TicketLayoutVisibility;
|
|
151
|
+
labelOverride?: string;
|
|
152
|
+
placeholderOverride?: string;
|
|
153
|
+
/** Resolved by the field scope, not by the layout: the very same values
|
|
154
|
+
* validation will apply on save. */
|
|
155
|
+
required: boolean;
|
|
156
|
+
readOnly: boolean;
|
|
157
|
+
hidden: boolean;
|
|
158
|
+
/** The full definition travels with the field so the client does not have to
|
|
159
|
+
* fetch /fields separately and rebuild the form from two sources. */
|
|
160
|
+
definition: ITicketFieldDefinition;
|
|
161
|
+
}
|
|
162
|
+
export interface ITicketFormSection {
|
|
163
|
+
id: string;
|
|
164
|
+
title?: string;
|
|
165
|
+
description?: string;
|
|
166
|
+
order: number;
|
|
167
|
+
columns?: number;
|
|
168
|
+
collapsible?: boolean;
|
|
169
|
+
collapsedByDefault?: boolean;
|
|
170
|
+
fields: ITicketFormField[];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* A resolved ticket form: which fields apply, and how they are arranged.
|
|
174
|
+
*
|
|
175
|
+
* The split is the point: the field SCOPE decides membership, the layout decides
|
|
176
|
+
* presentation. A field in scope that the layout does not mention is appended
|
|
177
|
+
* anyway; one the layout still lists but that no longer applies is not rendered.
|
|
178
|
+
* That is why a space with no layouts still has a working form.
|
|
179
|
+
*/
|
|
180
|
+
export interface ITicketFormSchema {
|
|
181
|
+
viewType: string;
|
|
182
|
+
/** Absent when no layout applies: the form is served anyway, in default order. */
|
|
183
|
+
layoutId?: string;
|
|
184
|
+
sections: ITicketFormSection[];
|
|
185
|
+
/** In scope but missing from the layout; appended at the end. Diagnostic:
|
|
186
|
+
* reveals layouts that fell behind the field configuration. */
|
|
187
|
+
appendedFieldNameKeys: string[];
|
|
188
|
+
/** Present in the layout but out of scope. Not rendered; same diagnostic value. */
|
|
189
|
+
ignoredLayoutFieldNameKeys: string[];
|
|
190
|
+
}
|
|
191
|
+
/** Body of GET /fields/{id}/usages. */
|
|
192
|
+
export interface IFieldUsages {
|
|
193
|
+
requestTypes: {
|
|
194
|
+
id: string;
|
|
195
|
+
name: string;
|
|
196
|
+
}[];
|
|
197
|
+
referencedByFields: {
|
|
198
|
+
id: string;
|
|
199
|
+
nameKey: string;
|
|
200
|
+
label: string;
|
|
201
|
+
}[];
|
|
202
|
+
/** Real usage in tickets: an indexed total plus a bounded sample of the
|
|
203
|
+
* most-recently-touched ones, so a small set gives concrete references and a
|
|
204
|
+
* large one just shows a few plus the count. */
|
|
205
|
+
tickets: {
|
|
206
|
+
count: number;
|
|
207
|
+
sample: {
|
|
208
|
+
id: string;
|
|
209
|
+
number: number;
|
|
210
|
+
title: string;
|
|
211
|
+
}[];
|
|
212
|
+
};
|
|
213
|
+
layouts: {
|
|
214
|
+
supported: false;
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
/** Body of GET /layouts/{id}/usages. */
|
|
218
|
+
export interface ITicketLayoutUsages {
|
|
219
|
+
categories: {
|
|
220
|
+
id: string;
|
|
221
|
+
name: string;
|
|
222
|
+
}[];
|
|
223
|
+
requestTypes: {
|
|
224
|
+
id: string;
|
|
225
|
+
name: string;
|
|
226
|
+
}[];
|
|
227
|
+
resolutionTypes: {
|
|
228
|
+
id: string;
|
|
229
|
+
name: string;
|
|
230
|
+
}[];
|
|
231
|
+
views: {
|
|
232
|
+
id: string;
|
|
233
|
+
name: string;
|
|
234
|
+
}[];
|
|
235
|
+
}
|
|
@@ -390,3 +390,46 @@ export interface ICreateAgentChannelCapacityDto {
|
|
|
390
390
|
reservedCapacity?: number;
|
|
391
391
|
}
|
|
392
392
|
export type IUpdateAgentChannelCapacityDto = Partial<Omit<ICreateAgentChannelCapacityDto, "userId" | "channelType">>;
|
|
393
|
+
export interface IEscalationPolicyUsageRef {
|
|
394
|
+
id: string;
|
|
395
|
+
name: string;
|
|
396
|
+
enabled: boolean;
|
|
397
|
+
}
|
|
398
|
+
/** Body of GET /routing/escalation-policies/{id}/usages. */
|
|
399
|
+
export interface IEscalationPolicyUsage {
|
|
400
|
+
queues: IEscalationPolicyUsageRef[];
|
|
401
|
+
}
|
|
402
|
+
export interface IEscalationPolicyUsageSummary {
|
|
403
|
+
queuesCount: number;
|
|
404
|
+
}
|
|
405
|
+
/** Mirror of TicketSkillWarningCode; only one member is needed today. */
|
|
406
|
+
export declare enum EscalationPolicyWarningCode {
|
|
407
|
+
DISABLED_BUT_REFERENCED = "DISABLED_BUT_REFERENCED"
|
|
408
|
+
}
|
|
409
|
+
/** List/get view: the base DTO plus a usage summary and warnings. */
|
|
410
|
+
export interface ITicketEscalationPolicyWithUsage extends ITicketEscalationPolicy {
|
|
411
|
+
usage: IEscalationPolicyUsageSummary;
|
|
412
|
+
warnings: EscalationPolicyWarningCode[];
|
|
413
|
+
}
|
|
414
|
+
export interface ICreateAgentSkillDto {
|
|
415
|
+
userId: string;
|
|
416
|
+
skillId: string;
|
|
417
|
+
proficiency?: number;
|
|
418
|
+
priority?: number;
|
|
419
|
+
enabled?: boolean;
|
|
420
|
+
validFrom?: string;
|
|
421
|
+
validUntil?: string;
|
|
422
|
+
}
|
|
423
|
+
/** `channelType` null means "the agent's global capacity", not "unknown". */
|
|
424
|
+
export interface ICreateAgentCapacityDto {
|
|
425
|
+
userId: string;
|
|
426
|
+
channelType?: number | null;
|
|
427
|
+
maximumConcurrent: number;
|
|
428
|
+
reservedCapacity?: number;
|
|
429
|
+
enabled?: boolean;
|
|
430
|
+
}
|
|
431
|
+
export interface IListAgentSkillsFilters {
|
|
432
|
+
userId?: string;
|
|
433
|
+
skillId?: string;
|
|
434
|
+
enabled?: boolean;
|
|
435
|
+
}
|
package/dist/Tickets/Routing.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TicketSkillWarningCode = exports.TicketAssignmentEndReason = exports.TicketEscalationActionType = exports.TicketEscalationTrigger = exports.TicketSkillRelaxationMode = exports.TicketQueueOrderDirection = exports.TicketQueueOrderCriterion = exports.TicketRoutingConditionGroupOperator = exports.AgentAvailabilityStatus = exports.TicketRoutingStatus = exports.TicketRoutingStrategy = void 0;
|
|
3
|
+
exports.EscalationPolicyWarningCode = exports.TicketSkillWarningCode = exports.TicketAssignmentEndReason = exports.TicketEscalationActionType = exports.TicketEscalationTrigger = exports.TicketSkillRelaxationMode = exports.TicketQueueOrderDirection = exports.TicketQueueOrderCriterion = exports.TicketRoutingConditionGroupOperator = exports.AgentAvailabilityStatus = exports.TicketRoutingStatus = exports.TicketRoutingStrategy = void 0;
|
|
4
4
|
var TicketRoutingStrategy;
|
|
5
5
|
(function (TicketRoutingStrategy) {
|
|
6
6
|
TicketRoutingStrategy["ROUND_ROBIN"] = "ROUND_ROBIN";
|
|
@@ -91,3 +91,8 @@ var TicketSkillWarningCode;
|
|
|
91
91
|
TicketSkillWarningCode["DISABLED_BUT_REFERENCED"] = "DISABLED_BUT_REFERENCED";
|
|
92
92
|
TicketSkillWarningCode["REQUIRED_BY_QUEUE_BUT_UNMET"] = "REQUIRED_BY_QUEUE_BUT_UNMET";
|
|
93
93
|
})(TicketSkillWarningCode || (exports.TicketSkillWarningCode = TicketSkillWarningCode = {}));
|
|
94
|
+
/** Mirror of TicketSkillWarningCode; only one member is needed today. */
|
|
95
|
+
var EscalationPolicyWarningCode;
|
|
96
|
+
(function (EscalationPolicyWarningCode) {
|
|
97
|
+
EscalationPolicyWarningCode["DISABLED_BUT_REFERENCED"] = "DISABLED_BUT_REFERENCED";
|
|
98
|
+
})(EscalationPolicyWarningCode || (exports.EscalationPolicyWarningCode = EscalationPolicyWarningCode = {}));
|
|
@@ -140,7 +140,7 @@ export interface ICreateTicketRequestTypeDto {
|
|
|
140
140
|
description?: string;
|
|
141
141
|
categoryId: string;
|
|
142
142
|
icon?: string;
|
|
143
|
-
formId
|
|
143
|
+
formId?: string;
|
|
144
144
|
formVersion?: number;
|
|
145
145
|
workflowId?: string;
|
|
146
146
|
defaultPriority?: TicketPriority;
|
|
@@ -536,7 +536,7 @@ export interface ICustomerRequestTypeView {
|
|
|
536
536
|
name: string;
|
|
537
537
|
description?: string;
|
|
538
538
|
icon?: string;
|
|
539
|
-
formId
|
|
539
|
+
formId?: string;
|
|
540
540
|
formVersion?: number;
|
|
541
541
|
defaultPriority?: TicketPriority;
|
|
542
542
|
category: ICustomerRequestTypeCategoryView;
|
|
@@ -644,3 +644,27 @@ export interface ICustomerTicketActionDto {
|
|
|
644
644
|
attachmentIds?: string[];
|
|
645
645
|
formSubmissionId?: string;
|
|
646
646
|
}
|
|
647
|
+
/**
|
|
648
|
+
* Confirmation that an uploaded file became an attachment of the ticket.
|
|
649
|
+
*
|
|
650
|
+
* An allowlist over ITicketAttachment, and note the two absences:
|
|
651
|
+
*
|
|
652
|
+
* - `storageKey` is the blob layout tickets-api and media-api agree on. It is
|
|
653
|
+
* internal plumbing, and a client that learned to build one could address
|
|
654
|
+
* blobs of tickets it never saw.
|
|
655
|
+
* - `downloadUrl` is omitted because there is NO customer read path for
|
|
656
|
+
* attachments yet: ICustomerTicketView has no attachments field, and the url
|
|
657
|
+
* the agent surface hands out is an unsigned blob url that only resolves with
|
|
658
|
+
* a container SAS this surface has never discussed. Returning one would be
|
|
659
|
+
* offering a link that 403s.
|
|
660
|
+
*
|
|
661
|
+
* `createdBy` is absent too, for a duller reason: on this path it is the nil
|
|
662
|
+
* uuid marker, which says nothing to anyone.
|
|
663
|
+
*/
|
|
664
|
+
export interface ICustomerTicketAttachmentView {
|
|
665
|
+
id: string;
|
|
666
|
+
fileName: string;
|
|
667
|
+
mimeType: string;
|
|
668
|
+
sizeBytes: number;
|
|
669
|
+
createdAt: Date;
|
|
670
|
+
}
|
package/dist/Tickets/Sla.d.ts
CHANGED
|
@@ -391,3 +391,38 @@ export interface ISlaWarningEvent {
|
|
|
391
391
|
escalationPolicyId?: string;
|
|
392
392
|
notificationTemplateId?: string;
|
|
393
393
|
}
|
|
394
|
+
/** Body of GET /business-calendars/{id}/usages. */
|
|
395
|
+
export interface IBusinessCalendarUsages {
|
|
396
|
+
slaPolicies: {
|
|
397
|
+
id: string;
|
|
398
|
+
name: string;
|
|
399
|
+
}[];
|
|
400
|
+
}
|
|
401
|
+
/** One row of the bulk usage count for a list of calendars. */
|
|
402
|
+
export interface IBusinessCalendarUsageCount {
|
|
403
|
+
businessCalendarId: string;
|
|
404
|
+
count: number;
|
|
405
|
+
}
|
|
406
|
+
/** Body of GET /sla/metric-definitions/{id}/usages. */
|
|
407
|
+
export interface IMetricDefinitionUsages {
|
|
408
|
+
slaPolicies: {
|
|
409
|
+
id: string;
|
|
410
|
+
name: string;
|
|
411
|
+
}[];
|
|
412
|
+
}
|
|
413
|
+
/** List item of GET /sla/metric-definitions: the published definition plus how
|
|
414
|
+
* many policies reference it, so the list can warn before a delete. */
|
|
415
|
+
export interface ISlaMetricDefinitionListItem extends ISlaMetricDefinition {
|
|
416
|
+
usageCount: number;
|
|
417
|
+
}
|
|
418
|
+
export interface ISlaPolicyValidationIssue {
|
|
419
|
+
code: string;
|
|
420
|
+
severity: 'ERROR' | 'WARNING';
|
|
421
|
+
message: string;
|
|
422
|
+
path?: string;
|
|
423
|
+
}
|
|
424
|
+
/** Body of POST /sla/policies/validate. Issues with severity WARNING do not
|
|
425
|
+
* block the save; ERROR ones do. */
|
|
426
|
+
export interface IValidateSlaPolicyResponse {
|
|
427
|
+
issues: ISlaPolicyValidationIssue[];
|
|
428
|
+
}
|
package/dist/Tickets/Ticket.d.ts
CHANGED
|
@@ -134,3 +134,8 @@ export interface ITicketInboundEvent {
|
|
|
134
134
|
[key: string]: string | number | boolean | null;
|
|
135
135
|
};
|
|
136
136
|
}
|
|
137
|
+
/** Body of GET /tickets/{id}/collaboration. `chatId` is an opaque reference to a
|
|
138
|
+
* chat group of another service, not a tickets uuid. */
|
|
139
|
+
export interface ITicketCollaboration {
|
|
140
|
+
chatId: string | null;
|
|
141
|
+
}
|
|
@@ -145,3 +145,35 @@ export interface ITicketFormSubmissionReference {
|
|
|
145
145
|
submittedAt: Date;
|
|
146
146
|
submittedBy: string;
|
|
147
147
|
}
|
|
148
|
+
/** Body of GET /approval-definitions/{id}/usages. */
|
|
149
|
+
export interface IApprovalDefinitionUsages {
|
|
150
|
+
categories: {
|
|
151
|
+
id: string;
|
|
152
|
+
name: string;
|
|
153
|
+
}[];
|
|
154
|
+
/**
|
|
155
|
+
* `transitions` and `macros` ARE resolvable: an APPROVAL_COMPLETED transition
|
|
156
|
+
* condition stores the approvalProcessDefinitionId it gates on, and a
|
|
157
|
+
* START_APPROVAL macro action stores its definitionId.
|
|
158
|
+
*
|
|
159
|
+
* `workflows` stays unsupported because a "workflow" is the status+transition
|
|
160
|
+
* graph, not a stored entity that references a definition on its own — the
|
|
161
|
+
* relationship materializes as the transitions above. `automations` stays
|
|
162
|
+
* unsupported because no automation entity references an approval definition
|
|
163
|
+
* in this schema.
|
|
164
|
+
*/
|
|
165
|
+
workflows: {
|
|
166
|
+
supported: false;
|
|
167
|
+
};
|
|
168
|
+
transitions: {
|
|
169
|
+
id: string;
|
|
170
|
+
name: string;
|
|
171
|
+
}[];
|
|
172
|
+
automations: {
|
|
173
|
+
supported: false;
|
|
174
|
+
};
|
|
175
|
+
macros: {
|
|
176
|
+
id: string;
|
|
177
|
+
name: string;
|
|
178
|
+
}[];
|
|
179
|
+
}
|