@storyblok/management-api-client 0.2.4 → 1.0.0-alpha.1

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 (74) hide show
  1. package/dist/client.cjs +190 -0
  2. package/dist/client.cjs.map +1 -0
  3. package/dist/client.d.cts +624 -0
  4. package/dist/client.d.mts +624 -0
  5. package/dist/client.mjs +189 -0
  6. package/dist/client.mjs.map +1 -0
  7. package/dist/error.cjs.map +1 -1
  8. package/dist/error.d.cts +12 -2
  9. package/dist/error.d.mts +12 -2
  10. package/dist/error.mjs.map +1 -1
  11. package/dist/generated/asset_folders/types.gen.d.cts +5 -31
  12. package/dist/generated/asset_folders/types.gen.d.mts +5 -31
  13. package/dist/generated/assets/types.gen.d.cts +1 -73
  14. package/dist/generated/assets/types.gen.d.mts +1 -73
  15. package/dist/generated/component_folders/types.gen.d.cts +29 -45
  16. package/dist/generated/component_folders/types.gen.d.mts +29 -45
  17. package/dist/generated/components/types.gen.d.cts +636 -465
  18. package/dist/generated/components/types.gen.d.mts +636 -465
  19. package/dist/generated/datasource_entries/types.gen.d.cts +6 -32
  20. package/dist/generated/datasource_entries/types.gen.d.mts +6 -32
  21. package/dist/generated/datasources/types.gen.d.cts +18 -39
  22. package/dist/generated/datasources/types.gen.d.mts +18 -39
  23. package/dist/generated/internal_tags/types.gen.d.cts +28 -32
  24. package/dist/generated/internal_tags/types.gen.d.mts +28 -32
  25. package/dist/generated/presets/types.gen.d.cts +53 -58
  26. package/dist/generated/presets/types.gen.d.mts +53 -58
  27. package/dist/generated/spaces/types.gen.d.cts +1 -41
  28. package/dist/generated/spaces/types.gen.d.mts +1 -41
  29. package/dist/generated/stories/types.gen.d.cts +206 -198
  30. package/dist/generated/stories/types.gen.d.mts +206 -198
  31. package/dist/generated/users/types.gen.d.cts +13 -112
  32. package/dist/generated/users/types.gen.d.mts +13 -112
  33. package/dist/index.cjs +3 -178
  34. package/dist/index.d.cts +8 -425
  35. package/dist/index.d.mts +8 -425
  36. package/dist/index.mjs +2 -176
  37. package/dist/resources/asset-folders.cjs.map +1 -1
  38. package/dist/resources/asset-folders.mjs.map +1 -1
  39. package/dist/resources/assets.cjs +11 -2
  40. package/dist/resources/assets.cjs.map +1 -1
  41. package/dist/resources/assets.d.cts +3 -2
  42. package/dist/resources/assets.d.mts +3 -2
  43. package/dist/resources/assets.mjs +11 -2
  44. package/dist/resources/assets.mjs.map +1 -1
  45. package/dist/resources/component-folders.cjs.map +1 -1
  46. package/dist/resources/component-folders.mjs.map +1 -1
  47. package/dist/resources/components.cjs.map +1 -1
  48. package/dist/resources/components.mjs.map +1 -1
  49. package/dist/resources/datasource-entries.cjs.map +1 -1
  50. package/dist/resources/datasource-entries.mjs.map +1 -1
  51. package/dist/resources/datasources.cjs.map +1 -1
  52. package/dist/resources/datasources.mjs.map +1 -1
  53. package/dist/resources/internal-tags.cjs.map +1 -1
  54. package/dist/resources/internal-tags.mjs.map +1 -1
  55. package/dist/resources/presets.cjs.map +1 -1
  56. package/dist/resources/presets.mjs.map +1 -1
  57. package/dist/resources/spaces.cjs.map +1 -1
  58. package/dist/resources/spaces.mjs.map +1 -1
  59. package/dist/resources/stories.cjs.map +1 -1
  60. package/dist/resources/stories.d.cts +105 -0
  61. package/dist/resources/stories.d.mts +105 -0
  62. package/dist/resources/stories.mjs.map +1 -1
  63. package/dist/resources/users.cjs.map +1 -1
  64. package/dist/resources/users.mjs.map +1 -1
  65. package/package.json +13 -10
  66. package/test/GUIDE.md +59 -0
  67. package/test/setup.e2e.ts +11 -0
  68. package/test/specs/mapi-round-trip.spec.e2e.ts +520 -0
  69. package/vitest.config.e2e.ts +26 -0
  70. package/vitest.config.ts +3 -0
  71. package/dist/index.cjs.map +0 -1
  72. package/dist/index.mjs.map +0 -1
  73. package/dist/types.d.cts +0 -130
  74. package/dist/types.d.mts +0 -130
