@outseta/api-client 0.3.38 → 0.3.40

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/index.js CHANGED
@@ -674,6 +674,53 @@ var registrationRegisterAccount = async (account, options) => {
674
674
  body: JSON.stringify(account)
675
675
  });
676
676
  };
677
+ var getSegmentAddTagToEntityUrl = (entityUid) => {
678
+ return `/api/v1/crm/segments/${entityUid}/tags`;
679
+ };
680
+ var segmentAddTagToEntity = async (entityUid, segmentAddTagToEntityBody, options) => {
681
+ return customFetch(getSegmentAddTagToEntityUrl(entityUid), {
682
+ ...options,
683
+ method: "POST",
684
+ headers: { "Content-Type": "application/json", ...options?.headers },
685
+ body: JSON.stringify(segmentAddTagToEntityBody)
686
+ });
687
+ };
688
+ var getSegmentGetTagsForEntityUrl = (entityUid, params) => {
689
+ const normalizedParams = new URLSearchParams;
690
+ Object.entries(params || {}).forEach(([key, value]) => {
691
+ if (value !== undefined) {
692
+ normalizedParams.append(key, value === null ? "null" : value.toString());
693
+ }
694
+ });
695
+ const stringifiedParams = normalizedParams.toString();
696
+ return stringifiedParams.length > 0 ? `/api/v1/crm/segments/${entityUid}/tags?${stringifiedParams}` : `/api/v1/crm/segments/${entityUid}/tags`;
697
+ };
698
+ var segmentGetTagsForEntity = async (entityUid, params, options) => {
699
+ return customFetch(getSegmentGetTagsForEntityUrl(entityUid, params), {
700
+ ...options,
701
+ method: "GET"
702
+ });
703
+ };
704
+ var getSegmentSetTagsForEntityUrl = (entityUid) => {
705
+ return `/api/v1/crm/segments/${entityUid}/tags`;
706
+ };
707
+ var segmentSetTagsForEntity = async (entityUid, segmentSetTagsForEntityBody, options) => {
708
+ return customFetch(getSegmentSetTagsForEntityUrl(entityUid), {
709
+ ...options,
710
+ method: "PUT",
711
+ headers: { "Content-Type": "application/json", ...options?.headers },
712
+ body: JSON.stringify(segmentSetTagsForEntityBody)
713
+ });
714
+ };
715
+ var getSegmentRemoveTagFromEntityUrl = (entityUid, tagUid) => {
716
+ return `/api/v1/crm/segments/${entityUid}/tags/${tagUid}`;
717
+ };
718
+ var segmentRemoveTagFromEntity = async (entityUid, tagUid, options) => {
719
+ return customFetch(getSegmentRemoveTagFromEntityUrl(entityUid, tagUid), {
720
+ ...options,
721
+ method: "DELETE"
722
+ });
723
+ };
677
724
  var getAccountGetAllAccountsUrl = (params) => {
678
725
  const normalizedParams = new URLSearchParams;
679
726
  Object.entries(params || {}).forEach(([key, value]) => {
@@ -1099,6 +1146,53 @@ var campaignSendTestCampaignEmail = async (campaignSendTestCampaignEmailBody, op
1099
1146
  body: JSON.stringify(campaignSendTestCampaignEmailBody)
1100
1147
  });
1101
1148
  };
1149
+ var getCampaignAddTagToEntityUrl = (entityUid) => {
1150
+ return `/api/v1/email/campaigns/broadcasts/${entityUid}/tags`;
1151
+ };
1152
+ var campaignAddTagToEntity = async (entityUid, campaignAddTagToEntityBody, options) => {
1153
+ return customFetch(getCampaignAddTagToEntityUrl(entityUid), {
1154
+ ...options,
1155
+ method: "POST",
1156
+ headers: { "Content-Type": "application/json", ...options?.headers },
1157
+ body: JSON.stringify(campaignAddTagToEntityBody)
1158
+ });
1159
+ };
1160
+ var getCampaignGetTagsForEntityUrl = (entityUid, params) => {
1161
+ const normalizedParams = new URLSearchParams;
1162
+ Object.entries(params || {}).forEach(([key, value]) => {
1163
+ if (value !== undefined) {
1164
+ normalizedParams.append(key, value === null ? "null" : value.toString());
1165
+ }
1166
+ });
1167
+ const stringifiedParams = normalizedParams.toString();
1168
+ return stringifiedParams.length > 0 ? `/api/v1/email/campaigns/broadcasts/${entityUid}/tags?${stringifiedParams}` : `/api/v1/email/campaigns/broadcasts/${entityUid}/tags`;
1169
+ };
1170
+ var campaignGetTagsForEntity = async (entityUid, params, options) => {
1171
+ return customFetch(getCampaignGetTagsForEntityUrl(entityUid, params), {
1172
+ ...options,
1173
+ method: "GET"
1174
+ });
1175
+ };
1176
+ var getCampaignSetTagsForEntityUrl = (entityUid) => {
1177
+ return `/api/v1/email/campaigns/broadcasts/${entityUid}/tags`;
1178
+ };
1179
+ var campaignSetTagsForEntity = async (entityUid, campaignSetTagsForEntityBody, options) => {
1180
+ return customFetch(getCampaignSetTagsForEntityUrl(entityUid), {
1181
+ ...options,
1182
+ method: "PUT",
1183
+ headers: { "Content-Type": "application/json", ...options?.headers },
1184
+ body: JSON.stringify(campaignSetTagsForEntityBody)
1185
+ });
1186
+ };
1187
+ var getCampaignRemoveTagFromEntityUrl = (entityUid, tagUid) => {
1188
+ return `/api/v1/email/campaigns/broadcasts/${entityUid}/tags/${tagUid}`;
1189
+ };
1190
+ var campaignRemoveTagFromEntity = async (entityUid, tagUid, options) => {
1191
+ return customFetch(getCampaignRemoveTagFromEntityUrl(entityUid, tagUid), {
1192
+ ...options,
1193
+ method: "DELETE"
1194
+ });
1195
+ };
1102
1196
  var getEmailListGetAllEmailListsUrl = (params) => {
1103
1197
  const normalizedParams = new URLSearchParams;
1104
1198
  Object.entries(params || {}).forEach(([key, value]) => {
@@ -1300,6 +1394,53 @@ var articleGetArticle = async (articleUid, options) => {
1300
1394
  method: "GET"
1301
1395
  });
1302
1396
  };
1397
+ var getArticleAddTagToEntityUrl = (entityUid) => {
1398
+ return `/api/v1/support/articles/${entityUid}/tags`;
1399
+ };
1400
+ var articleAddTagToEntity = async (entityUid, articleAddTagToEntityBody, options) => {
1401
+ return customFetch(getArticleAddTagToEntityUrl(entityUid), {
1402
+ ...options,
1403
+ method: "POST",
1404
+ headers: { "Content-Type": "application/json", ...options?.headers },
1405
+ body: JSON.stringify(articleAddTagToEntityBody)
1406
+ });
1407
+ };
1408
+ var getArticleGetTagsForEntityUrl = (entityUid, params) => {
1409
+ const normalizedParams = new URLSearchParams;
1410
+ Object.entries(params || {}).forEach(([key, value]) => {
1411
+ if (value !== undefined) {
1412
+ normalizedParams.append(key, value === null ? "null" : value.toString());
1413
+ }
1414
+ });
1415
+ const stringifiedParams = normalizedParams.toString();
1416
+ return stringifiedParams.length > 0 ? `/api/v1/support/articles/${entityUid}/tags?${stringifiedParams}` : `/api/v1/support/articles/${entityUid}/tags`;
1417
+ };
1418
+ var articleGetTagsForEntity = async (entityUid, params, options) => {
1419
+ return customFetch(getArticleGetTagsForEntityUrl(entityUid, params), {
1420
+ ...options,
1421
+ method: "GET"
1422
+ });
1423
+ };
1424
+ var getArticleSetTagsForEntityUrl = (entityUid) => {
1425
+ return `/api/v1/support/articles/${entityUid}/tags`;
1426
+ };
1427
+ var articleSetTagsForEntity = async (entityUid, articleSetTagsForEntityBody, options) => {
1428
+ return customFetch(getArticleSetTagsForEntityUrl(entityUid), {
1429
+ ...options,
1430
+ method: "PUT",
1431
+ headers: { "Content-Type": "application/json", ...options?.headers },
1432
+ body: JSON.stringify(articleSetTagsForEntityBody)
1433
+ });
1434
+ };
1435
+ var getArticleRemoveTagFromEntityUrl = (entityUid, tagUid) => {
1436
+ return `/api/v1/support/articles/${entityUid}/tags/${tagUid}`;
1437
+ };
1438
+ var articleRemoveTagFromEntity = async (entityUid, tagUid, options) => {
1439
+ return customFetch(getArticleRemoveTagFromEntityUrl(entityUid, tagUid), {
1440
+ ...options,
1441
+ method: "DELETE"
1442
+ });
1443
+ };
1303
1444
  var getCategoryGetAllCategoriesUrl = (params) => {
1304
1445
  const normalizedParams = new URLSearchParams;
1305
1446
  Object.entries(params || {}).forEach(([key, value]) => {
@@ -1728,7 +1869,8 @@ var EntityType = {
1728
1869
  AddOn: 9,
1729
1870
  Task: 10,
1730
1871
  Segment: 11,
1731
- Broadcast: 12
1872
+ Broadcast: 12,
1873
+ Article: 13
1732
1874
  };
1733
1875
  // src/generated/models/lineItemType.ts
1734
1876
  var LineItemType = {
@@ -2030,14 +2172,22 @@ export {
2030
2172
  activityAddCustomActivity,
2031
2173
  activityGetAll,
2032
2174
  articleAddArticle,
2175
+ articleAddTagToEntity,
2033
2176
  articleGetAllArticles,
2034
2177
  articleGetArticle,
2178
+ articleGetTagsForEntity,
2179
+ articleRemoveTagFromEntity,
2180
+ articleSetTagsForEntity,
2035
2181
  campaignAddBroadcastEmail,
2182
+ campaignAddTagToEntity,
2036
2183
  campaignArchiveBroadcastCampaign,
2037
2184
  campaignDeleteBroadcastCampaign,
2038
2185
  campaignGetAllBroadcastEmails,
2039
2186
  campaignGetBroadcastEmail,
2187
+ campaignGetTagsForEntity,
2188
+ campaignRemoveTagFromEntity,
2040
2189
  campaignSendTestCampaignEmail,
2190
+ campaignSetTagsForEntity,
2041
2191
  campaignUnscheduleBroadcastEmail,
2042
2192
  campaignUpdateBroadcastEmail,
2043
2193
  caseAddCase,
@@ -2094,14 +2244,22 @@ export {
2094
2244
  getActivityAddCustomActivityUrl,
2095
2245
  getActivityGetAllUrl,
2096
2246
  getArticleAddArticleUrl,
2247
+ getArticleAddTagToEntityUrl,
2097
2248
  getArticleGetAllArticlesUrl,
2098
2249
  getArticleGetArticleUrl,
2250
+ getArticleGetTagsForEntityUrl,
2251
+ getArticleRemoveTagFromEntityUrl,
2252
+ getArticleSetTagsForEntityUrl,
2099
2253
  getCampaignAddBroadcastEmailUrl,
2254
+ getCampaignAddTagToEntityUrl,
2100
2255
  getCampaignArchiveBroadcastCampaignUrl,
2101
2256
  getCampaignDeleteBroadcastCampaignUrl,
2102
2257
  getCampaignGetAllBroadcastEmailsUrl,
2103
2258
  getCampaignGetBroadcastEmailUrl,
2259
+ getCampaignGetTagsForEntityUrl,
2260
+ getCampaignRemoveTagFromEntityUrl,
2104
2261
  getCampaignSendTestCampaignEmailUrl,
2262
+ getCampaignSetTagsForEntityUrl,
2105
2263
  getCampaignUnscheduleBroadcastEmailUrl,
2106
2264
  getCampaignUpdateBroadcastEmailUrl,
2107
2265
  getCaseAddCaseUrl,
@@ -2170,6 +2328,10 @@ export {
2170
2328
  getPlanGetPlanUrl,
2171
2329
  getPlanUpdatePlanUrl,
2172
2330
  getRegistrationRegisterAccountUrl,
2331
+ getSegmentAddTagToEntityUrl,
2332
+ getSegmentGetTagsForEntityUrl,
2333
+ getSegmentRemoveTagFromEntityUrl,
2334
+ getSegmentSetTagsForEntityUrl,
2173
2335
  getSubscriptionAddDiscountToSubscriptionUrl,
2174
2336
  getSubscriptionAddOnAddSubscriptionAddOnPreviewUrl,
2175
2337
  getSubscriptionAddOnAddSubscriptionAddOnUrl,
@@ -2219,6 +2381,10 @@ export {
2219
2381
  planGetPlan,
2220
2382
  planUpdatePlan,
2221
2383
  registrationRegisterAccount,
2384
+ segmentAddTagToEntity,
2385
+ segmentGetTagsForEntity,
2386
+ segmentRemoveTagFromEntity,
2387
+ segmentSetTagsForEntity,
2222
2388
  subscriptionAddDiscountToSubscription,
2223
2389
  subscriptionAddOnAddSubscriptionAddOn,
2224
2390
  subscriptionAddOnAddSubscriptionAddOnPreview,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outseta/api-client",
3
- "version": "0.3.38",
3
+ "version": "0.3.40",
4
4
  "description": "Generated API client for the Outseta REST API",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -40,13 +40,18 @@ type NonReadonly<T> = [T] extends [UnionToIntersection<T>] ? {
40
40
 
41
41
 
42
42
  /**
43
- * Each tag applies to a single entity type. Pass entityType=Case to retrieve the tags
44
- that can be put on support tickets.
43
+ * Each tag applies to a single entity type. Pass entityType to retrieve the tags for one
44
+ of them, for example entityType=Article for knowledge base article tags.
45
45
 
46
- How a tag goes onto a record depends on the entity type. A support ticket holds its
47
- tags in its own CaseTags collection, so you add and remove ticket tags with
48
- PUT /support/cases/{caseUid}. Other entity types store their tags differently. This
49
- documentation covers ticket tags only.
46
+ How a tag goes onto a record depends on the entity type. Articles, broadcasts and
47
+ segments each take tags on a tags sub-resource of the record:
48
+
49
+ - POST /support/articles/{entityUid}/tags and PUT, GET, DELETE on the same path
50
+ - POST /email/campaigns/broadcasts/{entityUid}/tags and the same for the rest
51
+ - POST /crm/segments/{entityUid}/tags and the same for the rest
52
+
53
+ A support ticket is the exception. It holds its tags in its own CaseTags collection, so
54
+ you add and remove ticket tags with PUT /support/cases/{caseUid}.
50
55
 
51
56
  Name is unique within an entity type. SystemName and SystemDescription identify a
52
57
  built-in tag (for example Priority.Urgent) and are set by Outseta.
@@ -99,8 +104,9 @@ export const tagGetAllTags = async (params?: TagGetAllTagsParams, options?: Requ
99
104
 
100
105
 
101
106
  /**
102
- * Name and EntityType are required. Use EntityType 4 (Case) for a tag that goes on
103
- support tickets. TagColor sets the color the tag shows in.
107
+ * Name and EntityType are required. EntityType fixes what the tag can go on: 4 (Case) for
108
+ support tickets, 13 (Article) for knowledge base articles, 12 (Broadcast) for broadcast
109
+ emails, 11 (Segment) for segments. TagColor sets the color the tag shows in.
104
110
 
105
111
  Name must be unique within an entity type. If the name already exists for that
106
112
  entity type, the existing tag is returned instead of a duplicate, and its color is
@@ -260,6 +266,9 @@ export const tagUpdateTag = async (tagUid: string | null,
260
266
  /**
261
267
  * The tag is also taken off every record that carries it. For a Case tag, it is
262
268
  removed from all support tickets that have it.
269
+
270
+ An Article tag that the knowledge base version filter names cannot be deleted. Take it
271
+ out of the version filter first, then delete it.
263
272
  * @summary Delete a tag.
264
273
  */
265
274
  export type tagDeleteTagResponse200 = {
@@ -23,7 +23,11 @@ import type {
23
23
  PersonGetAllPeopleParams,
24
24
  PersonRequestMagicLinkBody,
25
25
  PersonSetTemporaryPasswordBody,
26
- PersonUpdatePersonBody
26
+ PersonUpdatePersonBody,
27
+ SegmentAddTagToEntityBody,
28
+ SegmentGetTagsForEntity200,
29
+ SegmentGetTagsForEntityParams,
30
+ SegmentSetTagsForEntityBody
27
31
  } from '.././models';
28
32
 
29
33
  import { customFetch } from '../../client';
@@ -353,6 +357,242 @@ export const registrationRegisterAccount = async (account: NonReadonly<Account>,
353
357
  );}
354
358
 
355
359
 
360
+ /**
361
+ * Send the uids of the tags to add. Tags that the record already carries stay on it, and
362
+ naming one of them again changes nothing, so the same request is safe to repeat. To
363
+ replace the whole set instead, use PUT on this same path.
364
+
365
+ A tag belongs to one entity type, so use tags whose EntityType matches this record.
366
+ List them with GET /attribute/tags. A uid in the list that names no tag is skipped.
367
+ * @summary Add tags to a record.
368
+ */
369
+ export type segmentAddTagToEntityResponse200 = {
370
+ data: Blob
371
+ status: 200
372
+ }
373
+
374
+ export type segmentAddTagToEntityResponse400 = {
375
+ data: void
376
+ status: 400
377
+ }
378
+
379
+ export type segmentAddTagToEntityResponse401 = {
380
+ data: void
381
+ status: 401
382
+ }
383
+
384
+ export type segmentAddTagToEntityResponse404 = {
385
+ data: void
386
+ status: 404
387
+ }
388
+
389
+ export type segmentAddTagToEntityResponseSuccess = (segmentAddTagToEntityResponse200) & {
390
+ headers: Headers;
391
+ };
392
+ export type segmentAddTagToEntityResponseError = (segmentAddTagToEntityResponse400 | segmentAddTagToEntityResponse401 | segmentAddTagToEntityResponse404) & {
393
+ headers: Headers;
394
+ };
395
+
396
+ export type segmentAddTagToEntityResponse = (segmentAddTagToEntityResponseSuccess | segmentAddTagToEntityResponseError)
397
+
398
+ export const getSegmentAddTagToEntityUrl = (entityUid: string | null,) => {
399
+
400
+
401
+
402
+
403
+ return `/api/v1/crm/segments/${entityUid}/tags`
404
+ }
405
+
406
+ export const segmentAddTagToEntity = async (entityUid: string | null,
407
+ segmentAddTagToEntityBody: SegmentAddTagToEntityBody, options?: RequestInit): Promise<segmentAddTagToEntityResponse> => {
408
+
409
+ return customFetch<segmentAddTagToEntityResponse>(getSegmentAddTagToEntityUrl(entityUid),
410
+ {
411
+ ...options,
412
+ method: 'POST',
413
+ headers: { 'Content-Type': 'application/json', ...options?.headers },
414
+ body: JSON.stringify(
415
+ segmentAddTagToEntityBody,)
416
+ }
417
+ );}
418
+
419
+
420
+ /**
421
+ * Returns the tags themselves, not the links that hold them. The same tags are also
422
+ available on the record: ask for them with the fields parameter, for example
423
+ fields=Uid,Tags.Uid,Tags.Name,Tags.TagColor. Tags cost an extra query, so the record
424
+ leaves them out unless fields names Tags or is a plain wildcard.
425
+ * @summary Retrieve the tags on a record.
426
+ */
427
+ export type segmentGetTagsForEntityResponse200 = {
428
+ data: SegmentGetTagsForEntity200
429
+ status: 200
430
+ }
431
+
432
+ export type segmentGetTagsForEntityResponse400 = {
433
+ data: void
434
+ status: 400
435
+ }
436
+
437
+ export type segmentGetTagsForEntityResponse401 = {
438
+ data: void
439
+ status: 401
440
+ }
441
+
442
+ export type segmentGetTagsForEntityResponseSuccess = (segmentGetTagsForEntityResponse200) & {
443
+ headers: Headers;
444
+ };
445
+ export type segmentGetTagsForEntityResponseError = (segmentGetTagsForEntityResponse400 | segmentGetTagsForEntityResponse401) & {
446
+ headers: Headers;
447
+ };
448
+
449
+ export type segmentGetTagsForEntityResponse = (segmentGetTagsForEntityResponseSuccess | segmentGetTagsForEntityResponseError)
450
+
451
+ export const getSegmentGetTagsForEntityUrl = (entityUid: string | null,
452
+ params?: SegmentGetTagsForEntityParams,) => {
453
+ const normalizedParams = new URLSearchParams();
454
+
455
+ Object.entries(params || {}).forEach(([key, value]) => {
456
+
457
+ if (value !== undefined) {
458
+ normalizedParams.append(key, value === null ? 'null' : value.toString())
459
+ }
460
+ });
461
+
462
+ const stringifiedParams = normalizedParams.toString();
463
+
464
+ return stringifiedParams.length > 0 ? `/api/v1/crm/segments/${entityUid}/tags?${stringifiedParams}` : `/api/v1/crm/segments/${entityUid}/tags`
465
+ }
466
+
467
+ export const segmentGetTagsForEntity = async (entityUid: string | null,
468
+ params?: SegmentGetTagsForEntityParams, options?: RequestInit): Promise<segmentGetTagsForEntityResponse> => {
469
+
470
+ return customFetch<segmentGetTagsForEntityResponse>(getSegmentGetTagsForEntityUrl(entityUid,params),
471
+ {
472
+ ...options,
473
+ method: 'GET'
474
+
475
+
476
+ }
477
+ );}
478
+
479
+
480
+ /**
481
+ * Send the full set of tags the record must end with. A tag that the list leaves out is
482
+ taken off the record, and one that the list names is added. Send an empty list to take
483
+ every tag off. To add tags without disturbing the others, use POST on this same path.
484
+
485
+ A tag belongs to one entity type, so use tags whose EntityType matches this record.
486
+ List them with GET /attribute/tags. A uid in the list that names no tag is skipped.
487
+ * @summary Replace the tags on a record.
488
+ */
489
+ export type segmentSetTagsForEntityResponse200 = {
490
+ data: Blob
491
+ status: 200
492
+ }
493
+
494
+ export type segmentSetTagsForEntityResponse400 = {
495
+ data: void
496
+ status: 400
497
+ }
498
+
499
+ export type segmentSetTagsForEntityResponse401 = {
500
+ data: void
501
+ status: 401
502
+ }
503
+
504
+ export type segmentSetTagsForEntityResponse404 = {
505
+ data: void
506
+ status: 404
507
+ }
508
+
509
+ export type segmentSetTagsForEntityResponseSuccess = (segmentSetTagsForEntityResponse200) & {
510
+ headers: Headers;
511
+ };
512
+ export type segmentSetTagsForEntityResponseError = (segmentSetTagsForEntityResponse400 | segmentSetTagsForEntityResponse401 | segmentSetTagsForEntityResponse404) & {
513
+ headers: Headers;
514
+ };
515
+
516
+ export type segmentSetTagsForEntityResponse = (segmentSetTagsForEntityResponseSuccess | segmentSetTagsForEntityResponseError)
517
+
518
+ export const getSegmentSetTagsForEntityUrl = (entityUid: string | null,) => {
519
+
520
+
521
+
522
+
523
+ return `/api/v1/crm/segments/${entityUid}/tags`
524
+ }
525
+
526
+ export const segmentSetTagsForEntity = async (entityUid: string | null,
527
+ segmentSetTagsForEntityBody: SegmentSetTagsForEntityBody, options?: RequestInit): Promise<segmentSetTagsForEntityResponse> => {
528
+
529
+ return customFetch<segmentSetTagsForEntityResponse>(getSegmentSetTagsForEntityUrl(entityUid),
530
+ {
531
+ ...options,
532
+ method: 'PUT',
533
+ headers: { 'Content-Type': 'application/json', ...options?.headers },
534
+ body: JSON.stringify(
535
+ segmentSetTagsForEntityBody,)
536
+ }
537
+ );}
538
+
539
+
540
+ /**
541
+ * The tag itself is kept and stays available for other records. If the record does not
542
+ carry the tag, nothing changes and the call still succeeds.
543
+ * @summary Remove one tag from a record.
544
+ */
545
+ export type segmentRemoveTagFromEntityResponse200 = {
546
+ data: Blob
547
+ status: 200
548
+ }
549
+
550
+ export type segmentRemoveTagFromEntityResponse400 = {
551
+ data: void
552
+ status: 400
553
+ }
554
+
555
+ export type segmentRemoveTagFromEntityResponse401 = {
556
+ data: void
557
+ status: 401
558
+ }
559
+
560
+ export type segmentRemoveTagFromEntityResponse404 = {
561
+ data: void
562
+ status: 404
563
+ }
564
+
565
+ export type segmentRemoveTagFromEntityResponseSuccess = (segmentRemoveTagFromEntityResponse200) & {
566
+ headers: Headers;
567
+ };
568
+ export type segmentRemoveTagFromEntityResponseError = (segmentRemoveTagFromEntityResponse400 | segmentRemoveTagFromEntityResponse401 | segmentRemoveTagFromEntityResponse404) & {
569
+ headers: Headers;
570
+ };
571
+
572
+ export type segmentRemoveTagFromEntityResponse = (segmentRemoveTagFromEntityResponseSuccess | segmentRemoveTagFromEntityResponseError)
573
+
574
+ export const getSegmentRemoveTagFromEntityUrl = (entityUid: string | null,
575
+ tagUid: string | null,) => {
576
+
577
+
578
+
579
+
580
+ return `/api/v1/crm/segments/${entityUid}/tags/${tagUid}`
581
+ }
582
+
583
+ export const segmentRemoveTagFromEntity = async (entityUid: string | null,
584
+ tagUid: string | null, options?: RequestInit): Promise<segmentRemoveTagFromEntityResponse> => {
585
+
586
+ return customFetch<segmentRemoveTagFromEntityResponse>(getSegmentRemoveTagFromEntityUrl(entityUid,tagUid),
587
+ {
588
+ ...options,
589
+ method: 'DELETE'
590
+
591
+
592
+ }
593
+ );}
594
+
595
+
356
596
  /**
357
597
  * Optionally filtered by segment (segmentUid) or search query (q).
358
598
  * @summary Retrieve all accounts.
@@ -2,9 +2,13 @@
2
2
  import type {
3
3
  BroadcastCampaign,
4
4
  CampaignAddBroadcastEmailBody,
5
+ CampaignAddTagToEntityBody,
5
6
  CampaignGetAllBroadcastEmails200,
6
7
  CampaignGetAllBroadcastEmailsParams,
8
+ CampaignGetTagsForEntity200,
9
+ CampaignGetTagsForEntityParams,
7
10
  CampaignSendTestCampaignEmailBody,
11
+ CampaignSetTagsForEntityBody,
8
12
  CampaignUpdateBroadcastEmailBody,
9
13
  DripCampaign,
10
14
  DripCampaignAddDripCampaignBody,
@@ -655,6 +659,15 @@ omitted it is derived automatically, so callers (including LLM tools) do not nee
655
659
  understand it. Use Message.PreviewText for inbox preview text rather than an in-body
656
660
  preheader.
657
661
 
662
+ The shape of the Body markup decides how editable the broadcast is in the app. Prose
663
+ (headings, paragraphs, lists, links, emphasis, images, inline spans) goes into a text
664
+ block, which the author edits on the editor canvas with the formatting toolbar and the
665
+ merge-tag menu. Structural markup (tables, an embedded style block, document
666
+ scaffolding) goes into an HTML block instead, because only that block renders such
667
+ markup verbatim, and it is edited as raw HTML. Send prose when the email must stay easy
668
+ to edit visually. The first save in the editor also replaces Body with the editor's
669
+ export of the design, so this choice decides the markup that is sent from then on.
670
+
658
671
  When Body is a content fragment with no Design, it is composed into the account's API
659
672
  email layout — a branded header and footer that includes the unsubscribe and
660
673
  manage-subscriptions links — and the composed result is what is sent and opened in the
@@ -1038,6 +1051,242 @@ export const campaignSendTestCampaignEmail = async (campaignSendTestCampaignEmai
1038
1051
  );}
1039
1052
 
1040
1053
 
1054
+ /**
1055
+ * Send the uids of the tags to add. Tags that the record already carries stay on it, and
1056
+ naming one of them again changes nothing, so the same request is safe to repeat. To
1057
+ replace the whole set instead, use PUT on this same path.
1058
+
1059
+ A tag belongs to one entity type, so use tags whose EntityType matches this record.
1060
+ List them with GET /attribute/tags. A uid in the list that names no tag is skipped.
1061
+ * @summary Add tags to a record.
1062
+ */
1063
+ export type campaignAddTagToEntityResponse200 = {
1064
+ data: Blob
1065
+ status: 200
1066
+ }
1067
+
1068
+ export type campaignAddTagToEntityResponse400 = {
1069
+ data: void
1070
+ status: 400
1071
+ }
1072
+
1073
+ export type campaignAddTagToEntityResponse401 = {
1074
+ data: void
1075
+ status: 401
1076
+ }
1077
+
1078
+ export type campaignAddTagToEntityResponse404 = {
1079
+ data: void
1080
+ status: 404
1081
+ }
1082
+
1083
+ export type campaignAddTagToEntityResponseSuccess = (campaignAddTagToEntityResponse200) & {
1084
+ headers: Headers;
1085
+ };
1086
+ export type campaignAddTagToEntityResponseError = (campaignAddTagToEntityResponse400 | campaignAddTagToEntityResponse401 | campaignAddTagToEntityResponse404) & {
1087
+ headers: Headers;
1088
+ };
1089
+
1090
+ export type campaignAddTagToEntityResponse = (campaignAddTagToEntityResponseSuccess | campaignAddTagToEntityResponseError)
1091
+
1092
+ export const getCampaignAddTagToEntityUrl = (entityUid: string | null,) => {
1093
+
1094
+
1095
+
1096
+
1097
+ return `/api/v1/email/campaigns/broadcasts/${entityUid}/tags`
1098
+ }
1099
+
1100
+ export const campaignAddTagToEntity = async (entityUid: string | null,
1101
+ campaignAddTagToEntityBody: CampaignAddTagToEntityBody, options?: RequestInit): Promise<campaignAddTagToEntityResponse> => {
1102
+
1103
+ return customFetch<campaignAddTagToEntityResponse>(getCampaignAddTagToEntityUrl(entityUid),
1104
+ {
1105
+ ...options,
1106
+ method: 'POST',
1107
+ headers: { 'Content-Type': 'application/json', ...options?.headers },
1108
+ body: JSON.stringify(
1109
+ campaignAddTagToEntityBody,)
1110
+ }
1111
+ );}
1112
+
1113
+
1114
+ /**
1115
+ * Returns the tags themselves, not the links that hold them. The same tags are also
1116
+ available on the record: ask for them with the fields parameter, for example
1117
+ fields=Uid,Tags.Uid,Tags.Name,Tags.TagColor. Tags cost an extra query, so the record
1118
+ leaves them out unless fields names Tags or is a plain wildcard.
1119
+ * @summary Retrieve the tags on a record.
1120
+ */
1121
+ export type campaignGetTagsForEntityResponse200 = {
1122
+ data: CampaignGetTagsForEntity200
1123
+ status: 200
1124
+ }
1125
+
1126
+ export type campaignGetTagsForEntityResponse400 = {
1127
+ data: void
1128
+ status: 400
1129
+ }
1130
+
1131
+ export type campaignGetTagsForEntityResponse401 = {
1132
+ data: void
1133
+ status: 401
1134
+ }
1135
+
1136
+ export type campaignGetTagsForEntityResponseSuccess = (campaignGetTagsForEntityResponse200) & {
1137
+ headers: Headers;
1138
+ };
1139
+ export type campaignGetTagsForEntityResponseError = (campaignGetTagsForEntityResponse400 | campaignGetTagsForEntityResponse401) & {
1140
+ headers: Headers;
1141
+ };
1142
+
1143
+ export type campaignGetTagsForEntityResponse = (campaignGetTagsForEntityResponseSuccess | campaignGetTagsForEntityResponseError)
1144
+
1145
+ export const getCampaignGetTagsForEntityUrl = (entityUid: string | null,
1146
+ params?: CampaignGetTagsForEntityParams,) => {
1147
+ const normalizedParams = new URLSearchParams();
1148
+
1149
+ Object.entries(params || {}).forEach(([key, value]) => {
1150
+
1151
+ if (value !== undefined) {
1152
+ normalizedParams.append(key, value === null ? 'null' : value.toString())
1153
+ }
1154
+ });
1155
+
1156
+ const stringifiedParams = normalizedParams.toString();
1157
+
1158
+ return stringifiedParams.length > 0 ? `/api/v1/email/campaigns/broadcasts/${entityUid}/tags?${stringifiedParams}` : `/api/v1/email/campaigns/broadcasts/${entityUid}/tags`
1159
+ }
1160
+
1161
+ export const campaignGetTagsForEntity = async (entityUid: string | null,
1162
+ params?: CampaignGetTagsForEntityParams, options?: RequestInit): Promise<campaignGetTagsForEntityResponse> => {
1163
+
1164
+ return customFetch<campaignGetTagsForEntityResponse>(getCampaignGetTagsForEntityUrl(entityUid,params),
1165
+ {
1166
+ ...options,
1167
+ method: 'GET'
1168
+
1169
+
1170
+ }
1171
+ );}
1172
+
1173
+
1174
+ /**
1175
+ * Send the full set of tags the record must end with. A tag that the list leaves out is
1176
+ taken off the record, and one that the list names is added. Send an empty list to take
1177
+ every tag off. To add tags without disturbing the others, use POST on this same path.
1178
+
1179
+ A tag belongs to one entity type, so use tags whose EntityType matches this record.
1180
+ List them with GET /attribute/tags. A uid in the list that names no tag is skipped.
1181
+ * @summary Replace the tags on a record.
1182
+ */
1183
+ export type campaignSetTagsForEntityResponse200 = {
1184
+ data: Blob
1185
+ status: 200
1186
+ }
1187
+
1188
+ export type campaignSetTagsForEntityResponse400 = {
1189
+ data: void
1190
+ status: 400
1191
+ }
1192
+
1193
+ export type campaignSetTagsForEntityResponse401 = {
1194
+ data: void
1195
+ status: 401
1196
+ }
1197
+
1198
+ export type campaignSetTagsForEntityResponse404 = {
1199
+ data: void
1200
+ status: 404
1201
+ }
1202
+
1203
+ export type campaignSetTagsForEntityResponseSuccess = (campaignSetTagsForEntityResponse200) & {
1204
+ headers: Headers;
1205
+ };
1206
+ export type campaignSetTagsForEntityResponseError = (campaignSetTagsForEntityResponse400 | campaignSetTagsForEntityResponse401 | campaignSetTagsForEntityResponse404) & {
1207
+ headers: Headers;
1208
+ };
1209
+
1210
+ export type campaignSetTagsForEntityResponse = (campaignSetTagsForEntityResponseSuccess | campaignSetTagsForEntityResponseError)
1211
+
1212
+ export const getCampaignSetTagsForEntityUrl = (entityUid: string | null,) => {
1213
+
1214
+
1215
+
1216
+
1217
+ return `/api/v1/email/campaigns/broadcasts/${entityUid}/tags`
1218
+ }
1219
+
1220
+ export const campaignSetTagsForEntity = async (entityUid: string | null,
1221
+ campaignSetTagsForEntityBody: CampaignSetTagsForEntityBody, options?: RequestInit): Promise<campaignSetTagsForEntityResponse> => {
1222
+
1223
+ return customFetch<campaignSetTagsForEntityResponse>(getCampaignSetTagsForEntityUrl(entityUid),
1224
+ {
1225
+ ...options,
1226
+ method: 'PUT',
1227
+ headers: { 'Content-Type': 'application/json', ...options?.headers },
1228
+ body: JSON.stringify(
1229
+ campaignSetTagsForEntityBody,)
1230
+ }
1231
+ );}
1232
+
1233
+
1234
+ /**
1235
+ * The tag itself is kept and stays available for other records. If the record does not
1236
+ carry the tag, nothing changes and the call still succeeds.
1237
+ * @summary Remove one tag from a record.
1238
+ */
1239
+ export type campaignRemoveTagFromEntityResponse200 = {
1240
+ data: Blob
1241
+ status: 200
1242
+ }
1243
+
1244
+ export type campaignRemoveTagFromEntityResponse400 = {
1245
+ data: void
1246
+ status: 400
1247
+ }
1248
+
1249
+ export type campaignRemoveTagFromEntityResponse401 = {
1250
+ data: void
1251
+ status: 401
1252
+ }
1253
+
1254
+ export type campaignRemoveTagFromEntityResponse404 = {
1255
+ data: void
1256
+ status: 404
1257
+ }
1258
+
1259
+ export type campaignRemoveTagFromEntityResponseSuccess = (campaignRemoveTagFromEntityResponse200) & {
1260
+ headers: Headers;
1261
+ };
1262
+ export type campaignRemoveTagFromEntityResponseError = (campaignRemoveTagFromEntityResponse400 | campaignRemoveTagFromEntityResponse401 | campaignRemoveTagFromEntityResponse404) & {
1263
+ headers: Headers;
1264
+ };
1265
+
1266
+ export type campaignRemoveTagFromEntityResponse = (campaignRemoveTagFromEntityResponseSuccess | campaignRemoveTagFromEntityResponseError)
1267
+
1268
+ export const getCampaignRemoveTagFromEntityUrl = (entityUid: string | null,
1269
+ tagUid: string | null,) => {
1270
+
1271
+
1272
+
1273
+
1274
+ return `/api/v1/email/campaigns/broadcasts/${entityUid}/tags/${tagUid}`
1275
+ }
1276
+
1277
+ export const campaignRemoveTagFromEntity = async (entityUid: string | null,
1278
+ tagUid: string | null, options?: RequestInit): Promise<campaignRemoveTagFromEntityResponse> => {
1279
+
1280
+ return customFetch<campaignRemoveTagFromEntityResponse>(getCampaignRemoveTagFromEntityUrl(entityUid,tagUid),
1281
+ {
1282
+ ...options,
1283
+ method: 'DELETE'
1284
+
1285
+
1286
+ }
1287
+ );}
1288
+
1289
+
1041
1290
  /**
1042
1291
  * @summary Retrieve all email lists.
1043
1292
  */
@@ -0,0 +1,7 @@
1
+ // @ts-nocheck
2
+ import type { TagUidList } from './tagUidList';
3
+
4
+ /**
5
+ * @nullable
6
+ */
7
+ export type ArticleAddTagToEntityBody = TagUidList | null;
@@ -1,6 +1,7 @@
1
1
  // @ts-nocheck
2
2
  import type { SupportArticleStatus } from './supportArticleStatus';
3
3
  import type { ArticleAllOfCategory } from './articleAllOfCategory';
4
+ import type { Tag } from './tag';
4
5
 
5
6
  export type ArticleAllOf = {
6
7
  Weight?: number;
@@ -23,4 +24,6 @@ export type ArticleAllOf = {
23
24
  * @nullable
24
25
  */
25
26
  Keywords?: string | null;
27
+ /** @nullable */
28
+ Tags?: Tag[] | null;
26
29
  };
@@ -8,6 +8,14 @@ export type ArticleGetAllArticlesParams = {
8
8
  * @nullable
9
9
  */
10
10
  q?: string | null;
11
+ /**
12
+ * Keep only the records that carry one of these tags. Separate several tag uids with commas. The value none keeps the records that carry no tag at all.
13
+ */
14
+ tagUid?: string;
15
+ /**
16
+ * Keep only the records that carry none of these tags. Separate several tag uids with commas. Combined with tagUid, the two widen the result instead of narrowing it: a record is kept when it matches either one.
17
+ */
18
+ withoutTagUid?: string;
11
19
  /**
12
20
  * Requested page size. The server caps it at 100, or 25 when requested fields expand child objects or require additional queries; metadata.limit reports the applied value. Use offset=1 for the second page.
13
21
  */
@@ -0,0 +1,8 @@
1
+ // @ts-nocheck
2
+ import type { CollectionMetadata } from './collectionMetadata';
3
+ import type { Tag } from './tag';
4
+
5
+ export type ArticleGetTagsForEntity200 = {
6
+ metadata?: CollectionMetadata;
7
+ items?: Tag[];
8
+ };
@@ -0,0 +1,14 @@
1
+ // @ts-nocheck
2
+ import type { LimitParameter } from './limitParameter';
3
+ import type { OffsetParameter } from './offsetParameter';
4
+
5
+ export type ArticleGetTagsForEntityParams = {
6
+ /**
7
+ * Requested page size. The server caps it at 100, or 25 when requested fields expand child objects or require additional queries; metadata.limit reports the applied value. Use offset=1 for the second page.
8
+ */
9
+ limit?: LimitParameter;
10
+ /**
11
+ * Zero-based page number, not a record offset. With limit=50, the second page is offset=1; offset=50 is page index 50 (records 2501-2550).
12
+ */
13
+ offset?: OffsetParameter;
14
+ };
@@ -0,0 +1,7 @@
1
+ // @ts-nocheck
2
+ import type { TagUidList } from './tagUidList';
3
+
4
+ /**
5
+ * @nullable
6
+ */
7
+ export type ArticleSetTagsForEntityBody = TagUidList | null;
@@ -0,0 +1,7 @@
1
+ // @ts-nocheck
2
+ import type { TagUidList } from './tagUidList';
3
+
4
+ /**
5
+ * @nullable
6
+ */
7
+ export type CampaignAddTagToEntityBody = TagUidList | null;
@@ -3,6 +3,14 @@ import type { LimitParameter } from './limitParameter';
3
3
  import type { OffsetParameter } from './offsetParameter';
4
4
 
5
5
  export type CampaignGetAllBroadcastEmailsParams = {
6
+ /**
7
+ * Keep only the records that carry one of these tags. Separate several tag uids with commas. The value none keeps the records that carry no tag at all.
8
+ */
9
+ tagUid?: string;
10
+ /**
11
+ * Keep only the records that carry none of these tags. Separate several tag uids with commas. Combined with tagUid, the two widen the result instead of narrowing it: a record is kept when it matches either one.
12
+ */
13
+ withoutTagUid?: string;
6
14
  /**
7
15
  * Requested page size. The server caps it at 100, or 25 when requested fields expand child objects or require additional queries; metadata.limit reports the applied value. Use offset=1 for the second page.
8
16
  */
@@ -0,0 +1,8 @@
1
+ // @ts-nocheck
2
+ import type { CollectionMetadata } from './collectionMetadata';
3
+ import type { Tag } from './tag';
4
+
5
+ export type CampaignGetTagsForEntity200 = {
6
+ metadata?: CollectionMetadata;
7
+ items?: Tag[];
8
+ };
@@ -0,0 +1,14 @@
1
+ // @ts-nocheck
2
+ import type { LimitParameter } from './limitParameter';
3
+ import type { OffsetParameter } from './offsetParameter';
4
+
5
+ export type CampaignGetTagsForEntityParams = {
6
+ /**
7
+ * Requested page size. The server caps it at 100, or 25 when requested fields expand child objects or require additional queries; metadata.limit reports the applied value. Use offset=1 for the second page.
8
+ */
9
+ limit?: LimitParameter;
10
+ /**
11
+ * Zero-based page number, not a record offset. With limit=50, the second page is offset=1; offset=50 is page index 50 (records 2501-2550).
12
+ */
13
+ offset?: OffsetParameter;
14
+ };
@@ -0,0 +1,7 @@
1
+ // @ts-nocheck
2
+ import type { TagUidList } from './tagUidList';
3
+
4
+ /**
5
+ * @nullable
6
+ */
7
+ export type CampaignSetTagsForEntityBody = TagUidList | null;
@@ -1,7 +1,7 @@
1
1
  // @ts-nocheck
2
2
 
3
3
  /**
4
- * `0` - None, `1` - Account, `2` - Person, `3` - Deal, `4` - Case, `5` - Invoice, `6` - EmailLog, `7` - Plan, `8` - DiscountCoupon, `9` - AddOn, `10` - Task, `11` - Segment, `12` - Broadcast
4
+ * `0` - None, `1` - Account, `2` - Person, `3` - Deal, `4` - Case, `5` - Invoice, `6` - EmailLog, `7` - Plan, `8` - DiscountCoupon, `9` - AddOn, `10` - Task, `11` - Segment, `12` - Broadcast, `13` - Article
5
5
  */
6
6
  export type EntityType = typeof EntityType[keyof typeof EntityType];
7
7
 
@@ -21,4 +21,5 @@ export const EntityType = {
21
21
  Task: 10,
22
22
  Segment: 11,
23
23
  Broadcast: 12,
24
+ Article: 13,
24
25
  } as const;
@@ -227,10 +227,14 @@ export * from './apiKeyAllOfQcount';
227
227
  export * from './apiKeyType';
228
228
  export * from './article';
229
229
  export * from './articleAddArticleBody';
230
+ export * from './articleAddTagToEntityBody';
230
231
  export * from './articleAllOf';
231
232
  export * from './articleAllOfCategory';
232
233
  export * from './articleGetAllArticles200';
233
234
  export * from './articleGetAllArticlesParams';
235
+ export * from './articleGetTagsForEntity200';
236
+ export * from './articleGetTagsForEntityParams';
237
+ export * from './articleSetTagsForEntityBody';
234
238
  export * from './authGetTokenParams';
235
239
  export * from './authMagicLinkTokenParams';
236
240
  export * from './authResendTwoFactorParams';
@@ -252,10 +256,14 @@ export * from './broadcastCampaignAllOfMessage';
252
256
  export * from './broadcastCampaignStatus';
253
257
  export * from './campaign';
254
258
  export * from './campaignAddBroadcastEmailBody';
259
+ export * from './campaignAddTagToEntityBody';
255
260
  export * from './campaignAllOf';
256
261
  export * from './campaignGetAllBroadcastEmails200';
257
262
  export * from './campaignGetAllBroadcastEmailsParams';
263
+ export * from './campaignGetTagsForEntity200';
264
+ export * from './campaignGetTagsForEntityParams';
258
265
  export * from './campaignSendTestCampaignEmailBody';
266
+ export * from './campaignSetTagsForEntityBody';
259
267
  export * from './campaignType';
260
268
  export * from './campaignUpdateBroadcastEmailBody';
261
269
  export * from './cancelationStatus';
@@ -559,11 +567,15 @@ export * from './qcountStatus';
559
567
  export * from './registrationField';
560
568
  export * from './resendEmailsRequest';
561
569
  export * from './segment';
570
+ export * from './segmentAddTagToEntityBody';
562
571
  export * from './segmentAllOf';
572
+ export * from './segmentGetTagsForEntity200';
573
+ export * from './segmentGetTagsForEntityParams';
563
574
  export * from './segmentPerson';
564
575
  export * from './segmentPersonAllOf';
565
576
  export * from './segmentPersonAllOfPerson';
566
577
  export * from './segmentPersonAllOfSegment';
578
+ export * from './segmentSetTagsForEntityBody';
567
579
  export * from './sendGridDomainAuthentication';
568
580
  export * from './sendGridDomainAuthenticationAllOf';
569
581
  export * from './sendTemplateEmailRequest';
@@ -0,0 +1,7 @@
1
+ // @ts-nocheck
2
+ import type { TagUidList } from './tagUidList';
3
+
4
+ /**
5
+ * @nullable
6
+ */
7
+ export type SegmentAddTagToEntityBody = TagUidList | null;
@@ -0,0 +1,8 @@
1
+ // @ts-nocheck
2
+ import type { CollectionMetadata } from './collectionMetadata';
3
+ import type { Tag } from './tag';
4
+
5
+ export type SegmentGetTagsForEntity200 = {
6
+ metadata?: CollectionMetadata;
7
+ items?: Tag[];
8
+ };
@@ -0,0 +1,14 @@
1
+ // @ts-nocheck
2
+ import type { LimitParameter } from './limitParameter';
3
+ import type { OffsetParameter } from './offsetParameter';
4
+
5
+ export type SegmentGetTagsForEntityParams = {
6
+ /**
7
+ * Requested page size. The server caps it at 100, or 25 when requested fields expand child objects or require additional queries; metadata.limit reports the applied value. Use offset=1 for the second page.
8
+ */
9
+ limit?: LimitParameter;
10
+ /**
11
+ * Zero-based page number, not a record offset. With limit=50, the second page is offset=1; offset=50 is page index 50 (records 2501-2550).
12
+ */
13
+ offset?: OffsetParameter;
14
+ };
@@ -0,0 +1,7 @@
1
+ // @ts-nocheck
2
+ import type { TagUidList } from './tagUidList';
3
+
4
+ /**
5
+ * @nullable
6
+ */
7
+ export type SegmentSetTagsForEntityBody = TagUidList | null;
@@ -23,6 +23,8 @@ export type SupportSettingsAllOf = {
23
23
  /** @nullable */
24
24
  KnowledgeBaseFooterLinkJSON?: string | null;
25
25
  /** @nullable */
26
+ KnowledgeBaseFilterJSON?: string | null;
27
+ /** @nullable */
26
28
  OfficeHoursJSON?: string | null;
27
29
  /** @nullable */
28
30
  EmailNotificationForNewTickets?: string | null;
@@ -2,8 +2,12 @@
2
2
  import type {
3
3
  Article,
4
4
  ArticleAddArticleBody,
5
+ ArticleAddTagToEntityBody,
5
6
  ArticleGetAllArticles200,
6
7
  ArticleGetAllArticlesParams,
8
+ ArticleGetTagsForEntity200,
9
+ ArticleGetTagsForEntityParams,
10
+ ArticleSetTagsForEntityBody,
7
11
  Case,
8
12
  CaseAddCaseBody,
9
13
  CaseAddCaseParams,
@@ -514,6 +518,242 @@ export const articleGetArticle = async (articleUid: string | null, options?: Req
514
518
  );}
515
519
 
516
520
 
521
+ /**
522
+ * Send the uids of the tags to add. Tags that the record already carries stay on it, and
523
+ naming one of them again changes nothing, so the same request is safe to repeat. To
524
+ replace the whole set instead, use PUT on this same path.
525
+
526
+ A tag belongs to one entity type, so use tags whose EntityType matches this record.
527
+ List them with GET /attribute/tags. A uid in the list that names no tag is skipped.
528
+ * @summary Add tags to a record.
529
+ */
530
+ export type articleAddTagToEntityResponse200 = {
531
+ data: Blob
532
+ status: 200
533
+ }
534
+
535
+ export type articleAddTagToEntityResponse400 = {
536
+ data: void
537
+ status: 400
538
+ }
539
+
540
+ export type articleAddTagToEntityResponse401 = {
541
+ data: void
542
+ status: 401
543
+ }
544
+
545
+ export type articleAddTagToEntityResponse404 = {
546
+ data: void
547
+ status: 404
548
+ }
549
+
550
+ export type articleAddTagToEntityResponseSuccess = (articleAddTagToEntityResponse200) & {
551
+ headers: Headers;
552
+ };
553
+ export type articleAddTagToEntityResponseError = (articleAddTagToEntityResponse400 | articleAddTagToEntityResponse401 | articleAddTagToEntityResponse404) & {
554
+ headers: Headers;
555
+ };
556
+
557
+ export type articleAddTagToEntityResponse = (articleAddTagToEntityResponseSuccess | articleAddTagToEntityResponseError)
558
+
559
+ export const getArticleAddTagToEntityUrl = (entityUid: string | null,) => {
560
+
561
+
562
+
563
+
564
+ return `/api/v1/support/articles/${entityUid}/tags`
565
+ }
566
+
567
+ export const articleAddTagToEntity = async (entityUid: string | null,
568
+ articleAddTagToEntityBody: ArticleAddTagToEntityBody, options?: RequestInit): Promise<articleAddTagToEntityResponse> => {
569
+
570
+ return customFetch<articleAddTagToEntityResponse>(getArticleAddTagToEntityUrl(entityUid),
571
+ {
572
+ ...options,
573
+ method: 'POST',
574
+ headers: { 'Content-Type': 'application/json', ...options?.headers },
575
+ body: JSON.stringify(
576
+ articleAddTagToEntityBody,)
577
+ }
578
+ );}
579
+
580
+
581
+ /**
582
+ * Returns the tags themselves, not the links that hold them. The same tags are also
583
+ available on the record: ask for them with the fields parameter, for example
584
+ fields=Uid,Tags.Uid,Tags.Name,Tags.TagColor. Tags cost an extra query, so the record
585
+ leaves them out unless fields names Tags or is a plain wildcard.
586
+ * @summary Retrieve the tags on a record.
587
+ */
588
+ export type articleGetTagsForEntityResponse200 = {
589
+ data: ArticleGetTagsForEntity200
590
+ status: 200
591
+ }
592
+
593
+ export type articleGetTagsForEntityResponse400 = {
594
+ data: void
595
+ status: 400
596
+ }
597
+
598
+ export type articleGetTagsForEntityResponse401 = {
599
+ data: void
600
+ status: 401
601
+ }
602
+
603
+ export type articleGetTagsForEntityResponseSuccess = (articleGetTagsForEntityResponse200) & {
604
+ headers: Headers;
605
+ };
606
+ export type articleGetTagsForEntityResponseError = (articleGetTagsForEntityResponse400 | articleGetTagsForEntityResponse401) & {
607
+ headers: Headers;
608
+ };
609
+
610
+ export type articleGetTagsForEntityResponse = (articleGetTagsForEntityResponseSuccess | articleGetTagsForEntityResponseError)
611
+
612
+ export const getArticleGetTagsForEntityUrl = (entityUid: string | null,
613
+ params?: ArticleGetTagsForEntityParams,) => {
614
+ const normalizedParams = new URLSearchParams();
615
+
616
+ Object.entries(params || {}).forEach(([key, value]) => {
617
+
618
+ if (value !== undefined) {
619
+ normalizedParams.append(key, value === null ? 'null' : value.toString())
620
+ }
621
+ });
622
+
623
+ const stringifiedParams = normalizedParams.toString();
624
+
625
+ return stringifiedParams.length > 0 ? `/api/v1/support/articles/${entityUid}/tags?${stringifiedParams}` : `/api/v1/support/articles/${entityUid}/tags`
626
+ }
627
+
628
+ export const articleGetTagsForEntity = async (entityUid: string | null,
629
+ params?: ArticleGetTagsForEntityParams, options?: RequestInit): Promise<articleGetTagsForEntityResponse> => {
630
+
631
+ return customFetch<articleGetTagsForEntityResponse>(getArticleGetTagsForEntityUrl(entityUid,params),
632
+ {
633
+ ...options,
634
+ method: 'GET'
635
+
636
+
637
+ }
638
+ );}
639
+
640
+
641
+ /**
642
+ * Send the full set of tags the record must end with. A tag that the list leaves out is
643
+ taken off the record, and one that the list names is added. Send an empty list to take
644
+ every tag off. To add tags without disturbing the others, use POST on this same path.
645
+
646
+ A tag belongs to one entity type, so use tags whose EntityType matches this record.
647
+ List them with GET /attribute/tags. A uid in the list that names no tag is skipped.
648
+ * @summary Replace the tags on a record.
649
+ */
650
+ export type articleSetTagsForEntityResponse200 = {
651
+ data: Blob
652
+ status: 200
653
+ }
654
+
655
+ export type articleSetTagsForEntityResponse400 = {
656
+ data: void
657
+ status: 400
658
+ }
659
+
660
+ export type articleSetTagsForEntityResponse401 = {
661
+ data: void
662
+ status: 401
663
+ }
664
+
665
+ export type articleSetTagsForEntityResponse404 = {
666
+ data: void
667
+ status: 404
668
+ }
669
+
670
+ export type articleSetTagsForEntityResponseSuccess = (articleSetTagsForEntityResponse200) & {
671
+ headers: Headers;
672
+ };
673
+ export type articleSetTagsForEntityResponseError = (articleSetTagsForEntityResponse400 | articleSetTagsForEntityResponse401 | articleSetTagsForEntityResponse404) & {
674
+ headers: Headers;
675
+ };
676
+
677
+ export type articleSetTagsForEntityResponse = (articleSetTagsForEntityResponseSuccess | articleSetTagsForEntityResponseError)
678
+
679
+ export const getArticleSetTagsForEntityUrl = (entityUid: string | null,) => {
680
+
681
+
682
+
683
+
684
+ return `/api/v1/support/articles/${entityUid}/tags`
685
+ }
686
+
687
+ export const articleSetTagsForEntity = async (entityUid: string | null,
688
+ articleSetTagsForEntityBody: ArticleSetTagsForEntityBody, options?: RequestInit): Promise<articleSetTagsForEntityResponse> => {
689
+
690
+ return customFetch<articleSetTagsForEntityResponse>(getArticleSetTagsForEntityUrl(entityUid),
691
+ {
692
+ ...options,
693
+ method: 'PUT',
694
+ headers: { 'Content-Type': 'application/json', ...options?.headers },
695
+ body: JSON.stringify(
696
+ articleSetTagsForEntityBody,)
697
+ }
698
+ );}
699
+
700
+
701
+ /**
702
+ * The tag itself is kept and stays available for other records. If the record does not
703
+ carry the tag, nothing changes and the call still succeeds.
704
+ * @summary Remove one tag from a record.
705
+ */
706
+ export type articleRemoveTagFromEntityResponse200 = {
707
+ data: Blob
708
+ status: 200
709
+ }
710
+
711
+ export type articleRemoveTagFromEntityResponse400 = {
712
+ data: void
713
+ status: 400
714
+ }
715
+
716
+ export type articleRemoveTagFromEntityResponse401 = {
717
+ data: void
718
+ status: 401
719
+ }
720
+
721
+ export type articleRemoveTagFromEntityResponse404 = {
722
+ data: void
723
+ status: 404
724
+ }
725
+
726
+ export type articleRemoveTagFromEntityResponseSuccess = (articleRemoveTagFromEntityResponse200) & {
727
+ headers: Headers;
728
+ };
729
+ export type articleRemoveTagFromEntityResponseError = (articleRemoveTagFromEntityResponse400 | articleRemoveTagFromEntityResponse401 | articleRemoveTagFromEntityResponse404) & {
730
+ headers: Headers;
731
+ };
732
+
733
+ export type articleRemoveTagFromEntityResponse = (articleRemoveTagFromEntityResponseSuccess | articleRemoveTagFromEntityResponseError)
734
+
735
+ export const getArticleRemoveTagFromEntityUrl = (entityUid: string | null,
736
+ tagUid: string | null,) => {
737
+
738
+
739
+
740
+
741
+ return `/api/v1/support/articles/${entityUid}/tags/${tagUid}`
742
+ }
743
+
744
+ export const articleRemoveTagFromEntity = async (entityUid: string | null,
745
+ tagUid: string | null, options?: RequestInit): Promise<articleRemoveTagFromEntityResponse> => {
746
+
747
+ return customFetch<articleRemoveTagFromEntityResponse>(getArticleRemoveTagFromEntityUrl(entityUid,tagUid),
748
+ {
749
+ ...options,
750
+ method: 'DELETE'
751
+
752
+
753
+ }
754
+ );}
755
+
756
+
517
757
  /**
518
758
  * @summary Retrieve all knowledge base categories.
519
759
  */