schemas.ts•10.5 kB
import { z } from "zod";
export const Cycle = z.object({
archived_at: z.string().datetime({ offset: true }).optional(),
backlog_issues: z.number().int().readonly(),
cancelled_issues: z.number().int().readonly(),
completed_estimates: z.number().readonly(),
completed_issues: z.number().int().readonly(),
created_at: z.string().datetime({ offset: true }).readonly(),
created_by: z.string().uuid().readonly(),
deleted_at: z.string().datetime({ offset: true }).readonly(),
description: z.string().optional(),
end_date: z.string().date().optional().describe("The end date of the cycle of format YYYY-MM-DD"),
external_id: z.string().max(255).optional(),
external_source: z.string().max(255).optional(),
id: z.string().uuid().readonly(),
logo_props: z.any().optional(),
name: z.string().max(255),
owned_by: z.string().uuid().readonly(),
progress_snapshot: z.any().optional(),
project_id: z.string().uuid().readonly(),
sort_order: z.number().optional(),
start_date: z.string().date().optional().describe("The start date of the cycle of format YYYY-MM-DD"),
started_estimates: z.number().readonly(),
started_issues: z.number().int().readonly(),
timezone: z.any().optional(),
total_estimates: z.number().readonly(),
total_issues: z.number().int().readonly(),
unstarted_issues: z.number().int().readonly(),
updated_at: z.string().datetime({ offset: true }).readonly(),
updated_by: z.string().uuid().readonly(),
version: z.number().int().gte(-2147483648).lte(2147483647).optional(),
view_props: z.any().optional(),
workspace: z.string().uuid().readonly(),
});
export type Cycle = z.infer<typeof Cycle>;
export const Issue = z.object({
archived_at: z.string().date().optional(),
assignees: z.array(z.string().uuid()).optional(),
completed_at: z.string().datetime({ offset: true }).optional(),
created_at: z.string().datetime({ offset: true }).readonly(),
created_by: z.string().uuid().optional(),
deleted_at: z.string().datetime({ offset: true }).optional(),
description_binary: z.string().readonly(),
description_html: z.string().optional(),
estimate_point: z.string().uuid().optional(),
external_id: z.string().max(255).optional(),
external_source: z.string().max(255).optional(),
id: z.string().uuid().readonly(),
is_draft: z.boolean().optional(),
labels: z.array(z.string().uuid()).optional(),
name: z.string().max(255),
parent: z.string().uuid().optional(),
point: z.number().int().gte(0).lte(12).optional(),
priority: z.any().optional(),
project: z.string().uuid().readonly(),
sequence_id: z.number().int().gte(-2147483648).lte(2147483647).optional(),
sort_order: z.number().optional(),
start_date: z.string().date().optional(),
state: z.string().uuid().optional(),
target_date: z.string().date().optional(),
type: z.string().uuid().optional(),
type_id: z.string().uuid().optional(),
updated_at: z.string().datetime({ offset: true }).readonly(),
updated_by: z.string().uuid().readonly(),
workspace: z.string().uuid().readonly(),
});
export type Issue = z.infer<typeof Issue>;
export const CycleIssue = z.object({
created_at: z.string().datetime({ offset: true }).readonly(),
created_by: z.string().uuid().optional(),
cycle: z.string().uuid().readonly(),
deleted_at: z.string().datetime({ offset: true }),
id: z.string().uuid().readonly(),
issue: z.string().uuid(),
project: z.string().uuid().readonly(),
sub_issues_count: z.number().int().readonly(),
updated_at: z.string().datetime({ offset: true }).readonly(),
updated_by: z.string().uuid().optional(),
workspace: z.string().uuid().readonly(),
});
export type CycleIssue = z.infer<typeof CycleIssue>;
export const IssueTypeAPI = z.object({
created_at: z.string().datetime({ offset: true }).readonly(),
created_by: z.string().uuid().readonly(),
deleted_at: z.string().datetime({ offset: true }).readonly(),
description: z.string().optional(),
external_id: z.string().max(255).optional(),
external_source: z.string().max(255).optional(),
id: z.string().uuid().readonly(),
is_active: z.boolean().optional(),
is_default: z.boolean().readonly(),
level: z.number().int().readonly(),
logo_props: z.any().readonly(),
name: z.string().max(255),
project_ids: z.array(z.string().uuid()).optional(),
updated_at: z.string().datetime({ offset: true }).readonly(),
updated_by: z.string().uuid().readonly(),
workspace: z.string().uuid().readonly(),
});
export type IssueTypeAPI = z.infer<typeof IssueTypeAPI>;
export const Label = z.object({
color: z.string().max(255).optional(),
created_at: z.string().datetime({ offset: true }).readonly(),
created_by: z.string().uuid().readonly(),
deleted_at: z.string().datetime({ offset: true }).readonly(),
description: z.string().optional(),
external_id: z.string().max(255).optional(),
external_source: z.string().max(255).optional(),
id: z.string().uuid().readonly(),
name: z.string().max(255),
parent: z.string().uuid().optional(),
project: z.string().uuid().readonly(),
sort_order: z.number().optional(),
updated_at: z.string().datetime({ offset: true }).readonly(),
updated_by: z.string().uuid().readonly(),
workspace: z.string().uuid().readonly(),
});
export type Label = z.infer<typeof Label>;
export const State = z.object({
color: z.string().max(255),
created_at: z.string().datetime({ offset: true }).readonly(),
created_by: z.string().uuid().readonly(),
default: z.boolean().optional(),
deleted_at: z.string().datetime({ offset: true }).readonly(),
description: z.string().optional(),
external_id: z.string().max(255).optional(),
external_source: z.string().max(255).optional(),
group: z.any().optional(),
id: z.string().uuid().readonly(),
is_triage: z.boolean().optional(),
name: z.string().max(255),
project: z.string().uuid().readonly(),
sequence: z.number().optional(),
slug: z.string().regex(new RegExp("^[-a-zA-Z0-9_]+$")).max(100).optional(),
updated_at: z.string().datetime({ offset: true }).readonly(),
updated_by: z.string().uuid().readonly(),
workspace: z.string().uuid().readonly(),
});
export type State = z.infer<typeof State>;
export const ModuleIssue = z.object({
created_at: z.string().datetime({ offset: true }).readonly(),
created_by: z.string().uuid().readonly(),
deleted_at: z.string().datetime({ offset: true }),
id: z.string().uuid().readonly(),
issue: z.string().uuid(),
module: z.string().uuid().readonly(),
project: z.string().uuid().readonly(),
sub_issues_count: z.number().int().readonly(),
updated_at: z.string().datetime({ offset: true }).readonly(),
updated_by: z.string().uuid().readonly(),
workspace: z.string().uuid().readonly(),
});
export type ModuleIssue = z.infer<typeof ModuleIssue>;
export const Module = z.object({
archived_at: z.string().datetime({ offset: true }).optional(),
backlog_issues: z.number().int().readonly(),
cancelled_issues: z.number().int().readonly(),
completed_issues: z.number().int().readonly(),
created_at: z.string().datetime({ offset: true }).readonly(),
created_by: z.string().uuid().readonly(),
deleted_at: z.string().datetime({ offset: true }).readonly(),
description: z.string().optional(),
description_html: z.any().optional(),
description_text: z.any().optional(),
external_id: z.string().max(255).optional(),
external_source: z.string().max(255).optional(),
id: z.string().uuid().readonly(),
lead: z.string().uuid().optional(),
logo_props: z.any().optional(),
members: z.array(z.string().uuid()).optional(),
name: z.string().max(255),
project: z.string().uuid().readonly(),
sort_order: z.number().optional(),
start_date: z.string().date().optional(),
started_issues: z.number().int().readonly(),
status: z.any().optional(),
target_date: z.string().date().optional(),
total_issues: z.number().int().readonly(),
unstarted_issues: z.number().int().readonly(),
updated_at: z.string().datetime({ offset: true }).readonly(),
updated_by: z.string().uuid().readonly(),
view_props: z.any().optional(),
workspace: z.string().uuid().readonly(),
});
export type Module = z.infer<typeof Module>;
export const Project = z.object({
archive_in: z.number().int().gte(0).lte(12).optional(),
archived_at: z.string().datetime({ offset: true }).optional(),
close_in: z.number().int().gte(0).lte(12).optional(),
cover_image: z.string().optional(),
cover_image_asset: z.string().uuid().optional(),
cover_image_url: z.string().readonly(),
created_at: z.string().datetime({ offset: true }).readonly(),
created_by: z.string().uuid().readonly(),
cycle_view: z.boolean().optional(),
default_assignee: z.string().uuid().optional(),
default_state: z.string().uuid().optional(),
deleted_at: z.string().datetime({ offset: true }).readonly(),
description: z.string().optional(),
description_html: z.any().optional(),
description_text: z.any().optional(),
emoji: z.string().readonly(),
estimate: z.string().uuid().optional(),
guest_view_all_features: z.boolean().optional(),
icon_prop: z.any().optional(),
id: z.string().uuid().readonly(),
identifier: z.string().max(12),
inbox_view: z.boolean().optional(),
is_deployed: z.boolean().readonly(),
is_issue_type_enabled: z.boolean().optional(),
is_member: z.boolean().readonly(),
is_time_tracking_enabled: z.boolean().optional(),
issue_views_view: z.boolean().optional(),
logo_props: z.any().optional(),
member_role: z.number().int().readonly(),
module_view: z.boolean().optional(),
name: z.string().max(255),
network: z.any().optional(),
page_view: z.boolean().optional(),
project_lead: z.string().uuid().optional(),
sort_order: z.number().readonly(),
timezone: z.any().optional(),
total_cycles: z.number().int().readonly(),
total_members: z.number().int().readonly(),
total_modules: z.number().int().readonly(),
updated_at: z.string().datetime({ offset: true }).readonly(),
updated_by: z.string().uuid().readonly(),
workspace: z.string().uuid().readonly(),
});
export type Project = z.infer<typeof Project>;
export const IssueWorkLog = z.object({
issue_id: z.string().uuid(),
description: z.string().optional(),
logged_by_id: z.string().uuid(),
duration: z.number().int().min(0).describe("The duration of the worklog in minutes"),
created_at: z.string().datetime(),
updated_at: z.string().datetime(),
project_id: z.string().uuid(),
workspace_id: z.string().uuid(),
});
export type IssueWorkLog = z.infer<typeof IssueWorkLog>;