2024-09-26 11:51:07 +02:00
|
|
|
import { errors } from '@strapi/utils';
|
|
|
|
|
|
|
|
export type SortOrder = 'ASC' | 'DESC';
|
|
|
|
|
|
|
|
export type SortKey = 'createdAt' | 'name' | 'updatedAt';
|
|
|
|
|
|
|
|
import type { File } from './files';
|
|
|
|
|
2024-10-31 10:00:13 +01:00
|
|
|
export interface FolderDefinition extends Omit<Folder, 'children' | 'files' | 'parent'> {
|
|
|
|
children?: {
|
|
|
|
count: number;
|
|
|
|
};
|
|
|
|
createdAt?: string;
|
|
|
|
documentId?: string;
|
|
|
|
files?: {
|
|
|
|
count: number;
|
|
|
|
};
|
|
|
|
folderUrl?: string;
|
|
|
|
isSelectable?: boolean;
|
|
|
|
locale?: string | null;
|
|
|
|
publishedAt?: string;
|
|
|
|
type: string;
|
|
|
|
updatedAt?: string;
|
|
|
|
}
|
|
|
|
|
2024-09-26 11:51:07 +02:00
|
|
|
export interface Folder {
|
|
|
|
id: number;
|
|
|
|
name: string;
|
2024-10-04 16:57:43 +02:00
|
|
|
pathId?: number;
|
2024-09-26 11:51:07 +02:00
|
|
|
/**
|
|
|
|
* parent id
|
|
|
|
*/
|
2024-10-04 16:57:43 +02:00
|
|
|
parent?: number | null | Folder;
|
2024-09-26 11:51:07 +02:00
|
|
|
/**
|
|
|
|
* children ids
|
|
|
|
*/
|
|
|
|
children?: number[];
|
2024-10-04 16:57:43 +02:00
|
|
|
path?: string;
|
2024-09-26 11:51:07 +02:00
|
|
|
files?: File[];
|
|
|
|
}
|
|
|
|
|
2024-10-04 16:57:43 +02:00
|
|
|
export type FolderNode = Partial<Omit<Folder, 'children'>> & {
|
2024-09-26 11:51:07 +02:00
|
|
|
children: FolderNode[];
|
|
|
|
};
|
|
|
|
|
2024-10-31 10:00:13 +01:00
|
|
|
type FolderNodeWithValue = Omit<FolderNode, 'children'> & {
|
|
|
|
value: string | number | null;
|
|
|
|
children: FolderNodeWithValue[];
|
|
|
|
};
|
|
|
|
|
2024-09-26 11:51:07 +02:00
|
|
|
/**
|
|
|
|
* GET /upload/folders/:id - Get specific folder
|
|
|
|
*/
|
|
|
|
export declare namespace GetFolder {
|
|
|
|
export interface Request {
|
|
|
|
params: { id: number };
|
|
|
|
query: {};
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Response {
|
|
|
|
data: Folder;
|
|
|
|
error?: errors.ApplicationError | errors.NotFoundError;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* GET /upload/folders - Get folders
|
|
|
|
*/
|
|
|
|
export declare namespace GetFolders {
|
|
|
|
export interface Request {
|
|
|
|
body: {};
|
|
|
|
query: {
|
|
|
|
page?: string;
|
|
|
|
pageSize?: string;
|
|
|
|
sort?: `${SortKey}:${SortOrder}`;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Response {
|
|
|
|
data: Folder[];
|
|
|
|
error?: errors.ApplicationError | errors.NotFoundError;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* POST /upload/folders - Create folders
|
|
|
|
*/
|
|
|
|
export declare namespace CreateFolders {
|
|
|
|
export interface Request {
|
|
|
|
body: Pick<Folder, 'name' | 'parent'>;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Response {
|
|
|
|
data: Folder;
|
|
|
|
error?: errors.ApplicationError | errors.ValidationError;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* PUT /upload/folders/:id - Update a specific folder
|
|
|
|
*/
|
|
|
|
export declare namespace UpdateFolder {
|
|
|
|
export interface Request {
|
|
|
|
params: { id: number };
|
|
|
|
query: {};
|
|
|
|
body: {
|
|
|
|
name: string;
|
|
|
|
parent: number | null;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Response {
|
|
|
|
data: Folder;
|
|
|
|
error?: errors.ApplicationError | errors.NotFoundError;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* GET /upload/folder-structure
|
|
|
|
*
|
|
|
|
* Return the structure of a folder.
|
|
|
|
*/
|
2024-10-07 09:29:08 +02:00
|
|
|
export declare namespace GetFolderStructure {
|
2024-09-26 11:51:07 +02:00
|
|
|
export interface Request {
|
|
|
|
query?: {};
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Response {
|
|
|
|
data: {
|
2024-10-31 10:00:13 +01:00
|
|
|
data: number[] & FolderNodeWithValue[];
|
2024-09-26 11:51:07 +02:00
|
|
|
};
|
|
|
|
error?: errors.ApplicationError | errors.NotFoundError;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* POST /upload/actions/bulk-delete - Delete Folder
|
|
|
|
*/
|
|
|
|
export declare namespace BulkDeleteFolders {
|
|
|
|
export interface Request {
|
|
|
|
body: {
|
|
|
|
folderIds: number[];
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Response {
|
|
|
|
data: {
|
|
|
|
data: {
|
|
|
|
files: [];
|
2024-10-31 10:00:13 +01:00
|
|
|
folders: FolderDefinition[];
|
2024-09-26 11:51:07 +02:00
|
|
|
};
|
|
|
|
};
|
|
|
|
error?: errors.ApplicationError | errors.ValidationError;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* POST /upload/actions/bulk-move - Move Folder
|
|
|
|
*/
|
|
|
|
export declare namespace BulkMoveFolders {
|
|
|
|
export interface Request {
|
|
|
|
body: {
|
|
|
|
folderIds: number[];
|
|
|
|
destinationFolderId: number;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface Response {
|
|
|
|
data: {
|
|
|
|
data: {
|
|
|
|
files: [];
|
|
|
|
folders: Folder[];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
error?: errors.ApplicationError | errors.ValidationError;
|
|
|
|
}
|
|
|
|
}
|