@storyblok/management-api-client 1.0.0-alpha.1 → 1.0.0-alpha.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 (294) hide show
  1. package/README.md +3 -1
  2. package/dist/client.cjs +9 -9
  3. package/dist/client.cjs.map +1 -1
  4. package/dist/client.d.cts +208 -200
  5. package/dist/client.d.mts +208 -200
  6. package/dist/client.mjs +9 -9
  7. package/dist/client.mjs.map +1 -1
  8. package/dist/generated/mapi/_internal.gen.d.cts +541 -0
  9. package/dist/generated/mapi/_internal.gen.d.mts +541 -0
  10. package/dist/generated/{shared → mapi}/client/client.gen.cjs +1 -1
  11. package/dist/generated/mapi/client/client.gen.cjs.map +1 -0
  12. package/dist/generated/{shared → mapi}/client/client.gen.mjs +1 -1
  13. package/dist/generated/mapi/client/client.gen.mjs.map +1 -0
  14. package/dist/generated/{shared → mapi}/client/types.gen.d.cts +1 -1
  15. package/dist/generated/{shared → mapi}/client/types.gen.d.mts +1 -1
  16. package/dist/generated/{shared → mapi}/client/utils.gen.cjs +1 -1
  17. package/dist/generated/mapi/client/utils.gen.cjs.map +1 -0
  18. package/dist/generated/{shared → mapi}/client/utils.gen.d.cts +1 -1
  19. package/dist/generated/{shared → mapi}/client/utils.gen.d.mts +1 -1
  20. package/dist/generated/{shared → mapi}/client/utils.gen.mjs +1 -1
  21. package/dist/generated/mapi/client/utils.gen.mjs.map +1 -0
  22. package/dist/generated/mapi/client.gen.cjs +10 -0
  23. package/dist/generated/mapi/client.gen.cjs.map +1 -0
  24. package/dist/generated/mapi/client.gen.mjs +10 -0
  25. package/dist/generated/mapi/client.gen.mjs.map +1 -0
  26. package/dist/generated/{shared → mapi}/core/auth.gen.cjs +1 -1
  27. package/dist/generated/mapi/core/auth.gen.cjs.map +1 -0
  28. package/dist/generated/{shared → mapi}/core/auth.gen.d.cts +1 -1
  29. package/dist/generated/{shared → mapi}/core/auth.gen.d.mts +1 -1
  30. package/dist/generated/{shared → mapi}/core/auth.gen.mjs +1 -1
  31. package/dist/generated/mapi/core/auth.gen.mjs.map +1 -0
  32. package/dist/generated/{shared → mapi}/core/bodySerializer.gen.cjs +1 -1
  33. package/dist/generated/mapi/core/bodySerializer.gen.cjs.map +1 -0
  34. package/dist/generated/{shared → mapi}/core/bodySerializer.gen.d.cts +1 -1
  35. package/dist/generated/{shared → mapi}/core/bodySerializer.gen.d.mts +1 -1
  36. package/dist/generated/{shared → mapi}/core/bodySerializer.gen.mjs +1 -1
  37. package/dist/generated/mapi/core/bodySerializer.gen.mjs.map +1 -0
  38. package/dist/generated/{shared → mapi}/core/params.gen.cjs +1 -1
  39. package/dist/generated/mapi/core/params.gen.cjs.map +1 -0
  40. package/dist/generated/{shared → mapi}/core/params.gen.mjs +1 -1
  41. package/dist/generated/mapi/core/params.gen.mjs.map +1 -0
  42. package/dist/generated/{shared → mapi}/core/pathSerializer.gen.cjs +1 -1
  43. package/dist/generated/mapi/core/pathSerializer.gen.cjs.map +1 -0
  44. package/dist/generated/{shared → mapi}/core/pathSerializer.gen.d.cts +1 -1
  45. package/dist/generated/{shared → mapi}/core/pathSerializer.gen.d.mts +1 -1
  46. package/dist/generated/{shared → mapi}/core/pathSerializer.gen.mjs +1 -1
  47. package/dist/generated/mapi/core/pathSerializer.gen.mjs.map +1 -0
  48. package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.cjs +1 -1
  49. package/dist/generated/mapi/core/serverSentEvents.gen.cjs.map +1 -0
  50. package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.d.cts +1 -1
  51. package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.d.mts +1 -1
  52. package/dist/generated/{shared → mapi}/core/serverSentEvents.gen.mjs +1 -1
  53. package/dist/generated/mapi/core/serverSentEvents.gen.mjs.map +1 -0
  54. package/dist/generated/{shared → mapi}/core/types.gen.d.cts +1 -1
  55. package/dist/generated/{shared → mapi}/core/types.gen.d.mts +1 -1
  56. package/dist/generated/{shared → mapi}/core/utils.gen.cjs +1 -1
  57. package/dist/generated/mapi/core/utils.gen.cjs.map +1 -0
  58. package/dist/generated/{shared → mapi}/core/utils.gen.mjs +1 -1
  59. package/dist/generated/mapi/core/utils.gen.mjs.map +1 -0
  60. package/dist/generated/mapi/sdk.gen.cjs +1477 -0
  61. package/dist/generated/mapi/sdk.gen.cjs.map +1 -0
  62. package/dist/generated/mapi/sdk.gen.mjs +1399 -0
  63. package/dist/generated/mapi/sdk.gen.mjs.map +1 -0
  64. package/dist/generated/mapi/types-aliased.gen.d.cts +1428 -0
  65. package/dist/generated/mapi/types-aliased.gen.d.mts +1428 -0
  66. package/dist/generated/mapi/types.gen.d.cts +5075 -0
  67. package/dist/generated/mapi/types.gen.d.mts +5075 -0
  68. package/dist/generated/{components/types.gen.d.cts → overlay/_internal.gen.d.cts} +281 -457
  69. package/dist/generated/{components/types.gen.d.mts → overlay/_internal.gen.d.mts} +281 -457
  70. package/dist/generated/types/_utils.d.cts +7 -0
  71. package/dist/generated/types/_utils.d.mts +7 -0
  72. package/dist/generated/types/block.d.cts +30 -0
  73. package/dist/generated/types/block.d.mts +30 -0
  74. package/dist/generated/types/field.d.cts +75 -0
  75. package/dist/generated/types/field.d.mts +75 -0
  76. package/dist/generated/types/mapi-story.d.cts +29 -0
  77. package/dist/generated/types/mapi-story.d.mts +29 -0
  78. package/dist/index.d.cts +9 -4
  79. package/dist/index.d.mts +9 -4
  80. package/dist/resources/asset-folders.cjs +9 -9
  81. package/dist/resources/asset-folders.cjs.map +1 -1
  82. package/dist/resources/asset-folders.mjs +9 -9
  83. package/dist/resources/asset-folders.mjs.map +1 -1
  84. package/dist/resources/assets.cjs +64 -46
  85. package/dist/resources/assets.cjs.map +1 -1
  86. package/dist/resources/assets.d.cts +23 -28
  87. package/dist/resources/assets.d.mts +23 -28
  88. package/dist/resources/assets.mjs +64 -46
  89. package/dist/resources/assets.mjs.map +1 -1
  90. package/dist/resources/component-folders.cjs +9 -9
  91. package/dist/resources/component-folders.cjs.map +1 -1
  92. package/dist/resources/component-folders.mjs +9 -9
  93. package/dist/resources/component-folders.mjs.map +1 -1
  94. package/dist/resources/components.cjs +28 -20
  95. package/dist/resources/components.cjs.map +1 -1
  96. package/dist/resources/components.d.cts +76 -0
  97. package/dist/resources/components.d.mts +76 -0
  98. package/dist/resources/components.mjs +28 -20
  99. package/dist/resources/components.mjs.map +1 -1
  100. package/dist/resources/datasource-entries.cjs +28 -34
  101. package/dist/resources/datasource-entries.cjs.map +1 -1
  102. package/dist/resources/datasource-entries.mjs +29 -35
  103. package/dist/resources/datasource-entries.mjs.map +1 -1
  104. package/dist/resources/datasources.cjs +27 -9
  105. package/dist/resources/datasources.cjs.map +1 -1
  106. package/dist/resources/datasources.mjs +27 -9
  107. package/dist/resources/datasources.mjs.map +1 -1
  108. package/dist/resources/experiments.cjs +299 -0
  109. package/dist/resources/experiments.cjs.map +1 -0
  110. package/dist/resources/experiments.mjs +299 -0
  111. package/dist/resources/experiments.mjs.map +1 -0
  112. package/dist/resources/internal-tags.cjs +7 -7
  113. package/dist/resources/internal-tags.cjs.map +1 -1
  114. package/dist/resources/internal-tags.mjs +7 -7
  115. package/dist/resources/internal-tags.mjs.map +1 -1
  116. package/dist/resources/presets.cjs +9 -9
  117. package/dist/resources/presets.cjs.map +1 -1
  118. package/dist/resources/presets.mjs +9 -9
  119. package/dist/resources/presets.mjs.map +1 -1
  120. package/dist/resources/shared.cjs +15 -0
  121. package/dist/resources/shared.cjs.map +1 -1
  122. package/dist/resources/shared.mjs +15 -1
  123. package/dist/resources/shared.mjs.map +1 -1
  124. package/dist/resources/spaces.cjs +8 -7
  125. package/dist/resources/spaces.cjs.map +1 -1
  126. package/dist/resources/spaces.d.cts +8 -0
  127. package/dist/resources/spaces.d.mts +7 -0
  128. package/dist/resources/spaces.mjs +8 -7
  129. package/dist/resources/spaces.mjs.map +1 -1
  130. package/dist/resources/stories.cjs +20 -16
  131. package/dist/resources/stories.cjs.map +1 -1
  132. package/dist/resources/stories.d.cts +30 -42
  133. package/dist/resources/stories.d.mts +30 -42
  134. package/dist/resources/stories.mjs +20 -16
  135. package/dist/resources/stories.mjs.map +1 -1
  136. package/dist/resources/users.cjs +3 -3
  137. package/dist/resources/users.cjs.map +1 -1
  138. package/dist/resources/users.mjs +3 -3
  139. package/dist/resources/users.mjs.map +1 -1
  140. package/dist/utils/query-serializer.cjs +54 -0
  141. package/dist/utils/query-serializer.cjs.map +1 -0
  142. package/dist/utils/query-serializer.mjs +54 -0
  143. package/dist/utils/query-serializer.mjs.map +1 -0
  144. package/dist/utils/rate-limit.cjs +15 -74
  145. package/dist/utils/rate-limit.cjs.map +1 -1
  146. package/dist/utils/rate-limit.d.cts +5 -6
  147. package/dist/utils/rate-limit.d.mts +5 -6
  148. package/dist/utils/rate-limit.mjs +15 -74
  149. package/dist/utils/rate-limit.mjs.map +1 -1
  150. package/package.json +13 -13
  151. package/playground/integration-tests/README.md +24 -0
  152. package/playground/integration-tests/eslint.config.js +5 -0
  153. package/playground/integration-tests/node_modules/.bin/eslint +16 -0
  154. package/playground/integration-tests/node_modules/.bin/tsc +16 -0
  155. package/playground/integration-tests/node_modules/.bin/tsserver +16 -0
  156. package/playground/integration-tests/node_modules/.bin/vitest +16 -0
  157. package/playground/integration-tests/package.json +24 -0
  158. package/{test → playground/integration-tests/test}/setup.e2e.ts +2 -2
  159. package/{test → playground/integration-tests/test}/specs/mapi-round-trip.spec.e2e.ts +1 -1
  160. package/playground/integration-tests/test/types/components.test-d.ts +113 -0
  161. package/playground/integration-tests/test/types/resources.test-d.ts +364 -0
  162. package/playground/integration-tests/test/types/stories.test-d.ts +306 -0
  163. package/{vitest.config.e2e.ts → playground/integration-tests/vitest.config.e2e.ts} +1 -2
  164. package/playground/integration-tests/vitest.config.ts +13 -0
  165. package/test/GUIDE.md +2 -2
  166. package/vitest.config.ts +2 -0
  167. package/dist/generated/asset_folders/client.gen.cjs +0 -10
  168. package/dist/generated/asset_folders/client.gen.cjs.map +0 -1
  169. package/dist/generated/asset_folders/client.gen.mjs +0 -10
  170. package/dist/generated/asset_folders/client.gen.mjs.map +0 -1
  171. package/dist/generated/asset_folders/sdk.gen.cjs +0 -99
  172. package/dist/generated/asset_folders/sdk.gen.cjs.map +0 -1
  173. package/dist/generated/asset_folders/sdk.gen.mjs +0 -95
  174. package/dist/generated/asset_folders/sdk.gen.mjs.map +0 -1
  175. package/dist/generated/asset_folders/types.gen.d.cts +0 -130
  176. package/dist/generated/asset_folders/types.gen.d.mts +0 -130
  177. package/dist/generated/assets/client.gen.cjs +0 -10
  178. package/dist/generated/assets/client.gen.cjs.map +0 -1
  179. package/dist/generated/assets/client.gen.mjs +0 -10
  180. package/dist/generated/assets/client.gen.mjs.map +0 -1
  181. package/dist/generated/assets/sdk.gen.cjs +0 -179
  182. package/dist/generated/assets/sdk.gen.cjs.map +0 -1
  183. package/dist/generated/assets/sdk.gen.mjs +0 -171
  184. package/dist/generated/assets/sdk.gen.mjs.map +0 -1
  185. package/dist/generated/assets/types.gen.d.cts +0 -343
  186. package/dist/generated/assets/types.gen.d.mts +0 -343
  187. package/dist/generated/component_folders/client.gen.cjs +0 -10
  188. package/dist/generated/component_folders/client.gen.cjs.map +0 -1
  189. package/dist/generated/component_folders/client.gen.mjs +0 -10
  190. package/dist/generated/component_folders/client.gen.mjs.map +0 -1
  191. package/dist/generated/component_folders/sdk.gen.cjs +0 -99
  192. package/dist/generated/component_folders/sdk.gen.cjs.map +0 -1
  193. package/dist/generated/component_folders/sdk.gen.mjs +0 -95
  194. package/dist/generated/component_folders/sdk.gen.mjs.map +0 -1
  195. package/dist/generated/component_folders/types.gen.d.cts +0 -102
  196. package/dist/generated/component_folders/types.gen.d.mts +0 -102
  197. package/dist/generated/components/client.gen.cjs +0 -10
  198. package/dist/generated/components/client.gen.cjs.map +0 -1
  199. package/dist/generated/components/client.gen.mjs +0 -10
  200. package/dist/generated/components/client.gen.mjs.map +0 -1
  201. package/dist/generated/components/sdk.gen.cjs +0 -171
  202. package/dist/generated/components/sdk.gen.cjs.map +0 -1
  203. package/dist/generated/components/sdk.gen.mjs +0 -163
  204. package/dist/generated/components/sdk.gen.mjs.map +0 -1
  205. package/dist/generated/datasource_entries/client.gen.cjs +0 -10
  206. package/dist/generated/datasource_entries/client.gen.cjs.map +0 -1
  207. package/dist/generated/datasource_entries/client.gen.mjs +0 -10
  208. package/dist/generated/datasource_entries/client.gen.mjs.map +0 -1
  209. package/dist/generated/datasource_entries/sdk.gen.cjs +0 -89
  210. package/dist/generated/datasource_entries/sdk.gen.cjs.map +0 -1
  211. package/dist/generated/datasource_entries/sdk.gen.mjs +0 -85
  212. package/dist/generated/datasource_entries/sdk.gen.mjs.map +0 -1
  213. package/dist/generated/datasource_entries/types.gen.d.cts +0 -130
  214. package/dist/generated/datasource_entries/types.gen.d.mts +0 -130
  215. package/dist/generated/datasources/client.gen.cjs +0 -10
  216. package/dist/generated/datasources/client.gen.cjs.map +0 -1
  217. package/dist/generated/datasources/client.gen.mjs +0 -10
  218. package/dist/generated/datasources/client.gen.mjs.map +0 -1
  219. package/dist/generated/datasources/sdk.gen.cjs +0 -89
  220. package/dist/generated/datasources/sdk.gen.cjs.map +0 -1
  221. package/dist/generated/datasources/sdk.gen.mjs +0 -85
  222. package/dist/generated/datasources/sdk.gen.mjs.map +0 -1
  223. package/dist/generated/datasources/types.gen.d.cts +0 -165
  224. package/dist/generated/datasources/types.gen.d.mts +0 -165
  225. package/dist/generated/internal_tags/client.gen.cjs +0 -10
  226. package/dist/generated/internal_tags/client.gen.cjs.map +0 -1
  227. package/dist/generated/internal_tags/client.gen.mjs +0 -10
  228. package/dist/generated/internal_tags/client.gen.mjs.map +0 -1
  229. package/dist/generated/internal_tags/sdk.gen.cjs +0 -74
  230. package/dist/generated/internal_tags/sdk.gen.cjs.map +0 -1
  231. package/dist/generated/internal_tags/sdk.gen.mjs +0 -71
  232. package/dist/generated/internal_tags/sdk.gen.mjs.map +0 -1
  233. package/dist/generated/internal_tags/types.gen.d.cts +0 -102
  234. package/dist/generated/internal_tags/types.gen.d.mts +0 -102
  235. package/dist/generated/presets/client.gen.cjs +0 -10
  236. package/dist/generated/presets/client.gen.cjs.map +0 -1
  237. package/dist/generated/presets/client.gen.mjs +0 -10
  238. package/dist/generated/presets/client.gen.mjs.map +0 -1
  239. package/dist/generated/presets/sdk.gen.cjs +0 -99
  240. package/dist/generated/presets/sdk.gen.cjs.map +0 -1
  241. package/dist/generated/presets/sdk.gen.mjs +0 -95
  242. package/dist/generated/presets/sdk.gen.mjs.map +0 -1
  243. package/dist/generated/presets/types.gen.d.cts +0 -171
  244. package/dist/generated/presets/types.gen.d.mts +0 -171
  245. package/dist/generated/shared/client/client.gen.cjs.map +0 -1
  246. package/dist/generated/shared/client/client.gen.mjs.map +0 -1
  247. package/dist/generated/shared/client/utils.gen.cjs.map +0 -1
  248. package/dist/generated/shared/client/utils.gen.mjs.map +0 -1
  249. package/dist/generated/shared/core/auth.gen.cjs.map +0 -1
  250. package/dist/generated/shared/core/auth.gen.mjs.map +0 -1
  251. package/dist/generated/shared/core/bodySerializer.gen.cjs.map +0 -1
  252. package/dist/generated/shared/core/bodySerializer.gen.mjs.map +0 -1
  253. package/dist/generated/shared/core/params.gen.cjs.map +0 -1
  254. package/dist/generated/shared/core/params.gen.mjs.map +0 -1
  255. package/dist/generated/shared/core/pathSerializer.gen.cjs.map +0 -1
  256. package/dist/generated/shared/core/pathSerializer.gen.mjs.map +0 -1
  257. package/dist/generated/shared/core/serverSentEvents.gen.cjs.map +0 -1
  258. package/dist/generated/shared/core/serverSentEvents.gen.mjs.map +0 -1
  259. package/dist/generated/shared/core/utils.gen.cjs.map +0 -1
  260. package/dist/generated/shared/core/utils.gen.mjs.map +0 -1
  261. package/dist/generated/spaces/client.gen.cjs +0 -10
  262. package/dist/generated/spaces/client.gen.cjs.map +0 -1
  263. package/dist/generated/spaces/client.gen.mjs +0 -10
  264. package/dist/generated/spaces/client.gen.mjs.map +0 -1
  265. package/dist/generated/spaces/sdk.gen.cjs +0 -99
  266. package/dist/generated/spaces/sdk.gen.cjs.map +0 -1
  267. package/dist/generated/spaces/sdk.gen.mjs +0 -95
  268. package/dist/generated/spaces/sdk.gen.mjs.map +0 -1
  269. package/dist/generated/spaces/types.gen.d.cts +0 -504
  270. package/dist/generated/spaces/types.gen.d.mts +0 -504
  271. package/dist/generated/stories/client.gen.cjs +0 -10
  272. package/dist/generated/stories/client.gen.cjs.map +0 -1
  273. package/dist/generated/stories/client.gen.mjs +0 -10
  274. package/dist/generated/stories/client.gen.mjs.map +0 -1
  275. package/dist/generated/stories/sdk.gen.cjs +0 -138
  276. package/dist/generated/stories/sdk.gen.cjs.map +0 -1
  277. package/dist/generated/stories/sdk.gen.mjs +0 -131
  278. package/dist/generated/stories/sdk.gen.mjs.map +0 -1
  279. package/dist/generated/stories/types.gen.d.cts +0 -1314
  280. package/dist/generated/stories/types.gen.d.mts +0 -1314
  281. package/dist/generated/users/client.gen.cjs +0 -10
  282. package/dist/generated/users/client.gen.cjs.map +0 -1
  283. package/dist/generated/users/client.gen.mjs +0 -10
  284. package/dist/generated/users/client.gen.mjs.map +0 -1
  285. package/dist/generated/users/sdk.gen.cjs +0 -44
  286. package/dist/generated/users/sdk.gen.cjs.map +0 -1
  287. package/dist/generated/users/sdk.gen.mjs +0 -43
  288. package/dist/generated/users/sdk.gen.mjs.map +0 -1
  289. package/dist/generated/users/types.gen.d.cts +0 -249
  290. package/dist/generated/users/types.gen.d.mts +0 -249
  291. /package/dist/generated/{shared → mapi}/client/client.gen.d.mts +0 -0
  292. /package/dist/generated/{shared → mapi}/client/index.cjs +0 -0
  293. /package/dist/generated/{shared → mapi}/client/index.d.mts +0 -0
  294. /package/dist/generated/{shared → mapi}/client/index.mjs +0 -0
