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>;