/**
 * Zendesk Node - Version 1
 * Discriminator: resource=user, operation=getAll
 */


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

/** Manage users */
export type ZendeskV1UserGetAllParams = {
  resource: 'user';
  operation: 'getAll';
  authentication?: 'apiToken' | 'oAuth2' | Expression<string>;
/**
 * Whether to return all results or only up to a given limit
 * @default false
 */
    returnAll?: boolean | Expression<boolean>;
/**
 * Max number of results to return
 * @displayOptions.show { returnAll: [false] }
 * @default 100
 */
    limit?: number | Expression<number>;
/**
 * Filters
 * @default {}
 */
    filters?: {
    /** Roles
     * @default []
     */
    role?: Array<'end-user' | 'agent' | 'admin'>;
  };
};

export type ZendeskV1UserGetAllOutput = {
  active?: boolean;
  created_at?: string;
  iana_time_zone?: string;
  id?: number;
  locale?: string;
  locale_id?: number;
  moderator?: boolean;
  name?: string;
  only_private_comments?: boolean;
  report_csv?: boolean;
  restricted_agent?: boolean;
  role?: string;
  shared?: boolean;
  shared_agent?: boolean;
  suspended?: boolean;
  tags?: Array<string>;
  time_zone?: string;
  two_factor_auth_enabled?: null;
  updated_at?: string;
  url?: string;
  verified?: boolean;
};

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