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


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

/** Get a contact */
export type GetResponseV1ContactGetParams = {
  resource: 'contact';
  operation: 'get';
  authentication?: 'apiKey' | 'oAuth2' | Expression<string>;
/**
 * Unique identifier for a particular contact
 */
    contactId?: string | Expression<string> | PlaceholderValue;
/**
 * Options
 * @default {}
 */
    options?: {
    /** List of fields that should be returned. ID is always returned. Fields should be separated by comma
     */
    fields?: string | Expression<string> | PlaceholderValue;
  };
};

export type GetResponseV1ContactGetOutput = {
  activities?: string;
  campaign?: {
    campaignId?: string;
    href?: string;
    name?: string;
  };
  changedOn?: string;
  contactId?: string;
  createdOn?: string;
  customFieldValues?: Array<{
    customFieldId?: string;
    fieldType?: string;
    name?: string;
    type?: string;
    value?: Array<string>;
    values?: Array<string>;
    valueType?: string;
  }>;
  dayOfCycle?: null;
  email?: string;
  geolocation?: {
    continentCode?: string;
    countryCode?: string;
    dmaCode?: null;
  };
  href?: string;
  ipAddress?: string;
  note?: null;
  origin?: string;
  tags?: Array<{
    color?: string;
    href?: string;
    name?: string;
    tagId?: string;
  }>;
  timeZone?: string;
};

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