pancake-client-sdk
Version:
Official TypeScript SDK for Pancake POS API
120 lines (119 loc) • 2.74 kB
TypeScript
export interface Media {
id: string;
name: string;
type: MediaType;
mime_type: string;
size: number;
url: string;
thumbnail_url?: string;
metadata?: MediaMetadata;
tags?: string[];
folder_id?: string;
created_by: {
id: string;
name: string;
};
created_at: string;
updated_at: string;
}
export type MediaType = 'image' | 'video' | 'document' | 'audio' | 'other';
export interface MediaMetadata {
width?: number;
height?: number;
duration?: number;
format?: string;
bit_rate?: number;
frame_rate?: number;
pages?: number;
exif?: Record<string, any>;
}
export interface MediaFolder {
id: string;
name: string;
parent_id?: string;
path: string[];
item_count: number;
size: number;
created_at: string;
updated_at: string;
}
export interface CreateFolderRequest {
name: string;
parent_id?: string;
}
export interface UploadRequest {
file: File | Blob;
folder_id?: string;
tags?: string[];
metadata?: Record<string, any>;
filename?: string;
content_type?: string;
}
export interface ImageProcessingOptions {
width?: number;
height?: number;
crop?: boolean;
quality?: number;
format?: 'jpeg' | 'png' | 'webp';
blur?: number;
brightness?: number;
contrast?: number;
grayscale?: boolean;
rotate?: number;
flip?: 'horizontal' | 'vertical';
watermark?: {
text?: string;
image_url?: string;
position?: 'center' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
opacity?: number;
};
}
export interface MediaListParams {
page_size?: number;
page_number?: number;
type?: MediaType;
folder_id?: string;
search?: string;
from_date?: string;
to_date?: string;
order_by?: 'created_at' | 'name' | 'size';
order_direction?: 'asc' | 'desc';
tags?: string[];
}
export interface MediaStats {
total_files: number;
total_size: number;
by_type: {
[key in MediaType]: {
count: number;
size: number;
};
};
storage_usage: {
used: number;
total: number;
percentage: number;
};
}
export interface BulkMediaOperation {
media_ids: string[];
operation: 'move' | 'delete' | 'tag' | 'untag';
params?: {
folder_id?: string;
tags?: string[];
};
}
export interface BulkOperationResult {
success_count: number;
failed_count: number;
errors?: {
media_id: string;
error: string;
}[];
}
export interface MediaScanResult {
id: string;
status: 'clean' | 'infected' | 'error';
threats?: string[];
scanned_at: string;
}