@@ -1,16 +1,12 @@
1
1
  //#region src/generated/users/types.gen.d.ts
2
2
  /**
3
- * The User Object
3
+ * Input for updating the current user's profile.
4
4
  */
5
- type User = {
6
- /**
7
- * User ID
8
- */
9
- readonly id: number;
5
+ type UserUpdate = {
10
6
  /**
11
7
  * User's email address
12
8
  */
13
- email: string;
9
+ email?: string;
14
10
  /**
15
11
  * User's alternative email address
16
12
  */
@@ -43,10 +39,6 @@ type User = {
43
39
  * User's phone number
44
40
  */
45
41
  phone?: string;
46
- /**
47
- * Whether user is an editor
48
- */
49
- is_editor?: boolean;
50
42
  /**
51
43
  * User's job role
52
44
  */
@@ -71,100 +63,25 @@ type User = {
71
63
  * Framework used by user
72
64
  */
73
65
  framework_used?: string;
74
- /**
75
- * Whether user is a beta user
76
- */
77
- beta_user?: boolean;
78
66
  /**
79
67
  * Whether user allows statistics tracking
80
68
  */
81
69
  track_statistics?: boolean;
82
70
  /**
83
- * User's favorite spaces
71
+ * User's UI theme preferences
84
72
  */
85
- favourite_spaces?: Array<number>;
86
- /**
87
- * User's favorite ideas
88
- */
89
- favourite_ideas?: Array<number>;
90
- /**
91
- * User's notification preferences
92
- */
93
- notified?: Array<string>;
94
- /**
95
- * User's disclaimer IDs
96
- */
97
- disclaimer_ids?: Array<number>;
98
- /**
99
- * Whether the user belongs to an organization
100
- */
101
- has_org?: boolean;
102
- /**
103
- * Whether the user has an approved partner status
104
- */
105
- has_partner?: boolean;
106
- /**
107
- * Partner status (e.g., 'approved')
108
- */
109
- partner_status?: string;
110
- /**
111
- * User's role in the organization (admin, owner, member)
112
- */
113
- org_role?: string;
114
- /**
115
- * User's role as a partner (partner_owner, partner_member)
116
- */
117
- partner_role?: string;
118
- /**
119
- * Organization information
120
- */
121
- org?: {
122
- /**
123
- * Organization name
124
- */
125
- name?: string;
126
- /**
127
- * Organization status
128
- */
129
- status?: string;
73
+ ui_theme?: {
74
+ [key: string]: unknown;
130
75
  };
131
- /**
132
- * User's system role (admin, normal, banned, sso, superuser, devops, marketer)
133
- */
134
- role?: string;
135
- /**
136
- * Whether the user uses SSO authentication
137
- */
138
- sso?: boolean;
139
- /**
140
- * Whether TOTP factor is verified
141
- */
142
- totp_factor_verified?: boolean;
143
- /**
144
- * Configured two-factor authentication options
145
- */
146
- configured_2fa_options?: Array<string>;
147
- /**
148
- * Whether live chat is enabled for the user
149
- */
150
- live_chat_enabled?: boolean;
151
- /**
152
- * User-friendly display name for the user, shown in interfaces or reports to identify the user in a readable way.
153
- */
154
- friendly_name?: string;
155
- /**
156
- * User creation date
157
- */
158
- created_at: string;
159
- /**
160
- * User last update date
161
- */
162
- updated_at: string;
163
76
  };
164
77
  /**
165
78
  * The User Object
166
79
  */
167
- type UserWritable = {
80
+ type User = {
81
+ /**
82
+ * User ID
83
+ */
84
+ readonly id: number;
168
85
  /**
169
86
  * User's email address
170
87
  */
@@ -319,30 +236,14 @@ type UserWritable = {
319
236
  */
320
237
  updated_at: string;
321
238
  };
322
- type MeResponses = {
323
- /**
324
- * Current user details
325
- */
326
- 200: {
327
- user?: User;
328
- };
329
- };
330
239
  type UpdateMeData = {
331
240
  body: {
332
- user: UserWritable;
241
+ user: UserUpdate;
333
242
  };
334
243
  path?: never;
335
244
  query?: never;
336
245
  url: '/v1/users/me';
337
246
  };
338
- type UpdateMeResponses = {
339
- /**
340
- * User updated
341
- */
342
- 200: {
343
- user?: User;
344
- };
345
- };
346
247
  //#endregion
347
- export { MeResponses, UpdateMeData, UpdateMeResponses, User };
248
+ export { UpdateMeData, User };
348
249
  //# sourceMappingURL=types.gen.d.cts.map
@@ -1,16 +1,12 @@
1
1
  //#region src/generated/users/types.gen.d.ts
2
2
  /**
3
- * The User Object
3
+ * Input for updating the current user's profile.
4
4
  */
5
- type User = {
6
- /**
7
- * User ID
8
- */
9
- readonly id: number;
5
+ type UserUpdate = {
10
6
  /**
11
7
  * User's email address
12
8
  */
13
- email: string;
9
+ email?: string;
14
10
  /**
15
11
  * User's alternative email address
16
12
  */
@@ -43,10 +39,6 @@ type User = {
43
39
  * User's phone number
44
40
  */
45
41
  phone?: string;
46
- /**
47
- * Whether user is an editor
48
- */
49
- is_editor?: boolean;
50
42
  /**
51
43
  * User's job role
52
44
  */
@@ -71,100 +63,25 @@ type User = {
71
63
  * Framework used by user
72
64
  */
73
65
  framework_used?: string;
74
- /**
75
- * Whether user is a beta user
76
- */
77
- beta_user?: boolean;
78
66
  /**
79
67
  * Whether user allows statistics tracking
80
68
  */
81
69
  track_statistics?: boolean;
82
70
  /**
83
- * User's favorite spaces
71
+ * User's UI theme preferences
84
72
  */
85
- favourite_spaces?: Array<number>;
86
- /**
87
- * User's favorite ideas
88
- */
89
- favourite_ideas?: Array<number>;
90
- /**
91
- * User's notification preferences
92
- */
93
- notified?: Array<string>;
94
- /**
95
- * User's disclaimer IDs
96
- */
97
- disclaimer_ids?: Array<number>;
98
- /**
99
- * Whether the user belongs to an organization
100
- */
101
- has_org?: boolean;
102
- /**
103
- * Whether the user has an approved partner status
104
- */
105
- has_partner?: boolean;
106
- /**
107
- * Partner status (e.g., 'approved')
108
- */
109
- partner_status?: string;
110
- /**
111
- * User's role in the organization (admin, owner, member)
112
- */
113
- org_role?: string;
114
- /**
115
- * User's role as a partner (partner_owner, partner_member)
116
- */
117
- partner_role?: string;
118
- /**
119
- * Organization information
120
- */
121
- org?: {
122
- /**
123
- * Organization name
124
- */
125
- name?: string;
126
- /**
127
- * Organization status
128
- */
129
- status?: string;
73
+ ui_theme?: {
74
+ [key: string]: unknown;
130
75
  };
131
- /**
132
- * User's system role (admin, normal, banned, sso, superuser, devops, marketer)
133
- */
134
- role?: string;
135
- /**
136
- * Whether the user uses SSO authentication
137
- */
138
- sso?: boolean;
139
- /**
140
- * Whether TOTP factor is verified
141
- */
142
- totp_factor_verified?: boolean;
143
- /**
144
- * Configured two-factor authentication options
145
- */
146
- configured_2fa_options?: Array<string>;
147
- /**
148
- * Whether live chat is enabled for the user
149
- */
150
- live_chat_enabled?: boolean;
151
- /**
152
- * User-friendly display name for the user, shown in interfaces or reports to identify the user in a readable way.
153
- */
154
- friendly_name?: string;
155
- /**
156
- * User creation date
157
- */
158
- created_at: string;
159
- /**
160
- * User last update date
161
- */
162
- updated_at: string;
163
76
  };
164
77
  /**
165
78
  * The User Object
166
79
  */
167
- type UserWritable = {
80
+ type User = {
81
+ /**
82
+ * User ID
83
+ */
84
+ readonly id: number;
168
85
  /**
169
86
  * User's email address
170
87
  */
@@ -319,30 +236,14 @@ type UserWritable = {
319
236
  */
320
237
  updated_at: string;
321
238
  };
322
- type MeResponses = {
323
- /**
324
- * Current user details
325
- */
326
- 200: {
327
- user?: User;
328
- };
329
- };
330
239
  type UpdateMeData = {
331
240
  body: {
332
- user: UserWritable;
241
+ user: UserUpdate;
333
242
  };
334
243
  path?: never;
335
244
  query?: never;
336
245
  url: '/v1/users/me';
337
246
  };
338
- type UpdateMeResponses = {
339
- /**
340
- * User updated
341
- */
342
- 200: {
343
- user?: User;
344
- };
345
- };
346
247
  //#endregion
347
- export { MeResponses, UpdateMeData, UpdateMeResponses, User };
248
+ export { UpdateMeData, User };
348
249
  //# sourceMappingURL=types.gen.d.mts.map
package/dist/index.cjs CHANGED
@@ -1,183 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
3
- const require_utils_gen = require('./generated/shared/client/utils.gen.cjs');
4
- const require_client_gen = require('./generated/shared/client/client.gen.cjs');
5
- require('./generated/shared/client/index.cjs');
6
2
  const require_error = require('./error.cjs');
7
- const require_rate_limit = require('./utils/rate-limit.cjs');
8
- const require_asset_folders = require('./resources/asset-folders.cjs');
9
- const require_assets = require('./resources/assets.cjs');
10
- const require_component_folders = require('./resources/component-folders.cjs');
11
- const require_components = require('./resources/components.cjs');
12
- const require_datasource_entries = require('./resources/datasource-entries.cjs');
13
- const require_datasources = require('./resources/datasources.cjs');
14
- const require_internal_tags = require('./resources/internal-tags.cjs');
15
- const require_presets = require('./resources/presets.cjs');
16
- const require_spaces = require('./resources/spaces.cjs');
17
- const require_stories = require('./resources/stories.cjs');
18
- const require_users = require('./resources/users.cjs');
3
+ const require_client = require('./client.cjs');
19
4
  const require_normalize_asset_url = require('./utils/normalize-asset-url.cjs');
20
- let _storyblok_region_helper = require("@storyblok/region-helper");
21
5
 
22
- //#region src/index.ts
23
- function getAuthorizationHeader(config) {
24
- if (config.personalAccessToken) return config.personalAccessToken;
25
- if (config.oauthToken) return `Bearer ${config.oauthToken.replace(/^Bearer\s+/i, "")}`;
26
- }
27
- const createManagementApiClient = (config) => {
28
- const { spaceId, region = "eu", baseUrl, headers = {}, throwOnError = false, retry = {
29
- limit: 12,
30
- backoffLimit: 2e4,
31
- methods: [
32
- "get",
33
- "post",
34
- "put",
35
- "delete",
36
- "patch",
37
- "head",
38
- "options",
39
- "trace"
40
- ],
41
- statusCodes: [429]
42
- }, timeout = 3e4, rateLimit } = config;
43
- const throttleManager = require_rate_limit.createThrottleManager(rateLimit ?? {});
44
- const authHeader = getAuthorizationHeader(config);
45
- const client = require_client_gen.createClient(require_utils_gen.createConfig({
46
- baseUrl: baseUrl || (0, _storyblok_region_helper.getManagementBaseUrl)(region),
47
- headers: {
48
- ...authHeader ? { Authorization: authHeader } : {},
49
- ...headers
50
- },
51
- throwOnError,
52
- kyOptions: {
53
- throwHttpErrors: true,
54
- timeout,
55
- retry
56
- }
57
- }));
58
- client.interceptors.error.use((error, response) => new require_error.ClientError(response?.statusText || "API request failed", {
59
- status: response?.status ?? 0,
60
- statusText: response?.statusText ?? "",
61
- data: error
62
- }));
63
- /**
64
- * Wraps an SDK call with throttling and response adaptation.
65
- * The throttle slot is held for the entire duration of the request.
66
- * When throwOnError is true, errors throw and data is guaranteed non-null.
67
- */
68
- function wrapRequest(fn, _throwOnError) {
69
- return throttleManager.execute(async () => {
70
- const result = await fn();
71
- throttleManager.adaptToResponse(result.response);
72
- return result;
73
- });
74
- }
75
- const deps = {
76
- client,
77
- spaceId,
78
- wrapRequest
79
- };
80
- /**
81
- * Escape hatch: send a GET request to any MAPI endpoint not yet wrapped
82
- * in a dedicated resource method.
83
- */
84
- const httpGet = (path, options = {}) => {
85
- const { fetchOptions, ...rest } = options;
86
- return wrapRequest(() => client.get({
87
- url: path,
88
- ...rest,
89
- ...fetchOptions ? { kyOptions: {
90
- ...client.getConfig().kyOptions,
91
- ...fetchOptions
92
- } } : {}
93
- }));
94
- };
95
- /**
96
- * Escape hatch: send a POST request to any MAPI endpoint not yet wrapped
97
- * in a dedicated resource method.
98
- */
99
- const httpPost = (path, options = {}) => {
100
- const { fetchOptions, ...rest } = options;
101
- return wrapRequest(() => client.post({
102
- url: path,
103
- ...rest,
104
- ...fetchOptions ? { kyOptions: {
105
- ...client.getConfig().kyOptions,
106
- ...fetchOptions
107
- } } : {}
108
- }));
109
- };
110
- /**
111
- * Escape hatch: send a PUT request to any MAPI endpoint not yet wrapped
112
- * in a dedicated resource method.
113
- */
114
- const httpPut = (path, options = {}) => {
115
- const { fetchOptions, ...rest } = options;
116
- return wrapRequest(() => client.put({
117
- url: path,
118
- ...rest,
119
- ...fetchOptions ? { kyOptions: {
120
- ...client.getConfig().kyOptions,
121
- ...fetchOptions
122
- } } : {}
123
- }));
124
- };
125
- /**
126
- * Escape hatch: send a PATCH request to any MAPI endpoint not yet wrapped
127
- * in a dedicated resource method.
128
- */
129
- const httpPatch = (path, options = {}) => {
130
- const { fetchOptions, ...rest } = options;
131
- return wrapRequest(() => client.patch({
132
- url: path,
133
- ...rest,
134
- ...fetchOptions ? { kyOptions: {
135
- ...client.getConfig().kyOptions,
136
- ...fetchOptions
137
- } } : {}
138
- }));
139
- };
140
- /**
141
- * Escape hatch: send a DELETE request to any MAPI endpoint not yet wrapped
142
- * in a dedicated resource method.
143
- */
144
- const httpDelete = (path, options = {}) => {
145
- const { fetchOptions, ...rest } = options;
146
- return wrapRequest(() => client.delete({
147
- url: path,
148
- ...rest,
149
- ...fetchOptions ? { kyOptions: {
150
- ...client.getConfig().kyOptions,
151
- ...fetchOptions
152
- } } : {}
153
- }));
154
- };
155
- return {
156
- assetFolders: require_asset_folders.createAssetFoldersResource(deps),
157
- assets: require_assets.createAssetsResource(deps),
158
- componentFolders: require_component_folders.createComponentFoldersResource(deps),
159
- components: require_components.createComponentsResource(deps),
160
- datasourceEntries: require_datasource_entries.createDatasourceEntriesResource(deps),
161
- datasources: require_datasources.createDatasourcesResource(deps),
162
- delete: httpDelete,
163
- get: httpGet,
164
- patch: httpPatch,
165
- interceptors: client.interceptors,
166
- internalTags: require_internal_tags.createInternalTagsResource(deps),
167
- post: httpPost,
168
- presets: require_presets.createPresetsResource(deps),
169
- put: httpPut,
170
- spaces: require_spaces.createSpacesResource(deps),
171
- stories: require_stories.createStoriesResource(deps),
172
- users: require_users.createUsersResource({
173
- client,
174
- wrapRequest
175
- })
176
- };
177
- };
178
-
179
- //#endregion
180
6
  exports.ClientError = require_error.ClientError;
181
- exports.createManagementApiClient = createManagementApiClient;
182
- exports.normalizeAssetUrl = require_normalize_asset_url.normalizeAssetUrl;
183
- //# sourceMappingURL=index.cjs.map
7
+ exports.createManagementApiClient = require_client.createManagementApiClient;
8
+ exports.normalizeAssetUrl = require_normalize_asset_url.normalizeAssetUrl;