@storyblok/management-api-client 1.0.0-alpha.3 → 1.0.0-alpha.5
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.
- package/dist/client.cjs +6 -0
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +134 -11
- package/dist/client.d.mts +134 -11
- package/dist/client.mjs +6 -0
- package/dist/client.mjs.map +1 -1
- package/dist/generated/mapi/types-aliased.gen.d.cts +2 -2
- package/dist/generated/mapi/types-aliased.gen.d.mts +2 -2
- package/dist/generated/mapi/types.gen.d.cts +2 -2
- package/dist/generated/mapi/types.gen.d.mts +2 -2
- package/dist/generated/types/block.d.cts +6 -0
- package/dist/generated/types/block.d.mts +6 -0
- package/dist/generated/types/field.d.cts +53 -18
- package/dist/generated/types/field.d.mts +53 -18
- package/dist/generated/types/mapi-story.d.cts +6 -6
- package/dist/generated/types/mapi-story.d.mts +6 -6
- package/dist/index.d.cts +4 -1
- package/dist/index.d.mts +4 -1
- package/dist/resources/assets.cjs +1 -0
- package/dist/resources/assets.cjs.map +1 -1
- package/dist/resources/assets.mjs +1 -1
- package/dist/resources/assets.mjs.map +1 -1
- package/dist/resources/datasource-entries.cjs +2 -1
- package/dist/resources/datasource-entries.cjs.map +1 -1
- package/dist/resources/datasource-entries.mjs +2 -1
- package/dist/resources/datasource-entries.mjs.map +1 -1
- package/dist/resources/shared-asset-folders.cjs +81 -0
- package/dist/resources/shared-asset-folders.cjs.map +1 -0
- package/dist/resources/shared-asset-folders.d.cts +41 -0
- package/dist/resources/shared-asset-folders.d.mts +41 -0
- package/dist/resources/shared-asset-folders.mjs +81 -0
- package/dist/resources/shared-asset-folders.mjs.map +1 -0
- package/dist/resources/shared-assets.cjs +197 -0
- package/dist/resources/shared-assets.cjs.map +1 -0
- package/dist/resources/shared-assets.d.cts +29 -0
- package/dist/resources/shared-assets.d.mts +28 -0
- package/dist/resources/shared-assets.mjs +197 -0
- package/dist/resources/shared-assets.mjs.map +1 -0
- package/dist/resources/shared-internal-tags.cjs +73 -0
- package/dist/resources/shared-internal-tags.cjs.map +1 -0
- package/dist/resources/shared-internal-tags.d.cts +32 -0
- package/dist/resources/shared-internal-tags.d.mts +32 -0
- package/dist/resources/shared-internal-tags.mjs +73 -0
- package/dist/resources/shared-internal-tags.mjs.map +1 -0
- package/dist/resources/stories.cjs.map +1 -1
- package/dist/resources/stories.d.cts +26 -26
- package/dist/resources/stories.d.mts +26 -26
- package/dist/resources/stories.mjs.map +1 -1
- package/package.json +3 -3
- package/playground/integration-tests/test/types/stories.test-d.ts +39 -2
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
const require_shared = require('./shared.cjs');
|
|
2
|
+
const require_assets = require('./assets.cjs');
|
|
3
|
+
|
|
4
|
+
//#region src/resources/shared-assets.ts
|
|
5
|
+
/**
|
|
6
|
+
* Shared (organization-level) assets. These endpoints are not part of the
|
|
7
|
+
* generated SDK, so methods issue raw `client.*` calls. The active space must
|
|
8
|
+
* have read (list/get) or write (create/update/delete) access to the library.
|
|
9
|
+
*/
|
|
10
|
+
function createSharedAssetsResource(deps) {
|
|
11
|
+
const { client, spaceId, wrapRequest } = deps;
|
|
12
|
+
const getSpaceId = (path) => require_shared.resolveSpaceId(spaceId, path);
|
|
13
|
+
const kyOpts = (fetchOptions) => fetchOptions ? { kyOptions: {
|
|
14
|
+
...client.getConfig().kyOptions,
|
|
15
|
+
...fetchOptions
|
|
16
|
+
} } : {};
|
|
17
|
+
const maybeThrow = (throwOnError) => throwOnError === void 0 ? {} : { throwOnError };
|
|
18
|
+
return {
|
|
19
|
+
list(options = {}) {
|
|
20
|
+
const { query, signal, path, throwOnError, fetchOptions } = options;
|
|
21
|
+
return wrapRequest(() => client.get({
|
|
22
|
+
url: "/v1/spaces/{space_id}/shared_assets",
|
|
23
|
+
path: { space_id: getSpaceId(path) },
|
|
24
|
+
query: query && { ...query },
|
|
25
|
+
signal,
|
|
26
|
+
...maybeThrow(throwOnError),
|
|
27
|
+
...kyOpts(fetchOptions)
|
|
28
|
+
}), throwOnError);
|
|
29
|
+
},
|
|
30
|
+
get(assetId, options = {}) {
|
|
31
|
+
const { signal, path, throwOnError, fetchOptions } = options;
|
|
32
|
+
return wrapRequest(() => client.get({
|
|
33
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
34
|
+
path: {
|
|
35
|
+
space_id: getSpaceId(path),
|
|
36
|
+
asset_id: assetId
|
|
37
|
+
},
|
|
38
|
+
signal,
|
|
39
|
+
...maybeThrow(throwOnError),
|
|
40
|
+
...kyOpts(fetchOptions)
|
|
41
|
+
}), throwOnError);
|
|
42
|
+
},
|
|
43
|
+
async upload(options) {
|
|
44
|
+
const { body, file, signal, path, fetchOptions } = options;
|
|
45
|
+
const { short_filename, ...rest } = body;
|
|
46
|
+
const resolvedSpaceId = getSpaceId(path);
|
|
47
|
+
const opts = kyOpts(fetchOptions);
|
|
48
|
+
const signResult = await wrapRequest(() => client.post({
|
|
49
|
+
url: "/v1/spaces/{space_id}/shared_assets",
|
|
50
|
+
path: { space_id: resolvedSpaceId },
|
|
51
|
+
query: {
|
|
52
|
+
filename: short_filename,
|
|
53
|
+
...rest
|
|
54
|
+
},
|
|
55
|
+
signal,
|
|
56
|
+
throwOnError: true,
|
|
57
|
+
...opts
|
|
58
|
+
}), true);
|
|
59
|
+
if (!signResult.data.id) throw new Error("Invalid signed response: missing id");
|
|
60
|
+
const assetId = signResult.data.id;
|
|
61
|
+
await require_assets.uploadToS3(signResult.data, file, short_filename);
|
|
62
|
+
await wrapRequest(() => client.get({
|
|
63
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload",
|
|
64
|
+
path: {
|
|
65
|
+
space_id: resolvedSpaceId,
|
|
66
|
+
asset_id: assetId
|
|
67
|
+
},
|
|
68
|
+
signal,
|
|
69
|
+
throwOnError: true,
|
|
70
|
+
...opts
|
|
71
|
+
}), true);
|
|
72
|
+
return (await wrapRequest(() => client.get({
|
|
73
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
74
|
+
path: {
|
|
75
|
+
space_id: resolvedSpaceId,
|
|
76
|
+
asset_id: assetId
|
|
77
|
+
},
|
|
78
|
+
signal,
|
|
79
|
+
throwOnError: true,
|
|
80
|
+
...opts
|
|
81
|
+
}), true)).data;
|
|
82
|
+
},
|
|
83
|
+
async create(options) {
|
|
84
|
+
const { body, file, signal, path, fetchOptions } = options;
|
|
85
|
+
const resolvedSpaceId = getSpaceId(path);
|
|
86
|
+
const opts = kyOpts(fetchOptions);
|
|
87
|
+
const asset = await this.upload({
|
|
88
|
+
body: {
|
|
89
|
+
short_filename: body.short_filename,
|
|
90
|
+
asset_folder_id: body.asset_folder_id,
|
|
91
|
+
is_private: body.is_private
|
|
92
|
+
},
|
|
93
|
+
file,
|
|
94
|
+
signal,
|
|
95
|
+
path: { space_id: resolvedSpaceId },
|
|
96
|
+
fetchOptions
|
|
97
|
+
});
|
|
98
|
+
const { short_filename, asset_folder_id, is_private, size, validate_upload, ...metadata } = body;
|
|
99
|
+
if (Object.values(metadata).some((v) => v !== void 0 && v !== null)) {
|
|
100
|
+
await wrapRequest(() => client.put({
|
|
101
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
102
|
+
path: {
|
|
103
|
+
space_id: resolvedSpaceId,
|
|
104
|
+
asset_id: asset.id
|
|
105
|
+
},
|
|
106
|
+
body: { asset: {
|
|
107
|
+
...metadata,
|
|
108
|
+
asset_folder_id
|
|
109
|
+
} },
|
|
110
|
+
signal,
|
|
111
|
+
throwOnError: true,
|
|
112
|
+
...opts
|
|
113
|
+
}), true);
|
|
114
|
+
return (await wrapRequest(() => client.get({
|
|
115
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
116
|
+
path: {
|
|
117
|
+
space_id: resolvedSpaceId,
|
|
118
|
+
asset_id: asset.id
|
|
119
|
+
},
|
|
120
|
+
signal,
|
|
121
|
+
throwOnError: true,
|
|
122
|
+
...opts
|
|
123
|
+
}), true)).data;
|
|
124
|
+
}
|
|
125
|
+
return asset;
|
|
126
|
+
},
|
|
127
|
+
async update(assetId, options) {
|
|
128
|
+
const { body, file, signal, path, fetchOptions } = options;
|
|
129
|
+
const resolvedSpaceId = getSpaceId(path);
|
|
130
|
+
const opts = kyOpts(fetchOptions);
|
|
131
|
+
if (file !== void 0) {
|
|
132
|
+
const { short_filename, ...assetBody } = body;
|
|
133
|
+
const signResult = await wrapRequest(() => client.post({
|
|
134
|
+
url: "/v1/spaces/{space_id}/shared_assets",
|
|
135
|
+
path: { space_id: resolvedSpaceId },
|
|
136
|
+
query: {
|
|
137
|
+
filename: short_filename,
|
|
138
|
+
id: Number(assetId)
|
|
139
|
+
},
|
|
140
|
+
signal,
|
|
141
|
+
throwOnError: true,
|
|
142
|
+
...opts
|
|
143
|
+
}), true);
|
|
144
|
+
if (!signResult.data.id) throw new Error("Invalid signed response: missing id");
|
|
145
|
+
await require_assets.uploadToS3(signResult.data, file, short_filename);
|
|
146
|
+
await wrapRequest(() => client.get({
|
|
147
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload",
|
|
148
|
+
path: {
|
|
149
|
+
space_id: resolvedSpaceId,
|
|
150
|
+
asset_id: signResult.data.id
|
|
151
|
+
},
|
|
152
|
+
signal,
|
|
153
|
+
throwOnError: true,
|
|
154
|
+
...opts
|
|
155
|
+
}), true);
|
|
156
|
+
if (assetBody.asset && Object.keys(assetBody.asset).length > 0) await wrapRequest(() => client.put({
|
|
157
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
158
|
+
path: {
|
|
159
|
+
space_id: resolvedSpaceId,
|
|
160
|
+
asset_id: assetId
|
|
161
|
+
},
|
|
162
|
+
body: assetBody,
|
|
163
|
+
signal,
|
|
164
|
+
throwOnError: true,
|
|
165
|
+
...opts
|
|
166
|
+
}), true);
|
|
167
|
+
} else await wrapRequest(() => client.put({
|
|
168
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
169
|
+
path: {
|
|
170
|
+
space_id: resolvedSpaceId,
|
|
171
|
+
asset_id: assetId
|
|
172
|
+
},
|
|
173
|
+
body,
|
|
174
|
+
signal,
|
|
175
|
+
throwOnError: true,
|
|
176
|
+
...opts
|
|
177
|
+
}), true);
|
|
178
|
+
},
|
|
179
|
+
delete(assetId, options = {}) {
|
|
180
|
+
const { signal, path, throwOnError, fetchOptions } = options;
|
|
181
|
+
return wrapRequest(() => client.delete({
|
|
182
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
183
|
+
path: {
|
|
184
|
+
space_id: getSpaceId(path),
|
|
185
|
+
asset_id: assetId
|
|
186
|
+
},
|
|
187
|
+
signal,
|
|
188
|
+
...maybeThrow(throwOnError),
|
|
189
|
+
...kyOpts(fetchOptions)
|
|
190
|
+
}), throwOnError);
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
//#endregion
|
|
196
|
+
exports.createSharedAssetsResource = createSharedAssetsResource;
|
|
197
|
+
//# sourceMappingURL=shared-assets.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-assets.cjs","names":["resolveSpaceId","uploadToS3"],"sources":["../../src/resources/shared-assets.ts"],"sourcesContent":["import type { Asset, AssetUpdate } from '../generated/mapi/types-aliased.gen';\nimport type { ApiResponse, FetchOptions, MapiResourceDeps } from '../client';\nimport { uploadToS3 } from './assets';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\n\n/**\n * Fields for initiating a shared (org-level) asset upload. Mirrors the local\n * asset upload request; `short_filename` maps to the server's `filename`.\n */\nexport interface SharedAssetUploadRequest {\n short_filename: string;\n id?: number;\n asset_folder_id?: number;\n is_private?: boolean;\n size?: string;\n validate_upload?: boolean;\n}\n\nexport type SharedAssetCreate = AssetUpdate & SharedAssetUploadRequest;\n\nexport interface SharedAssetListQuery {\n in_folder?: number;\n page?: number;\n per_page?: number;\n search?: string;\n sort_by?: string;\n}\n\nexport interface SharedAssetListResponse {\n assets: Asset[];\n}\n\ninterface SignResponse {\n id?: number;\n post_url?: string;\n fields?: Record<string, unknown>;\n}\n\n/**\n * Shared (organization-level) assets. These endpoints are not part of the\n * generated SDK, so methods issue raw `client.*` calls. The active space must\n * have read (list/get) or write (create/update/delete) access to the library.\n */\nexport function createSharedAssetsResource<DefaultThrowOnError extends boolean = false>(deps: MapiResourceDeps<DefaultThrowOnError>) {\n const { client, spaceId, wrapRequest } = deps;\n const getSpaceId = (path?: SpaceIdPathOverride['path']) => resolveSpaceId(spaceId, path);\n const kyOpts = (fetchOptions?: FetchOptions) =>\n fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n const maybeThrow = (throwOnError?: boolean) => (throwOnError === undefined ? {} : { throwOnError });\n\n return {\n list<ThrowOnError extends boolean = false>(options: { query?: SharedAssetListQuery; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<SharedAssetListResponse, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<SharedAssetListResponse, ThrowOnError>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets', path: { space_id: getSpaceId(path) }, query: query && { ...query }, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n get<ThrowOnError extends boolean = false>(assetId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<Asset, ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<Asset, ThrowOnError>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: getSpaceId(path), asset_id: assetId }, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n /** Uploads a file to a shared library (sign → S3 → finish_upload → get). */\n async upload(options: { body: SharedAssetUploadRequest; file: Blob | ArrayBuffer; signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<Asset> {\n const { body, file, signal, path, fetchOptions } = options;\n const { short_filename, ...rest } = body;\n const resolvedSpaceId = getSpaceId(path);\n const opts = kyOpts(fetchOptions);\n\n const signResult = await wrapRequest<SignResponse, true>(() =>\n client.post({ url: '/v1/spaces/{space_id}/shared_assets', path: { space_id: resolvedSpaceId }, query: { filename: short_filename, ...rest }, signal, throwOnError: true, ...opts }), true);\n if (!signResult.data.id) {\n throw new Error('Invalid signed response: missing id');\n }\n const assetId = signResult.data.id;\n\n await uploadToS3(signResult.data, file, short_filename);\n\n await wrapRequest<unknown, true>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload', path: { space_id: resolvedSpaceId, asset_id: assetId }, signal, throwOnError: true, ...opts }), true);\n\n const getResult = await wrapRequest<Asset, true>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: assetId }, signal, throwOnError: true, ...opts }), true);\n return getResult.data;\n },\n /** Creates a shared asset (upload + metadata). Returns the resulting `Asset`. */\n async create(options: { body: SharedAssetCreate; file: Blob | ArrayBuffer; signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<Asset> {\n const { body, file, signal, path, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n const opts = kyOpts(fetchOptions);\n\n const asset = await this.upload({\n body: { short_filename: body.short_filename, asset_folder_id: body.asset_folder_id, is_private: body.is_private },\n file,\n signal,\n path: { space_id: resolvedSpaceId },\n fetchOptions,\n });\n\n const { short_filename, asset_folder_id, is_private, size, validate_upload, ...metadata } = body;\n const hasMetadata = Object.values(metadata).some(v => v !== undefined && v !== null);\n if (hasMetadata) {\n await wrapRequest<void, true>(() =>\n client.put({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: asset.id }, body: { asset: { ...metadata, asset_folder_id } }, signal, throwOnError: true, ...opts }), true);\n const updated = await wrapRequest<Asset, true>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: asset.id }, signal, throwOnError: true, ...opts }), true);\n return updated.data;\n }\n return asset;\n },\n /** Updates a shared asset's metadata, optionally replacing the file. */\n async update(assetId: number | string, options: ({ body: { asset: AssetUpdate }; file?: undefined } | { body: { asset: AssetUpdate; short_filename: string }; file: Blob | ArrayBuffer }) & { signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<void> {\n const { body, file, signal, path, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n const opts = kyOpts(fetchOptions);\n\n if (file !== undefined) {\n const { short_filename, ...assetBody } = body as { short_filename: string; asset: AssetUpdate };\n const signResult = await wrapRequest<SignResponse, true>(() =>\n client.post({ url: '/v1/spaces/{space_id}/shared_assets', path: { space_id: resolvedSpaceId }, query: { filename: short_filename, id: Number(assetId) }, signal, throwOnError: true, ...opts }), true);\n if (!signResult.data.id) {\n throw new Error('Invalid signed response: missing id');\n }\n await uploadToS3(signResult.data, file, short_filename);\n await wrapRequest<unknown, true>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload', path: { space_id: resolvedSpaceId, asset_id: signResult.data.id }, signal, throwOnError: true, ...opts }), true);\n if (assetBody.asset && Object.keys(assetBody.asset).length > 0) {\n await wrapRequest<void, true>(() =>\n client.put({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: assetId }, body: assetBody, signal, throwOnError: true, ...opts }), true);\n }\n }\n else {\n await wrapRequest<void, true>(() =>\n client.put({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: assetId }, body, signal, throwOnError: true, ...opts }), true);\n }\n },\n delete<ThrowOnError extends boolean = false>(assetId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<Asset, ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<Asset, ThrowOnError>(() =>\n client.delete({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: getSpaceId(path), asset_id: assetId }, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Asset, AssetUpdate } from "../generated/mapi/types-aliased.gen.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/resources/shared-assets.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Fields for initiating a shared (org-level) asset upload. Mirrors the local
|
|
6
|
+
* asset upload request; `short_filename` maps to the server's `filename`.
|
|
7
|
+
*/
|
|
8
|
+
interface SharedAssetUploadRequest {
|
|
9
|
+
short_filename: string;
|
|
10
|
+
id?: number;
|
|
11
|
+
asset_folder_id?: number;
|
|
12
|
+
is_private?: boolean;
|
|
13
|
+
size?: string;
|
|
14
|
+
validate_upload?: boolean;
|
|
15
|
+
}
|
|
16
|
+
type SharedAssetCreate = AssetUpdate & SharedAssetUploadRequest;
|
|
17
|
+
interface SharedAssetListQuery {
|
|
18
|
+
in_folder?: number;
|
|
19
|
+
page?: number;
|
|
20
|
+
per_page?: number;
|
|
21
|
+
search?: string;
|
|
22
|
+
sort_by?: string;
|
|
23
|
+
}
|
|
24
|
+
interface SharedAssetListResponse {
|
|
25
|
+
assets: Asset[];
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { SharedAssetCreate, SharedAssetListQuery, SharedAssetListResponse, SharedAssetUploadRequest };
|
|
29
|
+
//# sourceMappingURL=shared-assets.d.cts.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Asset, AssetUpdate } from "../generated/mapi/types-aliased.gen.mjs";
|
|
2
|
+
//#region src/resources/shared-assets.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Fields for initiating a shared (org-level) asset upload. Mirrors the local
|
|
5
|
+
* asset upload request; `short_filename` maps to the server's `filename`.
|
|
6
|
+
*/
|
|
7
|
+
interface SharedAssetUploadRequest {
|
|
8
|
+
short_filename: string;
|
|
9
|
+
id?: number;
|
|
10
|
+
asset_folder_id?: number;
|
|
11
|
+
is_private?: boolean;
|
|
12
|
+
size?: string;
|
|
13
|
+
validate_upload?: boolean;
|
|
14
|
+
}
|
|
15
|
+
type SharedAssetCreate = AssetUpdate & SharedAssetUploadRequest;
|
|
16
|
+
interface SharedAssetListQuery {
|
|
17
|
+
in_folder?: number;
|
|
18
|
+
page?: number;
|
|
19
|
+
per_page?: number;
|
|
20
|
+
search?: string;
|
|
21
|
+
sort_by?: string;
|
|
22
|
+
}
|
|
23
|
+
interface SharedAssetListResponse {
|
|
24
|
+
assets: Asset[];
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { SharedAssetCreate, SharedAssetListQuery, SharedAssetListResponse, SharedAssetUploadRequest };
|
|
28
|
+
//# sourceMappingURL=shared-assets.d.mts.map
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { resolveSpaceId } from "./shared.mjs";
|
|
2
|
+
import { uploadToS3 } from "./assets.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/resources/shared-assets.ts
|
|
5
|
+
/**
|
|
6
|
+
* Shared (organization-level) assets. These endpoints are not part of the
|
|
7
|
+
* generated SDK, so methods issue raw `client.*` calls. The active space must
|
|
8
|
+
* have read (list/get) or write (create/update/delete) access to the library.
|
|
9
|
+
*/
|
|
10
|
+
function createSharedAssetsResource(deps) {
|
|
11
|
+
const { client, spaceId, wrapRequest } = deps;
|
|
12
|
+
const getSpaceId = (path) => resolveSpaceId(spaceId, path);
|
|
13
|
+
const kyOpts = (fetchOptions) => fetchOptions ? { kyOptions: {
|
|
14
|
+
...client.getConfig().kyOptions,
|
|
15
|
+
...fetchOptions
|
|
16
|
+
} } : {};
|
|
17
|
+
const maybeThrow = (throwOnError) => throwOnError === void 0 ? {} : { throwOnError };
|
|
18
|
+
return {
|
|
19
|
+
list(options = {}) {
|
|
20
|
+
const { query, signal, path, throwOnError, fetchOptions } = options;
|
|
21
|
+
return wrapRequest(() => client.get({
|
|
22
|
+
url: "/v1/spaces/{space_id}/shared_assets",
|
|
23
|
+
path: { space_id: getSpaceId(path) },
|
|
24
|
+
query: query && { ...query },
|
|
25
|
+
signal,
|
|
26
|
+
...maybeThrow(throwOnError),
|
|
27
|
+
...kyOpts(fetchOptions)
|
|
28
|
+
}), throwOnError);
|
|
29
|
+
},
|
|
30
|
+
get(assetId, options = {}) {
|
|
31
|
+
const { signal, path, throwOnError, fetchOptions } = options;
|
|
32
|
+
return wrapRequest(() => client.get({
|
|
33
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
34
|
+
path: {
|
|
35
|
+
space_id: getSpaceId(path),
|
|
36
|
+
asset_id: assetId
|
|
37
|
+
},
|
|
38
|
+
signal,
|
|
39
|
+
...maybeThrow(throwOnError),
|
|
40
|
+
...kyOpts(fetchOptions)
|
|
41
|
+
}), throwOnError);
|
|
42
|
+
},
|
|
43
|
+
async upload(options) {
|
|
44
|
+
const { body, file, signal, path, fetchOptions } = options;
|
|
45
|
+
const { short_filename, ...rest } = body;
|
|
46
|
+
const resolvedSpaceId = getSpaceId(path);
|
|
47
|
+
const opts = kyOpts(fetchOptions);
|
|
48
|
+
const signResult = await wrapRequest(() => client.post({
|
|
49
|
+
url: "/v1/spaces/{space_id}/shared_assets",
|
|
50
|
+
path: { space_id: resolvedSpaceId },
|
|
51
|
+
query: {
|
|
52
|
+
filename: short_filename,
|
|
53
|
+
...rest
|
|
54
|
+
},
|
|
55
|
+
signal,
|
|
56
|
+
throwOnError: true,
|
|
57
|
+
...opts
|
|
58
|
+
}), true);
|
|
59
|
+
if (!signResult.data.id) throw new Error("Invalid signed response: missing id");
|
|
60
|
+
const assetId = signResult.data.id;
|
|
61
|
+
await uploadToS3(signResult.data, file, short_filename);
|
|
62
|
+
await wrapRequest(() => client.get({
|
|
63
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload",
|
|
64
|
+
path: {
|
|
65
|
+
space_id: resolvedSpaceId,
|
|
66
|
+
asset_id: assetId
|
|
67
|
+
},
|
|
68
|
+
signal,
|
|
69
|
+
throwOnError: true,
|
|
70
|
+
...opts
|
|
71
|
+
}), true);
|
|
72
|
+
return (await wrapRequest(() => client.get({
|
|
73
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
74
|
+
path: {
|
|
75
|
+
space_id: resolvedSpaceId,
|
|
76
|
+
asset_id: assetId
|
|
77
|
+
},
|
|
78
|
+
signal,
|
|
79
|
+
throwOnError: true,
|
|
80
|
+
...opts
|
|
81
|
+
}), true)).data;
|
|
82
|
+
},
|
|
83
|
+
async create(options) {
|
|
84
|
+
const { body, file, signal, path, fetchOptions } = options;
|
|
85
|
+
const resolvedSpaceId = getSpaceId(path);
|
|
86
|
+
const opts = kyOpts(fetchOptions);
|
|
87
|
+
const asset = await this.upload({
|
|
88
|
+
body: {
|
|
89
|
+
short_filename: body.short_filename,
|
|
90
|
+
asset_folder_id: body.asset_folder_id,
|
|
91
|
+
is_private: body.is_private
|
|
92
|
+
},
|
|
93
|
+
file,
|
|
94
|
+
signal,
|
|
95
|
+
path: { space_id: resolvedSpaceId },
|
|
96
|
+
fetchOptions
|
|
97
|
+
});
|
|
98
|
+
const { short_filename, asset_folder_id, is_private, size, validate_upload, ...metadata } = body;
|
|
99
|
+
if (Object.values(metadata).some((v) => v !== void 0 && v !== null)) {
|
|
100
|
+
await wrapRequest(() => client.put({
|
|
101
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
102
|
+
path: {
|
|
103
|
+
space_id: resolvedSpaceId,
|
|
104
|
+
asset_id: asset.id
|
|
105
|
+
},
|
|
106
|
+
body: { asset: {
|
|
107
|
+
...metadata,
|
|
108
|
+
asset_folder_id
|
|
109
|
+
} },
|
|
110
|
+
signal,
|
|
111
|
+
throwOnError: true,
|
|
112
|
+
...opts
|
|
113
|
+
}), true);
|
|
114
|
+
return (await wrapRequest(() => client.get({
|
|
115
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
116
|
+
path: {
|
|
117
|
+
space_id: resolvedSpaceId,
|
|
118
|
+
asset_id: asset.id
|
|
119
|
+
},
|
|
120
|
+
signal,
|
|
121
|
+
throwOnError: true,
|
|
122
|
+
...opts
|
|
123
|
+
}), true)).data;
|
|
124
|
+
}
|
|
125
|
+
return asset;
|
|
126
|
+
},
|
|
127
|
+
async update(assetId, options) {
|
|
128
|
+
const { body, file, signal, path, fetchOptions } = options;
|
|
129
|
+
const resolvedSpaceId = getSpaceId(path);
|
|
130
|
+
const opts = kyOpts(fetchOptions);
|
|
131
|
+
if (file !== void 0) {
|
|
132
|
+
const { short_filename, ...assetBody } = body;
|
|
133
|
+
const signResult = await wrapRequest(() => client.post({
|
|
134
|
+
url: "/v1/spaces/{space_id}/shared_assets",
|
|
135
|
+
path: { space_id: resolvedSpaceId },
|
|
136
|
+
query: {
|
|
137
|
+
filename: short_filename,
|
|
138
|
+
id: Number(assetId)
|
|
139
|
+
},
|
|
140
|
+
signal,
|
|
141
|
+
throwOnError: true,
|
|
142
|
+
...opts
|
|
143
|
+
}), true);
|
|
144
|
+
if (!signResult.data.id) throw new Error("Invalid signed response: missing id");
|
|
145
|
+
await uploadToS3(signResult.data, file, short_filename);
|
|
146
|
+
await wrapRequest(() => client.get({
|
|
147
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload",
|
|
148
|
+
path: {
|
|
149
|
+
space_id: resolvedSpaceId,
|
|
150
|
+
asset_id: signResult.data.id
|
|
151
|
+
},
|
|
152
|
+
signal,
|
|
153
|
+
throwOnError: true,
|
|
154
|
+
...opts
|
|
155
|
+
}), true);
|
|
156
|
+
if (assetBody.asset && Object.keys(assetBody.asset).length > 0) await wrapRequest(() => client.put({
|
|
157
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
158
|
+
path: {
|
|
159
|
+
space_id: resolvedSpaceId,
|
|
160
|
+
asset_id: assetId
|
|
161
|
+
},
|
|
162
|
+
body: assetBody,
|
|
163
|
+
signal,
|
|
164
|
+
throwOnError: true,
|
|
165
|
+
...opts
|
|
166
|
+
}), true);
|
|
167
|
+
} else await wrapRequest(() => client.put({
|
|
168
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
169
|
+
path: {
|
|
170
|
+
space_id: resolvedSpaceId,
|
|
171
|
+
asset_id: assetId
|
|
172
|
+
},
|
|
173
|
+
body,
|
|
174
|
+
signal,
|
|
175
|
+
throwOnError: true,
|
|
176
|
+
...opts
|
|
177
|
+
}), true);
|
|
178
|
+
},
|
|
179
|
+
delete(assetId, options = {}) {
|
|
180
|
+
const { signal, path, throwOnError, fetchOptions } = options;
|
|
181
|
+
return wrapRequest(() => client.delete({
|
|
182
|
+
url: "/v1/spaces/{space_id}/shared_assets/{asset_id}",
|
|
183
|
+
path: {
|
|
184
|
+
space_id: getSpaceId(path),
|
|
185
|
+
asset_id: assetId
|
|
186
|
+
},
|
|
187
|
+
signal,
|
|
188
|
+
...maybeThrow(throwOnError),
|
|
189
|
+
...kyOpts(fetchOptions)
|
|
190
|
+
}), throwOnError);
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
//#endregion
|
|
196
|
+
export { createSharedAssetsResource };
|
|
197
|
+
//# sourceMappingURL=shared-assets.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-assets.mjs","names":[],"sources":["../../src/resources/shared-assets.ts"],"sourcesContent":["import type { Asset, AssetUpdate } from '../generated/mapi/types-aliased.gen';\nimport type { ApiResponse, FetchOptions, MapiResourceDeps } from '../client';\nimport { uploadToS3 } from './assets';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\n\n/**\n * Fields for initiating a shared (org-level) asset upload. Mirrors the local\n * asset upload request; `short_filename` maps to the server's `filename`.\n */\nexport interface SharedAssetUploadRequest {\n short_filename: string;\n id?: number;\n asset_folder_id?: number;\n is_private?: boolean;\n size?: string;\n validate_upload?: boolean;\n}\n\nexport type SharedAssetCreate = AssetUpdate & SharedAssetUploadRequest;\n\nexport interface SharedAssetListQuery {\n in_folder?: number;\n page?: number;\n per_page?: number;\n search?: string;\n sort_by?: string;\n}\n\nexport interface SharedAssetListResponse {\n assets: Asset[];\n}\n\ninterface SignResponse {\n id?: number;\n post_url?: string;\n fields?: Record<string, unknown>;\n}\n\n/**\n * Shared (organization-level) assets. These endpoints are not part of the\n * generated SDK, so methods issue raw `client.*` calls. The active space must\n * have read (list/get) or write (create/update/delete) access to the library.\n */\nexport function createSharedAssetsResource<DefaultThrowOnError extends boolean = false>(deps: MapiResourceDeps<DefaultThrowOnError>) {\n const { client, spaceId, wrapRequest } = deps;\n const getSpaceId = (path?: SpaceIdPathOverride['path']) => resolveSpaceId(spaceId, path);\n const kyOpts = (fetchOptions?: FetchOptions) =>\n fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n const maybeThrow = (throwOnError?: boolean) => (throwOnError === undefined ? {} : { throwOnError });\n\n return {\n list<ThrowOnError extends boolean = false>(options: { query?: SharedAssetListQuery; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<SharedAssetListResponse, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<SharedAssetListResponse, ThrowOnError>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets', path: { space_id: getSpaceId(path) }, query: query && { ...query }, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n get<ThrowOnError extends boolean = false>(assetId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<Asset, ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<Asset, ThrowOnError>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: getSpaceId(path), asset_id: assetId }, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n /** Uploads a file to a shared library (sign → S3 → finish_upload → get). */\n async upload(options: { body: SharedAssetUploadRequest; file: Blob | ArrayBuffer; signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<Asset> {\n const { body, file, signal, path, fetchOptions } = options;\n const { short_filename, ...rest } = body;\n const resolvedSpaceId = getSpaceId(path);\n const opts = kyOpts(fetchOptions);\n\n const signResult = await wrapRequest<SignResponse, true>(() =>\n client.post({ url: '/v1/spaces/{space_id}/shared_assets', path: { space_id: resolvedSpaceId }, query: { filename: short_filename, ...rest }, signal, throwOnError: true, ...opts }), true);\n if (!signResult.data.id) {\n throw new Error('Invalid signed response: missing id');\n }\n const assetId = signResult.data.id;\n\n await uploadToS3(signResult.data, file, short_filename);\n\n await wrapRequest<unknown, true>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload', path: { space_id: resolvedSpaceId, asset_id: assetId }, signal, throwOnError: true, ...opts }), true);\n\n const getResult = await wrapRequest<Asset, true>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: assetId }, signal, throwOnError: true, ...opts }), true);\n return getResult.data;\n },\n /** Creates a shared asset (upload + metadata). Returns the resulting `Asset`. */\n async create(options: { body: SharedAssetCreate; file: Blob | ArrayBuffer; signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<Asset> {\n const { body, file, signal, path, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n const opts = kyOpts(fetchOptions);\n\n const asset = await this.upload({\n body: { short_filename: body.short_filename, asset_folder_id: body.asset_folder_id, is_private: body.is_private },\n file,\n signal,\n path: { space_id: resolvedSpaceId },\n fetchOptions,\n });\n\n const { short_filename, asset_folder_id, is_private, size, validate_upload, ...metadata } = body;\n const hasMetadata = Object.values(metadata).some(v => v !== undefined && v !== null);\n if (hasMetadata) {\n await wrapRequest<void, true>(() =>\n client.put({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: asset.id }, body: { asset: { ...metadata, asset_folder_id } }, signal, throwOnError: true, ...opts }), true);\n const updated = await wrapRequest<Asset, true>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: asset.id }, signal, throwOnError: true, ...opts }), true);\n return updated.data;\n }\n return asset;\n },\n /** Updates a shared asset's metadata, optionally replacing the file. */\n async update(assetId: number | string, options: ({ body: { asset: AssetUpdate }; file?: undefined } | { body: { asset: AssetUpdate; short_filename: string }; file: Blob | ArrayBuffer }) & { signal?: AbortSignal; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<void> {\n const { body, file, signal, path, fetchOptions } = options;\n const resolvedSpaceId = getSpaceId(path);\n const opts = kyOpts(fetchOptions);\n\n if (file !== undefined) {\n const { short_filename, ...assetBody } = body as { short_filename: string; asset: AssetUpdate };\n const signResult = await wrapRequest<SignResponse, true>(() =>\n client.post({ url: '/v1/spaces/{space_id}/shared_assets', path: { space_id: resolvedSpaceId }, query: { filename: short_filename, id: Number(assetId) }, signal, throwOnError: true, ...opts }), true);\n if (!signResult.data.id) {\n throw new Error('Invalid signed response: missing id');\n }\n await uploadToS3(signResult.data, file, short_filename);\n await wrapRequest<unknown, true>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}/finish_upload', path: { space_id: resolvedSpaceId, asset_id: signResult.data.id }, signal, throwOnError: true, ...opts }), true);\n if (assetBody.asset && Object.keys(assetBody.asset).length > 0) {\n await wrapRequest<void, true>(() =>\n client.put({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: assetId }, body: assetBody, signal, throwOnError: true, ...opts }), true);\n }\n }\n else {\n await wrapRequest<void, true>(() =>\n client.put({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: resolvedSpaceId, asset_id: assetId }, body, signal, throwOnError: true, ...opts }), true);\n }\n },\n delete<ThrowOnError extends boolean = false>(assetId: number | string, options: { signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride = {}): Promise<ApiResponse<Asset, ThrowOnError>> {\n const { signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<Asset, ThrowOnError>(() =>\n client.delete({ url: '/v1/spaces/{space_id}/shared_assets/{asset_id}', path: { space_id: getSpaceId(path), asset_id: assetId }, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
const require_shared = require('./shared.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/resources/shared-internal-tags.ts
|
|
4
|
+
/**
|
|
5
|
+
* Shared (organization-level) internal tags, scoped to a library. Every method
|
|
6
|
+
* carries `asset_folder_id` = library root (query param on list/delete, body
|
|
7
|
+
* field on create/update). Not part of the generated SDK — raw `client.*`.
|
|
8
|
+
*/
|
|
9
|
+
function createSharedInternalTagsResource(deps) {
|
|
10
|
+
const { client, spaceId, wrapRequest } = deps;
|
|
11
|
+
const getSpaceId = (path) => require_shared.resolveSpaceId(spaceId, path);
|
|
12
|
+
const kyOpts = (fetchOptions) => fetchOptions ? { kyOptions: {
|
|
13
|
+
...client.getConfig().kyOptions,
|
|
14
|
+
...fetchOptions
|
|
15
|
+
} } : {};
|
|
16
|
+
const maybeThrow = (throwOnError) => throwOnError === void 0 ? {} : { throwOnError };
|
|
17
|
+
return {
|
|
18
|
+
list(options) {
|
|
19
|
+
const { query, signal, path, throwOnError, fetchOptions } = options;
|
|
20
|
+
return wrapRequest(() => client.get({
|
|
21
|
+
url: "/v1/spaces/{space_id}/shared_internal_tags",
|
|
22
|
+
path: { space_id: getSpaceId(path) },
|
|
23
|
+
query: { ...query },
|
|
24
|
+
signal,
|
|
25
|
+
...maybeThrow(throwOnError),
|
|
26
|
+
...kyOpts(fetchOptions)
|
|
27
|
+
}), throwOnError);
|
|
28
|
+
},
|
|
29
|
+
create(options) {
|
|
30
|
+
const { body, signal, path, throwOnError, fetchOptions } = options;
|
|
31
|
+
return wrapRequest(() => client.post({
|
|
32
|
+
url: "/v1/spaces/{space_id}/shared_internal_tags",
|
|
33
|
+
path: { space_id: getSpaceId(path) },
|
|
34
|
+
body,
|
|
35
|
+
signal,
|
|
36
|
+
...maybeThrow(throwOnError),
|
|
37
|
+
...kyOpts(fetchOptions)
|
|
38
|
+
}), throwOnError);
|
|
39
|
+
},
|
|
40
|
+
update(tagId, options) {
|
|
41
|
+
const { body, signal, path, throwOnError, fetchOptions } = options;
|
|
42
|
+
return wrapRequest(() => client.patch({
|
|
43
|
+
url: "/v1/spaces/{space_id}/shared_internal_tags/{internal_tag_id}",
|
|
44
|
+
path: {
|
|
45
|
+
space_id: getSpaceId(path),
|
|
46
|
+
internal_tag_id: tagId
|
|
47
|
+
},
|
|
48
|
+
body,
|
|
49
|
+
signal,
|
|
50
|
+
...maybeThrow(throwOnError),
|
|
51
|
+
...kyOpts(fetchOptions)
|
|
52
|
+
}), throwOnError);
|
|
53
|
+
},
|
|
54
|
+
delete(tagId, options) {
|
|
55
|
+
const { query, signal, path, throwOnError, fetchOptions } = options;
|
|
56
|
+
return wrapRequest(() => client.delete({
|
|
57
|
+
url: "/v1/spaces/{space_id}/shared_internal_tags/{internal_tag_id}",
|
|
58
|
+
path: {
|
|
59
|
+
space_id: getSpaceId(path),
|
|
60
|
+
internal_tag_id: tagId
|
|
61
|
+
},
|
|
62
|
+
query,
|
|
63
|
+
signal,
|
|
64
|
+
...maybeThrow(throwOnError),
|
|
65
|
+
...kyOpts(fetchOptions)
|
|
66
|
+
}), throwOnError);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
//#endregion
|
|
72
|
+
exports.createSharedInternalTagsResource = createSharedInternalTagsResource;
|
|
73
|
+
//# sourceMappingURL=shared-internal-tags.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-internal-tags.cjs","names":["resolveSpaceId"],"sources":["../../src/resources/shared-internal-tags.ts"],"sourcesContent":["import type { ApiResponse, FetchOptions, MapiResourceDeps } from '../client';\nimport { resolveSpaceId, type SpaceIdPathOverride } from './shared';\n\nexport type SharedInternalTagObjectType = 'asset' | 'component' | 'idea';\n\nexport interface SharedInternalTag {\n id: number;\n name: string;\n object_type: SharedInternalTagObjectType;\n assets_count?: number;\n}\n\nexport interface SharedInternalTagCreate {\n name: string;\n object_type: SharedInternalTagObjectType;\n /** The library root folder the tag is scoped to. Required on every call. */\n asset_folder_id: number;\n}\n\nexport interface SharedInternalTagListQuery {\n /** The library root folder. Required. */\n asset_folder_id: number;\n search?: string;\n by_object_type?: string;\n by_ids?: string;\n page?: number;\n per_page?: number;\n}\n\nexport interface SharedInternalTagListResponse {\n internal_tags: SharedInternalTag[];\n}\n\nexport interface SharedInternalTagMutateResponse {\n internal_tag: SharedInternalTag;\n}\n\n/**\n * Shared (organization-level) internal tags, scoped to a library. Every method\n * carries `asset_folder_id` = library root (query param on list/delete, body\n * field on create/update). Not part of the generated SDK — raw `client.*`.\n */\nexport function createSharedInternalTagsResource<DefaultThrowOnError extends boolean = false>(deps: MapiResourceDeps<DefaultThrowOnError>) {\n const { client, spaceId, wrapRequest } = deps;\n const getSpaceId = (path?: SpaceIdPathOverride['path']) => resolveSpaceId(spaceId, path);\n const kyOpts = (fetchOptions?: FetchOptions) =>\n fetchOptions ? { kyOptions: { ...client.getConfig().kyOptions, ...fetchOptions } } : {};\n const maybeThrow = (throwOnError?: boolean) => (throwOnError === undefined ? {} : { throwOnError });\n\n return {\n list<ThrowOnError extends boolean = false>(options: { query: SharedInternalTagListQuery; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<SharedInternalTagListResponse, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<SharedInternalTagListResponse, ThrowOnError>(() =>\n client.get({ url: '/v1/spaces/{space_id}/shared_internal_tags', path: { space_id: getSpaceId(path) }, query: { ...query }, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n create<ThrowOnError extends boolean = false>(options: { body: { shared_internal_tag: SharedInternalTagCreate }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<SharedInternalTagMutateResponse, ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<SharedInternalTagMutateResponse, ThrowOnError>(() =>\n client.post({ url: '/v1/spaces/{space_id}/shared_internal_tags', path: { space_id: getSpaceId(path) }, body, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n update<ThrowOnError extends boolean = false>(tagId: number, options: { body: { shared_internal_tag: SharedInternalTagCreate }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<SharedInternalTagMutateResponse, ThrowOnError>> {\n const { body, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<SharedInternalTagMutateResponse, ThrowOnError>(() =>\n client.patch({ url: '/v1/spaces/{space_id}/shared_internal_tags/{internal_tag_id}', path: { space_id: getSpaceId(path), internal_tag_id: tagId }, body, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n delete<ThrowOnError extends boolean = false>(tagId: number, options: { query: { asset_folder_id: number }; signal?: AbortSignal; throwOnError?: ThrowOnError; fetchOptions?: FetchOptions } & SpaceIdPathOverride): Promise<ApiResponse<void, ThrowOnError>> {\n const { query, signal, path, throwOnError, fetchOptions } = options;\n return wrapRequest<void, ThrowOnError>(() =>\n client.delete({ url: '/v1/spaces/{space_id}/shared_internal_tags/{internal_tag_id}', path: { space_id: getSpaceId(path), internal_tag_id: tagId }, query, signal, ...maybeThrow(throwOnError), ...kyOpts(fetchOptions) }), throwOnError);\n },\n };\n}\n"],"mappings":";;;;;;;;AA0CA,SAAgB,iCAA8E,MAA6C;CACzI,MAAM,EAAE,QAAQ,SAAS,gBAAgB;CACzC,MAAM,cAAc,SAAuCA,8BAAe,SAAS,KAAK;CACxF,MAAM,UAAU,iBACd,eAAe,EAAE,WAAW;EAAE,GAAG,OAAO,WAAW,CAAC;EAAW,GAAG;EAAc,EAAE,GAAG,EAAE;CACzF,MAAM,cAAc,iBAA4B,iBAAiB,SAAY,EAAE,GAAG,EAAE,cAAc;AAElG,QAAO;EACL,KAA2C,SAAyN;GAClQ,MAAM,EAAE,OAAO,QAAQ,MAAM,cAAc,iBAAiB;AAC5D,UAAO,kBACL,OAAO,IAAI;IAAE,KAAK;IAA8C,MAAM,EAAE,UAAU,WAAW,KAAK,EAAE;IAAE,OAAO,EAAE,GAAG,OAAO;IAAE;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAE7M,OAA6C,SAAgP;GAC3R,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;AAC3D,UAAO,kBACL,OAAO,KAAK;IAAE,KAAK;IAA8C,MAAM,EAAE,UAAU,WAAW,KAAK,EAAE;IAAE;IAAM;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAE/L,OAA6C,OAAe,SAAgP;GAC1S,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAc,iBAAiB;AAC3D,UAAO,kBACL,OAAO,MAAM;IAAE,KAAK;IAAgE,MAAM;KAAE,UAAU,WAAW,KAAK;KAAE,iBAAiB;KAAO;IAAE;IAAM;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAE1O,OAA6C,OAAe,SAAiM;GAC3P,MAAM,EAAE,OAAO,QAAQ,MAAM,cAAc,iBAAiB;AAC5D,UAAO,kBACL,OAAO,OAAO;IAAE,KAAK;IAAgE,MAAM;KAAE,UAAU,WAAW,KAAK;KAAE,iBAAiB;KAAO;IAAE;IAAO;IAAQ,GAAG,WAAW,aAAa;IAAE,GAAG,OAAO,aAAa;IAAE,CAAC,EAAE,aAAa;;EAE7O"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//#region src/resources/shared-internal-tags.d.ts
|
|
2
|
+
type SharedInternalTagObjectType = 'asset' | 'component' | 'idea';
|
|
3
|
+
interface SharedInternalTag {
|
|
4
|
+
id: number;
|
|
5
|
+
name: string;
|
|
6
|
+
object_type: SharedInternalTagObjectType;
|
|
7
|
+
assets_count?: number;
|
|
8
|
+
}
|
|
9
|
+
interface SharedInternalTagCreate {
|
|
10
|
+
name: string;
|
|
11
|
+
object_type: SharedInternalTagObjectType;
|
|
12
|
+
/** The library root folder the tag is scoped to. Required on every call. */
|
|
13
|
+
asset_folder_id: number;
|
|
14
|
+
}
|
|
15
|
+
interface SharedInternalTagListQuery {
|
|
16
|
+
/** The library root folder. Required. */
|
|
17
|
+
asset_folder_id: number;
|
|
18
|
+
search?: string;
|
|
19
|
+
by_object_type?: string;
|
|
20
|
+
by_ids?: string;
|
|
21
|
+
page?: number;
|
|
22
|
+
per_page?: number;
|
|
23
|
+
}
|
|
24
|
+
interface SharedInternalTagListResponse {
|
|
25
|
+
internal_tags: SharedInternalTag[];
|
|
26
|
+
}
|
|
27
|
+
interface SharedInternalTagMutateResponse {
|
|
28
|
+
internal_tag: SharedInternalTag;
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { SharedInternalTag, SharedInternalTagCreate, SharedInternalTagListQuery, SharedInternalTagListResponse, SharedInternalTagMutateResponse, SharedInternalTagObjectType };
|
|
32
|
+
//# sourceMappingURL=shared-internal-tags.d.cts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
//#region src/resources/shared-internal-tags.d.ts
|
|
2
|
+
type SharedInternalTagObjectType = 'asset' | 'component' | 'idea';
|
|
3
|
+
interface SharedInternalTag {
|
|
4
|
+
id: number;
|
|
5
|
+
name: string;
|
|
6
|
+
object_type: SharedInternalTagObjectType;
|
|
7
|
+
assets_count?: number;
|
|
8
|
+
}
|
|
9
|
+
interface SharedInternalTagCreate {
|
|
10
|
+
name: string;
|
|
11
|
+
object_type: SharedInternalTagObjectType;
|
|
12
|
+
/** The library root folder the tag is scoped to. Required on every call. */
|
|
13
|
+
asset_folder_id: number;
|
|
14
|
+
}
|
|
15
|
+
interface SharedInternalTagListQuery {
|
|
16
|
+
/** The library root folder. Required. */
|
|
17
|
+
asset_folder_id: number;
|
|
18
|
+
search?: string;
|
|
19
|
+
by_object_type?: string;
|
|
20
|
+
by_ids?: string;
|
|
21
|
+
page?: number;
|
|
22
|
+
per_page?: number;
|
|
23
|
+
}
|
|
24
|
+
interface SharedInternalTagListResponse {
|
|
25
|
+
internal_tags: SharedInternalTag[];
|
|
26
|
+
}
|
|
27
|
+
interface SharedInternalTagMutateResponse {
|
|
28
|
+
internal_tag: SharedInternalTag;
|
|
29
|
+
}
|
|
30
|
+
//#endregion
|
|
31
|
+
export { SharedInternalTag, SharedInternalTagCreate, SharedInternalTagListQuery, SharedInternalTagListResponse, SharedInternalTagMutateResponse, SharedInternalTagObjectType };
|
|
32
|
+
//# sourceMappingURL=shared-internal-tags.d.mts.map
|