@bitbitpress/client 1.1.3 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +8 -152
  2. package/dist/generated/openapi.d.ts +802 -314
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/react/index.d.ts +76 -2
  6. package/dist/react/index.d.ts.map +1 -1
  7. package/dist/react/index.js +122 -3
  8. package/dist/react/index.js.map +1 -1
  9. package/dist/react-native-expo/BitBitPiece.d.ts +64 -0
  10. package/dist/react-native-expo/BitBitPiece.d.ts.map +1 -0
  11. package/dist/react-native-expo/BitBitPiece.js +164 -0
  12. package/dist/react-native-expo/BitBitPiece.js.map +1 -0
  13. package/dist/react-native-expo/BitBitView.d.ts.map +1 -1
  14. package/dist/react-native-expo/BitBitView.js +21 -2
  15. package/dist/react-native-expo/BitBitView.js.map +1 -1
  16. package/dist/react-native-expo/bootstrapHtml.d.ts +13 -0
  17. package/dist/react-native-expo/bootstrapHtml.d.ts.map +1 -1
  18. package/dist/react-native-expo/bootstrapHtml.js +108 -12
  19. package/dist/react-native-expo/bootstrapHtml.js.map +1 -1
  20. package/dist/react-native-expo/index.d.ts +1 -0
  21. package/dist/react-native-expo/index.d.ts.map +1 -1
  22. package/dist/react-native-expo/index.js +1 -0
  23. package/dist/react-native-expo/index.js.map +1 -1
  24. package/dist/runtime/index.d.ts +32 -0
  25. package/dist/runtime/index.d.ts.map +1 -1
  26. package/dist/runtime/index.js +68 -2
  27. package/dist/runtime/index.js.map +1 -1
  28. package/dist/studio/BitBitMobilePreview.d.ts +33 -0
  29. package/dist/studio/BitBitMobilePreview.d.ts.map +1 -0
  30. package/dist/studio/BitBitMobilePreview.js +120 -0
  31. package/dist/studio/BitBitMobilePreview.js.map +1 -0
  32. package/dist/studio/index.d.ts +7 -0
  33. package/dist/studio/index.d.ts.map +1 -0
  34. package/dist/studio/index.js +7 -0
  35. package/dist/studio/index.js.map +1 -0
  36. package/dist/synthesisUi/types.d.ts +3 -0
  37. package/dist/synthesisUi/types.d.ts.map +1 -1
  38. package/dist/user/index.d.ts +42 -19
  39. package/dist/user/index.d.ts.map +1 -1
  40. package/dist/user/index.js +8 -3
  41. package/dist/user/index.js.map +1 -1
  42. package/dist/user/profile.d.ts +2 -2
  43. package/dist/user/profile.js +2 -2
  44. package/dist/user/submissions.d.ts +0 -21
  45. package/dist/user/submissions.d.ts.map +1 -1
  46. package/dist/user/submissions.js +0 -39
  47. package/dist/user/submissions.js.map +1 -1
  48. package/dist/user/synthesisOutputTts.d.ts +21 -0
  49. package/dist/user/synthesisOutputTts.d.ts.map +1 -0
  50. package/dist/user/synthesisOutputTts.js +32 -0
  51. package/dist/user/synthesisOutputTts.js.map +1 -0
  52. package/dist/user/synthesisPiece.d.ts +38 -0
  53. package/dist/user/synthesisPiece.d.ts.map +1 -0
  54. package/dist/user/synthesisPiece.js +58 -0
  55. package/dist/user/synthesisPiece.js.map +1 -0
  56. package/dist/user/track-batch-manager.d.ts +10 -4
  57. package/dist/user/track-batch-manager.d.ts.map +1 -1
  58. package/dist/user/track-batch-manager.js +6 -5
  59. package/dist/user/track-batch-manager.js.map +1 -1
  60. package/dist/user/track.d.ts +9 -0
  61. package/dist/user/track.d.ts.map +1 -1
  62. package/dist/user/track.js +17 -0
  63. package/dist/user/track.js.map +1 -1
  64. package/package.json +5 -1
@@ -4,6 +4,86 @@
4
4
  */
5
5
 
