/**
 * Intercom Node - Version 1
 * Discriminator: resource=lead, operation=create
 */


interface Credentials {
  intercomApi: CredentialReference;
}

/** Leads are useful for representing logged-out users of your application */
export type IntercomV1LeadCreateParams = {
  resource: 'lead';
  operation: 'create';
/**
 * The email of the user
 */
    email?: string | Expression<string> | PlaceholderValue;
/**
 * JSON Parameters
 * @default false
 */
    jsonParameters?: boolean | Expression<boolean>;
/**
 * Additional Fields
 * @default {}
 */
    additionalFields?: {
    /** An avatar image URL. note: the image URL needs to be https.
     */
    avatar?: string | Expression<string> | PlaceholderValue;
    /** Identifies the companies this user belongs to. Choose from the list, or specify IDs using an &lt;a href="https://docs.n8n.io/code/expressions/"&gt;expression&lt;/a&gt;.
     * @default []
     */
    companies?: string[];
    /** The email of the user
     * @displayOptions.show { /operation: ["update"] }
     */
    email?: string | Expression<string> | PlaceholderValue;
    /** Name of the user
     */
    name?: string | Expression<string> | PlaceholderValue;
    /** The phone number of the user
     */
    phone?: string | Expression<string> | PlaceholderValue;
    /** Whether the Lead is unsubscribed from emails
     * @default false
     */
    unsubscribedFromEmails?: boolean | Expression<boolean>;
    /** Whether to instruct Intercom to update the users last_request_at value to the current API service time in UTC. default value if not sent is false.
     * @default false
     */
    updateLastRequestAt?: boolean | Expression<boolean>;
    /** Identifies a specific product promotion or strategic campaign
     */
    utmCampaign?: string | Expression<string> | PlaceholderValue;
    /** Identifies what specifically was clicked to bring the user to the site
     */
    utmContent?: string | Expression<string> | PlaceholderValue;
    /** Identifies what type of link was used
     */
    utmMedium?: string | Expression<string> | PlaceholderValue;
    /** An avatar image URL. note: the image URL needs to be https.
     */
    utmSource?: string | Expression<string> | PlaceholderValue;
    /** Identifies search terms
     */
    utmTerm?: string | Expression<string> | PlaceholderValue;
  };
/**
 * A hash of key/value pairs to represent custom data you want to attribute to a user
 * @displayOptions.show { jsonParameters: [true] }
 */
    customAttributesJson?: IDataObject | string | Expression<string>;
/**
 * A hash of key/value pairs to represent custom data you want to attribute to a user
 * @displayOptions.show { jsonParameters: [false] }
 * @default {}
 */
    customAttributesUi?: {
        /** Attributes
     */
    customAttributesValues?: Array<{
      /** Name
       */
      name?: string | Expression<string> | PlaceholderValue;
      /** Value
       */
      value?: string | Expression<string> | PlaceholderValue;
    }>;
  };
};

export type IntercomV1LeadCreateOutput = {
  android_app_name?: null;
  android_app_version?: null;
  android_device?: null;
  android_last_seen_at?: null;
  android_os_version?: null;
  android_sdk_version?: null;
  avatar?: null;
  browser?: null;
  browser_language?: null;
  browser_version?: null;
  companies?: {
    has_more?: boolean;
    total_count?: number;
    type?: string;
    url?: string;
  };
  created_at?: number;
  email?: string;
  external_id?: null;
  has_hard_bounced?: boolean;
  id?: string;
  ios_app_name?: null;
  ios_app_version?: null;
  ios_device?: null;
  ios_last_seen_at?: null;
  ios_os_version?: null;
  ios_sdk_version?: null;
  language_override?: null;
  last_contacted_at?: null;
  last_email_clicked_at?: null;
  last_email_opened_at?: null;
  last_replied_at?: null;
  last_seen_at?: null;
  location?: {
    city?: null;
    continent_code?: null;
    country?: null;
    country_code?: null;
    region?: null;
    type?: string;
  };
  marked_email_as_spam?: boolean;
  notes?: {
    has_more?: boolean;
    total_count?: number;
    type?: string;
    url?: string;
  };
  opted_in_subscription_types?: {
    has_more?: boolean;
    total_count?: number;
    type?: string;
    url?: string;
  };
  opted_out_subscription_types?: {
    has_more?: boolean;
    total_count?: number;
    type?: string;
    url?: string;
  };
  os?: null;
  owner_id?: null;
  referrer?: null;
  role?: string;
  signed_up_at?: null;
  sms_consent?: boolean;
  social_profiles?: {
    type?: string;
  };
  tags?: {
    has_more?: boolean;
    total_count?: number;
    type?: string;
    url?: string;
  };
  type?: string;
  unsubscribed_from_emails?: boolean;
  unsubscribed_from_sms?: boolean;
  updated_at?: number;
  utm_campaign?: null;
  utm_content?: null;
  utm_medium?: null;
  utm_source?: null;
  utm_term?: null;
  workspace_id?: string;
};

export type IntercomV1LeadCreateNode = {
  type: 'n8n-nodes-base.intercom';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<IntercomV1LeadCreateParams>;
  output?: Items<IntercomV1LeadCreateOutput>;
};