/**
 * Zendesk Node - Version 1
 * Discriminator: resource=ticket, operation=get
 */


interface Credentials {
  zendeskApi: CredentialReference;
  zendeskOAuth2Api: CredentialReference;
}

/** Tickets are the means through which your end users (customers) communicate with agents in Zendesk Support */
export type ZendeskV1TicketGetParams = {
  resource: 'ticket';
  operation: 'get';
  authentication?: 'apiToken' | 'oAuth2' | Expression<string>;
/**
 * Ticket Type
 * @default regular
 */
    ticketType?: 'regular' | 'suspended' | Expression<string>;
/**
 * Ticket ID
 * @displayOptions.show { ticketType: ["regular"] }
 */
    id?: string | Expression<string> | PlaceholderValue;
};

export type ZendeskV1TicketGetOutput = {
  allow_attachments?: boolean;
  allow_channelback?: boolean;
  brand_id?: number;
  collaborator_ids?: Array<number>;
  created_at?: string;
  custom_fields?: Array<{
    id?: number;
  }>;
  custom_status_id?: number;
  description?: string;
  due_at?: null;
  email_cc_ids?: Array<number>;
  encoded_id?: string;
  fields?: Array<{
    id?: number;
  }>;
  follower_ids?: Array<number>;
  followup_ids?: Array<number>;
  forum_topic_id?: null;
  from_messaging_channel?: boolean;
  generated_timestamp?: number;
  has_incidents?: boolean;
  id?: number;
  is_public?: boolean;
  problem_id?: null;
  requester_id?: number;
  satisfaction_rating?: {
    score?: string;
  };
  status?: string;
  submitter_id?: number;
  tags?: Array<string>;
  ticket_form_id?: number;
  updated_at?: string;
  url?: string;
  via?: {
    channel?: string;
  };
};

export type ZendeskV1TicketGetNode = {
  type: 'n8n-nodes-base.zendesk';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<ZendeskV1TicketGetParams>;
  output?: Items<ZendeskV1TicketGetOutput>;
};