121 lines
2.2 KiB
TypeScript
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;
|
|
}
|