featurebase-node 0.15.2 → 0.15.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/client.d.mts +16 -4
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +16 -4
  5. package/client.d.ts.map +1 -1
  6. package/client.js +12 -0
  7. package/client.js.map +1 -1
  8. package/client.mjs +12 -0
  9. package/client.mjs.map +1 -1
  10. package/package.json +1 -1
  11. package/resources/away-reasons.d.mts +37 -0
  12. package/resources/away-reasons.d.mts.map +1 -0
  13. package/resources/away-reasons.d.ts +37 -0
  14. package/resources/away-reasons.d.ts.map +1 -0
  15. package/resources/away-reasons.js +31 -0
  16. package/resources/away-reasons.js.map +1 -0
  17. package/resources/away-reasons.mjs +27 -0
  18. package/resources/away-reasons.mjs.map +1 -0
  19. package/resources/feedback/feedback.d.mts +2 -2
  20. package/resources/feedback/feedback.d.mts.map +1 -1
  21. package/resources/feedback/feedback.d.ts +2 -2
  22. package/resources/feedback/feedback.d.ts.map +1 -1
  23. package/resources/feedback/feedback.js.map +1 -1
  24. package/resources/feedback/feedback.mjs.map +1 -1
  25. package/resources/feedback/index.d.mts +1 -1
  26. package/resources/feedback/index.d.mts.map +1 -1
  27. package/resources/feedback/index.d.ts +1 -1
  28. package/resources/feedback/index.d.ts.map +1 -1
  29. package/resources/feedback/index.js.map +1 -1
  30. package/resources/feedback/index.mjs.map +1 -1
  31. package/resources/feedback/posts/index.d.mts +1 -1
  32. package/resources/feedback/posts/index.d.mts.map +1 -1
  33. package/resources/feedback/posts/index.d.ts +1 -1
  34. package/resources/feedback/posts/index.d.ts.map +1 -1
  35. package/resources/feedback/posts/index.js.map +1 -1
  36. package/resources/feedback/posts/index.mjs.map +1 -1
  37. package/resources/feedback/posts/posts.d.mts +123 -161
  38. package/resources/feedback/posts/posts.d.mts.map +1 -1
  39. package/resources/feedback/posts/posts.d.ts +123 -161
  40. package/resources/feedback/posts/posts.d.ts.map +1 -1
  41. package/resources/feedback/posts/posts.js.map +1 -1
  42. package/resources/feedback/posts/posts.mjs.map +1 -1
  43. package/resources/index.d.mts +4 -2
  44. package/resources/index.d.mts.map +1 -1
  45. package/resources/index.d.ts +4 -2
  46. package/resources/index.d.ts.map +1 -1
  47. package/resources/index.js +5 -1
  48. package/resources/index.js.map +1 -1
  49. package/resources/index.mjs +2 -0
  50. package/resources/index.mjs.map +1 -1
  51. package/resources/organization/admins.d.mts +151 -4
  52. package/resources/organization/admins.d.mts.map +1 -1
  53. package/resources/organization/admins.d.ts +151 -4
  54. package/resources/organization/admins.d.ts.map +1 -1
  55. package/resources/organization/admins.js +58 -3
  56. package/resources/organization/admins.js.map +1 -1
  57. package/resources/organization/admins.mjs +58 -3
  58. package/resources/organization/admins.mjs.map +1 -1
  59. package/resources/organization/index.d.mts +2 -2
  60. package/resources/organization/index.d.mts.map +1 -1
  61. package/resources/organization/index.d.ts +2 -2
  62. package/resources/organization/index.d.ts.map +1 -1
  63. package/resources/organization/index.js.map +1 -1
  64. package/resources/organization/index.mjs.map +1 -1
  65. package/resources/organization/organization.d.mts +4 -4
  66. package/resources/organization/organization.d.mts.map +1 -1
  67. package/resources/organization/organization.d.ts +4 -4
  68. package/resources/organization/organization.d.ts.map +1 -1
  69. package/resources/organization/organization.js.map +1 -1
  70. package/resources/organization/organization.mjs +1 -1
  71. package/resources/organization/organization.mjs.map +1 -1
  72. package/resources/organization/teams.d.mts +34 -4
  73. package/resources/organization/teams.d.mts.map +1 -1
  74. package/resources/organization/teams.d.ts +34 -4
  75. package/resources/organization/teams.d.ts.map +1 -1
  76. package/resources/organization/teams.js +18 -3
  77. package/resources/organization/teams.js.map +1 -1
  78. package/resources/organization/teams.mjs +18 -3
  79. package/resources/organization/teams.mjs.map +1 -1
  80. package/resources/reports.d.mts +45 -1
  81. package/resources/reports.d.mts.map +1 -1
  82. package/resources/reports.d.ts +45 -1
  83. package/resources/reports.d.ts.map +1 -1
  84. package/resources/reports.js +35 -0
  85. package/resources/reports.js.map +1 -1
  86. package/resources/reports.mjs +35 -0
  87. package/resources/reports.mjs.map +1 -1
  88. package/resources/training-data/index.d.mts +1 -1
  89. package/resources/training-data/index.d.mts.map +1 -1
  90. package/resources/training-data/index.d.ts +1 -1
  91. package/resources/training-data/index.d.ts.map +1 -1
  92. package/resources/training-data/index.js.map +1 -1
  93. package/resources/training-data/index.mjs.map +1 -1
  94. package/resources/training-data/training-data.d.mts +66 -161
  95. package/resources/training-data/training-data.d.mts.map +1 -1
  96. package/resources/training-data/training-data.d.ts +66 -161
  97. package/resources/training-data/training-data.d.ts.map +1 -1
  98. package/resources/training-data/training-data.js.map +1 -1
  99. package/resources/training-data/training-data.mjs.map +1 -1
  100. package/resources/workload.d.mts +103 -0
  101. package/resources/workload.d.mts.map +1 -0
  102. package/resources/workload.d.ts +103 -0
  103. package/resources/workload.d.ts.map +1 -0
  104. package/resources/workload.js +32 -0
  105. package/resources/workload.js.map +1 -0
  106. package/resources/workload.mjs +28 -0
  107. package/resources/workload.mjs.map +1 -0
  108. package/src/client.ts +34 -0
  109. package/src/resources/away-reasons.ts +68 -0
  110. package/src/resources/feedback/feedback.ts +4 -0
  111. package/src/resources/feedback/index.ts +2 -0
  112. package/src/resources/feedback/posts/index.ts +2 -0
  113. package/src/resources/feedback/posts/posts.ts +154 -204
  114. package/src/resources/index.ts +9 -0
  115. package/src/resources/organization/admins.ts +254 -3
  116. package/src/resources/organization/index.ts +8 -0
  117. package/src/resources/organization/organization.ts +23 -1
  118. package/src/resources/organization/teams.ts +69 -3
  119. package/src/resources/reports.ts +70 -0
  120. package/src/resources/training-data/index.ts +1 -0
  121. package/src/resources/training-data/training-data.ts +77 -193
  122. package/src/resources/workload.ts +179 -0
  123. package/src/version.ts +1 -1
  124. package/version.d.mts +1 -1
  125. package/version.d.ts +1 -1
  126. package/version.js +1 -1
  127. package/version.mjs +1 -1
