@stapel/categories-react 0.1.0

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 (205) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/MODULE.md +194 -0
  3. package/README.md +191 -0
  4. package/dist/api/categoriesApi.d.ts +121 -0
  5. package/dist/api/categoriesApi.d.ts.map +1 -0
  6. package/dist/api/categoriesApi.js +48 -0
  7. package/dist/api/categoriesApi.js.map +1 -0
  8. package/dist/api/generated/schema.d.ts +2321 -0
  9. package/dist/api/generated/schema.d.ts.map +1 -0
  10. package/dist/api/generated/schema.js +2 -0
  11. package/dist/api/generated/schema.js.map +1 -0
  12. package/dist/api/types.d.ts +92 -0
  13. package/dist/api/types.d.ts.map +1 -0
  14. package/dist/api/types.js +2 -0
  15. package/dist/api/types.js.map +1 -0
  16. package/dist/catalog/labels.d.ts +103 -0
  17. package/dist/catalog/labels.d.ts.map +1 -0
  18. package/dist/catalog/labels.js +56 -0
  19. package/dist/catalog/labels.js.map +1 -0
  20. package/dist/catalog/pks.d.ts +25 -0
  21. package/dist/catalog/pks.d.ts.map +1 -0
  22. package/dist/catalog/pks.js +38 -0
  23. package/dist/catalog/pks.js.map +1 -0
  24. package/dist/catalog/sync.d.ts +103 -0
  25. package/dist/catalog/sync.d.ts.map +1 -0
  26. package/dist/catalog/sync.js +114 -0
  27. package/dist/catalog/sync.js.map +1 -0
  28. package/dist/catalog/tree.d.ts +119 -0
  29. package/dist/catalog/tree.d.ts.map +1 -0
  30. package/dist/catalog/tree.js +166 -0
  31. package/dist/catalog/tree.js.map +1 -0
  32. package/dist/default/CatalogPage.d.ts +16 -0
  33. package/dist/default/CatalogPage.d.ts.map +1 -0
  34. package/dist/default/CatalogPage.js +13 -0
  35. package/dist/default/CatalogPage.js.map +1 -0
  36. package/dist/default/CategoryBreadcrumbsBar.d.ts +20 -0
  37. package/dist/default/CategoryBreadcrumbsBar.d.ts.map +1 -0
  38. package/dist/default/CategoryBreadcrumbsBar.js +35 -0
  39. package/dist/default/CategoryBreadcrumbsBar.js.map +1 -0
  40. package/dist/default/CategoryCarouselStrip.d.ts +22 -0
  41. package/dist/default/CategoryCarouselStrip.d.ts.map +1 -0
  42. package/dist/default/CategoryCarouselStrip.js +24 -0
  43. package/dist/default/CategoryCarouselStrip.js.map +1 -0
  44. package/dist/default/CategoryFeatureList.d.ts +23 -0
  45. package/dist/default/CategoryFeatureList.d.ts.map +1 -0
  46. package/dist/default/CategoryFeatureList.js +28 -0
  47. package/dist/default/CategoryFeatureList.js.map +1 -0
  48. package/dist/default/CategoryPage.d.ts +43 -0
  49. package/dist/default/CategoryPage.d.ts.map +1 -0
  50. package/dist/default/CategoryPage.js +21 -0
  51. package/dist/default/CategoryPage.js.map +1 -0
  52. package/dist/default/CategoryPickerField.d.ts +26 -0
  53. package/dist/default/CategoryPickerField.d.ts.map +1 -0
  54. package/dist/default/CategoryPickerField.js +40 -0
  55. package/dist/default/CategoryPickerField.js.map +1 -0
  56. package/dist/default/CategoryTreePane.d.ts +28 -0
  57. package/dist/default/CategoryTreePane.d.ts.map +1 -0
  58. package/dist/default/CategoryTreePane.js +25 -0
  59. package/dist/default/CategoryTreePane.js.map +1 -0
  60. package/dist/default/ErrorAlert.d.ts +9 -0
  61. package/dist/default/ErrorAlert.d.ts.map +1 -0
  62. package/dist/default/ErrorAlert.js +27 -0
  63. package/dist/default/ErrorAlert.js.map +1 -0
  64. package/dist/default/index.d.ts +37 -0
  65. package/dist/default/index.d.ts.map +1 -0
  66. package/dist/default/index.js +28 -0
  67. package/dist/default/index.js.map +1 -0
  68. package/dist/default/theme.d.ts +25 -0
  69. package/dist/default/theme.d.ts.map +1 -0
  70. package/dist/default/theme.js +40 -0
  71. package/dist/default/theme.js.map +1 -0
  72. package/dist/default/types.d.ts +12 -0
  73. package/dist/default/types.d.ts.map +1 -0
  74. package/dist/default/types.js +2 -0
  75. package/dist/default/types.js.map +1 -0
  76. package/dist/headless/CategoriesProvider.d.ts +19 -0
  77. package/dist/headless/CategoriesProvider.d.ts.map +1 -0
  78. package/dist/headless/CategoriesProvider.js +15 -0
  79. package/dist/headless/CategoriesProvider.js.map +1 -0
  80. package/dist/headless/CategoryBreadcrumbs.d.ts +40 -0
  81. package/dist/headless/CategoryBreadcrumbs.d.ts.map +1 -0
  82. package/dist/headless/CategoryBreadcrumbs.js +42 -0
  83. package/dist/headless/CategoryBreadcrumbs.js.map +1 -0
  84. package/dist/headless/CategoryCarousel.d.ts +48 -0
  85. package/dist/headless/CategoryCarousel.d.ts.map +1 -0
  86. package/dist/headless/CategoryCarousel.js +34 -0
  87. package/dist/headless/CategoryCarousel.js.map +1 -0
  88. package/dist/headless/CategoryFeatures.d.ts +67 -0
  89. package/dist/headless/CategoryFeatures.d.ts.map +1 -0
  90. package/dist/headless/CategoryFeatures.js +46 -0
  91. package/dist/headless/CategoryFeatures.js.map +1 -0
  92. package/dist/headless/CategoryPicker.d.ts +69 -0
  93. package/dist/headless/CategoryPicker.d.ts.map +1 -0
  94. package/dist/headless/CategoryPicker.js +86 -0
  95. package/dist/headless/CategoryPicker.js.map +1 -0
  96. package/dist/headless/CategoryTree.d.ts +55 -0
  97. package/dist/headless/CategoryTree.d.ts.map +1 -0
  98. package/dist/headless/CategoryTree.js +51 -0
  99. package/dist/headless/CategoryTree.js.map +1 -0
  100. package/dist/i18n/errorsMap.d.ts +22 -0
  101. package/dist/i18n/errorsMap.d.ts.map +1 -0
  102. package/dist/i18n/errorsMap.js +31 -0
  103. package/dist/i18n/errorsMap.js.map +1 -0
  104. package/dist/i18n/es.d.ts +25 -0
  105. package/dist/i18n/es.d.ts.map +1 -0
  106. package/dist/i18n/es.js +74 -0
  107. package/dist/i18n/es.js.map +1 -0
  108. package/dist/i18n/generated/errors.es.gen.d.ts +16 -0
  109. package/dist/i18n/generated/errors.es.gen.d.ts.map +1 -0
  110. package/dist/i18n/generated/errors.es.gen.js +58 -0
  111. package/dist/i18n/generated/errors.es.gen.js.map +1 -0
  112. package/dist/i18n/generated/errors.gen.d.ts +407 -0
  113. package/dist/i18n/generated/errors.gen.d.ts.map +1 -0
  114. package/dist/i18n/generated/errors.gen.js +207 -0
  115. package/dist/i18n/generated/errors.gen.js.map +1 -0
  116. package/dist/i18n/generated/errors.ru.gen.d.ts +16 -0
  117. package/dist/i18n/generated/errors.ru.gen.d.ts.map +1 -0
  118. package/dist/i18n/generated/errors.ru.gen.js +58 -0
  119. package/dist/i18n/generated/errors.ru.gen.js.map +1 -0
  120. package/dist/i18n/keys.d.ts +89 -0
  121. package/dist/i18n/keys.d.ts.map +1 -0
  122. package/dist/i18n/keys.js +134 -0
  123. package/dist/i18n/keys.js.map +1 -0
  124. package/dist/i18n/ru.d.ts +41 -0
  125. package/dist/i18n/ru.d.ts.map +1 -0
  126. package/dist/i18n/ru.js +90 -0
  127. package/dist/i18n/ru.js.map +1 -0
  128. package/dist/index.d.ts +88 -0
  129. package/dist/index.d.ts.map +1 -0
  130. package/dist/index.js +78 -0
  131. package/dist/index.js.map +1 -0
  132. package/dist/model/catalogStore.d.ts +23 -0
  133. package/dist/model/catalogStore.d.ts.map +1 -0
  134. package/dist/model/catalogStore.js +85 -0
  135. package/dist/model/catalogStore.js.map +1 -0
  136. package/dist/model/catalogSync.d.ts +49 -0
  137. package/dist/model/catalogSync.d.ts.map +1 -0
  138. package/dist/model/catalogSync.js +64 -0
  139. package/dist/model/catalogSync.js.map +1 -0
  140. package/dist/model/context.d.ts +11 -0
  141. package/dist/model/context.d.ts.map +1 -0
  142. package/dist/model/context.js +16 -0
  143. package/dist/model/context.js.map +1 -0
  144. package/dist/model/queries.d.ts +124 -0
  145. package/dist/model/queries.d.ts.map +1 -0
  146. package/dist/model/queries.js +147 -0
  147. package/dist/model/queries.js.map +1 -0
  148. package/dist/model/queryKeys.d.ts +30 -0
  149. package/dist/model/queryKeys.d.ts.map +1 -0
  150. package/dist/model/queryKeys.js +16 -0
  151. package/dist/model/queryKeys.js.map +1 -0
  152. package/dist/model/runtime.d.ts +31 -0
  153. package/dist/model/runtime.d.ts.map +1 -0
  154. package/dist/model/runtime.js +6 -0
  155. package/dist/model/runtime.js.map +1 -0
  156. package/dist/nav/manifest.d.ts +31 -0
  157. package/dist/nav/manifest.d.ts.map +1 -0
  158. package/dist/nav/manifest.js +37 -0
  159. package/dist/nav/manifest.js.map +1 -0
  160. package/llms.txt +125 -0
  161. package/manifest.json +918 -0
  162. package/nav-manifest.json +44 -0
  163. package/package.json +119 -0
  164. package/src/analytics/generated/events.json +7 -0
  165. package/src/api/categoriesApi.ts +179 -0
  166. package/src/api/generated/schema.ts +2323 -0
  167. package/src/api/types.ts +99 -0
  168. package/src/catalog/labels.ts +129 -0
  169. package/src/catalog/pks.ts +35 -0
  170. package/src/catalog/sync.ts +169 -0
  171. package/src/catalog/tree.ts +242 -0
  172. package/src/default/CatalogPage.tsx +40 -0
  173. package/src/default/CategoryBreadcrumbsBar.tsx +93 -0
  174. package/src/default/CategoryCarouselStrip.tsx +102 -0
  175. package/src/default/CategoryFeatureList.tsx +125 -0
  176. package/src/default/CategoryPage.tsx +114 -0
  177. package/src/default/CategoryPickerField.tsx +173 -0
  178. package/src/default/CategoryTreePane.tsx +134 -0
  179. package/src/default/ErrorAlert.tsx +46 -0
  180. package/src/default/index.ts +36 -0
  181. package/src/default/theme.tsx +67 -0
  182. package/src/default/types.ts +12 -0
  183. package/src/headless/CategoriesProvider.tsx +20 -0
  184. package/src/headless/CategoryBreadcrumbs.tsx +78 -0
  185. package/src/headless/CategoryCarousel.tsx +80 -0
  186. package/src/headless/CategoryFeatures.tsx +100 -0
  187. package/src/headless/CategoryPicker.tsx +173 -0
  188. package/src/headless/CategoryTree.tsx +115 -0
  189. package/src/i18n/errorsMap.ts +46 -0
  190. package/src/i18n/es.ts +92 -0
  191. package/src/i18n/generated/errors.es.gen.ts +64 -0
  192. package/src/i18n/generated/errors.gen.ts +238 -0
  193. package/src/i18n/generated/errors.json +495 -0
  194. package/src/i18n/generated/errors.ru.gen.ts +64 -0
  195. package/src/i18n/keys.ts +156 -0
  196. package/src/i18n/ru.ts +110 -0
  197. package/src/index.ts +191 -0
  198. package/src/model/catalogStore.ts +102 -0
  199. package/src/model/catalogSync.ts +115 -0
  200. package/src/model/context.tsx +28 -0
  201. package/src/model/queries.ts +226 -0
  202. package/src/model/queryKeys.ts +50 -0
  203. package/src/model/runtime.ts +39 -0
  204. package/src/nav/manifest.ts +66 -0
  205. package/tsconfig.json +26 -0
