Files
joplin-cli-gateway/src/domain/types.ts
T
2026-08-19 17:18:45 +01:00

121 lines
2.2 KiB
TypeScript

export type AccessLevel = 'read' | 'write';
export interface NotebookGrant {
notebook_id: string;
access: AccessLevel;
}
export interface ClientPermissions {
full_access: boolean;
create_notebooks: boolean;
create_tags: boolean;
notebooks: NotebookGrant[];
}
export interface ClientIdentity {
client_id: string;
permissions: ClientPermissions;
}
export interface Notebook {
id: string;
parent_id: string;
title: string;
created_time?: number;
updated_time?: number;
deleted_time?: number;
}
export type NotebookView = Notebook & {
access: AccessLevel | 'path_only';
children: NotebookView[];
};
export interface Note {
id: string;
parent_id: string;
title: string;
body: string;
created_time: number;
updated_time: number;
user_created_time?: number;
user_updated_time?: number;
deleted_time: number;
is_todo: number;
is_conflict: number;
}
export interface Tag {
id: string;
title: string;
created_time?: number;
updated_time?: number;
}
export interface RevisionRecord {
id: string;
parent_id: string;
item_id: string;
item_type: number;
item_updated_time: number;
title_diff: string;
body_diff: string;
metadata_diff: string;
encryption_applied: number;
created_time?: number;
updated_time?: number;
}
export interface NoteRevision {
id: string;
note_id: string;
item_updated_time: number;
title: string;
body: string;
parent_id: string;
user_created_time?: number;
user_updated_time?: number;
}
export interface Change {
id: number;
item_type: number | string;
item_id: string;
type: number | string;
created_time: number;
}
export interface Page<T> {
items: T[];
page: number;
limit: number;
has_more: boolean;
}
export interface ChangePage {
items: Change[];
cursor: string;
has_more: boolean;
}
export interface Pagination {
page: number;
limit: number;
order_by?: string;
order_dir?: 'ASC' | 'DESC';
}
export type SyncStatus =
| { status: 'synced'; local_change_applied: boolean }
| {
status: 'pending';
local_change_applied: true;
operation_id: string;
warning: string;
};
export interface OperationResult<T> {
data: T;
sync: SyncStatus;
}