Skip to content

Commit 077daa4

Browse files
author
naman-contentstack
committed
feat: add support for bulk ops
1 parent 75da976 commit 077daa4

3 files changed

Lines changed: 62 additions & 0 deletions

File tree

.talismanrc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
fileignoreconfig:
22
- filename: pnpm-lock.yaml
33
checksum: 2f6edbc19377e3a857884f00e31c498b660cc4f64b46892aee8eecf2f1ca9978
4+
- filename: packages/contentstack-asset-management/src/utils/cs-assets-api-adapter.ts
5+
checksum: b887042c89f71914b07e6e5a98f215104ff4ee9da97e0aaa681a3a531cec74c2
46
version: '1.0'

packages/contentstack-asset-management/src/types/cs-assets-api.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,28 @@ export type CSAssetsAPIConfig = {
115115
context?: Record<string, unknown>;
116116
};
117117

118+
// ---------------------------------------------------------------------------
119+
// Bulk mutate (CS Assets / AM API)
120+
// ---------------------------------------------------------------------------
121+
122+
export type BulkDeleteAssetItem = { uid: string; locale: string };
123+
124+
export type BulkDeleteAssetsPayload = { assets: BulkDeleteAssetItem[] };
125+
126+
export type BulkDeleteAssetsResponse = {
127+
notice?: string;
128+
job_id?: string;
129+
};
130+
131+
export type BulkMoveAssetsPayload = {
132+
asset_uids: string[];
133+
target_folder_uid: string;
134+
};
135+
136+
export type BulkMoveAssetsResponse = {
137+
notice?: string;
138+
};
139+
118140
/**
119141
* Adapter interface for Contentstack Assets API calls.
120142
* Used by export and (future) import.
@@ -127,6 +149,16 @@ export interface ICSAssetsAdapter {
127149
getWorkspaceAssets(spaceUid: string, workspaceUid?: string): Promise<unknown>;
128150
getWorkspaceFolders(spaceUid: string, workspaceUid?: string): Promise<unknown>;
129151
getWorkspaceAssetTypes(spaceUid: string): Promise<AssetTypesResponse>;
152+
bulkDeleteAssets(
153+
spaceUid: string,
154+
workspaceUid: string | undefined,
155+
payload: BulkDeleteAssetsPayload,
156+
): Promise<BulkDeleteAssetsResponse>;
157+
bulkMoveAssets(
158+
spaceUid: string,
159+
workspaceUid: string | undefined,
160+
payload: BulkMoveAssetsPayload,
161+
): Promise<BulkMoveAssetsResponse>;
130162
}
131163

132164
/**

packages/contentstack-asset-management/src/utils/cs-assets-api-adapter.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ import { HttpClient, log, authenticationHandler, handleAndLogError } from '@cont
55
import type {
66
CSAssetsAPIConfig,
77
AssetTypesResponse,
8+
BulkDeleteAssetsPayload,
9+
BulkDeleteAssetsResponse,
10+
BulkMoveAssetsPayload,
11+
BulkMoveAssetsResponse,
812
CreateAssetMetadata,
913
CreateAssetTypePayload,
1014
CreateFieldPayload,
@@ -364,4 +368,28 @@ export class CSAssetsAdapter implements ICSAssetsAdapter {
364368
async createAssetType(payload: CreateAssetTypePayload): Promise<{ asset_type: { uid: string } }> {
365369
return this.postJson<{ asset_type: { uid: string } }>('/api/asset_types', payload);
366370
}
371+
372+
/**
373+
* POST /api/spaces/{spaceUid}/assets/bulk/delete — bulk delete assets (per locale entries).
374+
*/
375+
async bulkDeleteAssets(
376+
spaceUid: string,
377+
workspaceUid: string = 'main',
378+
payload: BulkDeleteAssetsPayload,
379+
): Promise<BulkDeleteAssetsResponse> {
380+
const path = `/api/spaces/${encodeURIComponent(spaceUid)}/assets/bulk/delete?workspace=${encodeURIComponent(workspaceUid)}`;
381+
return this.postJson<BulkDeleteAssetsResponse>(path, payload, { space_key: spaceUid });
382+
}
383+
384+
/**
385+
* POST /api/spaces/{spaceUid}/assets/bulk-move — move assets into a folder.
386+
*/
387+
async bulkMoveAssets(
388+
spaceUid: string,
389+
workspaceUid: string = 'main',
390+
payload: BulkMoveAssetsPayload,
391+
): Promise<BulkMoveAssetsResponse> {
392+
const path = `/api/spaces/${encodeURIComponent(spaceUid)}/assets/bulk-move?workspace=${encodeURIComponent(workspaceUid)}`;
393+
return this.postJson<BulkMoveAssetsResponse>(path, payload, { space_key: spaceUid });
394+
}
367395
}

0 commit comments

Comments
 (0)