6
6
  export interface paths {
7
+ "/v1/auth/magic-link": {
8
+ parameters: {
9
+ query?: never;
10
+ header?: never;
11
+ path?: never;
12
+ cookie?: never;
13
+ };
14
+ get?: never;
15
+ put?: never;
16
+ /**
17
+ * Auth - Send Magic Link
18
+ * @description **POST** `/v1/auth/magic-link`
19
+ *
20
+ * Send a one-time sign-in link by email. The callback must be registered for the supplied client. The token in the link is exchanged through `POST /v1/auth/token`.
21
+ */
22
+ post: {
23
+ parameters: {
24
+ query?: never;
25
+ header?: never;
26
+ path?: never;
27
+ cookie?: never;
28
+ };
29
+ requestBody: {
30
+ content: {
31
+ "application/json": {
32
+ email: string;
33
+ /** @description Public identifier of the app requesting the sign-in link */
34
+ clientId: string;
35
+ /** @description Registered callback URL. Optional when the client has a default callback. */
36
+ redirectUri?: string;
37
+ };
38
+ };
39
+ };
40
+ responses: {
41
+ /** @description Default Response */
42
+ 200: {
43
+ headers: {
44
+ [name: string]: unknown;
45
+ };
46
+ content: {
47
+ "application/json": {
48
+ /** @example true */
49
+ success: boolean;
50
+ };
51
+ };
52
+ };
53
+ /** @description Bad request - missing or invalid parameters */
54
+ 400: {
55
+ headers: {
56
+ [name: string]: unknown;
57
+ };
58
+ content: {
59
+ "application/json": {
60
+ /** @example Bad request */
61
+ error?: string;
62
+ };
63
+ };
64
+ };
65
+ /** @description Internal server error */
66
+ 500: {
67
+ headers: {
68
+ [name: string]: unknown;
69
+ };
70
+ content: {
71
+ "application/json": {
72
+ /** @example false */
73
+ success?: boolean;
74
+ /** @example Internal server error: An unknown error occurred */
75
+ error?: string;
76
+ };
77
+ };
78
+ };
79
+ };
80
+ };
81
+ delete?: never;
82
+ options?: never;
83
+ head?: never;
84
+ patch?: never;
85
+ trace?: never;
86
+ };
7
87
  "/v1/auth/token": {
8
88
  parameters: {
9
89
  query?: never;
@@ -93,6 +173,21 @@ export interface paths {
93
173
  };
94
174
  };
95
175
  };
176
+ /** @description Forbidden errors */
177
+ 403: {
178
+ headers: {
179
+ [name: string]: unknown;
180
+ };
181
+ content: {
182
+ "application/json": {
183
+ /**
184
+ * @example Forbidden: Subscription required
185
+ * @enum {string}
186
+ */
187
+ error: "Forbidden: Subscription required";
188
+ };
189
+ };
190
+ };
96
191
  /** @description Internal server error */
97
192
  500: {
98
193
  headers: {
@@ -195,6 +290,21 @@ export interface paths {
195
290
  };
196
291
  };
197
292
  };
293
+ /** @description Forbidden errors */
294
+ 403: {
295
+ headers: {
296
+ [name: string]: unknown;
297
+ };
298
+ content: {
299
+ "application/json": {
300
+ /**
301
+ * @example Forbidden: Subscription required
302
+ * @enum {string}
303
+ */
304
+ error: "Forbidden: Subscription required";
305
+ };
306
+ };
307
+ };
198
308
  /** @description Internal server error */
199
309
  500: {
200
310
  headers: {
@@ -288,6 +398,21 @@ export interface paths {
288
398
  };
289
399
  };
290
400
  };
401
+ /** @description Forbidden errors */
402
+ 403: {
403
+ headers: {
404
+ [name: string]: unknown;
405
+ };
406
+ content: {
407
+ "application/json": {
408
+ /**
409
+ * @example Forbidden: Subscription required
410
+ * @enum {string}
411
+ */
412
+ error: "Forbidden: Subscription required";
413
+ };
414
+ };
415
+ };
291
416
  /** @description Internal server error */
292
417
  500: {
293
418
  headers: {
@@ -414,6 +539,21 @@ export interface paths {
414
539
  };
415
540
  };
416
541
  };
542
+ /** @description Forbidden errors */
543
+ 403: {
544
+ headers: {
545
+ [name: string]: unknown;
546
+ };
547
+ content: {
548
+ "application/json": {
549
+ /**
550
+ * @example Forbidden: Subscription required
551
+ * @enum {string}
552
+ */
553
+ error: "Forbidden: Subscription required";
554
+ };
555
+ };
556
+ };
417
557
  /** @description Internal server error */
418
558
  500: {
419
559
  headers: {
@@ -510,6 +650,21 @@ export interface paths {
510
650
  };
511
651
  };
512
652
  };
653
+ /** @description Forbidden errors */
654
+ 403: {
655
+ headers: {
656
+ [name: string]: unknown;
657
+ };
658
+ content: {
659
+ "application/json": {
660
+ /**
661
+ * @example Forbidden: Subscription required
662
+ * @enum {string}
663
+ */
664
+ error: "Forbidden: Subscription required";
665
+ };
666
+ };
667
+ };
513
668
  /** @description Internal server error */
514
669
  500: {
515
670
  headers: {
@@ -629,6 +784,21 @@ export interface paths {
629
784
  };
630
785
  };
631
786
  };
787
+ /** @description Forbidden errors */
788
+ 403: {
789
+ headers: {
790
+ [name: string]: unknown;
791
+ };
792
+ content: {
793
+ "application/json": {
794
+ /**
795
+ * @example Forbidden: Subscription required
796
+ * @enum {string}
797
+ */
798
+ error: "Forbidden: Subscription required";
799
+ };
800
+ };
801
+ };
632
802
  /** @description Internal server error */
633
803
  500: {
634
804
  headers: {
@@ -745,6 +915,21 @@ export interface paths {
745
915
  };
746
916
  };
747
917
  };
918
+ /** @description Forbidden errors */
919
+ 403: {
920
+ headers: {
921
+ [name: string]: unknown;
922
+ };
923
+ content: {
924
+ "application/json": {
925
+ /**
926
+ * @example Forbidden: Subscription required
927
+ * @enum {string}
928
+ */
929
+ error: "Forbidden: Subscription required";
930
+ };
931
+ };
932
+ };
748
933
  /** @description Internal server error */
749
934
  500: {
750
935
  headers: {
@@ -767,7 +952,7 @@ export interface paths {
767
952
  patch?: never;
768
953
  trace?: never;
769
954
  };
770
- "/v1/user/synthesize": {
955
+ "/v1/user/piece-events": {
771
956
  parameters: {
772
957
  query?: never;
773
958
  header?: never;
@@ -777,10 +962,8 @@ export interface paths {
777
962
  get?: never;
778
963
  put?: never;
779
964
  /**
780
- * Synthesis - Synthesize Content
781
- * @description **POST** `/v1/user/synthesize`
782
- *
783
- * Synthesize content items personalized to the user.
965
+ * Synthesis - Record Piece Events
966
+ * @description **POST** `/v1/user/piece-events` Records behavioral events (views, clicks) for a SynthesisPiece embed, addressed by the piece's `keyName`. Batched by the SDK; powers per-piece engagement. Distinct from `/v1/user/events` (SynthesisUIs) so a keyName shared across the two entity namespaces is never misattributed.
784
967
  */
785
968
  post: {
786
969
  parameters: {
@@ -795,73 +978,45 @@ export interface paths {
795
978
  requestBody: {
796
979
  content: {
797
980
  "application/json": {
798
- /** @description Array of items to synthesize. Each item has inputs and output; optional configurationKeyName to use a named config (omit for default). */
799
- items: {
800
- /** @description Optional configuration key name. Loads an existing synthesis config by this name; omit for default configuration. */
801
- configurationKeyName?: string;
802
- /** @description How many recent stored synthesis outputs to expose in the streamed `synthesisHistory` / `synthesisHistoryEntries` fields. Defaults to 0 (no history emitted). When > 0, the final data event includes a `synthesisHistoryEntries` array of up to N `{ synthesisOutputId, data }` (most-recent first; each row's payload paired with its output id, so submissions can attach to a specific historical output), and — DEPRECATED, for older app builds — an index-aligned `synthesisHistory` array of the same bare `data` payloads. The first entry is the current synthesis itself — the same payload `data` is derived from — and the remaining entries are older stored rows. */
803
- synthesisHistoryLimit?: number;
804
- /** @description Per-request overrides for search options. */
805
- searchOptionsOverrides?: {
806
- /** @description Override for search lookback window in minutes (e.g. 1440 for last 24 hours). */
807
- lookbackMinutes?: number;
808
- };
809
- /** @description Inputs used as context for the synthesis: externalId (article ID), or text (freeform text). */
810
- inputs?: {
811
- /**
812
- * @description Type of input: externalId (article) or text (freeform).
813
- * @enum {string}
814
- */
815
- type: "externalId" | "text" | "excludeExternalIds";
816
- /** @description External ID (e.g. article) for externalId, freeform text for text, or comma-separated list of external IDs to exclude */
817
- value: string;
818
- }[];
819
- /** @description Optional output definition. Omit to use the output schema declared on the config named by `configurationKeyName` (`output.outputSchema`). */
820
- output?: {
821
- /** @description Output schema as a JSON string. Top-level type must be "object". Supports object, string, number, boolean, array, and enum. Example: {"type":"object","properties":{"title":{"type":"string","description":"title"},"status":{"type":"string","enum":["draft","published"]}}} */
822
- schema: string;
981
+ /** @description Events to record. */
982
+ events: {
983
+ /** @description The piece's load id (`<BitBitPiece keyName>`) the event belongs to. */
984
+ keyName: string;
985
+ /**
986
+ * @description VIEW (the piece was shown) or CLICK (a tracked interaction).
987
+ * @enum {string}
988
+ */
989
+ type: "VIEW" | "CLICK";
990
+ /** @description For CLICK: the human-readable action name. Omit for VIEW. */
991
+ name?: string;
992
+ /** @description Arbitrary event properties (retained for analytics drill-down). */
993
+ payload?: {
994
+ [key: string]: unknown;
823
995
  };
996
+ /** @description ISO timestamp the event occurred; defaults to server time. */
997
+ occurredAt?: string;
824
998
  }[];
825
999
  };
826
1000
  };
827
1001
  };
828
1002
  responses: {
829
- /**
830
- * @description Streaming response (Server-Sent Events). Each event is a JSON object sent as `data: {JSON}\n\n`.
831
- *
832
- * **Connection Events:**
833
- * ```json
834
- * {"type":"connected" | "complete"}
835
- * ```
836
- *
837
- * **Data Events (success):**
838
- * ```json
839
- * {
840
- * "index": number,
841
- * "data": {...},
842
- * "synthesisHistory"?: [{...}, ...],
843
- * "complete": false | true
844
- * }
845
- * ```
846
- * `data` is always a single synthesized object (keys match your output schema). `complete` is `false` for partial streaming updates and `true` for the final validated payload.
847
- *
848
- * When `synthesisHistoryLimit > 0`, the final event additionally includes `synthesisHistoryEntries`: an array of up to N entries (most-recent first), each `{ synthesisOutputId, data }`, so a client can attach submissions (e.g. poll votes) to a specific historical output. The first entry is the current synthesis itself — the raw payload `data` is derived from (identical to `data` when reranking isn't configured; the unreranked source when it is) — and the remaining entries are older stored rows. A DEPRECATED `synthesisHistory` field (index-aligned bare `data` payloads) is also included for older app builds. The primary `data` field stays a single object — when user reranking is configured, it is built by pooling items at the reranking field across the fetched rows and scoring against the user profile.
849
- *
850
- * **Data Events (error):**
851
- * ```json
852
- * {
853
- * "index": number,
854
- * "error": "error message"
855
- * }
856
- * ```
857
- * Sent when synthesis fails for that item (e.g. resolve failure, exception).
858
- */
1003
+ /** @description Events recorded */
859
1004
  200: {
860
1005
  headers: {
861
1006
  [name: string]: unknown;
862
1007
  };
863
1008
  content: {
864
- "application/json": string;
1009
+ "application/json": {
1010
+ /** @example true */
1011
+ success: boolean;
1012
+ data: {
1013
+ /**
1014
+ * @description Whether any event resolved to a known piece and was recorded.
1015
+ * @example true
1016
+ */
1017
+ recorded: boolean;
1018
+ };
1019
+ };
865
1020
  };
866
1021
  };
867
1022
  /** @description Bad request - missing or invalid parameters */
@@ -913,7 +1068,7 @@ export interface paths {
913
1068
  patch?: never;
914
1069
  trace?: never;
915
1070
  };
916
- "/v1/user/synthesize-ui": {
1071
+ "/v1/user/synthesize": {
917
1072
  parameters: {
918
1073
  query?: never;
919
1074
  header?: never;
@@ -923,12 +1078,10 @@ export interface paths {
923
1078
  get?: never;
924
1079
  put?: never;
925
1080
  /**
926
- * Synthesis - Synthesize UI
927
- * @description **POST** `/v1/user/synthesize-ui`
928
- *
929
- * Resolve one or more generated UIs in a single request, each identified by its `keyName`. Works exactly like `/v1/user/synthesize` — same per-item synthesis inputs (`inputs`, `output.schema`, `searchOptionsOverrides`, `synthesisHistoryLimit`) and the same personalized, streamed `data` — except it additionally returns the UI code bundle to render that data. The synthesis runs against the config attached to each UI.
1081
+ * Synthesis - Synthesize Content
1082
+ * @description **POST** `/v1/user/synthesize`
930
1083
  *
931
- * Streams as Server-Sent Events so the client can load the (cacheable) code bundle immediately and render synthesis `data` as it arrives. The code bundle is immutable per published version and identical for every app user, so it is served from a CDN by versioned `bundleUrl` and cached once across renders and users. `data` is the per-request, per-user piece and may stream in partials before a final `complete: true` event. `theme` is deployment-level and emitted once in the `manifest`. (`bundleSource` is an inlined fallback used only while bundles are served inline, before CDN delivery.)
1084
+ * Synthesize content items personalized to the user.
932
1085
  */
933
1086
  post: {
934
1087
  parameters: {
@@ -943,16 +1096,179 @@ export interface paths {
943
1096
  requestBody: {
944
1097
  content: {
945
1098
  "application/json": {
946
- /**
947
- * @description Target platform for the bundles, for the whole request. Defaults to `web`.
948
- * @enum {string}
949
- */
950
- platform?: "web" | "mobile";
951
- /** @description UIs to resolve in this request. */
1099
+ /** @description Array of items to synthesize. Each item has inputs and output; optional configurationKeyName to use a named config (omit for default). */
952
1100
  items: {
953
- /** @description Stable identifier of the UI to load. Configured in the CMS. */
954
- keyName: string;
955
- /** @description How many recent stored synthesis outputs to expose in the streamed `synthesisHistory` / `synthesisHistoryEntries` fields. Defaults to 0. See `/v1/user/synthesize` for the full semantics. */
1101
+ /** @description Optional configuration key name. Loads an existing synthesis config by this name; omit for default configuration. */
1102
+ configurationKeyName?: string;
1103
+ /** @description How many recent stored synthesis outputs to expose in the streamed `synthesisHistory` / `synthesisHistoryEntries` fields. Defaults to 0 (no history emitted). When > 0, the final data event includes a `synthesisHistoryEntries` array of up to N `{ synthesisOutputId, data }` (most-recent first; each row's payload paired with its output id, so submissions can attach to a specific historical output), and — DEPRECATED, for older app builds — an index-aligned `synthesisHistory` array of the same bare `data` payloads. The first entry is the current synthesis itself — the same payload `data` is derived from — and the remaining entries are older stored rows. */
1104
+ synthesisHistoryLimit?: number;
1105
+ /** @description Per-request overrides for search options. */
1106
+ searchOptionsOverrides?: {
1107
+ /** @description Override for search lookback window in minutes (e.g. 1440 for last 24 hours). */
1108
+ lookbackMinutes?: number;
1109
+ };
1110
+ /** @description Inputs used as context for the synthesis: externalId (article ID), or text (freeform text). */
1111
+ inputs?: {
1112
+ /**
1113
+ * @description Type of input: externalId (article) or text (freeform).
1114
+ * @enum {string}
1115
+ */
1116
+ type: "externalId" | "text" | "excludeExternalIds";
1117
+ /** @description External ID (e.g. article) for externalId, freeform text for text, or comma-separated list of external IDs to exclude */
1118
+ value: string;
1119
+ }[];
1120
+ /** @description Optional output definition. Omit to use the output schema declared on the config named by `configurationKeyName` (`output.outputSchema`). */
1121
+ output?: {
1122
+ /** @description Output schema as a JSON string. Top-level type must be "object". Supports object, string, number, boolean, array, and enum. Example: {"type":"object","properties":{"title":{"type":"string","description":"title"},"status":{"type":"string","enum":["draft","published"]}}} */
1123
+ schema: string;
1124
+ };
1125
+ }[];
1126
+ };
1127
+ };
1128
+ };
1129
+ responses: {
1130
+ /**
1131
+ * @description Streaming response (Server-Sent Events). Each event is a JSON object sent as `data: {JSON}\n\n`.
1132
+ *
1133
+ * **Connection Events:**
1134
+ * ```json
1135
+ * {"type":"connected" | "complete"}
1136
+ * ```
1137
+ *
1138
+ * **Data Events (success):**
1139
+ * ```json
1140
+ * {
1141
+ * "index": number,
1142
+ * "data": {...},
1143
+ * "synthesisHistory"?: [{...}, ...],
1144
+ * "complete": false | true
1145
+ * }
1146
+ * ```
1147
+ * `data` is always a single synthesized object (keys match your output schema). `complete` is `false` for partial streaming updates and `true` for the final validated payload.
1148
+ *
1149
+ * When `synthesisHistoryLimit > 0`, the final event additionally includes `synthesisHistoryEntries`: an array of up to N entries (most-recent first), each `{ synthesisOutputId, data }`, so a client can attach submissions (e.g. poll votes) to a specific historical output. The first entry is the current synthesis itself — the raw payload `data` is derived from (identical to `data` when reranking isn't configured; the unreranked source when it is) — and the remaining entries are older stored rows. A DEPRECATED `synthesisHistory` field (index-aligned bare `data` payloads) is also included for older app builds. The primary `data` field stays a single object — when user reranking is configured, it is built by pooling items at the reranking field across the fetched rows and scoring against the user profile.
1150
+ *
1151
+ * **Data Events (error):**
1152
+ * ```json
1153
+ * {
1154
+ * "index": number,
1155
+ * "error": "error message"
1156
+ * }
1157
+ * ```
1158
+ * Sent when synthesis fails for that item (e.g. resolve failure, exception).
1159
+ */
1160
+ 200: {
1161
+ headers: {
1162
+ [name: string]: unknown;
1163
+ };
1164
+ content: {
1165
+ "application/json": string;
1166
+ };
1167
+ };
1168
+ /** @description Bad request - missing or invalid parameters */
1169
+ 400: {
1170
+ headers: {
1171
+ [name: string]: unknown;
1172
+ };
1173
+ content: {
1174
+ "application/json": {
1175
+ /** @example Bad request */
1176
+ error?: string;
1177
+ };
1178
+ };
1179
+ };
1180
+ /** @description Unauthorized errors */
1181
+ 401: {
1182
+ headers: {
1183
+ [name: string]: unknown;
1184
+ };
1185
+ content: {
1186
+ "application/json": {
1187
+ /**
1188
+ * @example Unauthorized: No authentication token provided
1189
+ * @enum {string}
1190
+ */
1191
+ error?: "Unauthorized: No authentication token provided" | "Unauthorized: Token has expired" | "Unauthorized: Invalid token" | "Unauthorized: Authentication failed";
1192
+ };
1193
+ };
1194
+ };
1195
+ /** @description Forbidden errors */
1196
+ 403: {
1197
+ headers: {
1198
+ [name: string]: unknown;
1199
+ };
1200
+ content: {
1201
+ "application/json": {
1202
+ /**
1203
+ * @example Forbidden: Subscription required
1204
+ * @enum {string}
1205
+ */
1206
+ error: "Forbidden: Subscription required";
1207
+ };
1208
+ };
1209
+ };
1210
+ /** @description Internal server error */
1211
+ 500: {
1212
+ headers: {
1213
+ [name: string]: unknown;
1214
+ };
1215
+ content: {
1216
+ "application/json": {
1217
+ /** @example false */
1218
+ success?: boolean;
1219
+ /** @example Internal server error: An unknown error occurred */
1220
+ error?: string;
1221
+ };
1222
+ };
1223
+ };
1224
+ };
1225
+ };
1226
+ delete?: never;
1227
+ options?: never;
1228
+ head?: never;
1229
+ patch?: never;
1230
+ trace?: never;
1231
+ };
1232
+ "/v1/user/synthesize-ui": {
1233
+ parameters: {
1234
+ query?: never;
1235
+ header?: never;
1236
+ path?: never;
1237
+ cookie?: never;
1238
+ };
1239
+ get?: never;
1240
+ put?: never;
1241
+ /**
1242
+ * Synthesis - Synthesize UI
1243
+ * @description **POST** `/v1/user/synthesize-ui`
1244
+ *
1245
+ * Resolve one or more generated UIs in a single request, each identified by its `keyName`. Works exactly like `/v1/user/synthesize` — same per-item synthesis inputs (`inputs`, `output.schema`, `searchOptionsOverrides`, `synthesisHistoryLimit`) and the same personalized, streamed `data` — except it additionally returns the UI code bundle to render that data. The synthesis runs against the config attached to each UI.
1246
+ *
1247
+ * Streams as Server-Sent Events so the client can load the (cacheable) code bundle immediately and render synthesis `data` as it arrives. The code bundle is immutable per published version and identical for every app user, so it is served from a CDN by versioned `bundleUrl` and cached once across renders and users. `data` is the per-request, per-user piece and may stream in partials before a final `complete: true` event. `theme` is deployment-level and emitted once in the `manifest`. (`bundleSource` is an inlined fallback used only while bundles are served inline, before CDN delivery.)
1248
+ */
1249
+ post: {
1250
+ parameters: {
1251
+ query?: never;
1252
+ header: {
1253
+ /** @description Bearer token for authentication */
1254
+ authorization: string;
1255
+ };
1256
+ path?: never;
1257
+ cookie?: never;
1258
+ };
1259
+ requestBody: {
1260
+ content: {
1261
+ "application/json": {
1262
+ /**
1263
+ * @description Target platform for the bundles, for the whole request. Defaults to `web`.
1264
+ * @enum {string}
1265
+ */
1266
+ platform?: "web" | "mobile";
1267
+ /** @description UIs to resolve in this request. */
1268
+ items: {
1269
+ /** @description Stable identifier of the UI to load. Configured in the CMS. */
1270
+ keyName: string;
1271
+ /** @description How many recent stored synthesis outputs to expose in the streamed `synthesisHistory` / `synthesisHistoryEntries` fields. Defaults to 0. See `/v1/user/synthesize` for the full semantics. */
956
1272
  synthesisHistoryLimit?: number;
957
1273
  /** @description Per-request overrides for search options. */
958
1274
  searchOptionsOverrides?: {
@@ -1043,6 +1359,350 @@ export interface paths {
1043
1359
  };
1044
1360
  };
1045
1361
  };
1362
+ /** @description Forbidden errors */
1363
+ 403: {
1364
+ headers: {
1365
+ [name: string]: unknown;
1366
+ };
1367
+ content: {
1368
+ "application/json": {
1369
+ /**
1370
+ * @example Forbidden: Subscription required
1371
+ * @enum {string}
1372
+ */
1373
+ error: "Forbidden: Subscription required";
1374
+ };
1375
+ };
1376
+ };
1377
+ /** @description Internal server error */
1378
+ 500: {
1379
+ headers: {
1380
+ [name: string]: unknown;
1381
+ };
1382
+ content: {
1383
+ "application/json": {
1384
+ /** @example false */
1385
+ success?: boolean;
1386
+ /** @example Internal server error: An unknown error occurred */
1387
+ error?: string;
1388
+ };
1389
+ };
1390
+ };
1391
+ };
1392
+ };
1393
+ delete?: never;
1394
+ options?: never;
1395
+ head?: never;
1396
+ patch?: never;
1397
+ trace?: never;
1398
+ };
1399
+ "/v1/user/synthesis-piece": {
1400
+ parameters: {
1401
+ query?: never;
1402
+ header?: never;
1403
+ path?: never;
1404
+ cookie?: never;
1405
+ };
1406
+ get?: never;
1407
+ put?: never;
1408
+ /**
1409
+ * User - Get Synthesis Pieces
1410
+ * @description **POST** `/v1/user/synthesis-piece`
1411
+ *
1412
+ * Fetch one or more published pieces to display, each by its `keyName`. For every requested piece you receive its ready-to-render view (`uiWebCode`), its current content (`fields`), and your workspace's display theme (`theme`, the same for every piece). Render the view and give it the content as its data. Results come back in the same order as the pieces you requested; if a piece can't be found or isn't published, its result contains an `error` message in place of the content.
1413
+ */
1414
+ post: {
1415
+ parameters: {
1416
+ query?: never;
1417
+ header: {
1418
+ /** @description Bearer token for authentication */
1419
+ authorization: string;
1420
+ };
1421
+ path?: never;
1422
+ cookie?: never;
1423
+ };
1424
+ requestBody: {
1425
+ content: {
1426
+ "application/json": {
1427
+ /** @description The pieces to fetch, each by its key. */
1428
+ items: {
1429
+ /** @description The piece's unique key. */
1430
+ keyName: string;
1431
+ }[];
1432
+ };
1433
+ };
1434
+ };
1435
+ responses: {
1436
+ /** @description Successful response */
1437
+ 200: {
1438
+ headers: {
1439
+ [name: string]: unknown;
1440
+ };
1441
+ content: {
1442
+ "application/json": {
1443
+ /** @example true */
1444
+ success: boolean;
1445
+ data: {
1446
+ /** @description Your workspace's brand theme as CSS custom properties (the same for every piece). */
1447
+ theme: {
1448
+ [key: string]: string;
1449
+ };
1450
+ /** @description One result per requested piece, in the same order. */
1451
+ items: ({
1452
+ /** @description Position of this result in the requested list. */
1453
+ index: number;
1454
+ /** @description The piece's ready-to-render view. */
1455
+ uiWebCode?: string;
1456
+ /** @description The piece's current content, given to the view as its data (includes ready-to-play audio for audio pieces). */
1457
+ fields?: {
1458
+ [key: string]: unknown;
1459
+ };
1460
+ /** @description A message explaining why this piece couldn't be returned. */
1461
+ error?: string;
1462
+ } & {
1463
+ [key: string]: unknown;
1464
+ })[];
1465
+ };
1466
+ };
1467
+ };
1468
+ };
1469
+ /** @description Bad request - missing or invalid parameters */
1470
+ 400: {
1471
+ headers: {
1472
+ [name: string]: unknown;
1473
+ };
1474
+ content: {
1475
+ "application/json": {
1476
+ /** @example Bad request */
1477
+ error?: string;
1478
+ };
1479
+ };
1480
+ };
1481
+ /** @description Unauthorized errors */
1482
+ 401: {
1483
+ headers: {
1484
+ [name: string]: unknown;
1485
+ };
1486
+ content: {
1487
+ "application/json": {
1488
+ /**
1489
+ * @example Unauthorized: No authentication token provided
1490
+ * @enum {string}
1491
+ */
1492
+ error?: "Unauthorized: No authentication token provided" | "Unauthorized: Token has expired" | "Unauthorized: Invalid token" | "Unauthorized: Authentication failed";
1493
+ };
1494
+ };
1495
+ };
1496
+ /** @description Internal server error */
1497
+ 500: {
1498
+ headers: {
1499
+ [name: string]: unknown;
1500
+ };
1501
+ content: {
1502
+ "application/json": {
1503
+ /** @example false */
1504
+ success?: boolean;
1505
+ /** @example Internal server error: An unknown error occurred */
1506
+ error?: string;
1507
+ };
1508
+ };
1509
+ };
1510
+ };
1511
+ };
1512
+ delete?: never;
1513
+ options?: never;
1514
+ head?: never;
1515
+ patch?: never;
1516
+ trace?: never;
1517
+ };
1518
+ "/v1/user/synthesis-piece/tts": {
1519
+ parameters: {
1520
+ query?: never;
1521
+ header?: never;
1522
+ path?: never;
1523
+ cookie?: never;
1524
+ };
1525
+ get?: never;
1526
+ put?: never;
1527
+ /**
1528
+ * User - Synthesize Piece Audio
1529
+ * @description **POST** `/v1/user/synthesis-piece/tts`
1530
+ *
1531
+ * Mint a short-lived, self-authenticating HLS URL for a published piece's spoken content. A media player calls this when the listener presses play, then plays the returned `url` (via the SDK's `ctx.playMedia`) to stream the synthesized speech on demand. The request REFERENCES the piece's content — omit `field` for the whole piece's spoken content, pass a top-level `field` to scope to it, and/or `index` for a single turn — and the server resolves the turns from the piece itself (so the URL never carries the text). The URL is gated at issue time (it expires ~30 minutes after minting, and only PUBLISHED pieces), so a fresh URL can't be minted after a piece is unpublished. Note: the URL is an HLS playlist whose audio segments are content-addressed and cached long-lived — a player that already loaded a URL may keep playing that audio from cache after the URL expires or the piece is unpublished.
1532
+ */
1533
+ post: {
1534
+ parameters: {
1535
+ query?: never;
1536
+ header: {
1537
+ /** @description Bearer token for authentication */
1538
+ authorization: string;
1539
+ };
1540
+ path?: never;
1541
+ cookie?: never;
1542
+ };
1543
+ requestBody: {
1544
+ content: {
1545
+ "application/json": {
1546
+ /** @description The piece's unique key. */
1547
+ keyName: string;
1548
+ /** @description Top-level field to voice. Omit for the whole piece's spoken content. */
1549
+ field?: string;
1550
+ /** @description A single turn index within the resolved content. Omit for all turns. */
1551
+ index?: number;
1552
+ };
1553
+ };
1554
+ };
1555
+ responses: {
1556
+ /** @description Successful response */
1557
+ 200: {
1558
+ headers: {
1559
+ [name: string]: unknown;
1560
+ };
1561
+ content: {
1562
+ "application/json": {
1563
+ /** @example true */
1564
+ success: boolean;
1565
+ data: {
1566
+ /** @description A short-lived streaming URL to point an `<audio>` element at. */
1567
+ url?: string;
1568
+ /** @description Set instead of `url` when audio can't be produced (piece not found/published, or the text isn't part of the piece). */
1569
+ error?: string;
1570
+ };
1571
+ };
1572
+ };
1573
+ };
1574
+ /** @description Bad request - missing or invalid parameters */
1575
+ 400: {
1576
+ headers: {
1577
+ [name: string]: unknown;
1578
+ };
1579
+ content: {
1580
+ "application/json": {
1581
+ /** @example Bad request */
1582
+ error?: string;
1583
+ };
1584
+ };
1585
+ };
1586
+ /** @description Unauthorized errors */
1587
+ 401: {
1588
+ headers: {
1589
+ [name: string]: unknown;
1590
+ };
1591
+ content: {
1592
+ "application/json": {
1593
+ /**
1594
+ * @example Unauthorized: No authentication token provided
1595
+ * @enum {string}
1596
+ */
1597
+ error?: "Unauthorized: No authentication token provided" | "Unauthorized: Token has expired" | "Unauthorized: Invalid token" | "Unauthorized: Authentication failed";
1598
+ };
1599
+ };
1600
+ };
1601
+ /** @description Internal server error */
1602
+ 500: {
1603
+ headers: {
1604
+ [name: string]: unknown;
1605
+ };
1606
+ content: {
1607
+ "application/json": {
1608
+ /** @example false */
1609
+ success?: boolean;
1610
+ /** @example Internal server error: An unknown error occurred */
1611
+ error?: string;
1612
+ };
1613
+ };
1614
+ };
1615
+ };
1616
+ };
1617
+ delete?: never;
1618
+ options?: never;
1619
+ head?: never;
1620
+ patch?: never;
1621
+ trace?: never;
1622
+ };
1623
+ "/v1/user/synthesis/tts": {
1624
+ parameters: {
1625
+ query?: never;
1626
+ header?: never;
1627
+ path?: never;
1628
+ cookie?: never;
1629
+ };
1630
+ get?: never;
1631
+ put?: never;
1632
+ /**
1633
+ * User - Synthesize Synthesis Output Audio
1634
+ * @description **POST** `/v1/user/synthesis/tts`
1635
+ *
1636
+ * Mint a short-lived, self-authenticating HLS URL for the authenticated app user's own stored synthesis output — the on-request audio entry point a rendered SynthesisUI's `ctx.tts` calls when the listener presses play. The request REFERENCES the output's spoken content by `synthesisOutputId` (the id returned with the synthesis result) — omit `field` for the whole output's spoken content, pass a top-level `field` to scope to it, and/or `index` for a single turn — and the server reloads the turns from the stored output row (so the URL never carries the text). The URL is gated at mint by OWNERSHIP (only the app user who owns the output can mint it) and expires ~30 minutes after minting. Note: the URL is an HLS playlist whose audio segments are content-addressed and cached long-lived — a player that already loaded a URL may keep playing that audio from cache after the URL expires.
1637
+ */
1638
+ post: {
1639
+ parameters: {
1640
+ query?: never;
1641
+ header: {
1642
+ /** @description Bearer token for authentication */
1643
+ authorization: string;
1644
+ };
1645
+ path?: never;
1646
+ cookie?: never;
1647
+ };
1648
+ requestBody: {
1649
+ content: {
1650
+ "application/json": {
1651
+ /** @description The id of the synthesis output to voice (returned with the synthesis result). */
1652
+ synthesisOutputId: string;
1653
+ /** @description Top-level field to voice. Omit for the whole output's spoken content. */
1654
+ field?: string;
1655
+ /** @description A single turn index within the resolved content. Omit for all turns. */
1656
+ index?: number;
1657
+ };
1658
+ };
1659
+ };
1660
+ responses: {
1661
+ /** @description Successful response */
1662
+ 200: {
1663
+ headers: {
1664
+ [name: string]: unknown;
1665
+ };
1666
+ content: {
1667
+ "application/json": {
1668
+ /** @example true */
1669
+ success: boolean;
1670
+ data: {
1671
+ /** @description A short-lived streaming URL to point an `<audio>` element at. */
1672
+ url?: string;
1673
+ /** @description Set instead of `url` when audio can't be produced (output not found/not owned, or the text isn't part of the output). */
1674
+ error?: string;
1675
+ };
1676
+ };
1677
+ };
1678
+ };
1679
+ /** @description Bad request - missing or invalid parameters */
1680
+ 400: {
1681
+ headers: {
1682
+ [name: string]: unknown;
1683
+ };
1684
+ content: {
1685
+ "application/json": {
1686
+ /** @example Bad request */
1687
+ error?: string;
1688
+ };
1689
+ };
1690
+ };
1691
+ /** @description Unauthorized errors */
1692
+ 401: {
1693
+ headers: {
1694
+ [name: string]: unknown;
1695
+ };
1696
+ content: {
1697
+ "application/json": {
1698
+ /**
1699
+ * @example Unauthorized: No authentication token provided
1700
+ * @enum {string}
1701
+ */
1702
+ error?: "Unauthorized: No authentication token provided" | "Unauthorized: Token has expired" | "Unauthorized: Invalid token" | "Unauthorized: Authentication failed";
1703
+ };
1704
+ };
1705
+ };
1046
1706
  /** @description Internal server error */
1047
1707
  500: {
1048
1708
  headers: {
@@ -1150,10 +1810,25 @@ export interface paths {
1150
1810
  content: {
1151
1811
  "application/json": {
1152
1812
  /**
1153
- * @example Unauthorized: No authentication token provided
1813
+ * @example Unauthorized: No authentication token provided
1814
+ * @enum {string}
1815
+ */
1816
+ error?: "Unauthorized: No authentication token provided" | "Unauthorized: Token has expired" | "Unauthorized: Invalid token" | "Unauthorized: Authentication failed";
1817
+ };
1818
+ };
1819
+ };
1820
+ /** @description Forbidden errors */
1821
+ 403: {
1822
+ headers: {
1823
+ [name: string]: unknown;
1824
+ };
1825
+ content: {
1826
+ "application/json": {
1827
+ /**
1828
+ * @example Forbidden: Subscription required
1154
1829
  * @enum {string}
1155
1830
  */
1156
- error?: "Unauthorized: No authentication token provided" | "Unauthorized: Token has expired" | "Unauthorized: Invalid token" | "Unauthorized: Authentication failed";
1831
+ error: "Forbidden: Subscription required";
1157
1832
  };
1158
1833
  };
1159
1834
  };
@@ -1270,6 +1945,21 @@ export interface paths {
1270
1945
  };
1271
1946
  };
1272
1947
  };
1948
+ /** @description Forbidden errors */
1949
+ 403: {
1950
+ headers: {
1951
+ [name: string]: unknown;
1952
+ };
1953
+ content: {
1954
+ "application/json": {
1955
+ /**
1956
+ * @example Forbidden: Subscription required
1957
+ * @enum {string}
1958
+ */
1959
+ error: "Forbidden: Subscription required";
1960
+ };
1961
+ };
1962
+ };
1273
1963
  /** @description Default Response */
1274
1964
  404: {
1275
1965
  headers: {
@@ -1376,6 +2066,21 @@ export interface paths {
1376
2066
  };
1377
2067
  };
1378
2068
  };
2069
+ /** @description Forbidden errors */
2070
+ 403: {
2071
+ headers: {
2072
+ [name: string]: unknown;
2073
+ };
2074
+ content: {
2075
+ "application/json": {
2076
+ /**
2077
+ * @example Forbidden: Subscription required
2078
+ * @enum {string}
2079
+ */
2080
+ error: "Forbidden: Subscription required";
2081
+ };
2082
+ };
2083
+ };
1379
2084
  /** @description Internal server error */
1380
2085
  500: {
1381
2086
  headers: {
@@ -1482,6 +2187,21 @@ export interface paths {
1482
2187
  };
1483
2188
  };
1484
2189
  };
2190
+ /** @description Forbidden errors */
2191
+ 403: {
2192
+ headers: {
2193
+ [name: string]: unknown;
2194
+ };
2195
+ content: {
2196
+ "application/json": {
2197
+ /**
2198
+ * @example Forbidden: Subscription required
2199
+ * @enum {string}
2200
+ */
2201
+ error: "Forbidden: Subscription required";
2202
+ };
2203
+ };
2204
+ };
1485
2205
  /** @description Not found */
1486
2206
  404: {
1487
2207
  headers: {
@@ -1606,248 +2326,18 @@ export interface paths {
1606
2326
  };
1607
2327
  };
1608
2328
  };
1609
- /** @description Internal server error */
1610
- 500: {
1611
- headers: {
1612
- [name: string]: unknown;
1613
- };
1614
- content: {
1615
- "application/json": {
1616
- /** @example false */
1617
- success?: boolean;
1618
- /** @example Internal server error: An unknown error occurred */
1619
- error?: string;
1620
- };
1621
- };
1622
- };
1623
- };
1624
- };
1625
- delete?: never;
1626
- options?: never;
1627
- head?: never;
1628
- patch?: never;
1629
- trace?: never;
1630
- };
1631
- "/v1/user-submissions": {
1632
- parameters: {
1633
- query?: never;
1634
- header?: never;
1635
- path?: never;
1636
- cookie?: never;
1637
- };
1638
- get?: never;
1639
- put?: never;
1640
- /**
1641
- * User Submissions - Create Submission
1642
- * @description **POST** `/v1/user-submissions` Creates a structured user submission and optional presigned file upload URLs.
1643
- */
1644
- post: {
1645
- parameters: {
1646
- query?: never;
1647
- header: {
1648
- authorization: string;
1649
- };
1650
- path?: never;
1651
- cookie?: never;
1652
- };
1653
- requestBody: {
1654
- content: {
1655
- "application/json": {
1656
- synthesisOutputId: string;
1657
- synthesisOutputContentKey?: string;
1658
- data: {
1659
- [key: string]: unknown;
1660
- };
1661
- files?: {
1662
- field: string;
1663
- contentType: string;
1664
- fileName?: string;
1665
- }[];
1666
- };
1667
- };
1668
- };
1669
- responses: {
1670
- /** @description Default Response */
1671
- 200: {
1672
- headers: {
1673
- [name: string]: unknown;
1674
- };
1675
- content: {
1676
- "application/json": {
1677
- success: boolean;
1678
- data: {
1679
- submission: {
1680
- id: string;
1681
- synthesisConfigId: string;
1682
- synthesisOutputId: string;
1683
- synthesisOutputContentKey: string;
1684
- appUserId: string;
1685
- state: string;
1686
- createdAt: string;
1687
- updatedAt?: string;
1688
- } & {
1689
- [key: string]: unknown;
1690
- };
1691
- uploads: {
1692
- field: string;
1693
- s3Key: string;
1694
- uploadUrl: string;
1695
- }[];
1696
- };
1697
- };
1698
- };
1699
- };
1700
- /** @description Bad request - missing or invalid parameters */
1701
- 400: {
1702
- headers: {
1703
- [name: string]: unknown;
1704
- };
1705
- content: {
1706
- "application/json": {
1707
- /** @example Bad request */
1708
- error?: string;
1709
- };
1710
- };
1711
- };
1712
- /** @description Unauthorized errors */
1713
- 401: {
1714
- headers: {
1715
- [name: string]: unknown;
1716
- };
1717
- content: {
1718
- "application/json": {
1719
- /**
1720
- * @example Unauthorized: No authentication token provided
1721
- * @enum {string}
1722
- */
1723
- error?: "Unauthorized: No authentication token provided" | "Unauthorized: Token has expired" | "Unauthorized: Invalid token" | "Unauthorized: Authentication failed";
1724
- };
1725
- };
1726
- };
1727
- /** @description Not found */
1728
- 404: {
1729
- headers: {
1730
- [name: string]: unknown;
1731
- };
1732
- content: {
1733
- "application/json": {
1734
- /** @example Not found */
1735
- error?: string;
1736
- };
1737
- };
1738
- };
1739
- /** @description Internal server error */
1740
- 500: {
1741
- headers: {
1742
- [name: string]: unknown;
1743
- };
1744
- content: {
1745
- "application/json": {
1746
- /** @example false */
1747
- success?: boolean;
1748
- /** @example Internal server error: An unknown error occurred */
1749
- error?: string;
1750
- };
1751
- };
1752
- };
1753
- };
1754
- };
1755
- delete?: never;
1756
- options?: never;
1757
- head?: never;
1758
- patch?: never;
1759
- trace?: never;
1760
- };
1761
- "/v1/user-submission-schemas/{keyName}/submissions": {
1762
- parameters: {
1763
- query?: never;
1764
- header?: never;
1765
- path?: never;
1766
- cookie?: never;
1767
- };
1768
- /**
1769
- * User Submissions - List Live Submissions
1770
- * @description **GET** `/v1/user-submission-schemas/:keyName/submissions` Lists live submissions for a schema. Customer apps cannot read non-live submissions.
1771
- */
1772
- get: {
1773
- parameters: {
1774
- query?: {
1775
- first?: number;
1776
- after?: string;
1777
- };
1778
- header: {
1779
- authorization: string;
1780
- };
1781
- path: {
1782
- keyName: string;
1783
- };
1784
- cookie?: never;
1785
- };
1786
- requestBody?: never;
1787
- responses: {
1788
- /** @description Default Response */
1789
- 200: {
1790
- headers: {
1791
- [name: string]: unknown;
1792
- };
1793
- content: {
1794
- "application/json": {
1795
- success: boolean;
1796
- data: {
1797
- cursor: null | string;
1798
- items: {
1799
- id: string;
1800
- data: {
1801
- [key: string]: unknown;
1802
- };
1803
- files: {
1804
- field: string;
1805
- contentType: string;
1806
- fileName?: string;
1807
- downloadUrl: string;
1808
- }[];
1809
- createdAt: string;
1810
- }[];
1811
- };
1812
- };
1813
- };
1814
- };
1815
- /** @description Bad request - missing or invalid parameters */
1816
- 400: {
1817
- headers: {
1818
- [name: string]: unknown;
1819
- };
1820
- content: {
1821
- "application/json": {
1822
- /** @example Bad request */
1823
- error?: string;
1824
- };
1825
- };
1826
- };
1827
- /** @description Unauthorized errors */
1828
- 401: {
2329
+ /** @description Forbidden errors */
2330
+ 403: {
1829
2331
  headers: {
1830
2332
  [name: string]: unknown;
1831
2333
  };
1832
2334
  content: {
1833
2335
  "application/json": {
1834
2336
  /**
1835
- * @example Unauthorized: No authentication token provided
2337
+ * @example Forbidden: Subscription required
1836
2338
  * @enum {string}
1837
2339
  */
1838
- error?: "Unauthorized: No authentication token provided" | "Unauthorized: Token has expired" | "Unauthorized: Invalid token" | "Unauthorized: Authentication failed";
1839
- };
1840
- };
1841
- };
1842
- /** @description Not found */
1843
- 404: {
1844
- headers: {
1845
- [name: string]: unknown;
1846
- };
1847
- content: {
1848
- "application/json": {
1849
- /** @example Not found */
1850
- error?: string;
2340
+ error: "Forbidden: Subscription required";
1851
2341
  };
1852
2342
  };
1853
2343
  };
@@ -1867,8 +2357,6 @@ export interface paths {
1867
2357
  };
1868
2358
  };
1869
2359
  };
1870
- put?: never;
1871
- post?: never;
1872
2360
  delete?: never;
1873
2361
  options?: never;
1874
2362
  head?: never;