package/src/client.ts CHANGED
@@ -31,6 +31,11 @@ import {
31
31
  AuditLogListResponsesCursorPage,
32
32
  AuditLogs,
33
33
  } from './resources/audit-logs';
34
+ import {
35
+ AwayReasonRetrieveAwayReasonsParams,
36
+ AwayReasonRetrieveAwayReasonsResponse,
37
+ AwayReasons,
38
+ } from './resources/away-reasons';
34
39
  import {
35
40
  ConversationAttribute,
36
41
  ConversationAttributeListParams,
@@ -45,6 +50,8 @@ import {
45
50
  ReportDataset,
46
51
  ReportDrillInParams,
47
52
  ReportDrillInResponse,
53
+ ReportFilterCapabilitiesParams,
54
+ ReportFilterCapabilitiesResponse,
48
55
  ReportFilterExpression,
49
56
  ReportFilterRule,
50
57
  ReportGroupedDatum,
@@ -83,6 +90,7 @@ import {
83
90
  Webhooks,
84
91
  WebhooksCursorPage,
85
92
  } from './resources/webhooks';
93
+ import { Workload, WorkloadListParams, WorkloadListResponse } from './resources/workload';
86
94
  import {
87
95
  Changelog,
88
96
  ChangelogCreateParams,
@@ -103,6 +111,7 @@ import { HelpCenter } from './resources/help-center/help-center';
103
111
  import { Organization } from './resources/organization/organization';
104
112
  import { Support } from './resources/support/support';
105
113
  import {
114
+ KnowledgeMatchCandidate,
106
115
  KnowledgeSearch,
107
116
  Oracle,
108
117
  TrainingData,
@@ -884,6 +893,14 @@ export class Featurebase {
884
893
  * Training data teaches the AI agent about your product beyond your public Help Center: training files (documents, policies, internal notes) and Q&A entries (question variants with the exact answer to give). Use these endpoints to keep that knowledge in sync from your own systems — for example, pushing resolved support conversations, internal runbooks, or SOP documents automatically.
885
894
  */
886
895
  trainingData: API.TrainingData = new API.TrainingData(this);
896
+ /**
897
+ * Live conversation workload, teammate availability, capacity limits, and managed away reasons for large support teams.
898
+ */
899
+ workload: API.Workload = new API.Workload(this);
900
+ /**
901
+ * Live conversation workload, teammate availability, capacity limits, and managed away reasons for large support teams.
902
+ */
903
+ awayReasons: API.AwayReasons = new API.AwayReasons(this);
887
904
  }
888
905
 
889
906
  Featurebase.Support = Support;
@@ -898,6 +915,8 @@ Featurebase.ConversationAttributes = ConversationAttributes;
898
915
  Featurebase.AuditLogs = AuditLogs;
899
916
  Featurebase.Reports = Reports;
900
917
  Featurebase.TrainingData = TrainingData;
918
+ Featurebase.Workload = Workload;
919
+ Featurebase.AwayReasons = AwayReasons;
901
920
 
902
921
  export declare namespace Featurebase {
903
922
  export type RequestOptions = Opts.RequestOptions;
@@ -991,10 +1010,12 @@ export declare namespace Featurebase {
991
1010
  type ReportSegmentDatum as ReportSegmentDatum,
992
1011
  type ReportTimeSeriesDatum as ReportTimeSeriesDatum,
993
1012
  type ReportDrillInResponse as ReportDrillInResponse,
1013
+ type ReportFilterCapabilitiesResponse as ReportFilterCapabilitiesResponse,
994
1014
  type ReportListDatasetsResponse as ReportListDatasetsResponse,
995
1015
  type ReportLookupFilterValuesResponse as ReportLookupFilterValuesResponse,
996
1016
  type ReportQueryResponse as ReportQueryResponse,
997
1017
  type ReportDrillInParams as ReportDrillInParams,
1018
+ type ReportFilterCapabilitiesParams as ReportFilterCapabilitiesParams,
998
1019
  type ReportListDatasetsParams as ReportListDatasetsParams,
999
1020
  type ReportLookupFilterValuesParams as ReportLookupFilterValuesParams,
1000
1021
  type ReportQueryParams as ReportQueryParams,
@@ -1002,9 +1023,22 @@ export declare namespace Featurebase {
1002
1023
 
1003
1024
  export {
1004
1025
  TrainingData as TrainingData,
1026
+ type KnowledgeMatchCandidate as KnowledgeMatchCandidate,
1005
1027
  type KnowledgeSearch as KnowledgeSearch,
1006
1028
  type Oracle as Oracle,
1007
1029
  type TrainingDataOracleParams as TrainingDataOracleParams,
1008
1030
  type TrainingDataSearchParams as TrainingDataSearchParams,
1009
1031
  };
1032
+
1033
+ export {
1034
+ Workload as Workload,
1035
+ type WorkloadListResponse as WorkloadListResponse,
1036
+ type WorkloadListParams as WorkloadListParams,
1037
+ };
1038
+
1039
+ export {
1040
+ AwayReasons as AwayReasons,
1041
+ type AwayReasonRetrieveAwayReasonsResponse as AwayReasonRetrieveAwayReasonsResponse,
1042
+ type AwayReasonRetrieveAwayReasonsParams as AwayReasonRetrieveAwayReasonsParams,
1043
+ };
1010
1044
  }
@@ -0,0 +1,68 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ import { APIResource } from '../core/resource';
4
+ import { APIPromise } from '../core/api-promise';
5
+ import { buildHeaders } from '../internal/headers';
6
+ import { RequestOptions } from '../internal/request-options';
7
+
8
+ /**
9
+ * Live conversation workload, teammate availability, capacity limits, and managed away reasons for large support teams.
10
+ */
11
+ export class AwayReasons extends APIResource {
12
+ /**
13
+ * Returns active managed away reasons. Set includeArchived=true to include
14
+ * historical reasons.
15
+ */
16
+ retrieveAwayReasons(
17
+ params: AwayReasonRetrieveAwayReasonsParams | null | undefined = {},
18
+ options?: RequestOptions,
19
+ ): APIPromise<AwayReasonRetrieveAwayReasonsResponse> {
20
+ const { 'Featurebase-Version': featurebaseVersion } = params ?? {};
21
+ return this._client.get('/v2/away-reasons', {
22
+ ...options,
23
+ headers: buildHeaders([
24
+ {
25
+ ...(featurebaseVersion?.toString() != null ?
26
+ { 'Featurebase-Version': featurebaseVersion?.toString() }
27
+ : undefined),
28
+ },
29
+ options?.headers,
30
+ ]),
31
+ });
32
+ }
33
+ }
34
+
35
+ export interface AwayReasonRetrieveAwayReasonsResponse {
36
+ data: Array<AwayReasonRetrieveAwayReasonsResponse.Data>;
37
+
38
+ nextCursor: null;
39
+
40
+ object: 'list';
41
+ }
42
+
43
+ export namespace AwayReasonRetrieveAwayReasonsResponse {
44
+ export interface Data {
45
+ id: string;
46
+
47
+ archived: boolean;
48
+
49
+ label: string;
50
+
51
+ object: 'away_reason';
52
+ }
53
+ }
54
+
55
+ export interface AwayReasonRetrieveAwayReasonsParams {
56
+ /**
57
+ * API version for this request. Defaults to your organization's configured API
58
+ * version if not specified.
59
+ */
60
+ 'Featurebase-Version'?: '2026-08-19.orbit' | '2026-01-01.nova' | '2025-12-12.clover';
61
+ }
62
+
63
+ export declare namespace AwayReasons {
64
+ export {
65
+ type AwayReasonRetrieveAwayReasonsResponse as AwayReasonRetrieveAwayReasonsResponse,
66
+ type AwayReasonRetrieveAwayReasonsParams as AwayReasonRetrieveAwayReasonsParams,
67
+ };
68
+ }
@@ -45,8 +45,10 @@ import {
45
45
  PostDeleteParams,
46
46
  PostDeleteResponse,
47
47
  PostFeatures,
48
+ PostList,
48
49
  PostListParams,
49
50
  PostMergeParams,
51
+ PostProcessing,
50
52
  PostRetrieveParams,
51
53
  PostSearchParams,
52
54
  PostSearchResponse,
@@ -88,6 +90,8 @@ export declare namespace Feedback {
88
90
  type PostAccess as PostAccess,
89
91
  type PostAuthor as PostAuthor,
90
92
  type PostFeatures as PostFeatures,
93
+ type PostList as PostList,
94
+ type PostProcessing as PostProcessing,
91
95
  type PostTag as PostTag,
92
96
  type SearchFilter as SearchFilter,
93
97
  type SearchFilterGroup as SearchFilterGroup,
@@ -44,6 +44,8 @@ export {
44
44
  type PostAccess,
45
45
  type PostAuthor,
46
46
  type PostFeatures,
47
+ type PostList,
48
+ type PostProcessing,
47
49
  type PostTag,
48
50
  type SearchFilter,
49
51
  type SearchFilterGroup,
@@ -13,6 +13,8 @@ export {
13
13
  type PostAccess,
14
14
  type PostAuthor,
15
15
  type PostFeatures,
16
+ type PostList,
17
+ type PostProcessing,
16
18
  type PostTag,
17
19
  type SearchFilter,
18
20
  type SearchFilterGroup,
@@ -945,7 +945,7 @@ export interface Post {
945
945
  * the create returned), with `results` listing what was made of the submission
946
946
  * once the run has finished.
947
947
  */
948
- processing?: Post.Processing;
948
+ processing?: PostProcessing;
949
949
  }
950
950
 
951
951
  export namespace Post {
@@ -1157,107 +1157,6 @@ export namespace Post {
1157
1157
  objectType: 'Opportunity' | 'Case';
1158
1158
  }
1159
1159
  }
1160
-
1161
- /**
1162
- * On POST /v2/posts — `queued`: a processing run (claim extraction or the Organize
1163
- * rewrite) was enqueued and its result lands asynchronously on the post.
1164
- * `skipped`: nothing was enqueued; `reason` says which gate decided
1165
- * ('request_mode' for every intakeMode: 'request' create). `existing`: the create
1166
- * was an idempotent replay and the post was not processed again. On GET
1167
- * /v2/posts/{id} this field is present only for posts created with
1168
- * `intakeMode: 'feedback'` and reports how far that processing has got ('queued',
1169
- * 'processing', 'complete', 'needs_review', or 'skipped' with the same `reason`
1170
- * the create returned), with `results` listing what was made of the submission
1171
- * once the run has finished.
1172
- */
1173
- export interface Processing {
1174
- /**
1175
- * 'queued' = an AI run was enqueued and has not landed yet; 'processing' = the run
1176
- * is working on the submission; 'complete' = it finished and `results` lists what
1177
- * it produced; 'needs_review' = it finished and a teammate still has to decide
1178
- * something; 'skipped' = nothing was enqueued (see `reason`); 'existing' =
1179
- * idempotent replay, not processed again.
1180
- */
1181
- status: 'queued' | 'processing' | 'complete' | 'needs_review' | 'skipped' | 'existing';
1182
-
1183
- /**
1184
- * Why processing was skipped. 'request_mode' = intakeMode was 'request' (the
1185
- * default); 'autopilot_off' = the workspace's Autopilot dial is off or its plan
1186
- * does not include it; 'pipeline_paused' = the platform paused AI processing (it
1187
- * resumes automatically); 'support_board' / 'spam_held' / 'staff_authored' /
1188
- * 'no_content' = the post did not qualify; 'source_too_long' = the text was over
1189
- * the length limit when the run read it (a create that long is normally refused
1190
- * with a 400 first); 'extraction_failed' = the AI could not read the text after
1191
- * repeated attempts; nothing was written, and opening the post in Triage runs the
1192
- * analysis again.
1193
- */
1194
- reason?:
1195
- | 'request_mode'
1196
- | 'autopilot_off'
1197
- | 'insights_disabled'
1198
- | 'pipeline_paused'
1199
- | 'support_board'
1200
- | 'spam_held'
1201
- | 'staff_authored'
1202
- | 'not_a_post'
1203
- | 'no_board'
1204
- | 'no_id'
1205
- | 'no_content'
1206
- | 'source_too_long'
1207
- | 'extraction_failed'
1208
- | 'hook_error';
1209
-
1210
- /**
1211
- * What the workspace's "Organize submissions" lane made of this submission, one
1212
- * entry per ask it found, in the order they appear in the text. Present on GET
1213
- * /v2/posts/{id} for posts created with `intakeMode: 'feedback'` once the run has
1214
- * finished. Absent while the run is still working, and absent for workspaces that
1215
- * do not organize submissions — there the post itself is the request.
1216
- */
1217
- results?: Array<Processing.Result>;
1218
- }
1219
-
1220
- export namespace Processing {
1221
- export interface Result {
1222
- /**
1223
- * 'request' = the ask became a request of its own; 'attached' = it was added as
1224
- * evidence to a request that already existed; 'held' = it became a request that is
1225
- * waiting for a teammate to publish it; 'question' = it asked something and no
1226
- * request was created, so a teammate answers it.
1227
- */
1228
- outcome: 'attached' | 'request' | 'question' | 'held';
1229
-
1230
- /**
1231
- * The ask, as it was written up.
1232
- */
1233
- title: string;
1234
-
1235
- /**
1236
- * The request this ask became, or was attached to. Absent for a question, and
1237
- * absent when the request is not readable through this API (for example a ticket
1238
- * board).
1239
- */
1240
- postId?: string;
1241
-
1242
- /**
1243
- * Title of `postId`.
1244
- */
1245
- postTitle?: string;
1246
-
1247
- /**
1248
- * Why a 'held' result is waiting for a teammate. Only on a 'held' result, and only
1249
- * one of these codes: 'too_many_topics' = the submission held more separate asks
1250
- * than one submission can become requests, so this one request lists the asks that
1251
- * did not fit, one line each in the customer's words; 'uncertain' = the ask was
1252
- * too vague to file without a person; 'custom_fields' = the board requires custom
1253
- * fields this submission did not carry; 'processing_failed' = the AI could not
1254
- * rewrite the text (the request then holds the original words) or could not check
1255
- * this ask against existing requests, so a teammate confirms it is not a
1256
- * duplicate.
1257
- */
1258
- reason?: 'too_many_topics' | 'uncertain' | 'custom_fields' | 'processing_failed';
1259
- }
1260
- }
1261
1160
  }
1262
1161
 
1263
1162
  export interface PostAccess {
@@ -1310,6 +1209,156 @@ export interface PostFeatures {
1310
1209
  commentsEnabled: boolean;
1311
1210
  }
1312
1211
 
1212
+ export interface PostList {
1213
+ /**
1214
+ * Array of posts
1215
+ */
1216
+ data: Array<Post>;
1217
+
1218
+ /**
1219
+ * Cursor for fetching the next page (cursor-based pagination)
1220
+ */
1221
+ nextCursor: string | null;
1222
+
1223
+ /**
1224
+ * Object type identifier
1225
+ */
1226
+ object: 'list';
1227
+
1228
+ /**
1229
+ * Pagination metadata for page-based requests
1230
+ */
1231
+ pagination?: PostList.Pagination;
1232
+ }
1233
+
1234
+ export namespace PostList {
1235
+ /**
1236
+ * Pagination metadata for page-based requests
1237
+ */
1238
+ export interface Pagination {
1239
+ /**
1240
+ * Items per page
1241
+ */
1242
+ limit: number;
1243
+
1244
+ /**
1245
+ * Current page number
1246
+ */
1247
+ page: number;
1248
+
1249
+ /**
1250
+ * Total number of items
1251
+ */
1252
+ total: number;
1253
+
1254
+ /**
1255
+ * Total number of pages
1256
+ */
1257
+ totalPages: number;
1258
+ }
1259
+ }
1260
+
1261
+ /**
1262
+ * On POST /v2/posts — `queued`: a processing run (claim extraction or the Organize
1263
+ * rewrite) was enqueued and its result lands asynchronously on the post.
1264
+ * `skipped`: nothing was enqueued; `reason` says which gate decided
1265
+ * ('request_mode' for every intakeMode: 'request' create). `existing`: the create
1266
+ * was an idempotent replay and the post was not processed again. On GET
1267
+ * /v2/posts/{id} this field is present only for posts created with
1268
+ * `intakeMode: 'feedback'` and reports how far that processing has got ('queued',
1269
+ * 'processing', 'complete', 'needs_review', or 'skipped' with the same `reason`
1270
+ * the create returned), with `results` listing what was made of the submission
1271
+ * once the run has finished.
1272
+ */
1273
+ export interface PostProcessing {
1274
+ /**
1275
+ * 'queued' = an AI run was enqueued and has not landed yet; 'processing' = the run
1276
+ * is working on the submission; 'complete' = it finished and `results` lists what
1277
+ * it produced; 'needs_review' = it finished and a teammate still has to decide
1278
+ * something; 'skipped' = nothing was enqueued (see `reason`); 'existing' =
1279
+ * idempotent replay, not processed again.
1280
+ */
1281
+ status: 'queued' | 'processing' | 'complete' | 'needs_review' | 'skipped' | 'existing';
1282
+
1283
+ /**
1284
+ * Why processing was skipped. 'request_mode' = intakeMode was 'request' (the
1285
+ * default); 'autopilot_off' = the workspace's Autopilot dial is off or its plan
1286
+ * does not include it; 'pipeline_paused' = the platform paused AI processing (it
1287
+ * resumes automatically); 'support_board' / 'spam_held' / 'staff_authored' /
1288
+ * 'no_content' = the post did not qualify; 'source_too_long' = the text was over
1289
+ * the length limit when the run read it (a create that long is normally refused
1290
+ * with a 400 first); 'extraction_failed' = the AI could not read the text after
1291
+ * repeated attempts; nothing was written, and opening the post in Triage runs the
1292
+ * analysis again.
1293
+ */
1294
+ reason?:
1295
+ | 'request_mode'
1296
+ | 'autopilot_off'
1297
+ | 'insights_disabled'
1298
+ | 'pipeline_paused'
1299
+ | 'support_board'
1300
+ | 'spam_held'
1301
+ | 'staff_authored'
1302
+ | 'not_a_post'
1303
+ | 'no_board'
1304
+ | 'no_id'
1305
+ | 'no_content'
1306
+ | 'source_too_long'
1307
+ | 'extraction_failed'
1308
+ | 'hook_error';
1309
+
1310
+ /**
1311
+ * What the workspace's "Organize submissions" lane made of this submission, one
1312
+ * entry per ask it found, in the order they appear in the text. Present on GET
1313
+ * /v2/posts/{id} for posts created with `intakeMode: 'feedback'` once the run has
1314
+ * finished. Absent while the run is still working, and absent for workspaces that
1315
+ * do not organize submissions — there the post itself is the request.
1316
+ */
1317
+ results?: Array<PostProcessing.Result>;
1318
+ }
1319
+
1320
+ export namespace PostProcessing {
1321
+ export interface Result {
1322
+ /**
1323
+ * 'request' = the ask became a request of its own; 'attached' = it was added as
1324
+ * evidence to a request that already existed; 'held' = it became a request that is
1325
+ * waiting for a teammate to publish it; 'question' = it asked something and no
1326
+ * request was created, so a teammate answers it.
1327
+ */
1328
+ outcome: 'attached' | 'request' | 'question' | 'held';
1329
+
1330
+ /**
1331
+ * The ask, as it was written up.
1332
+ */
1333
+ title: string;
1334
+
1335
+ /**
1336
+ * The request this ask became, or was attached to. Absent for a question, and
1337
+ * absent when the request is not readable through this API (for example a ticket
1338
+ * board).
1339
+ */
1340
+ postId?: string;
1341
+
1342
+ /**
1343
+ * Title of `postId`.
1344
+ */
1345
+ postTitle?: string;
1346
+
1347
+ /**
1348
+ * Why a 'held' result is waiting for a teammate. Only on a 'held' result, and only
1349
+ * one of these codes: 'too_many_topics' = the submission held more separate asks
1350
+ * than one submission can become requests, so this one request lists the asks that
1351
+ * did not fit, one line each in the customer's words; 'uncertain' = the ask was
1352
+ * too vague to file without a person; 'custom_fields' = the board requires custom
1353
+ * fields this submission did not carry; 'processing_failed' = the AI could not
1354
+ * rewrite the text (the request then holds the original words) or could not check
1355
+ * this ask against existing requests, so a teammate confirms it is not a
1356
+ * duplicate.
1357
+ */
1358
+ reason?: 'too_many_topics' | 'uncertain' | 'custom_fields' | 'processing_failed';
1359
+ }
1360
+ }
1361
+
1313
1362
  export interface PostTag {
1314
1363
  /**
1315
1364
  * Tag unique identifier
@@ -1581,7 +1630,7 @@ export namespace PostSearchResponse {
1581
1630
  * the create returned), with `results` listing what was made of the submission
1582
1631
  * once the run has finished.
1583
1632
  */
1584
- processing?: Data.Processing;
1633
+ processing?: PostsAPI.PostProcessing;
1585
1634
  }
1586
1635
 
1587
1636
  export namespace Data {
@@ -1793,107 +1842,6 @@ export namespace PostSearchResponse {
1793
1842
  objectType: 'Opportunity' | 'Case';
1794
1843
  }
1795
1844
  }
1796
-
1797
- /**
1798
- * On POST /v2/posts — `queued`: a processing run (claim extraction or the Organize
1799
- * rewrite) was enqueued and its result lands asynchronously on the post.
1800
- * `skipped`: nothing was enqueued; `reason` says which gate decided
1801
- * ('request_mode' for every intakeMode: 'request' create). `existing`: the create
1802
- * was an idempotent replay and the post was not processed again. On GET
1803
- * /v2/posts/{id} this field is present only for posts created with
1804
- * `intakeMode: 'feedback'` and reports how far that processing has got ('queued',
1805
- * 'processing', 'complete', 'needs_review', or 'skipped' with the same `reason`
1806
- * the create returned), with `results` listing what was made of the submission
1807
- * once the run has finished.
1808
- */
1809
- export interface Processing {
1810
- /**
1811
- * 'queued' = an AI run was enqueued and has not landed yet; 'processing' = the run
1812
- * is working on the submission; 'complete' = it finished and `results` lists what
1813
- * it produced; 'needs_review' = it finished and a teammate still has to decide
1814
- * something; 'skipped' = nothing was enqueued (see `reason`); 'existing' =
1815
- * idempotent replay, not processed again.
1816
- */
1817
- status: 'queued' | 'processing' | 'complete' | 'needs_review' | 'skipped' | 'existing';
1818
-
1819
- /**
1820
- * Why processing was skipped. 'request_mode' = intakeMode was 'request' (the
1821
- * default); 'autopilot_off' = the workspace's Autopilot dial is off or its plan
1822
- * does not include it; 'pipeline_paused' = the platform paused AI processing (it
1823
- * resumes automatically); 'support_board' / 'spam_held' / 'staff_authored' /
1824
- * 'no_content' = the post did not qualify; 'source_too_long' = the text was over
1825
- * the length limit when the run read it (a create that long is normally refused
1826
- * with a 400 first); 'extraction_failed' = the AI could not read the text after
1827
- * repeated attempts; nothing was written, and opening the post in Triage runs the
1828
- * analysis again.
1829
- */
1830
- reason?:
1831
- | 'request_mode'
1832
- | 'autopilot_off'
1833
- | 'insights_disabled'
1834
- | 'pipeline_paused'
1835
- | 'support_board'
1836
- | 'spam_held'
1837
- | 'staff_authored'
1838
- | 'not_a_post'
1839
- | 'no_board'
1840
- | 'no_id'
1841
- | 'no_content'
1842
- | 'source_too_long'
1843
- | 'extraction_failed'
1844
- | 'hook_error';
1845
-
1846
- /**
1847
- * What the workspace's "Organize submissions" lane made of this submission, one
1848
- * entry per ask it found, in the order they appear in the text. Present on GET
1849
- * /v2/posts/{id} for posts created with `intakeMode: 'feedback'` once the run has
1850
- * finished. Absent while the run is still working, and absent for workspaces that
1851
- * do not organize submissions — there the post itself is the request.
1852
- */
1853
- results?: Array<Processing.Result>;
1854
- }
1855
-
1856
- export namespace Processing {
1857
- export interface Result {
1858
- /**
1859
- * 'request' = the ask became a request of its own; 'attached' = it was added as
1860
- * evidence to a request that already existed; 'held' = it became a request that is
1861
- * waiting for a teammate to publish it; 'question' = it asked something and no
1862
- * request was created, so a teammate answers it.
1863
- */
1864
- outcome: 'attached' | 'request' | 'question' | 'held';
1865
-
1866
- /**
1867
- * The ask, as it was written up.
1868
- */
1869
- title: string;
1870
-
1871
- /**
1872
- * The request this ask became, or was attached to. Absent for a question, and
1873
- * absent when the request is not readable through this API (for example a ticket
1874
- * board).
1875
- */
1876
- postId?: string;
1877
-
1878
- /**
1879
- * Title of `postId`.
1880
- */
1881
- postTitle?: string;
1882
-
1883
- /**
1884
- * Why a 'held' result is waiting for a teammate. Only on a 'held' result, and only
1885
- * one of these codes: 'too_many_topics' = the submission held more separate asks
1886
- * than one submission can become requests, so this one request lists the asks that
1887
- * did not fit, one line each in the customer's words; 'uncertain' = the ask was
1888
- * too vague to file without a person; 'custom_fields' = the board requires custom
1889
- * fields this submission did not carry; 'processing_failed' = the AI could not
1890
- * rewrite the text (the request then holds the original words) or could not check
1891
- * this ask against existing requests, so a teammate confirms it is not a
1892
- * duplicate.
1893
- */
1894
- reason?: 'too_many_topics' | 'uncertain' | 'custom_fields' | 'processing_failed';
1895
- }
1896
- }
1897
1845
  }
1898
1846
  }
1899
1847
 
@@ -2388,6 +2336,8 @@ export declare namespace Posts {
2388
2336
  type PostAccess as PostAccess,
2389
2337
  type PostAuthor as PostAuthor,
2390
2338
  type PostFeatures as PostFeatures,
2339
+ type PostList as PostList,
2340
+ type PostProcessing as PostProcessing,
2391
2341
  type PostTag as PostTag,
2392
2342
  type SearchFilter as SearchFilter,
2393
2343
  type SearchFilterGroup as SearchFilterGroup,
@@ -6,6 +6,11 @@ export {
6
6
  type AuditLogListParams,
7
7
  type AuditLogListResponsesCursorPage,
8
8
  } from './audit-logs';
9
+ export {
10
+ AwayReasons,
11
+ type AwayReasonRetrieveAwayReasonsResponse,
12
+ type AwayReasonRetrieveAwayReasonsParams,
13
+ } from './away-reasons';
9
14
  export {
10
15
  Changelogs,
11
16
  type Changelog,
@@ -44,10 +49,12 @@ export {
44
49
  type ReportSegmentDatum,
45
50
  type ReportTimeSeriesDatum,
46
51
  type ReportDrillInResponse,
52
+ type ReportFilterCapabilitiesResponse,
47
53
  type ReportListDatasetsResponse,
48
54
  type ReportLookupFilterValuesResponse,
49
55
  type ReportQueryResponse,
50
56
  type ReportDrillInParams,
57
+ type ReportFilterCapabilitiesParams,
51
58
  type ReportListDatasetsParams,
52
59
  type ReportLookupFilterValuesParams,
53
60
  type ReportQueryParams,
@@ -66,6 +73,7 @@ export {
66
73
  } from './surveys';
67
74
  export {
68
75
  TrainingData,
76
+ type KnowledgeMatchCandidate,
69
77
  type KnowledgeSearch,
70
78
  type Oracle,
71
79
  type TrainingDataOracleParams,
@@ -85,3 +93,4 @@ export {
85
93
  type WebhookRefreshSecretParams,
86
94
  type WebhooksCursorPage,
87
95
  } from './webhooks';
96
+ export { Workload, type WorkloadListResponse, type WorkloadListParams } from './workload';