@@ -0,0 +1,306 @@
1
+ import { defineBlock, defineField, defineStoryCreate, defineStoryUpdate } from '@storyblok/schema';
2
+ import { createManagementApiClient, type Story as StoryMapi } from '@storyblok/management-api-client';
3
+ import { describe, expectTypeOf, it } from 'vitest';
4
+
5
+ // Nestable block — not a root story type
6
+ const teaserComponent = defineBlock({
7
+ name: 'teaser',
8
+ schema: [
9
+ defineField('text', { type: 'text' }),
10
+ defineField('image', { type: 'asset' }),
11
+ ],
12
+ id: 0,
13
+ created_at: '',
14
+ updated_at: '',
15
+ });
16
+
17
+ // Root content type that is also nestable (can appear as both a story and inside bloks)
18
+ const heroComponent = defineBlock({
19
+ name: 'hero',
20
+ is_root: true,
21
+ schema: [
22
+ defineField('title', { type: 'text' }),
23
+ defineField('count', { type: 'number' }),
24
+ // bloks field without a whitelist — resolves to nestable components only
25
+ defineField('sections', { type: 'bloks' }),
26
+ ],
27
+ id: 0,
28
+ created_at: '',
29
+ updated_at: '',
30
+ });
31
+
32
+ // Root content type, not nestable
33
+ const _pageComponent = defineBlock({
34
+ name: 'page',
35
+ is_root: true,
36
+ is_nestable: false,
37
+ schema: [
38
+ defineField('headline', { type: 'text' }),
39
+ defineField('body', { type: 'richtext' }),
40
+ defineField('teasers', { type: 'bloks', component_whitelist: [teaserComponent.name] }),
41
+ defineField('hero', { type: 'bloks', component_whitelist: [heroComponent.name] }),
42
+ defineField('blocks', { type: 'bloks', component_whitelist: [heroComponent.name, teaserComponent.name] }),
43
+ ],
44
+ id: 0,
45
+ created_at: '',
46
+ updated_at: '',
47
+ });
48
+
49
+ const CLIENT_CONFIG = { personalAccessToken: 'test-token', spaceId: 12345 };
50
+
51
+ interface StoryblokTypes {
52
+ components: typeof _pageComponent | typeof heroComponent | typeof teaserComponent;
53
+ }
54
+
55
+ describe('createManagementApiClient without .withTypes()', () => {
56
+ it('should return StoryMapi from stories.get()', async () => {
57
+ const client = createManagementApiClient(CLIENT_CONFIG);
58
+ const result = await client.stories.get(123);
59
+ if (result.data) {
60
+ expectTypeOf(result.data.story).toEqualTypeOf<StoryMapi | undefined>();
61
+ }
62
+ });
63
+
64
+ it('should return StoryMapi array from stories.list()', async () => {
65
+ const client = createManagementApiClient(CLIENT_CONFIG);
66
+ const result = await client.stories.list();
67
+ if (result.data) {
68
+ expectTypeOf(result.data.stories).toEqualTypeOf<StoryMapi[] | undefined>();
69
+ }
70
+ });
71
+
72
+ it('should infer ThrowOnError from config without .withTypes()', async () => {
73
+ const client = createManagementApiClient({ ...CLIENT_CONFIG, throwOnError: true });
74
+ const result = await client.stories.get(123);
75
+ // ThrowOnError=true means data is always defined (no optional chaining needed)
76
+ expectTypeOf(result.data.story).toEqualTypeOf<StoryMapi | undefined>();
77
+ });
78
+
79
+ it('should allow per-call throwOnError override to false', async () => {
80
+ const client = createManagementApiClient({ ...CLIENT_CONFIG, throwOnError: true });
81
+ const result = await client.stories.get(123, { throwOnError: false });
82
+ if (result.data) {
83
+ expectTypeOf(result.data.story).toEqualTypeOf<StoryMapi | undefined>();
84
+ }
85
+ });
86
+ });
87
+
88
+ describe('createManagementApiClient with .withTypes()', () => {
89
+ it('should narrow page content fields after component discriminant check on get()', async () => {
90
+ const client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
91
+ const result = await client.stories.get(123);
92
+ if (result.data?.story) {
93
+ const story = result.data.story;
94
+ if (story.content.component === 'page') {
95
+ expectTypeOf(story.content.headline).toEqualTypeOf<string | null | undefined>();
96
+ expectTypeOf(story.content.component).toEqualTypeOf<'page'>();
97
+ }
98
+ }
99
+ });
100
+
101
+ it('should narrow hero content fields after component discriminant check on get()', async () => {
102
+ const client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
103
+ const result = await client.stories.get(123);
104
+ if (result.data?.story) {
105
+ const story = result.data.story;
106
+ if (story.content.component === 'hero') {
107
+ expectTypeOf(story.content.title).toEqualTypeOf<string | null | undefined>();
108
+ expectTypeOf(story.content.count).toEqualTypeOf<number | null | undefined>();
109
+ expectTypeOf(story.content.component).toEqualTypeOf<'hero'>();
110
+ }
111
+ }
112
+ });
113
+
114
+ it('should have union of literal component names on content', async () => {
115
+ const client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
116
+ const result = await client.stories.get(123);
117
+ if (result.data?.story) {
118
+ // Only root components (is_root: true) appear in story content
119
+ expectTypeOf(result.data.story.content.component).toEqualTypeOf<'page' | 'hero'>();
120
+ }
121
+ });
122
+
123
+ it('should narrow discriminated union in stories.list()', async () => {
124
+ const client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
125
+ const result = await client.stories.list();
126
+ if (result.data?.stories) {
127
+ for (const story of result.data.stories) {
128
+ if (story.content.component === 'page') {
129
+ expectTypeOf(story.content.headline).toEqualTypeOf<string | null | undefined>();
130
+ }
131
+ if (story.content.component === 'hero') {
132
+ expectTypeOf(story.content.count).toEqualTypeOf<number | null | undefined>();
133
+ }
134
+ }
135
+ }
136
+ });
137
+
138
+ it('should narrow bloks field on page to whitelisted component names', async () => {
139
+ const client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
140
+ const result = await client.stories.get(123);
141
+ if (result.data?.story) {
142
+ const story = result.data.story;
143
+ if (story.content.component === 'page') {
144
+ if (story.content.teasers) {
145
+ for (const teaser of story.content.teasers) {
146
+ expectTypeOf(teaser.component).toEqualTypeOf<'teaser'>();
147
+ expectTypeOf(teaser.text).toEqualTypeOf<string | null | undefined>();
148
+ }
149
+ }
150
+ if (story.content.hero) {
151
+ for (const hero of story.content.hero) {
152
+ expectTypeOf(hero.component).toEqualTypeOf<'hero'>();
153
+ expectTypeOf(hero.count).toEqualTypeOf<number | null | undefined>();
154
+ }
155
+ }
156
+ if (story.content.blocks) {
157
+ for (const blok of story.content.blocks) {
158
+ // blocks whitelists both hero and teaser → union of the two
159
+ expectTypeOf(blok.component).toEqualTypeOf<'hero' | 'teaser'>();
160
+ }
161
+ }
162
+ }
163
+ }
164
+ });
165
+
166
+ it('should fall back to all schema components for bloks field without whitelist', async () => {
167
+ const client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
168
+ const result = await client.stories.get(123);
169
+ if (result.data?.story) {
170
+ const story = result.data.story;
171
+ if (story.content.component === 'hero' && story.content.sections) {
172
+ // sections has no component_whitelist — falls back to nestable (is_nestable: true)
173
+ // components only; page has is_nestable: false, so it is excluded
174
+ type Sections = typeof story.content.sections;
175
+ expectTypeOf<Sections[number]['component']>().toEqualTypeOf<'hero' | 'teaser'>();
176
+ }
177
+ }
178
+ });
179
+
180
+ it('should infer ThrowOnError alongside .withTypes()', async () => {
181
+ const client = createManagementApiClient({ ...CLIENT_CONFIG, throwOnError: true }).withTypes<StoryblokTypes>();
182
+ const result = await client.stories.get(123);
183
+ if (result.data.story) {
184
+ // ThrowOnError=true keeps data defined; only root components appear in content
185
+ expectTypeOf(result.data.story.content.component).toEqualTypeOf<'page' | 'hero'>();
186
+ }
187
+ });
188
+
189
+ it('should allow per-call throwOnError override to false alongside .withTypes()', async () => {
190
+ const client = createManagementApiClient({ ...CLIENT_CONFIG, throwOnError: true }).withTypes<StoryblokTypes>();
191
+ const result = await client.stories.get(123, { throwOnError: false });
192
+ if (result.data?.story) {
193
+ expectTypeOf(result.data.story.content.component).toEqualTypeOf<'page' | 'hero'>();
194
+ }
195
+ });
196
+
197
+ it('should narrow story in create() response', async () => {
198
+ const client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
199
+ const result = await client.stories.create({
200
+ body: { story: { name: 'My Page', content: { component: 'page' } } },
201
+ });
202
+ if (result.data?.story) {
203
+ const story = result.data.story;
204
+ if (story.content.component === 'page') {
205
+ expectTypeOf(story.content.headline).toEqualTypeOf<string | null | undefined>();
206
+ }
207
+ }
208
+ });
209
+
210
+ it('should narrow story in update() response', async () => {
211
+ const client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
212
+ const result = await client.stories.update(123, {
213
+ body: { story: { content: { component: 'hero' } } },
214
+ });
215
+ if (result.data?.story) {
216
+ const story = result.data.story;
217
+ if (story.content.component === 'hero') {
218
+ expectTypeOf(story.content.title).toEqualTypeOf<string | null | undefined>();
219
+ }
220
+ }
221
+ });
222
+
223
+ it('should narrow create() body story.content to component union', async () => {
224
+ const _client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
225
+ type CreateBodyType = Parameters<typeof _client.stories.create>[0]['body'];
226
+ type CreateStoryContent = NonNullable<CreateBodyType['story']['content']>;
227
+ // The write payload's content discriminant is narrowed to root component names too
228
+ expectTypeOf<CreateStoryContent['component']>().toEqualTypeOf<'page' | 'hero'>();
229
+ });
230
+
231
+ it('should narrow update() body story.content to component union', async () => {
232
+ const _client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
233
+ type UpdateBodyType = Parameters<typeof _client.stories.update>[1]['body'];
234
+ type UpdateStoryContent = NonNullable<UpdateBodyType['story']['content']>;
235
+ // update() is the second positional arg (id, body); content discriminant is the root union
236
+ expectTypeOf<UpdateStoryContent['component']>().toEqualTypeOf<'page' | 'hero'>();
237
+ });
238
+ });
239
+
240
+ describe('defineStoryCreate / defineStoryUpdate combined with mapi client', () => {
241
+ it('should produce a defineStoryCreate result accepted by untyped stories.create', async () => {
242
+ const createPayload = defineStoryCreate(_pageComponent, {
243
+ name: 'My Page',
244
+ content: { headline: 'Hello' },
245
+ });
246
+
247
+ const client = createManagementApiClient(CLIENT_CONFIG);
248
+ await client.stories.create({ body: { story: createPayload } });
249
+ });
250
+
251
+ it('should produce a defineStoryUpdate result accepted by untyped stories.update', async () => {
252
+ const updatePayload = defineStoryUpdate(_pageComponent, {
253
+ content: { headline: 'Updated' },
254
+ });
255
+
256
+ const client = createManagementApiClient(CLIENT_CONFIG);
257
+ await client.stories.update(1, { body: { story: updatePayload } });
258
+ });
259
+
260
+ it('should produce a defineStoryCreate result for hero component accepted by untyped stories.create', async () => {
261
+ const createPayload = defineStoryCreate(heroComponent, {
262
+ name: 'My Hero',
263
+ content: { title: 'Welcome', count: 42, sections: [] },
264
+ });
265
+
266
+ const client = createManagementApiClient(CLIENT_CONFIG);
267
+ await client.stories.create({ body: { story: createPayload } });
268
+ });
269
+
270
+ it('should reject nestable-only component name in create body content', () => {
271
+ const client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
272
+ client.stories.create({
273
+ // @ts-expect-error: teaser is nestable-only, not a root component
274
+ body: { story: { name: 'Bad', content: { component: 'teaser' } } },
275
+ });
276
+ });
277
+
278
+ it('should reject wrong field value type in create body content', () => {
279
+ const client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
280
+ client.stories.create({
281
+ body: { story: { name: 'Bad', content: {
282
+ component: 'page',
283
+ // @ts-expect-error: headline must be string, not number
284
+ headline: 123,
285
+ } } },
286
+ });
287
+ });
288
+
289
+ it('should return a typed story with content.component as discriminant from stories.get', async () => {
290
+ const client = createManagementApiClient(CLIENT_CONFIG).withTypes<StoryblokTypes>();
291
+ const result = await client.stories.get(123);
292
+
293
+ if (result.data?.story) {
294
+ const story = result.data.story;
295
+ expectTypeOf(story.content.component).toEqualTypeOf<'page' | 'hero'>();
296
+
297
+ if (story.content.component === 'page') {
298
+ const updatePayload = defineStoryUpdate(_pageComponent, {
299
+ name: story.name,
300
+ content: { headline: story.content.headline ?? 'Default' },
301
+ });
302
+ expectTypeOf(updatePayload).toMatchTypeOf<{ name?: string | null }>();
303
+ }
304
+ }
305
+ });
306
+ });
@@ -5,7 +5,7 @@ import { defineConfig } from 'vitest/config';
5
5
  * Vitest config for end-to-end tests that hit the real Storyblok Management API.
