@knkcs/mediahub-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1686 -0
- package/dist/index.js +4357 -0
- package/dist/index.js.map +1 -0
- package/dist/testing.d.ts +487 -0
- package/dist/testing.js +413 -0
- package/dist/testing.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
declare interface AIConnectionClient {
|
|
2
|
+
list(workspaceId: string): Promise<AIConnectionInfo[]>;
|
|
3
|
+
get(id: string): Promise<AIConnectionInfo>;
|
|
4
|
+
create(params: {
|
|
5
|
+
workspaceId: string;
|
|
6
|
+
name: string;
|
|
7
|
+
provider: string;
|
|
8
|
+
endpoint: string;
|
|
9
|
+
deployment: string;
|
|
10
|
+
apiVersion: string;
|
|
11
|
+
baseUrl: string;
|
|
12
|
+
model: string;
|
|
13
|
+
apiKey: string;
|
|
14
|
+
description: string;
|
|
15
|
+
}): Promise<AIConnectionInfo>;
|
|
16
|
+
update(id: string, patch: {
|
|
17
|
+
name?: string;
|
|
18
|
+
endpoint?: string;
|
|
19
|
+
deployment?: string;
|
|
20
|
+
apiVersion?: string;
|
|
21
|
+
baseUrl?: string;
|
|
22
|
+
model?: string;
|
|
23
|
+
apiKey?: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
active?: boolean;
|
|
26
|
+
}): Promise<AIConnectionInfo>;
|
|
27
|
+
delete(id: string): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
declare interface AIConnectionInfo {
|
|
31
|
+
id: string;
|
|
32
|
+
workspaceId: string;
|
|
33
|
+
name: string;
|
|
34
|
+
provider: string;
|
|
35
|
+
endpoint: string;
|
|
36
|
+
deployment: string;
|
|
37
|
+
apiVersion: string;
|
|
38
|
+
baseUrl: string;
|
|
39
|
+
model: string;
|
|
40
|
+
description: string;
|
|
41
|
+
active: boolean;
|
|
42
|
+
hasApiKey: boolean;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
declare interface AIProcessClient {
|
|
46
|
+
list(assetTypeId: string): Promise<AIProcessInfo[]>;
|
|
47
|
+
get(id: string): Promise<AIProcessInfo>;
|
|
48
|
+
create(params: {
|
|
49
|
+
assetTypeId: string;
|
|
50
|
+
connectionId: string;
|
|
51
|
+
name: string;
|
|
52
|
+
prompt: string;
|
|
53
|
+
outputs: {
|
|
54
|
+
key: string;
|
|
55
|
+
target: string;
|
|
56
|
+
metadataAccessor: string;
|
|
57
|
+
}[];
|
|
58
|
+
position: number;
|
|
59
|
+
workspaceId: string;
|
|
60
|
+
}): Promise<AIProcessInfo>;
|
|
61
|
+
update(id: string, patch: {
|
|
62
|
+
connectionId?: string;
|
|
63
|
+
name?: string;
|
|
64
|
+
prompt?: string;
|
|
65
|
+
outputs?: {
|
|
66
|
+
key: string;
|
|
67
|
+
target: string;
|
|
68
|
+
metadataAccessor: string;
|
|
69
|
+
}[];
|
|
70
|
+
position?: number;
|
|
71
|
+
active?: boolean;
|
|
72
|
+
}): Promise<AIProcessInfo>;
|
|
73
|
+
delete(id: string): Promise<void>;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
declare interface AIProcessInfo {
|
|
77
|
+
id: string;
|
|
78
|
+
workspaceId: string;
|
|
79
|
+
assetTypeId: string;
|
|
80
|
+
connectionId: string;
|
|
81
|
+
name: string;
|
|
82
|
+
prompt: string;
|
|
83
|
+
outputs: {
|
|
84
|
+
key: string;
|
|
85
|
+
target: string;
|
|
86
|
+
metadataAccessor: string;
|
|
87
|
+
}[];
|
|
88
|
+
position: number;
|
|
89
|
+
active: boolean;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
declare interface AIProcessRunInfo {
|
|
93
|
+
id: string;
|
|
94
|
+
aiProcessId: string;
|
|
95
|
+
processName: string;
|
|
96
|
+
status: "queued" | "running" | "succeeded" | "failed" | string;
|
|
97
|
+
error: string;
|
|
98
|
+
startedAt?: Date;
|
|
99
|
+
finishedAt?: Date;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
declare interface AssetClient {
|
|
103
|
+
list(workspaceId: string, filters: AssetFilters): Promise<Page<AssetInfo>>;
|
|
104
|
+
get(id: string): Promise<AssetInfo>;
|
|
105
|
+
create(workspaceId: string, params: CreateAssetParams): Promise<AssetInfo>;
|
|
106
|
+
update(id: string, patch: {
|
|
107
|
+
name?: string;
|
|
108
|
+
description?: string;
|
|
109
|
+
metadata?: Record<string, unknown>;
|
|
110
|
+
}): Promise<AssetInfo>;
|
|
111
|
+
delete(id: string): Promise<void>;
|
|
112
|
+
getUploadUrl(params: GetUploadUrlParams): Promise<UploadTarget>;
|
|
113
|
+
finalizeUpload(versionId: string): Promise<AssetInfo>;
|
|
114
|
+
getDownloadUrl(assetId: string, versionId: string): Promise<string>;
|
|
115
|
+
move(id: string, folderId: string): Promise<AssetInfo>;
|
|
116
|
+
/**
|
|
117
|
+
* Changes an asset's status (statushub's integration standard §3).
|
|
118
|
+
* `fromStatusSlug` is the slug the caller last saw: the server makes the
|
|
119
|
+
* change against it, so a stale screen is refused as a conflict instead of
|
|
120
|
+
* overwriting whatever happened in between. Pass `""` when there is
|
|
121
|
+
* nothing to compare against.
|
|
122
|
+
*/
|
|
123
|
+
transitionStatus(id: string, fromStatusSlug: string, toStatusSlug: string): Promise<AssetInfo>;
|
|
124
|
+
enhanceMetadata(id: string): Promise<AssetInfo>;
|
|
125
|
+
listProcessRuns(assetId: string): Promise<AIProcessRunInfo[]>;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
declare interface AssetFilters {
|
|
129
|
+
folderId?: string;
|
|
130
|
+
assetTypeId?: string;
|
|
131
|
+
statusSlug?: string;
|
|
132
|
+
behavior?: AssetStatusBehavior;
|
|
133
|
+
search?: string;
|
|
134
|
+
tagIds?: string[];
|
|
135
|
+
collectionIds?: string[];
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
declare interface AssetInfo {
|
|
139
|
+
id: string;
|
|
140
|
+
workspaceId: string;
|
|
141
|
+
name: string;
|
|
142
|
+
description: string;
|
|
143
|
+
statusSlug: string;
|
|
144
|
+
currentVersion: number;
|
|
145
|
+
metadata: Record<string, unknown>;
|
|
146
|
+
assetTypeId: string;
|
|
147
|
+
folderId: string;
|
|
148
|
+
createdBy: string;
|
|
149
|
+
updatedBy: string;
|
|
150
|
+
createdAt?: Date;
|
|
151
|
+
updatedAt?: Date;
|
|
152
|
+
versions: AssetVersionInfo[];
|
|
153
|
+
tagIds: string[];
|
|
154
|
+
collectionIds: string[];
|
|
155
|
+
analyzeWithAi: boolean;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
declare type AssetStatusBehavior = "unspecified" | "active" | "archived" | "inactive" | "deleted";
|
|
159
|
+
|
|
160
|
+
declare interface AssetSummaryInfo {
|
|
161
|
+
id: string;
|
|
162
|
+
name: string;
|
|
163
|
+
assetTypeName: string;
|
|
164
|
+
statusName: string;
|
|
165
|
+
statusColor: string;
|
|
166
|
+
createdAt?: Date;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
declare interface AssetTypeClient {
|
|
170
|
+
list(workspaceId: string): Promise<AssetTypeInfo[]>;
|
|
171
|
+
get(id: string): Promise<AssetTypeInfo>;
|
|
172
|
+
create(params: {
|
|
173
|
+
workspaceId: string;
|
|
174
|
+
name: string;
|
|
175
|
+
slug: string;
|
|
176
|
+
description: string;
|
|
177
|
+
allowedMimeTypes: string[];
|
|
178
|
+
metadataSchema: string;
|
|
179
|
+
}): Promise<AssetTypeInfo>;
|
|
180
|
+
update(id: string, patch: {
|
|
181
|
+
name?: string;
|
|
182
|
+
description?: string;
|
|
183
|
+
allowedMimeTypes?: string[];
|
|
184
|
+
metadataSchema?: string;
|
|
185
|
+
active?: boolean;
|
|
186
|
+
}): Promise<AssetTypeInfo>;
|
|
187
|
+
delete(id: string): Promise<void>;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
declare interface AssetTypeInfo {
|
|
191
|
+
id: string;
|
|
192
|
+
workspaceId: string;
|
|
193
|
+
name: string;
|
|
194
|
+
slug: string;
|
|
195
|
+
description: string;
|
|
196
|
+
allowedMimeTypes: string[];
|
|
197
|
+
metadataSchema: string;
|
|
198
|
+
active: boolean;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
declare interface AssetVersionInfo {
|
|
202
|
+
id: string;
|
|
203
|
+
versionNumber: number;
|
|
204
|
+
originalFilename: string;
|
|
205
|
+
storageKey: string;
|
|
206
|
+
fileSize: number;
|
|
207
|
+
mimeType: string;
|
|
208
|
+
createdBy: string;
|
|
209
|
+
comment: string;
|
|
210
|
+
createdAt?: Date;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
declare interface AuthzClient {
|
|
214
|
+
/** Whether the current user holds toggle/grant authority — Owner of the
|
|
215
|
+
* resource or admin of its workspace (mediahub ADR-0001) — over the
|
|
216
|
+
* resource. A denial answers false; other failures reject so callers can
|
|
217
|
+
* fail closed without hiding real errors. */
|
|
218
|
+
canManage(resourceType: GrantResourceType, resourceId: string): Promise<boolean>;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
declare interface CollectionClient {
|
|
222
|
+
list(workspaceId: string): Promise<CollectionInfo[]>;
|
|
223
|
+
get(id: string): Promise<CollectionInfo>;
|
|
224
|
+
create(params: {
|
|
225
|
+
workspaceId: string;
|
|
226
|
+
name: string;
|
|
227
|
+
slug: string;
|
|
228
|
+
description: string;
|
|
229
|
+
type: CollectionType;
|
|
230
|
+
rules: string;
|
|
231
|
+
/** Create as Restricted (creator-only until Grants are issued). @default false */
|
|
232
|
+
restricted?: boolean;
|
|
233
|
+
}): Promise<CollectionInfo>;
|
|
234
|
+
update(id: string, patch: {
|
|
235
|
+
name?: string;
|
|
236
|
+
description?: string;
|
|
237
|
+
rules?: string;
|
|
238
|
+
}): Promise<CollectionInfo>;
|
|
239
|
+
delete(id: string): Promise<void>;
|
|
240
|
+
addAssets(collectionId: string, assetIds: string[]): Promise<void>;
|
|
241
|
+
removeAssets(collectionId: string, assetIds: string[]): Promise<void>;
|
|
242
|
+
/** Toggle the Restricted flag (guardian#53). The server refuses with a
|
|
243
|
+
* leak-guard conflict when the toggle would create a leak state. */
|
|
244
|
+
setRestricted(id: string, restricted: boolean): Promise<CollectionInfo>;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
declare interface CollectionInfo {
|
|
248
|
+
id: string;
|
|
249
|
+
workspaceId: string;
|
|
250
|
+
name: string;
|
|
251
|
+
slug: string;
|
|
252
|
+
description: string;
|
|
253
|
+
type: CollectionType;
|
|
254
|
+
rules: string;
|
|
255
|
+
/** Restricted collections sever Derived Access: only Grants admit anyone. */
|
|
256
|
+
restricted: boolean;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
declare type CollectionType = "unspecified" | "static" | "smart";
|
|
260
|
+
|
|
261
|
+
declare interface CreateAssetParams {
|
|
262
|
+
name: string;
|
|
263
|
+
description?: string;
|
|
264
|
+
assetTypeId: string;
|
|
265
|
+
folderId?: string;
|
|
266
|
+
metadata?: Record<string, unknown>;
|
|
267
|
+
analyzeWithAi?: boolean;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* The stub `MediahubClients`. Mount them in `MediahubProvider`:
|
|
272
|
+
*
|
|
273
|
+
* ```tsx
|
|
274
|
+
* const clients = createStubMediahubClients();
|
|
275
|
+
* render(
|
|
276
|
+
* <MediahubProvider clients={clients} workspaceId={STUB_WORKSPACE_ID}>
|
|
277
|
+
* <AssetLibrary />
|
|
278
|
+
* </MediahubProvider>,
|
|
279
|
+
* );
|
|
280
|
+
* ```
|
|
281
|
+
*
|
|
282
|
+
* Pass `overrides` to replace any method of any sub-client for one test:
|
|
283
|
+
*
|
|
284
|
+
* ```ts
|
|
285
|
+
* createStubMediahubClients({ assets: { delete: vi.fn(async () => {}) } });
|
|
286
|
+
* ```
|
|
287
|
+
*/
|
|
288
|
+
export declare function createStubMediahubClients(overrides?: StubMediahubOverrides): MediahubClients;
|
|
289
|
+
|
|
290
|
+
declare interface DashboardClient {
|
|
291
|
+
getWorkspaceStats(workspaceId: string): Promise<WorkspaceStats>;
|
|
292
|
+
getDashboardLayout(workspaceId: string): Promise<string>;
|
|
293
|
+
saveDashboardLayout(workspaceId: string, layoutJson: string): Promise<void>;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
declare interface DirectoryClient {
|
|
297
|
+
resolveUsers(ids: string[]): Promise<UserInfo[]>;
|
|
298
|
+
/** Every member of the workspace (union of admins and members), resolved
|
|
299
|
+
* display names, sorted by name. Backs the grant picker; deliberately
|
|
300
|
+
* unpaginated — the member set is workspace-bounded. */
|
|
301
|
+
listWorkspaceMembers(workspaceId: string): Promise<UserInfo[]>;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
declare interface FolderClient {
|
|
305
|
+
list(workspaceId: string, parentId: string): Promise<FolderInfo[]>;
|
|
306
|
+
get(id: string): Promise<FolderInfo>;
|
|
307
|
+
create(params: {
|
|
308
|
+
workspaceId: string;
|
|
309
|
+
name: string;
|
|
310
|
+
slug: string;
|
|
311
|
+
parentId: string;
|
|
312
|
+
/** Create as Restricted (creator-only until Grants are issued). @default false */
|
|
313
|
+
restricted?: boolean;
|
|
314
|
+
}): Promise<FolderInfo>;
|
|
315
|
+
update(id: string, name: string): Promise<FolderInfo>;
|
|
316
|
+
delete(id: string): Promise<void>;
|
|
317
|
+
move(id: string, parentId: string): Promise<FolderInfo>;
|
|
318
|
+
/** Toggle the Restricted flag (guardian#53). The server refuses with a
|
|
319
|
+
* leak-guard conflict when the toggle would create a leak state. */
|
|
320
|
+
setRestricted(id: string, restricted: boolean): Promise<FolderInfo>;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
declare interface FolderInfo {
|
|
324
|
+
id: string;
|
|
325
|
+
workspaceId: string;
|
|
326
|
+
name: string;
|
|
327
|
+
slug: string;
|
|
328
|
+
parentId: string;
|
|
329
|
+
/** Restricted folders sever Derived Access: only Grants admit anyone. */
|
|
330
|
+
restricted: boolean;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
declare interface GetUploadUrlParams {
|
|
334
|
+
assetId: string;
|
|
335
|
+
filename: string;
|
|
336
|
+
contentType: string;
|
|
337
|
+
fileSize: number;
|
|
338
|
+
comment?: string;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/** Manages explicit Grants on assets, folders, and collections. Every call —
|
|
342
|
+
* mutations and roster reads alike — requires owner on the resource or admin
|
|
343
|
+
* on its workspace; the server answers PermissionDenied otherwise. */
|
|
344
|
+
declare interface GrantClient {
|
|
345
|
+
list(resourceType: GrantResourceType, resourceId: string): Promise<GrantRoster>;
|
|
346
|
+
/** Upserts: a user holds at most one Grant per resource, so granting
|
|
347
|
+
* replaces any existing Grant at whatever level it had. */
|
|
348
|
+
grant(resourceType: GrantResourceType, resourceId: string, userId: string, level: GrantLevel): Promise<void>;
|
|
349
|
+
/** Level-less and idempotent: removes whatever the user held. */
|
|
350
|
+
revoke(resourceType: GrantResourceType, resourceId: string, userId: string): Promise<void>;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/** One explicit Grant on a roster: a named user holding a grantable level. */
|
|
354
|
+
declare interface GrantEntry {
|
|
355
|
+
userId: string;
|
|
356
|
+
level: GrantLevel;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/** A grantable relation. Ownership is structural and never grantable. */
|
|
360
|
+
declare type GrantLevel = "viewer" | "editor";
|
|
361
|
+
|
|
362
|
+
/** The kinds of resource a Grant applies to (guardian#52). */
|
|
363
|
+
declare type GrantResourceType = "asset" | "folder" | "collection";
|
|
364
|
+
|
|
365
|
+
/** A resource's roster: the structural Owner plus explicit Grants only —
|
|
366
|
+
* Derived Access (workspace membership, folder chains, collection
|
|
367
|
+
* membership) is deliberately absent. */
|
|
368
|
+
declare interface GrantRoster {
|
|
369
|
+
/** Empty for resources created before their owner tuples were
|
|
370
|
+
* backfilled — render no Owner row rather than an empty name. */
|
|
371
|
+
ownerUserId: string;
|
|
372
|
+
grants: GrantEntry[];
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
declare interface MediahubClients {
|
|
376
|
+
assets: AssetClient;
|
|
377
|
+
folders: FolderClient;
|
|
378
|
+
collections: CollectionClient;
|
|
379
|
+
tags: TagClient;
|
|
380
|
+
assetTypes: AssetTypeClient;
|
|
381
|
+
directory: DirectoryClient;
|
|
382
|
+
grants: GrantClient;
|
|
383
|
+
dashboard: DashboardClient;
|
|
384
|
+
aiConnection: AIConnectionClient;
|
|
385
|
+
aiProcess: AIProcessClient;
|
|
386
|
+
authz: AuthzClient;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
declare interface Page<T> {
|
|
390
|
+
items: T[];
|
|
391
|
+
total: number;
|
|
392
|
+
page: number;
|
|
393
|
+
pageSize: number;
|
|
394
|
+
totalPages: number;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
declare interface StatusCountInfo {
|
|
398
|
+
statusSlug: string;
|
|
399
|
+
name: string;
|
|
400
|
+
color: string;
|
|
401
|
+
behavior: string;
|
|
402
|
+
count: number;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
export declare const STUB_NOW: Date;
|
|
406
|
+
|
|
407
|
+
export declare const STUB_USER_ID = "user_1";
|
|
408
|
+
|
|
409
|
+
export declare const STUB_WORKSPACE_ID = "ws_1";
|
|
410
|
+
|
|
411
|
+
export declare function stubAIConnection(overrides?: Partial<AIConnectionInfo>): AIConnectionInfo;
|
|
412
|
+
|
|
413
|
+
export declare function stubAIProcess(overrides?: Partial<AIProcessInfo>): AIProcessInfo;
|
|
414
|
+
|
|
415
|
+
export declare function stubAIProcessRun(overrides?: Partial<AIProcessRunInfo>): AIProcessRunInfo;
|
|
416
|
+
|
|
417
|
+
export declare function stubAsset(overrides?: Partial<AssetInfo>): AssetInfo;
|
|
418
|
+
|
|
419
|
+
export declare function stubAssetType(overrides?: Partial<AssetTypeInfo>): AssetTypeInfo;
|
|
420
|
+
|
|
421
|
+
export declare function stubAssetVersion(overrides?: Partial<AssetVersionInfo>): AssetVersionInfo;
|
|
422
|
+
|
|
423
|
+
export declare function stubCollection(overrides?: Partial<CollectionInfo>): CollectionInfo;
|
|
424
|
+
|
|
425
|
+
export declare function stubFolder(overrides?: Partial<FolderInfo>): FolderInfo;
|
|
426
|
+
|
|
427
|
+
export declare function stubGrantRoster(overrides?: Partial<GrantRoster>): GrantRoster;
|
|
428
|
+
|
|
429
|
+
/** Per-client replacements for any method — a rejection, a spy, a different payload. */
|
|
430
|
+
export declare interface StubMediahubOverrides {
|
|
431
|
+
assets?: Partial<AssetClient>;
|
|
432
|
+
folders?: Partial<FolderClient>;
|
|
433
|
+
collections?: Partial<CollectionClient>;
|
|
434
|
+
tags?: Partial<TagClient>;
|
|
435
|
+
assetTypes?: Partial<AssetTypeClient>;
|
|
436
|
+
directory?: Partial<DirectoryClient>;
|
|
437
|
+
grants?: Partial<GrantClient>;
|
|
438
|
+
dashboard?: Partial<DashboardClient>;
|
|
439
|
+
aiConnection?: Partial<AIConnectionClient>;
|
|
440
|
+
aiProcess?: Partial<AIProcessClient>;
|
|
441
|
+
authz?: Partial<AuthzClient>;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
export declare function stubTag(overrides?: Partial<TagInfo>): TagInfo;
|
|
445
|
+
|
|
446
|
+
export declare function stubUser(overrides?: Partial<UserInfo>): UserInfo;
|
|
447
|
+
|
|
448
|
+
export declare function stubWorkspaceStats(overrides?: Partial<WorkspaceStats>): WorkspaceStats;
|
|
449
|
+
|
|
450
|
+
declare interface TagClient {
|
|
451
|
+
list(workspaceId: string): Promise<TagInfo[]>;
|
|
452
|
+
create(params: {
|
|
453
|
+
workspaceId: string;
|
|
454
|
+
name: string;
|
|
455
|
+
slug: string;
|
|
456
|
+
}): Promise<TagInfo>;
|
|
457
|
+
update(id: string, name: string): Promise<TagInfo>;
|
|
458
|
+
delete(id: string): Promise<void>;
|
|
459
|
+
tagAssets(tagId: string, assetIds: string[]): Promise<void>;
|
|
460
|
+
untagAssets(tagId: string, assetIds: string[]): Promise<void>;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
declare interface TagInfo {
|
|
464
|
+
id: string;
|
|
465
|
+
workspaceId: string;
|
|
466
|
+
name: string;
|
|
467
|
+
slug: string;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
declare interface UploadTarget {
|
|
471
|
+
uploadUrl: string;
|
|
472
|
+
versionId: string;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
declare interface UserInfo {
|
|
476
|
+
id: string;
|
|
477
|
+
displayName: string;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
declare interface WorkspaceStats {
|
|
481
|
+
totalAssets: number;
|
|
482
|
+
totalStorageBytes: number;
|
|
483
|
+
statusCounts: StatusCountInfo[];
|
|
484
|
+
recentUploads: AssetSummaryInfo[];
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
export { }
|