alinea
Version:
Headless git-based CMS
62 lines (61 loc) • 1.55 kB
TypeScript
import type { EntryStatus } from '../Entry.js';
export type Mutation = CreateMutation | UpdateMutation | RemoveMutation | MoveMutation | PublishMutation | UnpublishMutation | ArchiveMutation | UploadFileMutation | RemoveFileMutation;
export interface CreateMutation {
op: 'create';
type: string;
locale: string | null;
data: Record<string, unknown>;
parentId?: string | null;
id?: string;
insertOrder?: 'first' | 'last';
status?: 'draft' | 'archived' | 'published';
overwrite?: boolean;
fromSeed?: string;
root?: string;
workspace?: string;
}
export interface UpdateMutation {
op: 'update';
id: string;
locale: string | null;
status: EntryStatus;
set: Record<string, unknown>;
}
export interface RemoveMutation {
op: 'remove';
id: string;
locale?: string | null;
status?: 'draft' | 'archived' | 'published';
}
export interface PublishMutation {
op: 'publish';
id: string;
locale: string | null;
status: 'draft' | 'archived';
}
export interface UnpublishMutation {
op: 'unpublish';
id: string;
locale: string | null;
}
export interface ArchiveMutation {
op: 'archive';
id: string;
locale: string | null;
}
export interface MoveMutation {
op: 'move';
id: string;
after: string | null;
toParent?: string;
toRoot?: string;
}
export interface UploadFileMutation {
op: 'uploadFile';
url: string;
location: string;
}
export interface RemoveFileMutation {
op: 'removeFile';
location: string;
}