6
6
  *
7
7
  * These tests are NOT run in CI. Trigger them manually:
8
- * pnpm --filter @storyblok/management-api-client test:e2e
8
+ * pnpm --filter @storyblok/mapi-integration-tests test:e2e
9
9
  *
10
10
  * Prerequisites:
11
11
  * - A .env.qa-engineer-manual file at the repo root with STORYBLOK_TOKEN and STORYBLOK_SPACE_ID.
@@ -18,7 +18,6 @@ export default defineConfig({
18
18
  globals: true,
19
19
  testTimeout: 60_000,
20
20
  hookTimeout: 120_000,
21
- // Run tests sequentially to avoid MAPI rate-limit issues
22
21
  sequence: {
23
22
  concurrent: false,
24
23
  },
@@ -0,0 +1,13 @@
1
+ /// <reference types="vitest" />
2
+ import { defineConfig } from 'vitest/config';
3
+
4
+ export default defineConfig({
5
+ test: {
6
+ environment: 'node',
7
+ include: [],
8
+ typecheck: {
9
+ enabled: true,
10
+ include: ['./test/types/**/*.test-d.ts'],
11
+ },
12
+ },
13
+ });
package/test/GUIDE.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## Automated e2e tests
6
6
 
7
- `test/specs/mapi-round-trip.spec.e2e.ts` covers the full round-trip against a real Storyblok space:
7
+ The `@storyblok/mapi-integration-tests` package (`packages/mapi-client/playground/integration-tests`) covers the full round-trip against a real Storyblok space in `test/specs/mapi-round-trip.spec.e2e.ts`:
8
8
 
9
9
  - Seeds components, datasources, internal tags, presets, and stories via the MAPI.
10
10
  - Validates runtime values, type narrowing, nested bloks (two- and three-level), unwhitelisted bloks, and update round-trips.
@@ -13,7 +13,7 @@
13
13
  Run manually:
14
14
 
15
15
  ```bash
16
- pnpm --filter @storyblok/management-api-client test:e2e
16
+ pnpm --filter @storyblok/mapi-integration-tests test:e2e
17
17
  ```
18
18
 
19
19
  ### Prerequisites
package/vitest.config.ts CHANGED
@@ -4,8 +4,10 @@ import { defineConfig } from 'vitest/config';
4
4
  export default defineConfig({
5
5
  test: {
6
6
  environment: 'node',
7
+ exclude: ['**/node_modules/**', '**/dist/**', './playground/**'],
7
8
  typecheck: {
8
9
  enabled: true,
10
+ exclude: ['**/node_modules/**', '**/dist/**', './playground/**'],
9
11
  },
10
12
  },
11
13
  });
@@ -1,10 +0,0 @@
1
- const require_utils_gen = require('../shared/client/utils.gen.cjs');
2
- const require_client_gen = require('../shared/client/client.gen.cjs');
3
- require('../shared/client/index.cjs');
4
-
5
- //#region src/generated/asset_folders/client.gen.ts
6
- const client = require_client_gen.createClient(require_utils_gen.createConfig({ baseUrl: "https://mapi.storyblok.com" }));
7
-
8
- //#endregion
9
- exports.client = client;
10
- //# sourceMappingURL=client.gen.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.gen.cjs","names":["createClient","createConfig"],"sources":["../../../src/generated/asset_folders/client.gen.ts"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from '../shared/client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://mapi.storyblok.com' }));\n"],"mappings":";;;;;AAeA,MAAa,SAASA,gCAAaC,+BAA6B,EAAE,SAAS,8BAA8B,CAAC,CAAC"}
@@ -1,10 +0,0 @@
1
- import { createConfig } from "../shared/client/utils.gen.mjs";
2
- import { createClient } from "../shared/client/client.gen.mjs";
3
- import "../shared/client/index.mjs";
4
-
5
- //#region src/generated/asset_folders/client.gen.ts
6
- const client = createClient(createConfig({ baseUrl: "https://mapi.storyblok.com" }));
7
-
8
- //#endregion
9
- export { client };
10
- //# sourceMappingURL=client.gen.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.gen.mjs","names":[],"sources":["../../../src/generated/asset_folders/client.gen.ts"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nimport { type ClientOptions, type Config, createClient, createConfig } from '../shared/client';\nimport type { ClientOptions as ClientOptions2 } from './types.gen';\n\n/**\n * The `createClientConfig()` function will be called on client initialization\n * and the returned object will become the client's initial configuration.\n *\n * You may want to initialize your client this way instead of calling\n * `setConfig()`. This is useful for example if you're using Next.js\n * to ensure your client always has the correct values.\n */\nexport type CreateClientConfig<T extends ClientOptions = ClientOptions2> = (override?: Config<ClientOptions & T>) => Config<Required<ClientOptions> & T>;\n\nexport const client = createClient(createConfig<ClientOptions2>({ baseUrl: 'https://mapi.storyblok.com' }));\n"],"mappings":";;;;;AAeA,MAAa,SAAS,aAAa,aAA6B,EAAE,SAAS,8BAA8B,CAAC,CAAC"}
@@ -1,99 +0,0 @@
1
- const require_client_gen = require('./client.gen.cjs');
2
-
3
- //#region src/generated/asset_folders/sdk.gen.ts
4
- /**
5
- * Retrieve Multiple Asset Folders
6
- *
7
- * An asset folder can be used to organize assets together. Each asset can belong to only one folder. Asset folders support hierarchical nesting via parent_id. This endpoint allows you to manage asset folders. You can use it to retrieve, create, update, or delete asset folders.
8
- */
9
- const list = (options) => (options.client ?? require_client_gen.client).get({
10
- security: [{
11
- name: "Authorization",
12
- type: "apiKey"
13
- }, {
14
- scheme: "bearer",
15
- type: "http"
16
- }],
17
- url: "/v1/spaces/{space_id}/asset_folders",
18
- ...options
19
- });
20
- /**
21
- * Create an Asset Folder
22
- *
23
- * An asset folder can be used to organize assets together. Each asset can belong to only one folder. Asset folders support hierarchical nesting via parent_id. This endpoint allows you to manage asset folders. You can use it to retrieve, create, update, or delete asset folders.
24
- */
25
- const create = (options) => (options.client ?? require_client_gen.client).post({
26
- security: [{
27
- name: "Authorization",
28
- type: "apiKey"
29
- }, {
30
- scheme: "bearer",
31
- type: "http"
32
- }],
33
- url: "/v1/spaces/{space_id}/asset_folders",
34
- ...options,
35
- headers: {
36
- "Content-Type": "application/json",
37
- ...options.headers
38
- }
39
- });
40
- /**
41
- * Delete an Asset Folder
42
- *
43
- * Operations for a specific asset folder
44
- */
45
- const delete_ = (options) => (options.client ?? require_client_gen.client).delete({
46
- security: [{
47
- name: "Authorization",
48
- type: "apiKey"
49
- }, {
50
- scheme: "bearer",
51
- type: "http"
52
- }],
53
- url: "/v1/spaces/{space_id}/asset_folders/{asset_folder_id}",
54
- ...options
55
- });
56
- /**
57
- * Retrieve a Single Asset Folder
58
- *
59
- * Operations for a specific asset folder
60
- */
61
- const get = (options) => (options.client ?? require_client_gen.client).get({
62
- security: [{
63
- name: "Authorization",
64
- type: "apiKey"
65
- }, {
66
- scheme: "bearer",
67
- type: "http"
68
- }],
69
- url: "/v1/spaces/{space_id}/asset_folders/{asset_folder_id}",
70
- ...options
71
- });
72
- /**
73
- * Update an Asset Folder
74
- *
75
- * Operations for a specific asset folder
76
- */
77
- const update = (options) => (options.client ?? require_client_gen.client).put({
78
- security: [{
79
- name: "Authorization",
80
- type: "apiKey"
81
- }, {
82
- scheme: "bearer",
83
- type: "http"
84
- }],
85
- url: "/v1/spaces/{space_id}/asset_folders/{asset_folder_id}",
86
- ...options,
87
- headers: {
88
- "Content-Type": "application/json",
89
- ...options.headers
90
- }
91
- });
92
-
93
- //#endregion
94
- exports.create = create;
95
- exports.delete_ = delete_;
96
- exports.get = get;
97
- exports.list = list;
98
- exports.update = update;
99
- //# sourceMappingURL=sdk.gen.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sdk.gen.cjs","names":["client"],"sources":["../../../src/generated/asset_folders/sdk.gen.ts"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, Options as Options2, TDataShape } from '../shared/client';\nimport { client } from './client.gen';\nimport type { CreateData, CreateErrors, CreateResponses, DeleteData, DeleteErrors, DeleteResponses, GetData, GetErrors, GetResponses, ListData, ListErrors, ListResponses, UpdateData, UpdateErrors, UpdateResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options2<TData, ThrowOnError> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\n/**\n * Retrieve Multiple Asset Folders\n *\n * An asset folder can be used to organize assets together. Each asset can belong to only one folder. Asset folders support hierarchical nesting via parent_id. This endpoint allows you to manage asset folders. You can use it to retrieve, create, update, or delete asset folders.\n */\nexport const list = <ThrowOnError extends boolean = false>(options: Options<ListData, ThrowOnError>) => (options.client ?? client).get<ListResponses, ListErrors, ThrowOnError>({\n security: [{ name: 'Authorization', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/v1/spaces/{space_id}/asset_folders',\n ...options\n});\n\n/**\n * Create an Asset Folder\n *\n * An asset folder can be used to organize assets together. Each asset can belong to only one folder. Asset folders support hierarchical nesting via parent_id. This endpoint allows you to manage asset folders. You can use it to retrieve, create, update, or delete asset folders.\n */\nexport const create = <ThrowOnError extends boolean = false>(options: Options<CreateData, ThrowOnError>) => (options.client ?? client).post<CreateResponses, CreateErrors, ThrowOnError>({\n security: [{ name: 'Authorization', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/v1/spaces/{space_id}/asset_folders',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete an Asset Folder\n *\n * Operations for a specific asset folder\n */\nexport const delete_ = <ThrowOnError extends boolean = false>(options: Options<DeleteData, ThrowOnError>) => (options.client ?? client).delete<DeleteResponses, DeleteErrors, ThrowOnError>({\n security: [{ name: 'Authorization', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/v1/spaces/{space_id}/asset_folders/{asset_folder_id}',\n ...options\n});\n\n/**\n * Retrieve a Single Asset Folder\n *\n * Operations for a specific asset folder\n */\nexport const get = <ThrowOnError extends boolean = false>(options: Options<GetData, ThrowOnError>) => (options.client ?? client).get<GetResponses, GetErrors, ThrowOnError>({\n security: [{ name: 'Authorization', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/v1/spaces/{space_id}/asset_folders/{asset_folder_id}',\n ...options\n});\n\n/**\n * Update an Asset Folder\n *\n * Operations for a specific asset folder\n */\nexport const update = <ThrowOnError extends boolean = false>(options: Options<UpdateData, ThrowOnError>) => (options.client ?? client).put<UpdateResponses, UpdateErrors, ThrowOnError>({\n security: [{ name: 'Authorization', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/v1/spaces/{space_id}/asset_folders/{asset_folder_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n"],"mappings":";;;;;;;;AAyBA,MAAa,QAA8C,aAA8C,QAAQ,UAAUA,2BAAQ,IAA6C;CAC5K,UAAU,CAAC;EAAE,MAAM;EAAiB,MAAM;EAAU,EAAE;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CACzF,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,UAAgD,aAAgD,QAAQ,UAAUA,2BAAQ,KAAkD;CACrL,UAAU,CAAC;EAAE,MAAM;EAAiB,MAAM;EAAU,EAAE;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CACzF,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;AAOF,MAAa,WAAiD,aAAgD,QAAQ,UAAUA,2BAAQ,OAAoD;CACxL,UAAU,CAAC;EAAE,MAAM;EAAiB,MAAM;EAAU,EAAE;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CACzF,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,OAA6C,aAA6C,QAAQ,UAAUA,2BAAQ,IAA2C;CACxK,UAAU,CAAC;EAAE,MAAM;EAAiB,MAAM;EAAU,EAAE;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CACzF,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,UAAgD,aAAgD,QAAQ,UAAUA,2BAAQ,IAAiD;CACpL,UAAU,CAAC;EAAE,MAAM;EAAiB,MAAM;EAAU,EAAE;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CACzF,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC"}
@@ -1,95 +0,0 @@
1
- import { client } from "./client.gen.mjs";
2
-
3
- //#region src/generated/asset_folders/sdk.gen.ts
4
- /**
5
- * Retrieve Multiple Asset Folders
6
- *
7
- * An asset folder can be used to organize assets together. Each asset can belong to only one folder. Asset folders support hierarchical nesting via parent_id. This endpoint allows you to manage asset folders. You can use it to retrieve, create, update, or delete asset folders.
8
- */
9
- const list = (options) => (options.client ?? client).get({
10
- security: [{
11
- name: "Authorization",
12
- type: "apiKey"
13
- }, {
14
- scheme: "bearer",
15
- type: "http"
16
- }],
17
- url: "/v1/spaces/{space_id}/asset_folders",
18
- ...options
19
- });
20
- /**
21
- * Create an Asset Folder
22
- *
23
- * An asset folder can be used to organize assets together. Each asset can belong to only one folder. Asset folders support hierarchical nesting via parent_id. This endpoint allows you to manage asset folders. You can use it to retrieve, create, update, or delete asset folders.
24
- */
25
- const create = (options) => (options.client ?? client).post({
26
- security: [{
27
- name: "Authorization",
28
- type: "apiKey"
29
- }, {
30
- scheme: "bearer",
31
- type: "http"
32
- }],
33
- url: "/v1/spaces/{space_id}/asset_folders",
34
- ...options,
35
- headers: {
36
- "Content-Type": "application/json",
37
- ...options.headers
38
- }
39
- });
40
- /**
41
- * Delete an Asset Folder
42
- *
43
- * Operations for a specific asset folder
44
- */
45
- const delete_ = (options) => (options.client ?? client).delete({
46
- security: [{
47
- name: "Authorization",
48
- type: "apiKey"
49
- }, {
50
- scheme: "bearer",
51
- type: "http"
52
- }],
53
- url: "/v1/spaces/{space_id}/asset_folders/{asset_folder_id}",
54
- ...options
55
- });
56
- /**
57
- * Retrieve a Single Asset Folder
58
- *
59
- * Operations for a specific asset folder
60
- */
61
- const get = (options) => (options.client ?? client).get({
62
- security: [{
63
- name: "Authorization",
64
- type: "apiKey"
65
- }, {
66
- scheme: "bearer",
67
- type: "http"
68
- }],
69
- url: "/v1/spaces/{space_id}/asset_folders/{asset_folder_id}",
70
- ...options
71
- });
72
- /**
73
- * Update an Asset Folder
74
- *
75
- * Operations for a specific asset folder
76
- */
77
- const update = (options) => (options.client ?? client).put({
78
- security: [{
79
- name: "Authorization",
80
- type: "apiKey"
81
- }, {
82
- scheme: "bearer",
83
- type: "http"
84
- }],
85
- url: "/v1/spaces/{space_id}/asset_folders/{asset_folder_id}",
86
- ...options,
87
- headers: {
88
- "Content-Type": "application/json",
89
- ...options.headers
90
- }
91
- });
92
-
93
- //#endregion
94
- export { create, delete_, get, list, update };
95
- //# sourceMappingURL=sdk.gen.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sdk.gen.mjs","names":[],"sources":["../../../src/generated/asset_folders/sdk.gen.ts"],"sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nimport type { Client, Options as Options2, TDataShape } from '../shared/client';\nimport { client } from './client.gen';\nimport type { CreateData, CreateErrors, CreateResponses, DeleteData, DeleteErrors, DeleteResponses, GetData, GetErrors, GetResponses, ListData, ListErrors, ListResponses, UpdateData, UpdateErrors, UpdateResponses } from './types.gen';\n\nexport type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options2<TData, ThrowOnError> & {\n /**\n * You can provide a client instance returned by `createClient()` instead of\n * individual options. This might be also useful if you want to implement a\n * custom client.\n */\n client?: Client;\n /**\n * You can pass arbitrary values through the `meta` object. This can be\n * used to access values that aren't defined as part of the SDK function.\n */\n meta?: Record<string, unknown>;\n};\n\n/**\n * Retrieve Multiple Asset Folders\n *\n * An asset folder can be used to organize assets together. Each asset can belong to only one folder. Asset folders support hierarchical nesting via parent_id. This endpoint allows you to manage asset folders. You can use it to retrieve, create, update, or delete asset folders.\n */\nexport const list = <ThrowOnError extends boolean = false>(options: Options<ListData, ThrowOnError>) => (options.client ?? client).get<ListResponses, ListErrors, ThrowOnError>({\n security: [{ name: 'Authorization', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/v1/spaces/{space_id}/asset_folders',\n ...options\n});\n\n/**\n * Create an Asset Folder\n *\n * An asset folder can be used to organize assets together. Each asset can belong to only one folder. Asset folders support hierarchical nesting via parent_id. This endpoint allows you to manage asset folders. You can use it to retrieve, create, update, or delete asset folders.\n */\nexport const create = <ThrowOnError extends boolean = false>(options: Options<CreateData, ThrowOnError>) => (options.client ?? client).post<CreateResponses, CreateErrors, ThrowOnError>({\n security: [{ name: 'Authorization', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/v1/spaces/{space_id}/asset_folders',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n\n/**\n * Delete an Asset Folder\n *\n * Operations for a specific asset folder\n */\nexport const delete_ = <ThrowOnError extends boolean = false>(options: Options<DeleteData, ThrowOnError>) => (options.client ?? client).delete<DeleteResponses, DeleteErrors, ThrowOnError>({\n security: [{ name: 'Authorization', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/v1/spaces/{space_id}/asset_folders/{asset_folder_id}',\n ...options\n});\n\n/**\n * Retrieve a Single Asset Folder\n *\n * Operations for a specific asset folder\n */\nexport const get = <ThrowOnError extends boolean = false>(options: Options<GetData, ThrowOnError>) => (options.client ?? client).get<GetResponses, GetErrors, ThrowOnError>({\n security: [{ name: 'Authorization', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/v1/spaces/{space_id}/asset_folders/{asset_folder_id}',\n ...options\n});\n\n/**\n * Update an Asset Folder\n *\n * Operations for a specific asset folder\n */\nexport const update = <ThrowOnError extends boolean = false>(options: Options<UpdateData, ThrowOnError>) => (options.client ?? client).put<UpdateResponses, UpdateErrors, ThrowOnError>({\n security: [{ name: 'Authorization', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],\n url: '/v1/spaces/{space_id}/asset_folders/{asset_folder_id}',\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n ...options.headers\n }\n});\n"],"mappings":";;;;;;;;AAyBA,MAAa,QAA8C,aAA8C,QAAQ,UAAU,QAAQ,IAA6C;CAC5K,UAAU,CAAC;EAAE,MAAM;EAAiB,MAAM;EAAU,EAAE;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CACzF,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,UAAgD,aAAgD,QAAQ,UAAU,QAAQ,KAAkD;CACrL,UAAU,CAAC;EAAE,MAAM;EAAiB,MAAM;EAAU,EAAE;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CACzF,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC;;;;;;AAOF,MAAa,WAAiD,aAAgD,QAAQ,UAAU,QAAQ,OAAoD;CACxL,UAAU,CAAC;EAAE,MAAM;EAAiB,MAAM;EAAU,EAAE;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CACzF,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,OAA6C,aAA6C,QAAQ,UAAU,QAAQ,IAA2C;CACxK,UAAU,CAAC;EAAE,MAAM;EAAiB,MAAM;EAAU,EAAE;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CACzF,KAAK;CACL,GAAG;CACN,CAAC;;;;;;AAOF,MAAa,UAAgD,aAAgD,QAAQ,UAAU,QAAQ,IAAiD;CACpL,UAAU,CAAC;EAAE,MAAM;EAAiB,MAAM;EAAU,EAAE;EAAE,QAAQ;EAAU,MAAM;EAAQ,CAAC;CACzF,KAAK;CACL,GAAG;CACH,SAAS;EACL,gBAAgB;EAChB,GAAG,QAAQ;EACd;CACJ,CAAC"}