/**
 * GetResponse Node - Version 1
 * Discriminator: resource=contact, operation=getAll
 */


interface Credentials {
  getResponseApi: CredentialReference;
  getResponseOAuth2Api: CredentialReference;
}

/** Get many contacts */
export type GetResponseV1ContactGetAllParams = {
  resource: 'contact';
  operation: 'getAll';
  authentication?: 'apiKey' | '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 20
 */
    limit?: number | Expression<number>;
/**
 * Options
 * @default {}
 */
    options?: {
    /** Search contacts by campaign ID
     */
    campaignId?: string | Expression<string> | PlaceholderValue;
    /** Search contacts edited from this date
     */
    changeOnFrom?: string | Expression<string>;
    /** Search contacts edited to this date
     */
    changeOnTo?: string | Expression<string>;
    /** Count data from this date
     */
    createdOnFrom?: string | Expression<string>;
    /** Count data from this date
     */
    createdOnTo?: string | Expression<string>;
    /** Whether to search for contacts with the exact value of the email and name provided in the query string. Without this flag, matching is done via a standard 'like' comparison, which may sometimes be slow.
     * @default false
     */
    exactMatch?: boolean | Expression<boolean>;
    /** List of fields that should be returned. ID is always returned. Fields should be separated by comma
     */
    fields?: string | Expression<string> | PlaceholderValue;
    /** Search contacts by name
     */
    name?: string | Expression<string> | PlaceholderValue;
    /** Search contacts by origin
     */
    origin?: 'api' | 'copy' | 'email' | 'forward' | 'import' | 'iphone' | 'landing_page' | 'leads' | 'panel' | 'sale' | 'survey' | 'webinar' | 'www' | Expression<string>;
    /** Sort By
     */
    sortBy?: 'campaignId' | 'changedOn' | 'createdOn' | 'email' | Expression<string>;
    /** Sort Order
     */
    sortOrder?: 'ASC' | 'DESC' | Expression<string>;
  };
};

export type GetResponseV1ContactGetAllOutput = {
  activities?: string;
  campaign?: {
    campaignId?: string;
    href?: string;
    name?: string;
  };
  changedOn?: string;
  contactId?: string;
  createdOn?: string;
  email?: string;
  href?: string;
  ipAddress?: string;
  note?: null;
  origin?: string;
  timeZone?: string;
};

export type GetResponseV1ContactGetAllNode = {
  type: 'n8n-nodes-base.getResponse';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<GetResponseV1ContactGetAllParams>;
  output?: Items<GetResponseV1ContactGetAllOutput>;
};