windmill/f/types/clickup.deno.ts

242 lines
4.3 KiB
TypeScript

// types/clickup.d.ts
/**
* Base Task Interface - Shared mutable fields across operations
* Contains all fields that can be SENT in create/update requests
* and RECEIVED in responses (excluding read-only metadata)
*/
interface TaskBase {
// Core Content
name: string;
description?: string;
text_content?: string;
// Status & Priority
status?: string;
priority?: 1 | 2 | 3 | 4;
// Time Management
due_date?: number | null;
start_date?: number | null;
time_estimate?: number | null;
time_spent?: number | null;
// People & Assignments
assignees?: number[];
tags?: string[];
custom_fields?: Array<{
id: string;
value: any;
}>;
// Task Relationships
parent?: string | null;
links_to?: string;
// Advanced Features
markdown_description?: string;
notify_all?: boolean;
check_required_custom_fields?: boolean;
custom_item_id?: number | null;
source?: string;
}
/**
* Task Creation Parameters
* @see https://developer.clickup.com/reference/createtask
*/
interface TaskCreate extends TaskBase {
/** Required Fields */
list_id: string;
name: string;
/** Creation-Specific Fields */
custom_task_id?: string;
team_id?: number;
}
/**
* Task Update Parameters
* @see https://developer.clickup.com/reference/updatetask
*/
interface TaskUpdate extends Partial<TaskBase> {
/** Required Identifier */
id: string;
/** Update-Specific Fields */
task_revision?: number;
task_template_id?: string;
idempotency_key?: string;
}
/**
* Full Task Response
* @see https://developer.clickup.com/reference/gettask
*/
interface TaskResponse extends TaskBase {
/** Read-Only Metadata */
id: string;
url: string;
orderindex: string;
date_created: string;
date_updated: string;
date_closed?: string | null;
date_done?: string | null;
archived: boolean;
/** System Relationships */
list: {
id: string;
name: string;
access: boolean;
};
space: {
id: string;
name: string;
};
folder: {
id: string;
name: string;
hidden: boolean;
access: boolean;
};
/** People & Permissions */
creator: User;
watchers: User[];
followers: User[];
permission_level: string;
shared: SharedAccess[];
/** Complex Structures */
checklists: Checklist[];
dependencies: Dependency[];
linked_tasks: LinkedTask[];
subtasks: TaskResponse[];
attachments: Attachment[];
/** Status Details */
status: {
status: string;
color: string;
orderindex: number;
type: 'open' | 'closed' | 'custom';
};
/** Priority Details */
priority: {
id: string;
priority: 'urgent' | 'high' | 'normal' | 'low';
color: string;
} | null;
}
// Supporting Interfaces
interface User {
id: number;
username: string;
email: string;
color: string;
initials: string;
profilePicture?: string;
}
interface Checklist {
id: string;
name: string;
orderindex: number;
resolved: number;
unresolved: number;
items: ChecklistItem[];
}
interface ChecklistItem {
id: string;
name: string;
orderindex: number;
assignee?: number;
resolved: boolean;
parent?: string;
date_created: string;
children?: string[];
}
interface Tag {
name: string;
tag_fg: string;
tag_bg: string;
creator?: number;
}
interface Dependency {
task_id: string;
depends_on: string;
type: number;
date_created: string;
userid: string;
}
interface LinkedTask {
task_id: string;
link_id: string;
date_created: string;
userid: string;
}
interface CustomField {
id: string;
name: string;
type: string;
type_config: {
[key: string]: any;
options?: Array<{
id: string;
name: string;
color?: string;
orderindex?: number;
}>;
};
value: any;
}
interface Attachment {
id: string;
version: string;
date: string;
title: string;
extension: string;
thumbnail_small: string;
thumbnail_large: string;
size: number;
}
interface SharedAccess {
id: string;
name: string;
type: string;
access_level: string;
team_id: string;
}
/**
* Full task hierarchy types
* Ref: https://developer.clickup.com/docs
*/
interface ClickUpHierarchy {
workspace_id: string;
space_id: string;
folder_id?: string;
list_id: string;
task_id: string;
}
/**
* API error response format
* Ref: https://developer.clickup.com/docs/errors
*/
interface ClickUpError {
err: string;
code: number;
message?: string;
}