@@ -0,0 +1,2321 @@
1
+ export interface paths {
2
+ "/categories/api/v1/categories/": {
3
+ parameters: {
4
+ query?: never;
5
+ header?: never;
6
+ path?: never;
7
+ cookie?: never;
8
+ };
9
+ /**
10
+ * @description List categories with revision-based pagination.
11
+ *
12
+ * **Permissions:** `ReadOnlyOrStaff`
13
+ */
14
+ get: operations["categories_api_v1_categories_list"];
15
+ put?: never;
16
+ /**
17
+ * @description ViewSet for Category with revision-based synchronization.
18
+ *
19
+ * **Sync flow:**
20
+ * 1. Initial sync: ``GET /categories/`` — returns all categories with revision info
21
+ * 2. Store ``revisions.global_max`` from the response
22
+ * 3. Subsequent sync: ``GET /categories/?min_revision={stored_max}`` — only changes
23
+ * 4. Handle items with ``deleted=true`` by removing them locally
24
+ *
25
+ * **Permissions:** `ReadOnlyOrStaff`
26
+ */
27
+ post: operations["categories_api_v1_categories_create"];
28
+ delete?: never;
29
+ options?: never;
30
+ head?: never;
31
+ patch?: never;
32
+ trace?: never;
33
+ };
34
+ "/categories/api/v1/categories/{id}/": {
35
+ parameters: {
36
+ query?: never;
37
+ header?: never;
38
+ path?: never;
39
+ cookie?: never;
40
+ };
41
+ /**
42
+ * @description ViewSet for Category with revision-based synchronization.
43
+ *
44
+ * **Sync flow:**
45
+ * 1. Initial sync: ``GET /categories/`` — returns all categories with revision info
46
+ * 2. Store ``revisions.global_max`` from the response
47
+ * 3. Subsequent sync: ``GET /categories/?min_revision={stored_max}`` — only changes
48
+ * 4. Handle items with ``deleted=true`` by removing them locally
49
+ *
50
+ * **Permissions:** `ReadOnlyOrStaff`
51
+ */
52
+ get: operations["categories_api_v1_categories_retrieve"];
53
+ /**
54
+ * @description ViewSet for Category with revision-based synchronization.
55
+ *
56
+ * **Sync flow:**
57
+ * 1. Initial sync: ``GET /categories/`` — returns all categories with revision info
58
+ * 2. Store ``revisions.global_max`` from the response
59
+ * 3. Subsequent sync: ``GET /categories/?min_revision={stored_max}`` — only changes
60
+ * 4. Handle items with ``deleted=true`` by removing them locally
61
+ *
62
+ * **Permissions:** `ReadOnlyOrStaff`
63
+ */
64
+ put: operations["categories_api_v1_categories_update"];
65
+ post?: never;
66
+ /**
67
+ * @description ViewSet for Category with revision-based synchronization.
68
+ *
69
+ * **Sync flow:**
70
+ * 1. Initial sync: ``GET /categories/`` — returns all categories with revision info
71
+ * 2. Store ``revisions.global_max`` from the response
72
+ * 3. Subsequent sync: ``GET /categories/?min_revision={stored_max}`` — only changes
73
+ * 4. Handle items with ``deleted=true`` by removing them locally
74
+ *
75
+ * **Permissions:** `ReadOnlyOrStaff`
76
+ */
77
+ delete: operations["categories_api_v1_categories_destroy"];
78
+ options?: never;
79
+ head?: never;
80
+ /**
81
+ * @description ViewSet for Category with revision-based synchronization.
82
+ *
83
+ * **Sync flow:**
84
+ * 1. Initial sync: ``GET /categories/`` — returns all categories with revision info
85
+ * 2. Store ``revisions.global_max`` from the response
86
+ * 3. Subsequent sync: ``GET /categories/?min_revision={stored_max}`` — only changes
87
+ * 4. Handle items with ``deleted=true`` by removing them locally
88
+ *
89
+ * **Permissions:** `ReadOnlyOrStaff`
90
+ */
91
+ patch: operations["categories_api_v1_categories_partial_update"];
92
+ trace?: never;
93
+ };
94
+ "/categories/api/v1/categories/{id}/children/": {
95
+ parameters: {
96
+ query?: never;
97
+ header?: never;
98
+ path?: never;
99
+ cookie?: never;
100
+ };
101
+ /**
102
+ * @description Get all non-deleted children of this category, sorted by tn_priority descending.
103
+ *
104
+ * **Permissions:** `ReadOnlyOrStaff`
105
+ */
106
+ get: operations["categories_api_v1_categories_children_list"];
107
+ put?: never;
108
+ post?: never;
109
+ delete?: never;
110
+ options?: never;
111
+ head?: never;
112
+ patch?: never;
113
+ trace?: never;
114
+ };
115
+ "/categories/api/v1/categories/{id}/deleted-children/": {
116
+ parameters: {
117
+ query?: never;
118
+ header?: never;
119
+ path?: never;
120
+ cookie?: never;
121
+ };
122
+ /**
123
+ * @description Get all deleted children of this category.
124
+ *
125
+ * **Permissions:** `ReadOnlyOrStaff`
126
+ */
127
+ get: operations["categories_api_v1_categories_deleted_children_list"];
128
+ put?: never;
129
+ post?: never;
130
+ delete?: never;
131
+ options?: never;
132
+ head?: never;
133
+ patch?: never;
134
+ trace?: never;
135
+ };
136
+ "/categories/api/v1/categories/{id}/feature-editor/": {
137
+ parameters: {
138
+ query?: never;
139
+ header?: never;
140
+ path?: never;
141
+ cookie?: never;
142
+ };
143
+ /**
144
+ * @description Get feature editor state for admin UI.
145
+ *
146
+ * **Permissions:** `IsStaffUser`
147
+ */
148
+ get: operations["categories_api_v1_categories_feature_editor_retrieve"];
149
+ put?: never;
150
+ post?: never;
151
+ delete?: never;
152
+ options?: never;
153
+ head?: never;
154
+ patch?: never;
155
+ trace?: never;
156
+ };
157
+ "/categories/api/v1/categories/{id}/feature-editor/apply/": {
158
+ parameters: {
159
+ query?: never;
160
+ header?: never;
161
+ path?: never;
162
+ cookie?: never;
163
+ };
164
+ get?: never;
165
+ put?: never;
166
+ /**
167
+ * @description Apply feature editor actions to category and descendants.
168
+ *
169
+ * **Permissions:** `IsStaffUser`
170
+ */
171
+ post: operations["categories_api_v1_categories_feature_editor_apply_create"];
172
+ delete?: never;
173
+ options?: never;
174
+ head?: never;
175
+ patch?: never;
176
+ trace?: never;
177
+ };
178
+ "/categories/api/v1/categories/{id}/feature-editor/draft/": {
179
+ parameters: {
180
+ query?: never;
181
+ header?: never;
182
+ path?: never;
183
+ cookie?: never;
184
+ };
185
+ get?: never;
186
+ put?: never;
187
+ /**
188
+ * @description Save feature editor draft without applying changes.
189
+ *
190
+ * **Permissions:** `IsStaffUser`
191
+ */
192
+ post: operations["categories_api_v1_categories_feature_editor_draft_create"];
193
+ delete?: never;
194
+ options?: never;
195
+ head?: never;
196
+ patch?: never;
197
+ trace?: never;
198
+ };
199
+ "/categories/api/v1/categories/{id}/features/": {
200
+ parameters: {
201
+ query?: never;
202
+ header?: never;
203
+ path?: never;
204
+ cookie?: never;
205
+ };
206
+ /**
207
+ * @description Get all features for this category, sorted by order. Includes inherited features.
208
+ *
209
+ * **Permissions:** `ReadOnlyOrStaff`
210
+ */
211
+ get: operations["categories_api_v1_categories_features_list"];
212
+ put?: never;
213
+ post?: never;
214
+ delete?: never;
215
+ options?: never;
216
+ head?: never;
217
+ patch?: never;
218
+ trace?: never;
219
+ };
220
+ "/categories/api/v1/categories/{id}/undelete/": {
221
+ parameters: {
222
+ query?: never;
223
+ header?: never;
224
+ path?: never;
225
+ cookie?: never;
226
+ };
227
+ get?: never;
228
+ put?: never;
229
+ /**
230
+ * @description Restore deleted category and all its descendants.
231
+ *
232
+ * **Permissions:** `IsStaffUser`
233
+ */
234
+ post: operations["categories_api_v1_categories_undelete_create"];
235
+ delete?: never;
236
+ options?: never;
237
+ head?: never;
238
+ patch?: never;
239
+ trace?: never;
240
+ };
241
+ "/categories/api/v1/categories/{id}/validate-configs/": {
242
+ parameters: {
243
+ query?: never;
244
+ header?: never;
245
+ path?: never;
246
+ cookie?: never;
247
+ };
248
+ /**
249
+ * @description Validate all feature configs in this category.
250
+ *
251
+ * **Permissions:** `ReadOnlyOrStaff`
252
+ */
253
+ get: operations["categories_api_v1_categories_validate_configs_retrieve"];
254
+ put?: never;
255
+ post?: never;
256
+ delete?: never;
257
+ options?: never;
258
+ head?: never;
259
+ patch?: never;
260
+ trace?: never;
261
+ };
262
+ "/categories/api/v1/categories/{id}/validate-dto/": {
263
+ parameters: {
264
+ query?: never;
265
+ header?: never;
266
+ path?: never;
267
+ cookie?: never;
268
+ };
269
+ get?: never;
270
+ put?: never;
271
+ /**
272
+ * @description Validate a features DTO against this category's schema.
273
+ *
274
+ * **Permissions:** `ReadOnlyOrStaff`
275
+ */
276
+ post: operations["categories_api_v1_categories_validate_dto_create"];
277
+ delete?: never;
278
+ options?: never;
279
+ head?: never;
280
+ patch?: never;
281
+ trace?: never;
282
+ };
283
+ "/categories/api/v1/categories/bulk-commands/": {
284
+ parameters: {
285
+ query?: never;
286
+ header?: never;
287
+ path?: never;
288
+ cookie?: never;
289
+ };
290
+ get?: never;
291
+ put?: never;
292
+ /**
293
+ * @description Execute bulk commands on categories (add/edit/delete/reorder).
294
+ *
295
+ * **Permissions:** `IsStaffUser`
296
+ */
297
+ post: operations["categories_api_v1_categories_bulk_commands_create"];
298
+ delete?: never;
299
+ options?: never;
300
+ head?: never;
301
+ patch?: never;
302
+ trace?: never;
303
+ };
304
+ "/categories/api/v1/categories/bulk_add/": {
305
+ parameters: {
306
+ query?: never;
307
+ header?: never;
308
+ path?: never;
309
+ cookie?: never;
310
+ };
311
+ get?: never;
312
+ put?: never;
313
+ /**
314
+ * @description Bulk create or update categories. Provide an array of category objects with IDs.
315
+ *
316
+ * **Permissions:** `IsStaffUser`
317
+ */
318
+ post: operations["categories_api_v1_categories_bulk_add_create"];
319
+ delete?: never;
320
+ options?: never;
321
+ head?: never;
322
+ patch?: never;
323
+ trace?: never;
324
+ };
325
+ "/categories/api/v1/categories/carousel/": {
326
+ parameters: {
327
+ query?: never;
328
+ header?: never;
329
+ path?: never;
330
+ cookie?: never;
331
+ };
332
+ /**
333
+ * @description Get categories for carousel display (active and carousel_enabled).
334
+ *
335
+ * **Permissions:** `ReadOnlyOrStaff`
336
+ */
337
+ get: operations["categories_api_v1_categories_carousel_list"];
338
+ put?: never;
339
+ post?: never;
340
+ delete?: never;
341
+ options?: never;
342
+ head?: never;
343
+ patch?: never;
344
+ trace?: never;
345
+ };
346
+ "/categories/api/v1/categories/data.json/": {
347
+ parameters: {
348
+ query?: never;
349
+ header?: never;
350
+ path?: never;
351
+ cookie?: never;
352
+ };
353
+ /**
354
+ * @description Get all data as a cacheable JSON array.
355
+ *
356
+ * The `revision` parameter is required for cache busting - clients should use the current
357
+ * max revision from `/revision` endpoint. Response includes Cache-Control header for 30 days.
358
+ *
359
+ * **Usage:**
360
+ * 1. Call `/revision` to get current max revision
361
+ * 2. Call `/data.json?revision={max_revision}` to get all data
362
+ * 3. Cache the response locally - it won't change until revision changes
363
+ *
364
+ *
365
+ * **Permissions:** `ReadOnlyOrStaff`
366
+ */
367
+ get: operations["categories_api_v1_categories_data.json_retrieve"];
368
+ put?: never;
369
+ post?: never;
370
+ delete?: never;
371
+ options?: never;
372
+ head?: never;
373
+ patch?: never;
374
+ trace?: never;
375
+ };
376
+ "/categories/api/v1/categories/revision/": {
377
+ parameters: {
378
+ query?: never;
379
+ header?: never;
380
+ path?: never;
381
+ cookie?: never;
382
+ };
383
+ /**
384
+ * @description Get the current maximum revision number for this resource.
385
+ *
386
+ * **Permissions:** `ReadOnlyOrStaff`
387
+ */
388
+ get: operations["categories_api_v1_categories_revision_retrieve"];
389
+ put?: never;
390
+ post?: never;
391
+ delete?: never;
392
+ options?: never;
393
+ head?: never;
394
+ patch?: never;
395
+ trace?: never;
396
+ };
397
+ "/categories/api/v1/categories/translation-keys/": {
398
+ parameters: {
399
+ query?: never;
400
+ header?: never;
401
+ path?: never;
402
+ cookie?: never;
403
+ };
404
+ /**
405
+ * Collect all translation keys
406
+ * @description Collect translation keys from categories, features and feature config options.
407
+ *
408
+ * **Permissions:** `IsServiceRequest`
409
+ */
410
+ get: operations["collect_translation_keys"];
411
+ put?: never;
412
+ post?: never;
413
+ delete?: never;
414
+ options?: never;
415
+ head?: never;
416
+ patch?: never;
417
+ trace?: never;
418
+ };
419
+ "/categories/api/v1/features/": {
420
+ parameters: {
421
+ query?: never;
422
+ header?: never;
423
+ path?: never;
424
+ cookie?: never;
425
+ };
426
+ /**
427
+ * @description List features with revision-based pagination.
428
+ *
429
+ * **Permissions:** `ReadOnlyOrStaff`
430
+ */
431
+ get: operations["categories_api_v1_features_list"];
432
+ put?: never;
433
+ /**
434
+ * @description Create a new feature with polymorphic config.
435
+ *
436
+ * **Permissions:** `ReadOnlyOrStaff`
437
+ */
438
+ post: operations["categories_api_v1_features_create"];
439
+ delete?: never;
440
+ options?: never;
441
+ head?: never;
442
+ patch?: never;
443
+ trace?: never;
444
+ };
445
+ "/categories/api/v1/features/{id}/": {
446
+ parameters: {
447
+ query?: never;
448
+ header?: never;
449
+ path?: never;
450
+ cookie?: never;
451
+ };
452
+ /**
453
+ * @description Get feature details with tree structure info.
454
+ *
455
+ * **Permissions:** `ReadOnlyOrStaff`
456
+ */
457
+ get: operations["categories_api_v1_features_retrieve"];
458
+ /**
459
+ * @description Update an existing feature with polymorphic config.
460
+ *
461
+ * **Permissions:** `ReadOnlyOrStaff`
462
+ */
463
+ put: operations["categories_api_v1_features_update"];
464
+ post?: never;
465
+ /**
466
+ * @description Mixin for ViewSets working with RevisionMixin models.
467
+ *
468
+ * Provides:
469
+ * - Automatic revision-based filtering
470
+ * - OpenAPI documentation for revision query parameters
471
+ * - Optional filtering of soft-deleted items
472
+ * - /revision endpoint to get current max revision
473
+ *
474
+ * Usage:
475
+ * class MyModelViewSet(RevisionViewSetMixin, viewsets.ModelViewSet):
476
+ * queryset = MyModel.objects.all()
477
+ * serializer_class = MyModelSerializer
478
+ * pagination_class = RevisionPagination
479
+ *
480
+ * Query parameters:
481
+ * - min_revision: Return objects with revision > min_revision (default: 0)
482
+ * - max_revision: Return objects with revision <= max_revision (default: None)
483
+ * - include_deleted: Include soft-deleted items (default: true)
484
+ *
485
+ * **Permissions:** `ReadOnlyOrStaff`
486
+ */
487
+ delete: operations["categories_api_v1_features_destroy"];
488
+ options?: never;
489
+ head?: never;
490
+ /**
491
+ * @description Partially update a feature.
492
+ *
493
+ * **Permissions:** `ReadOnlyOrStaff`
494
+ */
495
+ patch: operations["categories_api_v1_features_partial_update"];
496
+ trace?: never;
497
+ };
498
+ "/categories/api/v1/features/{id}/convert-type/": {
499
+ parameters: {
500
+ query?: never;
501
+ header?: never;
502
+ path?: never;
503
+ cookie?: never;
504
+ };
505
+ get?: never;
506
+ put?: never;
507
+ /**
508
+ * @description Convert feature type between select and string, optionally propagating to descendants.
509
+ *
510
+ * **Permissions:** `IsStaffUser`
511
+ */
512
+ post: operations["categories_api_v1_features_convert_type_create"];
513
+ delete?: never;
514
+ options?: never;
515
+ head?: never;
516
+ patch?: never;
517
+ trace?: never;
518
+ };
519
+ "/categories/api/v1/features/bulk_add/": {
520
+ parameters: {
521
+ query?: never;
522
+ header?: never;
523
+ path?: never;
524
+ cookie?: never;
525
+ };
526
+ get?: never;
527
+ put?: never;
528
+ /**
529
+ * @description Bulk create or update features. Provide an array of feature objects with IDs.
530
+ *
531
+ * **Permissions:** `IsStaffUser`
532
+ */
533
+ post: operations["categories_api_v1_features_bulk_add_create"];
534
+ delete?: never;
535
+ options?: never;
536
+ head?: never;
537
+ patch?: never;
538
+ trace?: never;
539
+ };
540
+ "/categories/api/v1/features/data.json/": {
541
+ parameters: {
542
+ query?: never;
543
+ header?: never;
544
+ path?: never;
545
+ cookie?: never;
546
+ };
547
+ /**
548
+ * @description Get all data as a cacheable JSON array.
549
+ *
550
+ * The `revision` parameter is required for cache busting - clients should use the current
551
+ * max revision from `/revision` endpoint. Response includes Cache-Control header for 30 days.
552
+ *
553
+ * **Usage:**
554
+ * 1. Call `/revision` to get current max revision
555
+ * 2. Call `/data.json?revision={max_revision}` to get all data
556
+ * 3. Cache the response locally - it won't change until revision changes
557
+ *
558
+ *
559
+ * **Permissions:** `ReadOnlyOrStaff`
560
+ */
561
+ get: operations["categories_api_v1_features_data.json_retrieve"];
562
+ put?: never;
563
+ post?: never;
564
+ delete?: never;
565
+ options?: never;
566
+ head?: never;
567
+ patch?: never;
568
+ trace?: never;
569
+ };
570
+ "/categories/api/v1/features/revision/": {
571
+ parameters: {
572
+ query?: never;
573
+ header?: never;
574
+ path?: never;
575
+ cookie?: never;
576
+ };
577
+ /**
578
+ * @description Get the current maximum revision number for this resource.
579
+ *
580
+ * **Permissions:** `ReadOnlyOrStaff`
581
+ */
582
+ get: operations["categories_api_v1_features_revision_retrieve"];
583
+ put?: never;
584
+ post?: never;
585
+ delete?: never;
586
+ options?: never;
587
+ head?: never;
588
+ patch?: never;
589
+ trace?: never;
590
+ };
591
+ }
592
+ export type webhooks = Record<string, never>;
593
+ export interface components {
594
+ schemas: {
595
+ /**
596
+ * @description * `keep` - keep
597
+ * * `add` - add
598
+ * * `edit` - edit
599
+ * * `inherit` - inherit
600
+ * * `remove` - remove
601
+ * * `create` - create
602
+ * * `replace` - replace
603
+ * @enum {string}
604
+ */
605
+ ActionEnum: "keep" | "add" | "edit" | "inherit" | "remove" | "create" | "replace";
606
+ /**
607
+ * @description * `keep` - keep
608
+ * * `add` - add
609
+ * * `edit` - edit
610
+ * * `inherit` - inherit
611
+ * * `remove` - remove
612
+ * * `create` - create
613
+ * * `replace` - replace
614
+ * @enum {string}
615
+ */
616
+ AvailableActionsEnum: "keep" | "add" | "edit" | "inherit" | "remove" | "create" | "replace";
617
+ /** @description Serializer for boolean feature configuration. */
618
+ BoolConfig: {
619
+ /**
620
+ * @description discriminator enum property added by openapi-typescript
621
+ * @enum {string}
622
+ */
623
+ type: "BoolConfig";
624
+ trueLabel?: string | null;
625
+ falseLabel?: string | null;
626
+ };
627
+ /** @description Serializer for boolean feature DTO. */
628
+ BoolDto: {
629
+ /**
630
+ * @description discriminator enum property added by openapi-typescript
631
+ * @enum {string}
632
+ */
633
+ type: "BoolDto";
634
+ value?: boolean;
635
+ };
636
+ /** @description Response for bulk create/update operations. */
637
+ BulkUpdateResponse: {
638
+ /** @description List of created/updated object IDs */
639
+ updated_ids: string[];
640
+ };
641
+ /** @description Category serializer with feature references and revision tracking. */
642
+ Category: {
643
+ readonly id: number;
644
+ name: string;
645
+ slug: string;
646
+ /** @description CDN catalog icon reference (opaque string, e.g. catalog/asset-name) */
647
+ catalog_icon?: string;
648
+ /** @description CDN carousel icon reference (opaque string, e.g. carousel/asset-name) */
649
+ carousel_icon?: string;
650
+ /** @description Whether this category appears in the carousel */
651
+ carousel_enabled?: boolean;
652
+ /** @description Whether this category is active */
653
+ active?: boolean;
654
+ readonly features: number[];
655
+ /** @description If True, category name is a translation key */
656
+ translatable?: boolean;
657
+ /** Parent */
658
+ tn_parent?: number | null;
659
+ /**
660
+ * Priority
661
+ * Format: int64
662
+ */
663
+ tn_priority?: number;
664
+ /** Ancestors pks */
665
+ readonly tn_ancestors_pks: string;
666
+ /** Children pks */
667
+ readonly tn_children_pks: string;
668
+ readonly revision: number;
669
+ deleted?: boolean;
670
+ };
671
+ /** @description Serializer for bulk add/update operations — id is required. */
672
+ CategoryBulk: {
673
+ id: number;
674
+ name: string;
675
+ slug: string;
676
+ /** @description CDN catalog icon reference (opaque string, e.g. catalog/asset-name) */
677
+ catalog_icon?: string;
678
+ /** @description CDN carousel icon reference (opaque string, e.g. carousel/asset-name) */
679
+ carousel_icon?: string;
680
+ readonly features: number[];
681
+ /** Parent */
682
+ tn_parent?: number | null;
683
+ /**
684
+ * Priority
685
+ * Format: int64
686
+ */
687
+ tn_priority?: number;
688
+ };
689
+ /** @description Serializer for bulk category commands. */
690
+ CategoryBulkCommand: {
691
+ categories: components["schemas"]["CategoryCommand"][];
692
+ };
693
+ /** @description Serializer for category command pattern. */
694
+ CategoryCommand: {
695
+ /** @description Category ID (null for add command) */
696
+ id?: number | null;
697
+ /**
698
+ * @description Command to execute
699
+ *
700
+ * * `keep` - keep
701
+ * * `add` - add
702
+ * * `edit` - edit
703
+ * * `delete` - delete
704
+ * * `reorder` - reorder
705
+ */
706
+ command: components["schemas"]["CommandEnum"];
707
+ /** @description Category name (for add/edit) */
708
+ name?: string;
709
+ /** @description Category slug (for add/edit) */
710
+ slug?: string;
711
+ /**
712
+ * @description If True, name is translation key
713
+ * @default true
714
+ */
715
+ translatable: boolean;
716
+ /** @description Parent category ID (for add) */
717
+ parent_id?: number | null;
718
+ /** @description Tree node priority (for add/reorder) */
719
+ priority?: number;
720
+ };
721
+ /**
722
+ * @description * `keep` - keep
723
+ * * `add` - add
724
+ * * `edit` - edit
725
+ * * `delete` - delete
726
+ * * `reorder` - reorder
727
+ * @enum {string}
728
+ */
729
+ CommandEnum: "keep" | "add" | "edit" | "delete" | "reorder";
730
+ /** @description Serializer for convertible-unit feature configuration. */
731
+ ConvertibleUnitConfig: {
732
+ /**
733
+ * @description discriminator enum property added by openapi-typescript
734
+ * @enum {string}
735
+ */
736
+ type: "null";
737
+ unitType?: string | null;
738
+ unit_m?: string | null;
739
+ unit_i?: string | null;
740
+ precision?: number;
741
+ prefix?: string | null;
742
+ /** Format: double */
743
+ min?: number | null;
744
+ /** Format: double */
745
+ max?: number | null;
746
+ };
747
+ /** @description Serializer for convertible-unit feature DTO. */
748
+ ConvertibleUnitDto: {
749
+ /**
750
+ * @description discriminator enum property added by openapi-typescript
751
+ * @enum {string}
752
+ */
753
+ type: "null";
754
+ /** Format: double */
755
+ value?: number | null;
756
+ unit?: string | null;
757
+ };
758
+ /** @description Serializer for date feature configuration. */
759
+ DateConfig: {
760
+ /**
761
+ * @description discriminator enum property added by openapi-typescript
762
+ * @enum {string}
763
+ */
764
+ type: "DateConfig";
765
+ precision?: components["schemas"]["PrecisionEnum"];
766
+ minDate?: number | null;
767
+ maxDate?: number | null;
768
+ allowFuture?: boolean;
769
+ allowPast?: boolean;
770
+ default?: number | null;
771
+ options?: number[];
772
+ lockInput?: boolean;
773
+ placeholder?: string | null;
774
+ };
775
+ /** @description Serializer for date feature DTO. */
776
+ DateDto: {
777
+ /**
778
+ * @description discriminator enum property added by openapi-typescript
779
+ * @enum {string}
780
+ */
781
+ type: "DateDto";
782
+ value?: number | null;
783
+ };
784
+ /**
785
+ * @description * `below_minimum` - below_minimum
786
+ * * `above_maximum` - above_maximum
787
+ * * `not_in_options` - not_in_options
788
+ * * `invalid_type` - invalid_type
789
+ * * `invalid_format` - invalid_format
790
+ * * `mandatory_missing` - mandatory_missing
791
+ * * `duplicate_slug` - duplicate_slug
792
+ * * `unknown_feature_type` - unknown_feature_type
793
+ * * `not_allowed` - not_allowed
794
+ * * `unknown_feature` - unknown_feature
795
+ * * `description_too_short` - description_too_short
796
+ * * `description_too_long` - description_too_long
797
+ * * `invalid_config` - invalid_config
798
+ * * `min_greater_than_max` - min_greater_than_max
799
+ * * `empty_options` - empty_options
800
+ * @enum {string}
801
+ */
802
+ ErrorEnum: "below_minimum" | "above_maximum" | "not_in_options" | "invalid_type" | "invalid_format" | "mandatory_missing" | "duplicate_slug" | "unknown_feature_type" | "not_allowed" | "unknown_feature" | "description_too_short" | "description_too_long" | "invalid_config" | "min_greater_than_max" | "empty_options";
803
+ /** @description Feature serializer with polymorphic config support. */
804
+ Feature: {
805
+ readonly id: number;
806
+ name: string;
807
+ slug?: string;
808
+ icon?: string;
809
+ comment?: string;
810
+ readonly config: Omit<components["schemas"]["FeatureConfig"], "type">;
811
+ mandatory?: boolean;
812
+ show_as_badge?: boolean;
813
+ show_at_title?: boolean;
814
+ /**
815
+ * @description What to translate: 'all' = title + options, 'title' = title only, 'none' = nothing
816
+ *
817
+ * * `all` - All (title + options)
818
+ * * `title` - Title only
819
+ * * `none` - None
820
+ */
821
+ translate?: components["schemas"]["Translate2c2Enum"];
822
+ /** Parent */
823
+ tn_parent?: number | null;
824
+ /**
825
+ * Priority
826
+ * Format: int64
827
+ */
828
+ tn_priority?: number;
829
+ /** Ancestors pks */
830
+ readonly tn_ancestors_pks: string;
831
+ /** Children pks */
832
+ readonly tn_children_pks: string;
833
+ /** Descendants pks */
834
+ readonly tn_descendants_pks: string;
835
+ /** Siblings pks */
836
+ readonly tn_siblings_pks: string;
837
+ };
838
+ /** @description Serializer for bulk add/update operations — id is required. */
839
+ FeatureBulk: {
840
+ id: number;
841
+ config?: components["schemas"]["FeatureConfig"];
842
+ readonly revision: number;
843
+ deleted?: boolean;
844
+ /** Ancestors pks */
845
+ readonly tn_ancestors_pks: string;
846
+ /** Ancestors count */
847
+ readonly tn_ancestors_count: number;
848
+ /** Children pks */
849
+ readonly tn_children_pks: string;
850
+ /** Children count */
851
+ readonly tn_children_count: number;
852
+ /** Depth */
853
+ readonly tn_depth: number;
854
+ /** Descendants pks */
855
+ readonly tn_descendants_pks: string;
856
+ /** Descendants count */
857
+ readonly tn_descendants_count: number;
858
+ /** Index */
859
+ readonly tn_index: number;
860
+ /** Level */
861
+ readonly tn_level: number;
862
+ /**
863
+ * Priority
864
+ * Format: int64
865
+ */
866
+ tn_priority?: number;
867
+ /** Order */
868
+ readonly tn_order: number;
869
+ /** Siblings pks */
870
+ readonly tn_siblings_pks: string;
871
+ /** Siblings count */
872
+ readonly tn_siblings_count: number;
873
+ name: string;
874
+ slug?: string;
875
+ icon?: string;
876
+ comment?: string;
877
+ mandatory?: boolean;
878
+ show_as_badge?: boolean;
879
+ show_at_title?: boolean;
880
+ /**
881
+ * @description What to translate: 'all' = title + options, 'title' = title only, 'none' = nothing
882
+ *
883
+ * * `all` - All (title + options)
884
+ * * `title` - Title only
885
+ * * `none` - None
886
+ */
887
+ translate?: components["schemas"]["Translate2c2Enum"];
888
+ /** @description Test/scratch data — excluded from export_catalog fixtures. */
889
+ is_test?: boolean;
890
+ /** Parent */
891
+ tn_parent?: number | null;
892
+ };
893
+ /** @description Compact feature serializer for list endpoints and embedded feature data. */
894
+ FeatureCompact: {
895
+ readonly id: number;
896
+ /** Parent */
897
+ tn_parent?: number | null;
898
+ name: string;
899
+ slug?: string;
900
+ icon?: string;
901
+ comment?: string;
902
+ readonly config: Omit<components["schemas"]["FeatureConfig"], "type">;
903
+ mandatory?: boolean;
904
+ show_as_badge?: boolean;
905
+ show_at_title?: boolean;
906
+ /**
907
+ * @description What to translate: 'all' = title + options, 'title' = title only, 'none' = nothing
908
+ *
909
+ * * `all` - All (title + options)
910
+ * * `title` - Title only
911
+ * * `none` - None
912
+ */
913
+ translate?: components["schemas"]["Translate2c2Enum"];
914
+ };
915
+ FeatureConfig: components["schemas"]["IntConfig"] | components["schemas"]["FloatConfig"] | components["schemas"]["StringConfig"] | components["schemas"]["BoolConfig"] | components["schemas"]["HexColorConfig"] | components["schemas"]["SelectConfig"] | components["schemas"]["DateConfig"] | components["schemas"]["HeaderConfig"] | components["schemas"]["HierarchicalSelectConfig"] | components["schemas"]["ConvertibleUnitConfig"];
916
+ FeatureConvertType: {
917
+ /** @description New config after conversion */
918
+ config: Omit<components["schemas"]["FeatureConfig"], "type">;
919
+ /**
920
+ * @description Whether to propagate to all descendants
921
+ * @default false
922
+ */
923
+ propagate: boolean;
924
+ };
925
+ /** @description Serializer for creating/updating features with polymorphic config. */
926
+ FeatureCreateUpdate: {
927
+ readonly id: number;
928
+ config?: components["schemas"]["FeatureConfig"];
929
+ readonly revision: number;
930
+ deleted?: boolean;
931
+ /** Ancestors pks */
932
+ readonly tn_ancestors_pks: string;
933
+ /** Ancestors count */
934
+ readonly tn_ancestors_count: number;
935
+ /** Children pks */
936
+ readonly tn_children_pks: string;
937
+ /** Children count */
938
+ readonly tn_children_count: number;
939
+ /** Depth */
940
+ readonly tn_depth: number;
941
+ /** Descendants pks */
942
+ readonly tn_descendants_pks: string;
943
+ /** Descendants count */
944
+ readonly tn_descendants_count: number;
945
+ /** Index */
946
+ readonly tn_index: number;
947
+ /** Level */
948
+ readonly tn_level: number;
949
+ /**
950
+ * Priority
951
+ * Format: int64
952
+ */
953
+ tn_priority?: number;
954
+ /** Order */
955
+ readonly tn_order: number;
956
+ /** Siblings pks */
957
+ readonly tn_siblings_pks: string;
958
+ /** Siblings count */
959
+ readonly tn_siblings_count: number;
960
+ name: string;
961
+ slug?: string;
962
+ icon?: string;
963
+ comment?: string;
964
+ mandatory?: boolean;
965
+ show_as_badge?: boolean;
966
+ show_at_title?: boolean;
967
+ /**
968
+ * @description What to translate: 'all' = title + options, 'title' = title only, 'none' = nothing
969
+ *
970
+ * * `all` - All (title + options)
971
+ * * `title` - Title only
972
+ * * `none` - None
973
+ */
974
+ translate?: components["schemas"]["Translate2c2Enum"];
975
+ /** @description Test/scratch data — excluded from export_catalog fixtures. */
976
+ is_test?: boolean;
977
+ /** Parent */
978
+ tn_parent?: number | null;
979
+ };
980
+ FeatureDto: components["schemas"]["IntDto"] | components["schemas"]["FloatDto"] | components["schemas"]["StringDto"] | components["schemas"]["BoolDto"] | components["schemas"]["HexColorDto"] | components["schemas"]["SelectDto"] | components["schemas"]["DateDto"] | components["schemas"]["HeaderDto"] | components["schemas"]["HierarchicalSelectDto"] | components["schemas"]["ConvertibleUnitDto"];
981
+ /** @description Request payload for applying feature editor changes. */
982
+ FeatureEditorApply: {
983
+ features: components["schemas"]["FeatureEditorItem"][];
984
+ draft?: string | null;
985
+ base_revision: number;
986
+ };
987
+ /** @description Draft serializer for feature editor. */
988
+ FeatureEditorDraft: {
989
+ /** @default */
990
+ draft: string;
991
+ };
992
+ /** @description Feature editor draft state. */
993
+ FeatureEditorDraftResponse: {
994
+ /**
995
+ * @description JSON-encoded draft string, null if no draft saved
996
+ * @example {
997
+ * "features": []
998
+ * }
999
+ */
1000
+ draft: string | null;
1001
+ };
1002
+ /**
1003
+ * @description Writable feature payload for the category feature editor.
1004
+ *
1005
+ * Uses Serializer instead of ModelSerializer to avoid model-level
1006
+ * validation (like the unique slug constraint) since this is just a data
1007
+ * container for the editor.
1008
+ */
1009
+ FeatureEditorFeature: {
1010
+ id?: number | null;
1011
+ /** @default */
1012
+ name: string;
1013
+ /** @default */
1014
+ slug: string;
1015
+ icon?: string | null;
1016
+ /** @default */
1017
+ comment: string;
1018
+ config?: components["schemas"]["FeatureConfig"];
1019
+ /** @default false */
1020
+ mandatory: boolean;
1021
+ /** @default false */
1022
+ show_as_badge: boolean;
1023
+ /** @default false */
1024
+ show_at_title: boolean;
1025
+ /**
1026
+ * @description What to translate: 'all' = title + options, 'title' = title only, 'none' = nothing
1027
+ *
1028
+ * * `all` - all
1029
+ * * `title` - title
1030
+ * * `none` - none
1031
+ * @default all
1032
+ */
1033
+ translate: components["schemas"]["FeatureEditorFeatureTranslateEnum"];
1034
+ tn_parent?: number | null;
1035
+ /** @default 0 */
1036
+ tn_priority: number;
1037
+ };
1038
+ /**
1039
+ * @description * `all` - all
1040
+ * * `title` - title
1041
+ * * `none` - none
1042
+ * @enum {string}
1043
+ */
1044
+ FeatureEditorFeatureTranslateEnum: "all" | "title" | "none";
1045
+ /** @description Item from the feature editor list. */
1046
+ FeatureEditorItem: {
1047
+ order: number;
1048
+ action: components["schemas"]["ActionEnum"];
1049
+ feature: components["schemas"]["FeatureEditorFeature"];
1050
+ replace_with?: number | null;
1051
+ };
1052
+ /** @description Response serializer for feature editor state. */
1053
+ FeatureEditorState: {
1054
+ features: components["schemas"]["FeatureEditorStateItem"][];
1055
+ available_root_features: components["schemas"]["Feature"][];
1056
+ /** @default */
1057
+ draft: string;
1058
+ revision?: number;
1059
+ };
1060
+ /** @description Single item in feature editor state. */
1061
+ FeatureEditorStateItem: {
1062
+ order: number;
1063
+ available_actions: components["schemas"]["AvailableActionsEnum"][];
1064
+ action: components["schemas"]["ActionEnum"];
1065
+ feature: components["schemas"]["Feature"];
1066
+ parent_feature?: components["schemas"]["Feature"] | null;
1067
+ };
1068
+ /** @description Serializer for FeatureValidationResult. */
1069
+ FeatureValidationResult: {
1070
+ id?: unknown;
1071
+ slug: string;
1072
+ status: components["schemas"]["StatusEnum"];
1073
+ error?: (components["schemas"]["ErrorEnum"] | components["schemas"]["NullEnum"]) | null;
1074
+ ref_value?: unknown;
1075
+ message?: string | null;
1076
+ localizable_error?: string | null;
1077
+ params?: {
1078
+ [key: string]: unknown;
1079
+ } | null;
1080
+ warnings?: string[] | null;
1081
+ };
1082
+ /** @description Serializer for float feature configuration. */
1083
+ FloatConfig: {
1084
+ /**
1085
+ * @description discriminator enum property added by openapi-typescript
1086
+ * @enum {string}
1087
+ */
1088
+ type: "FloatConfig";
1089
+ /** Format: double */
1090
+ min?: number | null;
1091
+ /** Format: double */
1092
+ max?: number | null;
1093
+ precision?: number;
1094
+ options?: number[] | null;
1095
+ allowCustom?: boolean;
1096
+ prefix?: string | null;
1097
+ postfix?: string | null;
1098
+ postfix1000?: string | null;
1099
+ placeholder?: string | null;
1100
+ };
1101
+ /** @description Serializer for float feature DTO. */
1102
+ FloatDto: {
1103
+ /**
1104
+ * @description discriminator enum property added by openapi-typescript
1105
+ * @enum {string}
1106
+ */
1107
+ type: "FloatDto";
1108
+ /** Format: double */
1109
+ value?: number;
1110
+ };
1111
+ /** @description Serializer for header feature configuration. */
1112
+ HeaderConfig: {
1113
+ /**
1114
+ * @description discriminator enum property added by openapi-typescript
1115
+ * @enum {string}
1116
+ */
1117
+ type: "HeaderConfig";
1118
+ style?: components["schemas"]["StyleEnum"];
1119
+ };
1120
+ /** @description Serializer for header feature DTO. */
1121
+ HeaderDto: {
1122
+ /**
1123
+ * @description discriminator enum property added by openapi-typescript
1124
+ * @enum {string}
1125
+ */
1126
+ type: "HeaderDto";
1127
+ value?: string | null;
1128
+ };
1129
+ /** @description Serializer for hex color feature configuration. */
1130
+ HexColorConfig: {
1131
+ /**
1132
+ * @description discriminator enum property added by openapi-typescript
1133
+ * @enum {string}
1134
+ */
1135
+ type: "HexColorConfig";
1136
+ options?: components["schemas"]["HexColorOption"][];
1137
+ allowCustom?: boolean;
1138
+ };
1139
+ /** @description Serializer for hex color feature DTO. */
1140
+ HexColorDto: {
1141
+ value?: components["schemas"]["HexColorValue"] | null;
1142
+ /**
1143
+ * @description discriminator enum property added by openapi-typescript
1144
+ * @enum {string}
1145
+ */
1146
+ type: "HexColorDto";
1147
+ };
1148
+ HexColorOption: {
1149
+ simple: string;
1150
+ hex?: string | null;
1151
+ label?: string | null;
1152
+ };
1153
+ /** @description Serializer for hex color value. */
1154
+ HexColorValue: {
1155
+ simple: string;
1156
+ hex?: string | null;
1157
+ label?: string | null;
1158
+ };
1159
+ HierarchicalOption: {
1160
+ value: string;
1161
+ label?: string | null;
1162
+ icon?: string | null;
1163
+ childrenTitle?: string | null;
1164
+ children?: components["schemas"]["HierarchicalOption"][];
1165
+ };
1166
+ /** @description Serializer for hierarchical select feature configuration. */
1167
+ HierarchicalSelectConfig: {
1168
+ /**
1169
+ * @description discriminator enum property added by openapi-typescript
1170
+ * @enum {string}
1171
+ */
1172
+ type: "HierarchicalSelectConfig";
1173
+ options?: components["schemas"]["HierarchicalOption"][];
1174
+ required?: boolean;
1175
+ minDepth?: number;
1176
+ maxDepth?: number | null;
1177
+ translatable_options?: boolean;
1178
+ };
1179
+ /** @description Serializer for hierarchical select feature DTO. */
1180
+ HierarchicalSelectDto: {
1181
+ /**
1182
+ * @description discriminator enum property added by openapi-typescript
1183
+ * @enum {string}
1184
+ */
1185
+ type: "HierarchicalSelectDto";
1186
+ value?: string[];
1187
+ };
1188
+ /** @description Serializer for integer feature configuration. */
1189
+ IntConfig: {
1190
+ /**
1191
+ * @description discriminator enum property added by openapi-typescript
1192
+ * @enum {string}
1193
+ */
1194
+ type: "IntConfig";
1195
+ min?: number | null;
1196
+ max?: number | null;
1197
+ options?: number[] | null;
1198
+ allowCustom?: boolean;
1199
+ prefix?: string | null;
1200
+ postfix?: string | null;
1201
+ postfix1000?: string | null;
1202
+ placeholder?: string | null;
1203
+ precision?: number;
1204
+ };
1205
+ /** @description Serializer for integer feature DTO. */
1206
+ IntDto: {
1207
+ /**
1208
+ * @description discriminator enum property added by openapi-typescript
1209
+ * @enum {string}
1210
+ */
1211
+ type: "IntDto";
1212
+ value?: number;
1213
+ };
1214
+ /** @description Serializer for /revision endpoint response. */
1215
+ MaxRevision: {
1216
+ /** @description Current maximum revision number */
1217
+ revision: number;
1218
+ };
1219
+ /** @enum {unknown} */
1220
+ NullEnum: null;
1221
+ PaginatedCategoryList: {
1222
+ pagination: {
1223
+ /** @description Current page number */
1224
+ page: number;
1225
+ /** @description Number of items per page */
1226
+ page_size: number;
1227
+ /** @description Total number of pages */
1228
+ total_pages: number;
1229
+ /** @description Total number of items */
1230
+ total_count: number;
1231
+ /** @description Whether there is a next page */
1232
+ has_next: boolean;
1233
+ /** @description Whether there is a previous page */
1234
+ has_previous: boolean;
1235
+ };
1236
+ revisions: {
1237
+ /** @description Minimum revision in current response */
1238
+ min: number | null;
1239
+ /** @description Maximum revision in current response */
1240
+ max: number | null;
1241
+ /** @description Global maximum revision in the table */
1242
+ global_max: number;
1243
+ /** @description IDs of soft-deleted items since min_revision */
1244
+ deleted_ids: number[];
1245
+ };
1246
+ results: components["schemas"]["Category"][];
1247
+ };
1248
+ PaginatedFeatureCompactList: {
1249
+ pagination: {
1250
+ /** @description Current page number */
1251
+ page: number;
1252
+ /** @description Number of items per page */
1253
+ page_size: number;
1254
+ /** @description Total number of pages */
1255
+ total_pages: number;
1256
+ /** @description Total number of items */
1257
+ total_count: number;
1258
+ /** @description Whether there is a next page */
1259
+ has_next: boolean;
1260
+ /** @description Whether there is a previous page */
1261
+ has_previous: boolean;
1262
+ };
1263
+ revisions: {
1264
+ /** @description Minimum revision in current response */
1265
+ min: number | null;
1266
+ /** @description Maximum revision in current response */
1267
+ max: number | null;
1268
+ /** @description Global maximum revision in the table */
1269
+ global_max: number;
1270
+ /** @description IDs of soft-deleted items since min_revision */
1271
+ deleted_ids: number[];
1272
+ };
1273
+ results: components["schemas"]["FeatureCompact"][];
1274
+ };
1275
+ /** @description Category serializer with feature references and revision tracking. */
1276
+ PatchedCategory: {
1277
+ readonly id?: number;
1278
+ name?: string;
1279
+ slug?: string;
1280
+ /** @description CDN catalog icon reference (opaque string, e.g. catalog/asset-name) */
1281
+ catalog_icon?: string;
1282
+ /** @description CDN carousel icon reference (opaque string, e.g. carousel/asset-name) */
1283
+ carousel_icon?: string;
1284
+ /** @description Whether this category appears in the carousel */
1285
+ carousel_enabled?: boolean;
1286
+ /** @description Whether this category is active */
1287
+ active?: boolean;
1288
+ readonly features?: number[];
1289
+ /** @description If True, category name is a translation key */
1290
+ translatable?: boolean;
1291
+ /** Parent */
1292
+ tn_parent?: number | null;
1293
+ /**
1294
+ * Priority
1295
+ * Format: int64
1296
+ */
1297
+ tn_priority?: number;
1298
+ /** Ancestors pks */
1299
+ readonly tn_ancestors_pks?: string;
1300
+ /** Children pks */
1301
+ readonly tn_children_pks?: string;
1302
+ readonly revision?: number;
1303
+ deleted?: boolean;
1304
+ };
1305
+ /** @description Serializer for creating/updating features with polymorphic config. */
1306
+ PatchedFeatureCreateUpdate: {
1307
+ readonly id?: number;
1308
+ config?: components["schemas"]["FeatureConfig"];
1309
+ readonly revision?: number;
1310
+ deleted?: boolean;
1311
+ /** Ancestors pks */
1312
+ readonly tn_ancestors_pks?: string;
1313
+ /** Ancestors count */
1314
+ readonly tn_ancestors_count?: number;
1315
+ /** Children pks */
1316
+ readonly tn_children_pks?: string;
1317
+ /** Children count */
1318
+ readonly tn_children_count?: number;
1319
+ /** Depth */
1320
+ readonly tn_depth?: number;
1321
+ /** Descendants pks */
1322
+ readonly tn_descendants_pks?: string;
1323
+ /** Descendants count */
1324
+ readonly tn_descendants_count?: number;
1325
+ /** Index */
1326
+ readonly tn_index?: number;
1327
+ /** Level */
1328
+ readonly tn_level?: number;
1329
+ /**
1330
+ * Priority
1331
+ * Format: int64
1332
+ */
1333
+ tn_priority?: number;
1334
+ /** Order */
1335
+ readonly tn_order?: number;
1336
+ /** Siblings pks */
1337
+ readonly tn_siblings_pks?: string;
1338
+ /** Siblings count */
1339
+ readonly tn_siblings_count?: number;
1340
+ name?: string;
1341
+ slug?: string;
1342
+ icon?: string;
1343
+ comment?: string;
1344
+ mandatory?: boolean;
1345
+ show_as_badge?: boolean;
1346
+ show_at_title?: boolean;
1347
+ /**
1348
+ * @description What to translate: 'all' = title + options, 'title' = title only, 'none' = nothing
1349
+ *
1350
+ * * `all` - All (title + options)
1351
+ * * `title` - Title only
1352
+ * * `none` - None
1353
+ */
1354
+ translate?: components["schemas"]["Translate2c2Enum"];
1355
+ /** @description Test/scratch data — excluded from export_catalog fixtures. */
1356
+ is_test?: boolean;
1357
+ /** Parent */
1358
+ tn_parent?: number | null;
1359
+ };
1360
+ /**
1361
+ * @description * `year` - year
1362
+ * * `month` - month
1363
+ * * `date` - date
1364
+ * * `datetime` - datetime
1365
+ * @enum {string}
1366
+ */
1367
+ PrecisionEnum: "year" | "month" | "date" | "datetime";
1368
+ /** @description Serializer for select feature configuration. */
1369
+ SelectConfig: {
1370
+ /**
1371
+ * @description discriminator enum property added by openapi-typescript
1372
+ * @enum {string}
1373
+ */
1374
+ type: "SelectConfig";
1375
+ options?: components["schemas"]["SelectOption"][];
1376
+ uiStyle?: components["schemas"]["UiStyleEnum"];
1377
+ minSelected?: number;
1378
+ maxSelected?: number | null;
1379
+ lockUserInput?: boolean;
1380
+ translatable_options?: boolean;
1381
+ };
1382
+ /** @description Serializer for select feature DTO. */
1383
+ SelectDto: {
1384
+ /**
1385
+ * @description discriminator enum property added by openapi-typescript
1386
+ * @enum {string}
1387
+ */
1388
+ type: "SelectDto";
1389
+ value?: string[];
1390
+ };
1391
+ SelectOption: {
1392
+ value: string;
1393
+ label: string;
1394
+ icon?: string | null;
1395
+ default?: boolean;
1396
+ };
1397
+ /**
1398
+ * @description * `ok` - ok
1399
+ * * `validation_failed` - validation_failed
1400
+ * @enum {string}
1401
+ */
1402
+ StatusEnum: "ok" | "validation_failed";
1403
+ /** @description Serializer for string feature configuration. */
1404
+ StringConfig: {
1405
+ /**
1406
+ * @description discriminator enum property added by openapi-typescript
1407
+ * @enum {string}
1408
+ */
1409
+ type: "StringConfig";
1410
+ minLength?: number | null;
1411
+ maxLength?: number | null;
1412
+ pattern?: string | null;
1413
+ options?: string[] | null;
1414
+ allowCustom?: boolean;
1415
+ prefix?: string | null;
1416
+ postfix?: string | null;
1417
+ placeholder?: string | null;
1418
+ translatable_options?: boolean;
1419
+ multiline?: boolean;
1420
+ };
1421
+ /** @description Serializer for string feature DTO. */
1422
+ StringDto: {
1423
+ /**
1424
+ * @description discriminator enum property added by openapi-typescript
1425
+ * @enum {string}
1426
+ */
1427
+ type: "StringDto";
1428
+ value?: string;
1429
+ };
1430
+ /**
1431
+ * @description * `l` - l
1432
+ * * `m` - m
1433
+ * @enum {string}
1434
+ */
1435
+ StyleEnum: "l" | "m";
1436
+ /**
1437
+ * @description * `all` - All (title + options)
1438
+ * * `title` - Title only
1439
+ * * `none` - None
1440
+ * @enum {string}
1441
+ */
1442
+ Translate2c2Enum: "all" | "title" | "none";
1443
+ /**
1444
+ * @description * `convertible_unit` - convertible_unit
1445
+ * @enum {string}
1446
+ */
1447
+ Type104Enum: "convertible_unit";
1448
+ /**
1449
+ * @description * `date` - date
1450
+ * @enum {string}
1451
+ */
1452
+ Type37eEnum: "date";
1453
+ /**
1454
+ * @description * `header` - header
1455
+ * @enum {string}
1456
+ */
1457
+ Type3feEnum: "header";
1458
+ /**
1459
+ * @description * `hex_color` - hex_color
1460
+ * @enum {string}
1461
+ */
1462
+ Type515Enum: "hex_color";
1463
+ /**
1464
+ * @description * `hierarchical_select` - hierarchical_select
1465
+ * @enum {string}
1466
+ */
1467
+ Type5beEnum: "hierarchical_select";
1468
+ /**
1469
+ * @description * `select` - select
1470
+ * @enum {string}
1471
+ */
1472
+ Type63eEnum: "select";
1473
+ /**
1474
+ * @description * `string` - string
1475
+ * @enum {string}
1476
+ */
1477
+ Type839Enum: "string";
1478
+ /**
1479
+ * @description * `int` - int
1480
+ * @enum {string}
1481
+ */
1482
+ TypeC1bEnum: "int";
1483
+ /**
1484
+ * @description * `float` - float
1485
+ * @enum {string}
1486
+ */
1487
+ TypeD7cEnum: "float";
1488
+ /**
1489
+ * @description * `bool` - bool
1490
+ * @enum {string}
1491
+ */
1492
+ TypeE3eEnum: "bool";
1493
+ /**
1494
+ * @description * `dropdown` - dropdown
1495
+ * * `checkboxes` - checkboxes
1496
+ * * `chips` - chips
1497
+ * @enum {string}
1498
+ */
1499
+ UiStyleEnum: "dropdown" | "checkboxes" | "chips";
1500
+ /** @description Restored soft-deleted categories. */
1501
+ UndeleteResponse: {
1502
+ /**
1503
+ * @description List of restored category IDs
1504
+ * @example [
1505
+ * 1,
1506
+ * 2,
1507
+ * 3
1508
+ * ]
1509
+ */
1510
+ restored: number[];
1511
+ };
1512
+ /** @description Request serializer for validate_dto endpoint. */
1513
+ ValidateDtoRequest: {
1514
+ /** @description Features DTO object keyed by feature slug: {slug: {type, value, ...}} */
1515
+ features: {
1516
+ [key: string]: components["schemas"]["FeatureDto"];
1517
+ };
1518
+ };
1519
+ /** @description Serializer for ValidationBatchResult. */
1520
+ ValidationBatchResult: {
1521
+ valid: boolean;
1522
+ results: components["schemas"]["FeatureValidationResult"][];
1523
+ };
1524
+ };
1525
+ responses: never;
1526
+ parameters: never;
1527
+ requestBodies: never;
1528
+ headers: never;
1529
+ pathItems: never;
1530
+ }
1531
+ export type $defs = Record<string, never>;
1532
+ export interface operations {
1533
+ categories_api_v1_categories_list: {
1534
+ parameters: {
1535
+ query?: {
1536
+ /** @description Include soft-deleted items in response. Default: true */
1537
+ include_deleted?: boolean;
1538
+ /** @description Return objects with revision less than or equal to this value (inclusive). Default: no limit */
1539
+ max_revision?: number;
1540
+ /** @description Return objects with revision greater than this value (exclusive). Omit for initial sync to get all items. */
1541
+ min_revision?: number;
1542
+ /** @description Page number. Default: 1 */
1543
+ page?: number;
1544
+ /** @description Number of items per page. Default: 100, Max: 1000 */
1545
+ page_size?: number;
1546
+ };
1547
+ header?: never;
1548
+ path?: never;
1549
+ cookie?: never;
1550
+ };
1551
+ requestBody?: never;
1552
+ responses: {
1553
+ 200: {
1554
+ headers: {
1555
+ [name: string]: unknown;
1556
+ };
1557
+ content: {
1558
+ "application/json": components["schemas"]["PaginatedCategoryList"];
1559
+ };
1560
+ };
1561
+ };
1562
+ };
1563
+ categories_api_v1_categories_create: {
1564
+ parameters: {
1565
+ query?: never;
1566
+ header?: never;
1567
+ path?: never;
1568
+ cookie?: never;
1569
+ };
1570
+ requestBody: {
1571
+ content: {
1572
+ "application/json": components["schemas"]["Category"];
1573
+ "application/x-www-form-urlencoded": components["schemas"]["Category"];
1574
+ "multipart/form-data": components["schemas"]["Category"];
1575
+ };
1576
+ };
1577
+ responses: {
1578
+ 201: {
1579
+ headers: {
1580
+ [name: string]: unknown;
1581
+ };
1582
+ content: {
1583
+ "application/json": components["schemas"]["Category"];
1584
+ };
1585
+ };
1586
+ };
1587
+ };
1588
+ categories_api_v1_categories_retrieve: {
1589
+ parameters: {
1590
+ query?: never;
1591
+ header?: never;
1592
+ path: {
1593
+ /** @description A unique integer value identifying this category. */
1594
+ id: number;
1595
+ };
1596
+ cookie?: never;
1597
+ };
1598
+ requestBody?: never;
1599
+ responses: {
1600
+ 200: {
1601
+ headers: {
1602
+ [name: string]: unknown;
1603
+ };
1604
+ content: {
1605
+ "application/json": components["schemas"]["Category"];
1606
+ };
1607
+ };
1608
+ };
1609
+ };
1610
+ categories_api_v1_categories_update: {
1611
+ parameters: {
1612
+ query?: never;
1613
+ header?: never;
1614
+ path: {
1615
+ /** @description A unique integer value identifying this category. */
1616
+ id: number;
1617
+ };
1618
+ cookie?: never;
1619
+ };
1620
+ requestBody: {
1621
+ content: {
1622
+ "application/json": components["schemas"]["Category"];
1623
+ "application/x-www-form-urlencoded": components["schemas"]["Category"];
1624
+ "multipart/form-data": components["schemas"]["Category"];
1625
+ };
1626
+ };
1627
+ responses: {
1628
+ 200: {
1629
+ headers: {
1630
+ [name: string]: unknown;
1631
+ };
1632
+ content: {
1633
+ "application/json": components["schemas"]["Category"];
1634
+ };
1635
+ };
1636
+ };
1637
+ };
1638
+ categories_api_v1_categories_destroy: {
1639
+ parameters: {
1640
+ query?: never;
1641
+ header?: never;
1642
+ path: {
1643
+ /** @description A unique integer value identifying this category. */
1644
+ id: number;
1645
+ };
1646
+ cookie?: never;
1647
+ };
1648
+ requestBody?: never;
1649
+ responses: {
1650
+ /** @description No response body */
1651
+ 204: {
1652
+ headers: {
1653
+ [name: string]: unknown;
1654
+ };
1655
+ content?: never;
1656
+ };
1657
+ };
1658
+ };
1659
+ categories_api_v1_categories_partial_update: {
1660
+ parameters: {
1661
+ query?: never;
1662
+ header?: never;
1663
+ path: {
1664
+ /** @description A unique integer value identifying this category. */
1665
+ id: number;
1666
+ };
1667
+ cookie?: never;
1668
+ };
1669
+ requestBody?: {
1670
+ content: {
1671
+ "application/json": components["schemas"]["PatchedCategory"];
1672
+ "application/x-www-form-urlencoded": components["schemas"]["PatchedCategory"];
1673
+ "multipart/form-data": components["schemas"]["PatchedCategory"];
1674
+ };
1675
+ };
1676
+ responses: {
1677
+ 200: {
1678
+ headers: {
1679
+ [name: string]: unknown;
1680
+ };
1681
+ content: {
1682
+ "application/json": components["schemas"]["Category"];
1683
+ };
1684
+ };
1685
+ };
1686
+ };
1687
+ categories_api_v1_categories_children_list: {
1688
+ parameters: {
1689
+ query?: never;
1690
+ header?: never;
1691
+ path: {
1692
+ /** @description A unique integer value identifying this category. */
1693
+ id: number;
1694
+ };
1695
+ cookie?: never;
1696
+ };
1697
+ requestBody?: never;
1698
+ responses: {
1699
+ 200: {
1700
+ headers: {
1701
+ [name: string]: unknown;
1702
+ };
1703
+ content: {
1704
+ "application/json": components["schemas"]["Category"][];
1705
+ };
1706
+ };
1707
+ };
1708
+ };
1709
+ categories_api_v1_categories_deleted_children_list: {
1710
+ parameters: {
1711
+ query?: never;
1712
+ header?: never;
1713
+ path: {
1714
+ /** @description A unique integer value identifying this category. */
1715
+ id: number;
1716
+ };
1717
+ cookie?: never;
1718
+ };
1719
+ requestBody?: never;
1720
+ responses: {
1721
+ 200: {
1722
+ headers: {
1723
+ [name: string]: unknown;
1724
+ };
1725
+ content: {
1726
+ "application/json": components["schemas"]["Category"][];
1727
+ };
1728
+ };
1729
+ };
1730
+ };
1731
+ categories_api_v1_categories_feature_editor_retrieve: {
1732
+ parameters: {
1733
+ query?: never;
1734
+ header?: never;
1735
+ path: {
1736
+ /** @description A unique integer value identifying this category. */
1737
+ id: number;
1738
+ };
1739
+ cookie?: never;
1740
+ };
1741
+ requestBody?: never;
1742
+ responses: {
1743
+ 200: {
1744
+ headers: {
1745
+ [name: string]: unknown;
1746
+ };
1747
+ content: {
1748
+ "application/json": components["schemas"]["FeatureEditorState"];
1749
+ };
1750
+ };
1751
+ };
1752
+ };
1753
+ categories_api_v1_categories_feature_editor_apply_create: {
1754
+ parameters: {
1755
+ query?: never;
1756
+ header?: never;
1757
+ path: {
1758
+ /** @description A unique integer value identifying this category. */
1759
+ id: number;
1760
+ };
1761
+ cookie?: never;
1762
+ };
1763
+ requestBody: {
1764
+ content: {
1765
+ "application/json": components["schemas"]["FeatureEditorApply"];
1766
+ "application/x-www-form-urlencoded": components["schemas"]["FeatureEditorApply"];
1767
+ "multipart/form-data": components["schemas"]["FeatureEditorApply"];
1768
+ };
1769
+ };
1770
+ responses: {
1771
+ 200: {
1772
+ headers: {
1773
+ [name: string]: unknown;
1774
+ };
1775
+ content: {
1776
+ "application/json": components["schemas"]["FeatureEditorState"];
1777
+ };
1778
+ };
1779
+ };
1780
+ };
1781
+ categories_api_v1_categories_feature_editor_draft_create: {
1782
+ parameters: {
1783
+ query?: never;
1784
+ header?: never;
1785
+ path: {
1786
+ /** @description A unique integer value identifying this category. */
1787
+ id: number;
1788
+ };
1789
+ cookie?: never;
1790
+ };
1791
+ requestBody?: {
1792
+ content: {
1793
+ "application/json": components["schemas"]["FeatureEditorDraft"];
1794
+ "application/x-www-form-urlencoded": components["schemas"]["FeatureEditorDraft"];
1795
+ "multipart/form-data": components["schemas"]["FeatureEditorDraft"];
1796
+ };
1797
+ };
1798
+ responses: {
1799
+ 200: {
1800
+ headers: {
1801
+ [name: string]: unknown;
1802
+ };
1803
+ content: {
1804
+ "application/json": components["schemas"]["FeatureEditorDraftResponse"];
1805
+ };
1806
+ };
1807
+ };
1808
+ };
1809
+ categories_api_v1_categories_features_list: {
1810
+ parameters: {
1811
+ query?: never;
1812
+ header?: never;
1813
+ path: {
1814
+ /** @description A unique integer value identifying this category. */
1815
+ id: number;
1816
+ };
1817
+ cookie?: never;
1818
+ };
1819
+ requestBody?: never;
1820
+ responses: {
1821
+ 200: {
1822
+ headers: {
1823
+ [name: string]: unknown;
1824
+ };
1825
+ content: {
1826
+ "application/json": components["schemas"]["FeatureCompact"][];
1827
+ };
1828
+ };
1829
+ };
1830
+ };
1831
+ categories_api_v1_categories_undelete_create: {
1832
+ parameters: {
1833
+ query?: never;
1834
+ header?: never;
1835
+ path: {
1836
+ /** @description A unique integer value identifying this category. */
1837
+ id: number;
1838
+ };
1839
+ cookie?: never;
1840
+ };
1841
+ requestBody: {
1842
+ content: {
1843
+ "application/json": components["schemas"]["Category"];
1844
+ "application/x-www-form-urlencoded": components["schemas"]["Category"];
1845
+ "multipart/form-data": components["schemas"]["Category"];
1846
+ };
1847
+ };
1848
+ responses: {
1849
+ 200: {
1850
+ headers: {
1851
+ [name: string]: unknown;
1852
+ };
1853
+ content: {
1854
+ "application/json": components["schemas"]["UndeleteResponse"];
1855
+ };
1856
+ };
1857
+ };
1858
+ };
1859
+ categories_api_v1_categories_validate_configs_retrieve: {
1860
+ parameters: {
1861
+ query?: never;
1862
+ header?: never;
1863
+ path: {
1864
+ /** @description A unique integer value identifying this category. */
1865
+ id: number;
1866
+ };
1867
+ cookie?: never;
1868
+ };
1869
+ requestBody?: never;
1870
+ responses: {
1871
+ 200: {
1872
+ headers: {
1873
+ [name: string]: unknown;
1874
+ };
1875
+ content: {
1876
+ "application/json": components["schemas"]["ValidationBatchResult"];
1877
+ };
1878
+ };
1879
+ };
1880
+ };
1881
+ categories_api_v1_categories_validate_dto_create: {
1882
+ parameters: {
1883
+ query?: never;
1884
+ header?: never;
1885
+ path: {
1886
+ /** @description A unique integer value identifying this category. */
1887
+ id: number;
1888
+ };
1889
+ cookie?: never;
1890
+ };
1891
+ requestBody: {
1892
+ content: {
1893
+ "application/json": components["schemas"]["ValidateDtoRequest"];
1894
+ "application/x-www-form-urlencoded": components["schemas"]["ValidateDtoRequest"];
1895
+ "multipart/form-data": components["schemas"]["ValidateDtoRequest"];
1896
+ };
1897
+ };
1898
+ responses: {
1899
+ 200: {
1900
+ headers: {
1901
+ [name: string]: unknown;
1902
+ };
1903
+ content: {
1904
+ "application/json": components["schemas"]["ValidationBatchResult"];
1905
+ };
1906
+ };
1907
+ };
1908
+ };
1909
+ categories_api_v1_categories_bulk_commands_create: {
1910
+ parameters: {
1911
+ query?: never;
1912
+ header?: never;
1913
+ path?: never;
1914
+ cookie?: never;
1915
+ };
1916
+ requestBody: {
1917
+ content: {
1918
+ "application/json": components["schemas"]["CategoryBulkCommand"];
1919
+ "application/x-www-form-urlencoded": components["schemas"]["CategoryBulkCommand"];
1920
+ "multipart/form-data": components["schemas"]["CategoryBulkCommand"];
1921
+ };
1922
+ };
1923
+ responses: {
1924
+ 200: {
1925
+ headers: {
1926
+ [name: string]: unknown;
1927
+ };
1928
+ content: {
1929
+ "application/json": {
1930
+ [key: string]: unknown;
1931
+ };
1932
+ };
1933
+ };
1934
+ 400: {
1935
+ headers: {
1936
+ [name: string]: unknown;
1937
+ };
1938
+ content: {
1939
+ "application/json": {
1940
+ [key: string]: unknown;
1941
+ };
1942
+ };
1943
+ };
1944
+ };
1945
+ };
1946
+ categories_api_v1_categories_bulk_add_create: {
1947
+ parameters: {
1948
+ query?: never;
1949
+ header?: never;
1950
+ path?: never;
1951
+ cookie?: never;
1952
+ };
1953
+ requestBody: {
1954
+ content: {
1955
+ "application/json": components["schemas"]["CategoryBulk"][];
1956
+ "application/x-www-form-urlencoded": components["schemas"]["CategoryBulk"][];
1957
+ "multipart/form-data": components["schemas"]["CategoryBulk"][];
1958
+ };
1959
+ };
1960
+ responses: {
1961
+ 200: {
1962
+ headers: {
1963
+ [name: string]: unknown;
1964
+ };
1965
+ content: {
1966
+ "application/json": components["schemas"]["BulkUpdateResponse"];
1967
+ };
1968
+ };
1969
+ 400: {
1970
+ headers: {
1971
+ [name: string]: unknown;
1972
+ };
1973
+ content: {
1974
+ "application/json": {
1975
+ [key: string]: unknown;
1976
+ };
1977
+ };
1978
+ };
1979
+ };
1980
+ };
1981
+ categories_api_v1_categories_carousel_list: {
1982
+ parameters: {
1983
+ query?: never;
1984
+ header?: never;
1985
+ path?: never;
1986
+ cookie?: never;
1987
+ };
1988
+ requestBody?: never;
1989
+ responses: {
1990
+ 200: {
1991
+ headers: {
1992
+ [name: string]: unknown;
1993
+ };
1994
+ content: {
1995
+ "application/json": components["schemas"]["Category"][];
1996
+ };
1997
+ };
1998
+ };
1999
+ };
2000
+ "categories_api_v1_categories_data.json_retrieve": {
2001
+ parameters: {
2002
+ query: {
2003
+ /** @description Current revision number (for cache busting). Get from /revision endpoint. */
2004
+ revision: number;
2005
+ };
2006
+ header?: never;
2007
+ path?: never;
2008
+ cookie?: never;
2009
+ };
2010
+ requestBody?: never;
2011
+ responses: {
2012
+ 200: {
2013
+ headers: {
2014
+ [name: string]: unknown;
2015
+ };
2016
+ content: {
2017
+ "application/json": components["schemas"]["Category"];
2018
+ };
2019
+ };
2020
+ };
2021
+ };
2022
+ categories_api_v1_categories_revision_retrieve: {
2023
+ parameters: {
2024
+ query?: never;
2025
+ header?: never;
2026
+ path?: never;
2027
+ cookie?: never;
2028
+ };
2029
+ requestBody?: never;
2030
+ responses: {
2031
+ 200: {
2032
+ headers: {
2033
+ [name: string]: unknown;
2034
+ };
2035
+ content: {
2036
+ "application/json": components["schemas"]["MaxRevision"];
2037
+ };
2038
+ };
2039
+ };
2040
+ };
2041
+ collect_translation_keys: {
2042
+ parameters: {
2043
+ query?: never;
2044
+ header?: never;
2045
+ path?: never;
2046
+ cookie?: never;
2047
+ };
2048
+ requestBody?: never;
2049
+ responses: {
2050
+ 200: {
2051
+ headers: {
2052
+ [name: string]: unknown;
2053
+ };
2054
+ content: {
2055
+ "application/json": {
2056
+ [key: string]: unknown;
2057
+ };
2058
+ };
2059
+ };
2060
+ };
2061
+ };
2062
+ categories_api_v1_features_list: {
2063
+ parameters: {
2064
+ query?: {
2065
+ /** @description Include soft-deleted items in response. Default: true */
2066
+ include_deleted?: boolean;
2067
+ /** @description Return objects with revision less than or equal to this value (inclusive). Default: no limit */
2068
+ max_revision?: number;
2069
+ /** @description Return objects with revision greater than this value (exclusive). Omit for initial sync to get all items. */
2070
+ min_revision?: number;
2071
+ /** @description Page number. Default: 1 */
2072
+ page?: number;
2073
+ /** @description Number of items per page. Default: 100, Max: 1000 */
2074
+ page_size?: number;
2075
+ };
2076
+ header?: never;
2077
+ path?: never;
2078
+ cookie?: never;
2079
+ };
2080
+ requestBody?: never;
2081
+ responses: {
2082
+ 200: {
2083
+ headers: {
2084
+ [name: string]: unknown;
2085
+ };
2086
+ content: {
2087
+ "application/json": components["schemas"]["PaginatedFeatureCompactList"];
2088
+ };
2089
+ };
2090
+ };
2091
+ };
2092
+ categories_api_v1_features_create: {
2093
+ parameters: {
2094
+ query?: never;
2095
+ header?: never;
2096
+ path?: never;
2097
+ cookie?: never;
2098
+ };
2099
+ requestBody: {
2100
+ content: {
2101
+ "application/json": components["schemas"]["FeatureCreateUpdate"];
2102
+ "application/x-www-form-urlencoded": components["schemas"]["FeatureCreateUpdate"];
2103
+ "multipart/form-data": components["schemas"]["FeatureCreateUpdate"];
2104
+ };
2105
+ };
2106
+ responses: {
2107
+ 201: {
2108
+ headers: {
2109
+ [name: string]: unknown;
2110
+ };
2111
+ content: {
2112
+ "application/json": components["schemas"]["Feature"];
2113
+ };
2114
+ };
2115
+ };
2116
+ };
2117
+ categories_api_v1_features_retrieve: {
2118
+ parameters: {
2119
+ query?: never;
2120
+ header?: never;
2121
+ path: {
2122
+ /** @description A unique integer value identifying this feature. */
2123
+ id: number;
2124
+ };
2125
+ cookie?: never;
2126
+ };
2127
+ requestBody?: never;
2128
+ responses: {
2129
+ 200: {
2130
+ headers: {
2131
+ [name: string]: unknown;
2132
+ };
2133
+ content: {
2134
+ "application/json": components["schemas"]["Feature"];
2135
+ };
2136
+ };
2137
+ };
2138
+ };
2139
+ categories_api_v1_features_update: {
2140
+ parameters: {
2141
+ query?: never;
2142
+ header?: never;
2143
+ path: {
2144
+ /** @description A unique integer value identifying this feature. */
2145
+ id: number;
2146
+ };
2147
+ cookie?: never;
2148
+ };
2149
+ requestBody: {
2150
+ content: {
2151
+ "application/json": components["schemas"]["FeatureCreateUpdate"];
2152
+ "application/x-www-form-urlencoded": components["schemas"]["FeatureCreateUpdate"];
2153
+ "multipart/form-data": components["schemas"]["FeatureCreateUpdate"];
2154
+ };
2155
+ };
2156
+ responses: {
2157
+ 200: {
2158
+ headers: {
2159
+ [name: string]: unknown;
2160
+ };
2161
+ content: {
2162
+ "application/json": components["schemas"]["Feature"];
2163
+ };
2164
+ };
2165
+ };
2166
+ };
2167
+ categories_api_v1_features_destroy: {
2168
+ parameters: {
2169
+ query?: never;
2170
+ header?: never;
2171
+ path: {
2172
+ /** @description A unique integer value identifying this feature. */
2173
+ id: number;
2174
+ };
2175
+ cookie?: never;
2176
+ };
2177
+ requestBody?: never;
2178
+ responses: {
2179
+ /** @description No response body */
2180
+ 204: {
2181
+ headers: {
2182
+ [name: string]: unknown;
2183
+ };
2184
+ content?: never;
2185
+ };
2186
+ };
2187
+ };
2188
+ categories_api_v1_features_partial_update: {
2189
+ parameters: {
2190
+ query?: never;
2191
+ header?: never;
2192
+ path: {
2193
+ /** @description A unique integer value identifying this feature. */
2194
+ id: number;
2195
+ };
2196
+ cookie?: never;
2197
+ };
2198
+ requestBody?: {
2199
+ content: {
2200
+ "application/json": components["schemas"]["PatchedFeatureCreateUpdate"];
2201
+ "application/x-www-form-urlencoded": components["schemas"]["PatchedFeatureCreateUpdate"];
2202
+ "multipart/form-data": components["schemas"]["PatchedFeatureCreateUpdate"];
2203
+ };
2204
+ };
2205
+ responses: {
2206
+ 200: {
2207
+ headers: {
2208
+ [name: string]: unknown;
2209
+ };
2210
+ content: {
2211
+ "application/json": components["schemas"]["Feature"];
2212
+ };
2213
+ };
2214
+ };
2215
+ };
2216
+ categories_api_v1_features_convert_type_create: {
2217
+ parameters: {
2218
+ query?: never;
2219
+ header?: never;
2220
+ path: {
2221
+ /** @description A unique integer value identifying this feature. */
2222
+ id: number;
2223
+ };
2224
+ cookie?: never;
2225
+ };
2226
+ requestBody: {
2227
+ content: {
2228
+ "application/json": components["schemas"]["FeatureConvertType"];
2229
+ "application/x-www-form-urlencoded": components["schemas"]["FeatureConvertType"];
2230
+ "multipart/form-data": components["schemas"]["FeatureConvertType"];
2231
+ };
2232
+ };
2233
+ responses: {
2234
+ 200: {
2235
+ headers: {
2236
+ [name: string]: unknown;
2237
+ };
2238
+ content: {
2239
+ "application/json": components["schemas"]["Feature"];
2240
+ };
2241
+ };
2242
+ };
2243
+ };
2244
+ categories_api_v1_features_bulk_add_create: {
2245
+ parameters: {
2246
+ query?: never;
2247
+ header?: never;
2248
+ path?: never;
2249
+ cookie?: never;
2250
+ };
2251
+ requestBody: {
2252
+ content: {
2253
+ "application/json": components["schemas"]["FeatureBulk"][];
2254
+ "application/x-www-form-urlencoded": components["schemas"]["FeatureBulk"][];
2255
+ "multipart/form-data": components["schemas"]["FeatureBulk"][];
2256
+ };
2257
+ };
2258
+ responses: {
2259
+ 200: {
2260
+ headers: {
2261
+ [name: string]: unknown;
2262
+ };
2263
+ content: {
2264
+ "application/json": components["schemas"]["BulkUpdateResponse"];
2265
+ };
2266
+ };
2267
+ 400: {
2268
+ headers: {
2269
+ [name: string]: unknown;
2270
+ };
2271
+ content: {
2272
+ "application/json": {
2273
+ [key: string]: unknown;
2274
+ };
2275
+ };
2276
+ };
2277
+ };
2278
+ };
2279
+ "categories_api_v1_features_data.json_retrieve": {
2280
+ parameters: {
2281
+ query: {
2282
+ /** @description Current revision number (for cache busting). Get from /revision endpoint. */
2283
+ revision: number;
2284
+ };
2285
+ header?: never;
2286
+ path?: never;
2287
+ cookie?: never;
2288
+ };
2289
+ requestBody?: never;
2290
+ responses: {
2291
+ 200: {
2292
+ headers: {
2293
+ [name: string]: unknown;
2294
+ };
2295
+ content: {
2296
+ "application/json": components["schemas"]["Feature"];
2297
+ };
2298
+ };
2299
+ };
2300
+ };
2301
+ categories_api_v1_features_revision_retrieve: {
2302
+ parameters: {
2303
+ query?: never;
2304
+ header?: never;
2305
+ path?: never;
2306
+ cookie?: never;
2307
+ };
2308
+ requestBody?: never;
2309
+ responses: {
2310
+ 200: {
2311
+ headers: {
2312
+ [name: string]: unknown;
2313
+ };
2314
+ content: {
2315
+ "application/json": components["schemas"]["MaxRevision"];
2316
+ };
2317
+ };
2318
+ };
2319
+ };
2320
+ }
2321
+ //# sourceMappingURL=schema.d.ts.map