clarion-shared-types 1.0.90 → 1.0.92
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/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/modules/permission/enums/permission-actions.enum.js +27 -0
- package/dist/cjs/modules/permission/enums/permission-actions.enum.js.map +1 -1
- package/dist/cjs/modules/permission/enums/permissions-moudule.enum.js +1 -0
- package/dist/cjs/modules/permission/enums/permissions-moudule.enum.js.map +1 -1
- package/dist/cjs/modules/support/enums/support-enums.js +375 -0
- package/dist/cjs/modules/support/enums/support-enums.js.map +1 -0
- package/dist/cjs/modules/support/index.js +27 -0
- package/dist/cjs/modules/support/index.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/customer-feedback.dto.js +3 -0
- package/dist/cjs/modules/support/interfaces/customer-feedback.dto.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/support-configuration.dto.js +3 -0
- package/dist/cjs/modules/support/interfaces/support-configuration.dto.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/support-reports.dto.js +3 -0
- package/dist/cjs/modules/support/interfaces/support-reports.dto.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/support-sync.dto.js +3 -0
- package/dist/cjs/modules/support/interfaces/support-sync.dto.js.map +1 -0
- package/dist/cjs/modules/support/interfaces/support-ticket.dto.js +3 -0
- package/dist/cjs/modules/support/interfaces/support-ticket.dto.js.map +1 -0
- package/dist/cjs/modules/support/utils/support-display.util.js +364 -0
- package/dist/cjs/modules/support/utils/support-display.util.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/modules/permission/enums/permission-actions.enum.js +27 -0
- package/dist/esm/modules/permission/enums/permission-actions.enum.js.map +1 -1
- package/dist/esm/modules/permission/enums/permissions-moudule.enum.js +1 -0
- package/dist/esm/modules/permission/enums/permissions-moudule.enum.js.map +1 -1
- package/dist/esm/modules/support/enums/support-enums.js +372 -0
- package/dist/esm/modules/support/enums/support-enums.js.map +1 -0
- package/dist/esm/modules/support/index.js +11 -0
- package/dist/esm/modules/support/index.js.map +1 -0
- package/dist/esm/modules/support/interfaces/customer-feedback.dto.js +2 -0
- package/dist/esm/modules/support/interfaces/customer-feedback.dto.js.map +1 -0
- package/dist/esm/modules/support/interfaces/support-configuration.dto.js +2 -0
- package/dist/esm/modules/support/interfaces/support-configuration.dto.js.map +1 -0
- package/dist/esm/modules/support/interfaces/support-reports.dto.js +2 -0
- package/dist/esm/modules/support/interfaces/support-reports.dto.js.map +1 -0
- package/dist/esm/modules/support/interfaces/support-sync.dto.js +2 -0
- package/dist/esm/modules/support/interfaces/support-sync.dto.js.map +1 -0
- package/dist/esm/modules/support/interfaces/support-ticket.dto.js +2 -0
- package/dist/esm/modules/support/interfaces/support-ticket.dto.js.map +1 -0
- package/dist/esm/modules/support/utils/support-display.util.js +351 -0
- package/dist/esm/modules/support/utils/support-display.util.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/modules/permission/enums/permission-actions.enum.d.ts +22 -1
- package/dist/types/modules/permission/enums/permissions-moudule.enum.d.ts +2 -1
- package/dist/types/modules/support/enums/support-enums.d.ts +341 -0
- package/dist/types/modules/support/index.d.ts +7 -0
- package/dist/types/modules/support/interfaces/customer-feedback.dto.d.ts +151 -0
- package/dist/types/modules/support/interfaces/support-configuration.dto.d.ts +244 -0
- package/dist/types/modules/support/interfaces/support-reports.dto.d.ts +180 -0
- package/dist/types/modules/support/interfaces/support-sync.dto.d.ts +92 -0
- package/dist/types/modules/support/interfaces/support-ticket.dto.d.ts +289 -0
- package/dist/types/modules/support/utils/support-display.util.d.ts +67 -0
- package/package.json +1 -1
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Frontend mirrors of the support enums in grm-shared-library.
|
|
3
|
+
*
|
|
4
|
+
* Kept in ONE file rather than one per enum: the admin's support console
|
|
5
|
+
* imports most of them together and the set only means anything as a whole. The
|
|
6
|
+
* values are byte-identical to the backend's, because they travel over the wire
|
|
7
|
+
* as strings and any drift would show up as a silently unstyled chip rather
|
|
8
|
+
* than a compile error.
|
|
9
|
+
*/
|
|
10
|
+
/** The helpdesk a deployment mirrors tickets to, if any. */
|
|
11
|
+
export declare enum SupportProviderCode {
|
|
12
|
+
ZAMMAD = "ZAMMAD",
|
|
13
|
+
FRESHDESK = "FRESHDESK",
|
|
14
|
+
/** No external helpdesk. Clarion is the whole system of record. */
|
|
15
|
+
NONE = "NONE"
|
|
16
|
+
}
|
|
17
|
+
/** What a helpdesk adapter is able to do. The admin builds its buttons from this. */
|
|
18
|
+
export declare enum SupportProviderCapability {
|
|
19
|
+
CREATE_TICKET = "CREATE_TICKET",
|
|
20
|
+
UPDATE_TICKET = "UPDATE_TICKET",
|
|
21
|
+
PUBLIC_REPLY = "PUBLIC_REPLY",
|
|
22
|
+
INTERNAL_NOTE = "INTERNAL_NOTE",
|
|
23
|
+
ASSIGN_TICKET = "ASSIGN_TICKET",
|
|
24
|
+
CHANGE_STATUS = "CHANGE_STATUS",
|
|
25
|
+
CLOSE_REOPEN = "CLOSE_REOPEN",
|
|
26
|
+
ATTACHMENTS = "ATTACHMENTS",
|
|
27
|
+
CONTACTS = "CONTACTS",
|
|
28
|
+
SEARCH = "SEARCH",
|
|
29
|
+
WEBHOOKS = "WEBHOOKS",
|
|
30
|
+
FETCH_TICKET = "FETCH_TICKET"
|
|
31
|
+
}
|
|
32
|
+
/** Lifecycle of a support ticket. */
|
|
33
|
+
export declare enum SupportTicketStatus {
|
|
34
|
+
NEW = "NEW",
|
|
35
|
+
OPEN = "OPEN",
|
|
36
|
+
ASSIGNED = "ASSIGNED",
|
|
37
|
+
IN_PROGRESS = "IN_PROGRESS",
|
|
38
|
+
WAITING_ON_CUSTOMER = "WAITING_ON_CUSTOMER",
|
|
39
|
+
WAITING_ON_INTERNAL_TEAM = "WAITING_ON_INTERNAL_TEAM",
|
|
40
|
+
RESOLVED = "RESOLVED",
|
|
41
|
+
CLOSED = "CLOSED",
|
|
42
|
+
REOPENED = "REOPENED",
|
|
43
|
+
CANCELLED = "CANCELLED"
|
|
44
|
+
}
|
|
45
|
+
/** How urgently a ticket needs answering. */
|
|
46
|
+
export declare enum SupportTicketPriority {
|
|
47
|
+
CRITICAL = "CRITICAL",
|
|
48
|
+
URGENT = "URGENT",
|
|
49
|
+
HIGH = "HIGH",
|
|
50
|
+
NORMAL = "NORMAL",
|
|
51
|
+
LOW = "LOW"
|
|
52
|
+
}
|
|
53
|
+
/** How a ticket reached Clarion. */
|
|
54
|
+
export declare enum SupportTicketChannel {
|
|
55
|
+
MOBILE_APP = "MOBILE_APP",
|
|
56
|
+
WEB_APP = "WEB_APP",
|
|
57
|
+
AGENT_PORTAL = "AGENT_PORTAL",
|
|
58
|
+
PROVIDER = "PROVIDER",
|
|
59
|
+
EMAIL = "EMAIL",
|
|
60
|
+
PHONE = "PHONE",
|
|
61
|
+
SMS = "SMS",
|
|
62
|
+
CHAT = "CHAT",
|
|
63
|
+
SYSTEM = "SYSTEM",
|
|
64
|
+
API = "API"
|
|
65
|
+
}
|
|
66
|
+
/** Who or what caused the ticket to exist. */
|
|
67
|
+
export declare enum SupportTicketSource {
|
|
68
|
+
CUSTOMER = "CUSTOMER",
|
|
69
|
+
AGENT = "AGENT",
|
|
70
|
+
SYSTEM = "SYSTEM",
|
|
71
|
+
FEEDBACK_CONVERSION = "FEEDBACK_CONVERSION",
|
|
72
|
+
PROVIDER_SYNC = "PROVIDER_SYNC",
|
|
73
|
+
CHAT_ESCALATION = "CHAT_ESCALATION"
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* What kind of entry a conversation item is.
|
|
77
|
+
*
|
|
78
|
+
* INTERNAL_NOTE is the one the UI must never render on a customer-facing
|
|
79
|
+
* surface. The admin styles it distinctly for the same reason - an agent who
|
|
80
|
+
* cannot tell at a glance which entries the customer can see will eventually
|
|
81
|
+
* write the wrong thing in the wrong box.
|
|
82
|
+
*/
|
|
83
|
+
export declare enum SupportTicketMessageType {
|
|
84
|
+
CUSTOMER_MESSAGE = "CUSTOMER_MESSAGE",
|
|
85
|
+
AGENT_REPLY = "AGENT_REPLY",
|
|
86
|
+
INTERNAL_NOTE = "INTERNAL_NOTE",
|
|
87
|
+
SYSTEM_MESSAGE = "SYSTEM_MESSAGE",
|
|
88
|
+
STATUS_MESSAGE = "STATUS_MESSAGE"
|
|
89
|
+
}
|
|
90
|
+
/** Who wrote a conversation entry. */
|
|
91
|
+
export declare enum SupportMessageAuthorType {
|
|
92
|
+
CUSTOMER = "CUSTOMER",
|
|
93
|
+
AGENT = "AGENT",
|
|
94
|
+
SYSTEM = "SYSTEM",
|
|
95
|
+
PROVIDER_AGENT = "PROVIDER_AGENT"
|
|
96
|
+
}
|
|
97
|
+
/** Whether an entry was written here or arrived from the helpdesk. */
|
|
98
|
+
export declare enum SupportMessageOrigin {
|
|
99
|
+
CLARION = "CLARION",
|
|
100
|
+
PROVIDER = "PROVIDER"
|
|
101
|
+
}
|
|
102
|
+
/** Where a ticket stands against one SLA target. */
|
|
103
|
+
export declare enum SupportSlaState {
|
|
104
|
+
ON_TRACK = "ON_TRACK",
|
|
105
|
+
WARNING = "WARNING",
|
|
106
|
+
BREACHED = "BREACHED",
|
|
107
|
+
PAUSED = "PAUSED",
|
|
108
|
+
MET = "MET",
|
|
109
|
+
NOT_APPLICABLE = "NOT_APPLICABLE"
|
|
110
|
+
}
|
|
111
|
+
/** Which clock a state describes. */
|
|
112
|
+
export declare enum SupportSlaTarget {
|
|
113
|
+
FIRST_RESPONSE = "FIRST_RESPONSE",
|
|
114
|
+
RESOLUTION = "RESOLUTION"
|
|
115
|
+
}
|
|
116
|
+
/** How a policy measures elapsed time. */
|
|
117
|
+
export declare enum SupportSlaClock {
|
|
118
|
+
CALENDAR = "CALENDAR",
|
|
119
|
+
BUSINESS = "BUSINESS"
|
|
120
|
+
}
|
|
121
|
+
/** What a customer is telling us. */
|
|
122
|
+
export declare enum CustomerFeedbackType {
|
|
123
|
+
BUG_REPORT = "BUG_REPORT",
|
|
124
|
+
FEATURE_REQUEST = "FEATURE_REQUEST",
|
|
125
|
+
COMPLAINT = "COMPLAINT",
|
|
126
|
+
COMPLIMENT = "COMPLIMENT",
|
|
127
|
+
GENERAL = "GENERAL",
|
|
128
|
+
SERVICE_RATING = "SERVICE_RATING",
|
|
129
|
+
SUPPORT_RATING = "SUPPORT_RATING"
|
|
130
|
+
}
|
|
131
|
+
/** Where a piece of feedback is in its review workflow. */
|
|
132
|
+
export declare enum CustomerFeedbackStatus {
|
|
133
|
+
NEW = "NEW",
|
|
134
|
+
UNDER_REVIEW = "UNDER_REVIEW",
|
|
135
|
+
ACKNOWLEDGED = "ACKNOWLEDGED",
|
|
136
|
+
RESPONDED = "RESPONDED",
|
|
137
|
+
CONVERTED_TO_TICKET = "CONVERTED_TO_TICKET",
|
|
138
|
+
CLOSED = "CLOSED",
|
|
139
|
+
DISMISSED = "DISMISSED"
|
|
140
|
+
}
|
|
141
|
+
/** Where the feedback was submitted from. */
|
|
142
|
+
export declare enum CustomerFeedbackChannel {
|
|
143
|
+
MOBILE_APP = "MOBILE_APP",
|
|
144
|
+
WEB_APP = "WEB_APP",
|
|
145
|
+
AGENT_PORTAL = "AGENT_PORTAL",
|
|
146
|
+
API = "API"
|
|
147
|
+
}
|
|
148
|
+
/** Coarse sentiment, derived from type and rating - never from the message text. */
|
|
149
|
+
export declare enum CustomerFeedbackSentiment {
|
|
150
|
+
POSITIVE = "POSITIVE",
|
|
151
|
+
NEUTRAL = "NEUTRAL",
|
|
152
|
+
NEGATIVE = "NEGATIVE",
|
|
153
|
+
UNKNOWN = "UNKNOWN"
|
|
154
|
+
}
|
|
155
|
+
/** Who wrote an entry in a feedback thread. */
|
|
156
|
+
export declare enum CustomerFeedbackMessageAuthorType {
|
|
157
|
+
CUSTOMER = "CUSTOMER",
|
|
158
|
+
REVIEWER = "REVIEWER",
|
|
159
|
+
SYSTEM = "SYSTEM"
|
|
160
|
+
}
|
|
161
|
+
/** The kind of Clarion record a ticket or a piece of feedback is about. */
|
|
162
|
+
export declare enum SupportRelatedEntityType {
|
|
163
|
+
INCIDENT = "INCIDENT",
|
|
164
|
+
BILLING_SUBSCRIPTION = "BILLING_SUBSCRIPTION",
|
|
165
|
+
BILLING_INVOICE = "BILLING_INVOICE",
|
|
166
|
+
BILLING_PAYMENT = "BILLING_PAYMENT",
|
|
167
|
+
BILLING_PACKAGE = "BILLING_PACKAGE",
|
|
168
|
+
CHAT_CONVERSATION = "CHAT_CONVERSATION",
|
|
169
|
+
NEWSFEED_POST = "NEWSFEED_POST",
|
|
170
|
+
NEWSFEED_COMMENT = "NEWSFEED_COMMENT",
|
|
171
|
+
PARTNER_DISPATCH = "PARTNER_DISPATCH",
|
|
172
|
+
RESPONSE_UNIT = "RESPONSE_UNIT",
|
|
173
|
+
ORGANIZATION = "ORGANIZATION",
|
|
174
|
+
USER = "USER",
|
|
175
|
+
APP_SCREEN = "APP_SCREEN",
|
|
176
|
+
SUPPORT_TICKET = "SUPPORT_TICKET",
|
|
177
|
+
CUSTOMER_FEEDBACK = "CUSTOMER_FEEDBACK",
|
|
178
|
+
OTHER = "OTHER"
|
|
179
|
+
}
|
|
180
|
+
/** Which Clarion record a synchronization row is mirroring. */
|
|
181
|
+
export declare enum SupportSyncEntityType {
|
|
182
|
+
TICKET = "TICKET",
|
|
183
|
+
MESSAGE = "MESSAGE",
|
|
184
|
+
ATTACHMENT = "ATTACHMENT",
|
|
185
|
+
CONTACT = "CONTACT"
|
|
186
|
+
}
|
|
187
|
+
/** What a synchronization row is trying to do at the provider. */
|
|
188
|
+
export declare enum SupportSyncOperation {
|
|
189
|
+
UPSERT_CONTACT = "UPSERT_CONTACT",
|
|
190
|
+
CREATE_TICKET = "CREATE_TICKET",
|
|
191
|
+
UPDATE_TICKET = "UPDATE_TICKET",
|
|
192
|
+
ADD_PUBLIC_REPLY = "ADD_PUBLIC_REPLY",
|
|
193
|
+
ADD_INTERNAL_NOTE = "ADD_INTERNAL_NOTE",
|
|
194
|
+
ASSIGN_TICKET = "ASSIGN_TICKET",
|
|
195
|
+
CHANGE_STATUS = "CHANGE_STATUS",
|
|
196
|
+
ADD_ATTACHMENT = "ADD_ATTACHMENT",
|
|
197
|
+
CLOSE_TICKET = "CLOSE_TICKET",
|
|
198
|
+
REOPEN_TICKET = "REOPEN_TICKET",
|
|
199
|
+
FETCH_TICKET = "FETCH_TICKET"
|
|
200
|
+
}
|
|
201
|
+
/** Where a synchronization row has got to. */
|
|
202
|
+
export declare enum SupportSyncStatus {
|
|
203
|
+
PENDING = "PENDING",
|
|
204
|
+
IN_PROGRESS = "IN_PROGRESS",
|
|
205
|
+
SUCCEEDED = "SUCCEEDED",
|
|
206
|
+
FAILED = "FAILED",
|
|
207
|
+
DEAD_LETTER = "DEAD_LETTER",
|
|
208
|
+
SKIPPED = "SKIPPED",
|
|
209
|
+
SUPERSEDED = "SUPERSEDED"
|
|
210
|
+
}
|
|
211
|
+
/** Why a synchronization attempt failed. */
|
|
212
|
+
export declare enum SupportSyncFailureReason {
|
|
213
|
+
AUTHENTICATION_FAILED = "AUTHENTICATION_FAILED",
|
|
214
|
+
AUTHORIZATION_FAILED = "AUTHORIZATION_FAILED",
|
|
215
|
+
INVALID_PAYLOAD = "INVALID_PAYLOAD",
|
|
216
|
+
NOT_FOUND = "NOT_FOUND",
|
|
217
|
+
PROVIDER_REJECTED = "PROVIDER_REJECTED",
|
|
218
|
+
RATE_LIMITED = "RATE_LIMITED",
|
|
219
|
+
PROVIDER_UNAVAILABLE = "PROVIDER_UNAVAILABLE",
|
|
220
|
+
TIMEOUT = "TIMEOUT",
|
|
221
|
+
CIRCUIT_OPEN = "CIRCUIT_OPEN",
|
|
222
|
+
PROVIDER_NOT_CONFIGURED = "PROVIDER_NOT_CONFIGURED",
|
|
223
|
+
UNREADABLE_SUCCESS = "UNREADABLE_SUCCESS",
|
|
224
|
+
UNKNOWN = "UNKNOWN"
|
|
225
|
+
}
|
|
226
|
+
/** How a provider webhook delivery was handled. */
|
|
227
|
+
export declare enum SupportWebhookStatus {
|
|
228
|
+
RECEIVED = "RECEIVED",
|
|
229
|
+
PROCESSED = "PROCESSED",
|
|
230
|
+
DUPLICATE = "DUPLICATE",
|
|
231
|
+
IGNORED = "IGNORED",
|
|
232
|
+
REJECTED = "REJECTED",
|
|
233
|
+
FAILED = "FAILED"
|
|
234
|
+
}
|
|
235
|
+
/** How a queue hands a ticket to an agent. Only MANUAL is honoured today. */
|
|
236
|
+
export declare enum SupportQueueAssignmentStrategy {
|
|
237
|
+
MANUAL = "MANUAL",
|
|
238
|
+
ROUND_ROBIN = "ROUND_ROBIN",
|
|
239
|
+
LEAST_BUSY = "LEAST_BUSY"
|
|
240
|
+
}
|
|
241
|
+
/** What a routing rule matches on. */
|
|
242
|
+
export declare enum SupportRoutingMatchType {
|
|
243
|
+
ANY = "ANY",
|
|
244
|
+
CATEGORY = "CATEGORY",
|
|
245
|
+
PRIORITY = "PRIORITY",
|
|
246
|
+
CHANNEL = "CHANNEL",
|
|
247
|
+
COUNTRY = "COUNTRY",
|
|
248
|
+
CONTROL_CENTRE = "CONTROL_CENTRE",
|
|
249
|
+
APP_ID = "APP_ID",
|
|
250
|
+
RELATED_ENTITY_TYPE = "RELATED_ENTITY_TYPE"
|
|
251
|
+
}
|
|
252
|
+
/** A support person's standing inside a team. */
|
|
253
|
+
export declare enum SupportTeamMemberRole {
|
|
254
|
+
AGENT = "AGENT",
|
|
255
|
+
SUPERVISOR = "SUPERVISOR",
|
|
256
|
+
MANAGER = "MANAGER"
|
|
257
|
+
}
|
|
258
|
+
/** Every audited support action, as a closed vocabulary the admin can filter on. */
|
|
259
|
+
export declare enum SupportAuditAction {
|
|
260
|
+
TICKET_CREATED = "TICKET_CREATED",
|
|
261
|
+
TICKET_UPDATED = "TICKET_UPDATED",
|
|
262
|
+
TICKET_ASSIGNED = "TICKET_ASSIGNED",
|
|
263
|
+
TICKET_REASSIGNED = "TICKET_REASSIGNED",
|
|
264
|
+
TICKET_UNASSIGNED = "TICKET_UNASSIGNED",
|
|
265
|
+
TICKET_STATUS_CHANGED = "TICKET_STATUS_CHANGED",
|
|
266
|
+
TICKET_PRIORITY_CHANGED = "TICKET_PRIORITY_CHANGED",
|
|
267
|
+
TICKET_CATEGORY_CHANGED = "TICKET_CATEGORY_CHANGED",
|
|
268
|
+
TICKET_QUEUE_CHANGED = "TICKET_QUEUE_CHANGED",
|
|
269
|
+
TICKET_CLOSED = "TICKET_CLOSED",
|
|
270
|
+
TICKET_REOPENED = "TICKET_REOPENED",
|
|
271
|
+
TICKET_CANCELLED = "TICKET_CANCELLED",
|
|
272
|
+
TICKET_TAGGED = "TICKET_TAGGED",
|
|
273
|
+
TICKET_UNTAGGED = "TICKET_UNTAGGED",
|
|
274
|
+
TICKET_WATCHER_ADDED = "TICKET_WATCHER_ADDED",
|
|
275
|
+
TICKET_WATCHER_REMOVED = "TICKET_WATCHER_REMOVED",
|
|
276
|
+
MESSAGE_ADDED = "MESSAGE_ADDED",
|
|
277
|
+
INTERNAL_NOTE_ADDED = "INTERNAL_NOTE_ADDED",
|
|
278
|
+
ATTACHMENT_ADDED = "ATTACHMENT_ADDED",
|
|
279
|
+
ATTACHMENT_ACCESSED = "ATTACHMENT_ACCESSED",
|
|
280
|
+
ATTACHMENT_REMOVED = "ATTACHMENT_REMOVED",
|
|
281
|
+
FEEDBACK_CREATED = "FEEDBACK_CREATED",
|
|
282
|
+
FEEDBACK_REVIEWED = "FEEDBACK_REVIEWED",
|
|
283
|
+
FEEDBACK_RESPONDED = "FEEDBACK_RESPONDED",
|
|
284
|
+
FEEDBACK_STATUS_CHANGED = "FEEDBACK_STATUS_CHANGED",
|
|
285
|
+
FEEDBACK_CONVERTED_TO_TICKET = "FEEDBACK_CONVERTED_TO_TICKET",
|
|
286
|
+
SLA_WARNING_RAISED = "SLA_WARNING_RAISED",
|
|
287
|
+
SLA_BREACHED = "SLA_BREACHED",
|
|
288
|
+
SLA_POLICY_CREATED = "SLA_POLICY_CREATED",
|
|
289
|
+
SLA_POLICY_UPDATED = "SLA_POLICY_UPDATED",
|
|
290
|
+
SLA_POLICY_DELETED = "SLA_POLICY_DELETED",
|
|
291
|
+
QUEUE_CREATED = "QUEUE_CREATED",
|
|
292
|
+
QUEUE_UPDATED = "QUEUE_UPDATED",
|
|
293
|
+
QUEUE_DELETED = "QUEUE_DELETED",
|
|
294
|
+
TEAM_CREATED = "TEAM_CREATED",
|
|
295
|
+
TEAM_UPDATED = "TEAM_UPDATED",
|
|
296
|
+
TEAM_DELETED = "TEAM_DELETED",
|
|
297
|
+
TEAM_MEMBER_ADDED = "TEAM_MEMBER_ADDED",
|
|
298
|
+
TEAM_MEMBER_REMOVED = "TEAM_MEMBER_REMOVED",
|
|
299
|
+
CATEGORY_CREATED = "CATEGORY_CREATED",
|
|
300
|
+
CATEGORY_UPDATED = "CATEGORY_UPDATED",
|
|
301
|
+
CATEGORY_DELETED = "CATEGORY_DELETED",
|
|
302
|
+
PROVIDER_SYNC_QUEUED = "PROVIDER_SYNC_QUEUED",
|
|
303
|
+
PROVIDER_SYNC_SUCCEEDED = "PROVIDER_SYNC_SUCCEEDED",
|
|
304
|
+
PROVIDER_SYNC_FAILED = "PROVIDER_SYNC_FAILED",
|
|
305
|
+
PROVIDER_SYNC_RETRIED = "PROVIDER_SYNC_RETRIED",
|
|
306
|
+
PROVIDER_SYNC_DEAD_LETTERED = "PROVIDER_SYNC_DEAD_LETTERED",
|
|
307
|
+
PROVIDER_RECONCILED = "PROVIDER_RECONCILED",
|
|
308
|
+
PROVIDER_WEBHOOK_RECEIVED = "PROVIDER_WEBHOOK_RECEIVED",
|
|
309
|
+
PROVIDER_WEBHOOK_REJECTED = "PROVIDER_WEBHOOK_REJECTED"
|
|
310
|
+
}
|
|
311
|
+
/** What an audit entry was about. */
|
|
312
|
+
export declare enum SupportAuditEntityType {
|
|
313
|
+
TICKET = "TICKET",
|
|
314
|
+
TICKET_MESSAGE = "TICKET_MESSAGE",
|
|
315
|
+
TICKET_ATTACHMENT = "TICKET_ATTACHMENT",
|
|
316
|
+
FEEDBACK = "FEEDBACK",
|
|
317
|
+
QUEUE = "QUEUE",
|
|
318
|
+
TEAM = "TEAM",
|
|
319
|
+
CATEGORY = "CATEGORY",
|
|
320
|
+
SLA_POLICY = "SLA_POLICY",
|
|
321
|
+
PROVIDER_SYNC = "PROVIDER_SYNC"
|
|
322
|
+
}
|
|
323
|
+
/** Who performed an audited action. */
|
|
324
|
+
export declare enum SupportActorType {
|
|
325
|
+
USER = "USER",
|
|
326
|
+
SYSTEM = "SYSTEM",
|
|
327
|
+
PROVIDER = "PROVIDER"
|
|
328
|
+
}
|
|
329
|
+
/** Live support update types delivered over the socket. */
|
|
330
|
+
export declare enum SupportRealtimeEventType {
|
|
331
|
+
TICKET_CREATED = "support.ticket.created",
|
|
332
|
+
TICKET_UPDATED = "support.ticket.updated",
|
|
333
|
+
TICKET_STATUS_CHANGED = "support.ticket.status.changed",
|
|
334
|
+
TICKET_PRIORITY_CHANGED = "support.ticket.priority.changed",
|
|
335
|
+
TICKET_ASSIGNED = "support.ticket.assigned",
|
|
336
|
+
TICKET_MESSAGE_CREATED = "support.ticket.message.created",
|
|
337
|
+
TICKET_SLA_CHANGED = "support.ticket.sla.changed",
|
|
338
|
+
TICKET_SYNC_CHANGED = "support.ticket.sync.changed",
|
|
339
|
+
FEEDBACK_CREATED = "support.feedback.created",
|
|
340
|
+
FEEDBACK_RESPONDED = "support.feedback.responded"
|
|
341
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './enums/support-enums';
|
|
2
|
+
export * from './interfaces/support-ticket.dto';
|
|
3
|
+
export * from './interfaces/customer-feedback.dto';
|
|
4
|
+
export * from './interfaces/support-configuration.dto';
|
|
5
|
+
export * from './interfaces/support-sync.dto';
|
|
6
|
+
export * from './interfaces/support-reports.dto';
|
|
7
|
+
export * from './utils/support-display.util';
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { CountryCode } from '../../country/enums/country-code.enum';
|
|
2
|
+
import { CustomerFeedbackChannel, CustomerFeedbackMessageAuthorType, CustomerFeedbackSentiment, CustomerFeedbackStatus, CustomerFeedbackType, SupportRelatedEntityType, SupportTicketPriority } from '../enums/support-enums';
|
|
3
|
+
import { SupportRelatedEntityDto } from './support-ticket.dto';
|
|
4
|
+
/**
|
|
5
|
+
* Diagnostic context sent with feedback.
|
|
6
|
+
*
|
|
7
|
+
* A closed allowlist. Anything a client adds beyond these fields is stripped
|
|
8
|
+
* server-side, which is what stops a well-meaning "just send the whole failing
|
|
9
|
+
* request" putting an access token in a table a wide group of people can read.
|
|
10
|
+
*/
|
|
11
|
+
export interface CustomerFeedbackContextDto {
|
|
12
|
+
appId?: string | null;
|
|
13
|
+
appVersion?: string | null;
|
|
14
|
+
platform?: string | null;
|
|
15
|
+
osVersion?: string | null;
|
|
16
|
+
deviceModel?: string | null;
|
|
17
|
+
screen?: string | null;
|
|
18
|
+
locale?: string | null;
|
|
19
|
+
correlationId?: string | null;
|
|
20
|
+
}
|
|
21
|
+
/** A piece of customer feedback. Owned by Clarion, whatever helpdesk is configured. */
|
|
22
|
+
export interface CustomerFeedbackDto {
|
|
23
|
+
id: string;
|
|
24
|
+
organizationId: number;
|
|
25
|
+
controlCentreId: number | null;
|
|
26
|
+
countryCode: CountryCode;
|
|
27
|
+
submittedByUserId: number;
|
|
28
|
+
submittedByName: string | null;
|
|
29
|
+
type: CustomerFeedbackType;
|
|
30
|
+
channel: CustomerFeedbackChannel;
|
|
31
|
+
status: CustomerFeedbackStatus;
|
|
32
|
+
title: string | null;
|
|
33
|
+
message: string;
|
|
34
|
+
rating: number | null;
|
|
35
|
+
sentiment: CustomerFeedbackSentiment;
|
|
36
|
+
context: CustomerFeedbackContextDto | null;
|
|
37
|
+
relatedEntities: SupportRelatedEntityDto[];
|
|
38
|
+
convertedTicketId: string | null;
|
|
39
|
+
convertedTicketNumber: string | null;
|
|
40
|
+
convertedAt: string | null;
|
|
41
|
+
reviewedByUserId: number | null;
|
|
42
|
+
reviewedByName: string | null;
|
|
43
|
+
reviewedAt: string | null;
|
|
44
|
+
respondedAt: string | null;
|
|
45
|
+
messageCount: number;
|
|
46
|
+
tags: string[];
|
|
47
|
+
version: number;
|
|
48
|
+
createdAt: string;
|
|
49
|
+
updatedAt: string;
|
|
50
|
+
}
|
|
51
|
+
/** The row shape a feedback list returns. */
|
|
52
|
+
export interface CustomerFeedbackSummaryDto {
|
|
53
|
+
id: string;
|
|
54
|
+
organizationId: number;
|
|
55
|
+
countryCode: CountryCode;
|
|
56
|
+
submittedByUserId: number;
|
|
57
|
+
submittedByName: string | null;
|
|
58
|
+
type: CustomerFeedbackType;
|
|
59
|
+
channel: CustomerFeedbackChannel;
|
|
60
|
+
status: CustomerFeedbackStatus;
|
|
61
|
+
title: string | null;
|
|
62
|
+
/** First line of the message, clamped, so a list is readable without the body. */
|
|
63
|
+
preview: string;
|
|
64
|
+
rating: number | null;
|
|
65
|
+
sentiment: CustomerFeedbackSentiment;
|
|
66
|
+
appId: string | null;
|
|
67
|
+
appVersion: string | null;
|
|
68
|
+
platform: string | null;
|
|
69
|
+
convertedTicketId: string | null;
|
|
70
|
+
convertedTicketNumber: string | null;
|
|
71
|
+
messageCount: number;
|
|
72
|
+
createdAt: string;
|
|
73
|
+
updatedAt: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* One entry in a feedback thread.
|
|
77
|
+
*
|
|
78
|
+
* There is deliberately no internal note here. A reviewer who needs a private
|
|
79
|
+
* discussion converts the feedback into a ticket, which is the record that
|
|
80
|
+
* supports one.
|
|
81
|
+
*/
|
|
82
|
+
export interface CustomerFeedbackMessageDto {
|
|
83
|
+
id: string;
|
|
84
|
+
feedbackId: string;
|
|
85
|
+
authorType: CustomerFeedbackMessageAuthorType;
|
|
86
|
+
authorUserId: number | null;
|
|
87
|
+
authorName: string | null;
|
|
88
|
+
body: string;
|
|
89
|
+
createdAt: string;
|
|
90
|
+
}
|
|
91
|
+
/** Feedback with its thread, for the detail drawer. */
|
|
92
|
+
export interface CustomerFeedbackDetailsDto {
|
|
93
|
+
feedback: CustomerFeedbackDto;
|
|
94
|
+
messages: CustomerFeedbackMessageDto[];
|
|
95
|
+
/** The states it may legally move to, so the UI offers only those. */
|
|
96
|
+
allowedStatuses: CustomerFeedbackStatus[];
|
|
97
|
+
/** Advisory hint that this one probably needs a ticket. Never automatic. */
|
|
98
|
+
suggestsTicket: boolean;
|
|
99
|
+
}
|
|
100
|
+
export interface CreateCustomerFeedbackDto {
|
|
101
|
+
type: CustomerFeedbackType;
|
|
102
|
+
title?: string;
|
|
103
|
+
message: string;
|
|
104
|
+
rating?: number;
|
|
105
|
+
channel?: CustomerFeedbackChannel;
|
|
106
|
+
relatedEntities?: {
|
|
107
|
+
type: SupportRelatedEntityType;
|
|
108
|
+
id: string;
|
|
109
|
+
}[];
|
|
110
|
+
context?: CustomerFeedbackContextDto;
|
|
111
|
+
organizationId?: number;
|
|
112
|
+
countryCode?: CountryCode;
|
|
113
|
+
}
|
|
114
|
+
export interface RespondToCustomerFeedbackDto {
|
|
115
|
+
body: string;
|
|
116
|
+
}
|
|
117
|
+
export interface UpdateCustomerFeedbackStatusDto {
|
|
118
|
+
status: CustomerFeedbackStatus;
|
|
119
|
+
reason?: string;
|
|
120
|
+
sentiment?: CustomerFeedbackSentiment;
|
|
121
|
+
tags?: string[];
|
|
122
|
+
}
|
|
123
|
+
export interface ConvertFeedbackToTicketDto {
|
|
124
|
+
subject?: string;
|
|
125
|
+
priority?: SupportTicketPriority;
|
|
126
|
+
categoryId?: string;
|
|
127
|
+
queueId?: string;
|
|
128
|
+
internalNote?: string;
|
|
129
|
+
}
|
|
130
|
+
/** Filters for a feedback list. */
|
|
131
|
+
export interface CustomerFeedbackQueryParams {
|
|
132
|
+
page?: number;
|
|
133
|
+
limit?: number;
|
|
134
|
+
search?: string;
|
|
135
|
+
sortBy?: string;
|
|
136
|
+
sortOrder?: 'ASC' | 'DESC';
|
|
137
|
+
type?: CustomerFeedbackType;
|
|
138
|
+
status?: CustomerFeedbackStatus;
|
|
139
|
+
sentiment?: CustomerFeedbackSentiment;
|
|
140
|
+
channel?: CustomerFeedbackChannel;
|
|
141
|
+
countryCode?: CountryCode;
|
|
142
|
+
organizationId?: number;
|
|
143
|
+
appId?: string;
|
|
144
|
+
appVersion?: string;
|
|
145
|
+
platform?: string;
|
|
146
|
+
maxRating?: number;
|
|
147
|
+
convertedOnly?: boolean;
|
|
148
|
+
openOnly?: boolean;
|
|
149
|
+
from?: string;
|
|
150
|
+
to?: string;
|
|
151
|
+
}
|