/**
 * Help Scout Node - Version 1
 * Discriminator: resource=conversation, operation=getAll
 */


interface Credentials {
  helpScoutOAuth2Api: CredentialReference;
}

/** Get many conversations */
export type HelpScoutV1ConversationGetAllParams = {
  resource: 'conversation';
  operation: 'getAll';
/**
 * 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 50
 */
    limit?: number | Expression<number>;
/**
 * Options
 * @default {}
 */
    options?: {
    /** Filters conversations by assignee ID
     * @default 0
     */
    assignTo?: number | Expression<number>;
    /** Allows embedding/loading of sub-entities
     */
    embed?: 'threads' | Expression<string>;
    /** Filters conversations from a specific folder ID
     */
    folder?: string | Expression<string> | PlaceholderValue;
    /** Filters conversations from a specific mailbox
     */
    mailbox?: string | Expression<string> | PlaceholderValue;
    /** Returns only conversations that were modified after this date
     */
    modifiedSince?: string | Expression<string>;
    /** Looks up conversation by conversation number
     * @default 0
     */
    number?: number | Expression<number>;
    /** Advanced search &lt;a href="https://developer.helpscout.com/mailbox-api/endpoints/conversations/list/#query"&gt;Examples&lt;/a&gt;
     */
    query?: string | Expression<string> | PlaceholderValue;
    /** Sorts the result by specified field
     */
    sortField?: 'createdAt' | 'customerEmail' | 'customerName' | 'mailboxid' | 'modifiedAt' | 'number' | 'score' | 'status' | 'subject' | Expression<string>;
    /** Sort Order
     * @default desc
     */
    sortOrder?: 'asc' | 'desc' | Expression<string>;
    /** Filter conversation by status
     * @default active
     */
    status?: 'active' | 'all' | 'closed' | 'open' | 'pending' | 'spam' | Expression<string>;
    /** Filter conversation by tags. Choose from the list, or specify IDs using an &lt;a href="https://docs.n8n.io/code/expressions/"&gt;expression&lt;/a&gt;.
     * @default []
     */
    tags?: string[];
  };
};

export type HelpScoutV1ConversationGetAllOutput = {
  _embedded?: {
    threads?: Array<{
      _embedded?: {
        attachments?: Array<{
          _links?: {
            data?: {
              href?: string;
            };
            self?: {
              href?: string;
            };
            web?: {
              href?: string;
            };
          };
          filename?: string;
          height?: number;
          id?: number;
          mimeType?: string;
          size?: number;
          state?: string;
          width?: number;
        }>;
      };
      _links?: {
        assignedTo?: {
          href?: string;
        };
        createdByCustomer?: {
          href?: string;
        };
        createdByUser?: {
          href?: string;
        };
        customer?: {
          href?: string;
        };
      };
      action?: {
        associatedEntities?: {
          user?: number;
        };
        text?: string;
        type?: string;
      };
      assignedTo?: {
        email?: string;
        first?: string;
        id?: number;
        last?: string;
        photoUrl?: string;
        type?: string;
      };
      body?: string;
      createdAt?: string;
      createdBy?: {
        email?: string;
        first?: string;
        id?: number;
        last?: string;
        photoUrl?: string;
        type?: string;
      };
      customer?: {
        email?: string;
        first?: string;
        id?: number;
        last?: string;
        photoUrl?: string;
      };
      id?: number;
      openedAt?: string;
      savedReplyId?: number;
      source?: {
        type?: string;
        via?: string;
      };
      state?: string;
      status?: string;
      to?: Array<string>;
      type?: string;
    }>;
  };
  _links?: {
    closedBy?: {
      href?: string;
    };
    createdByCustomer?: {
      href?: string;
    };
    mailbox?: {
      href?: string;
    };
    primaryCustomer?: {
      href?: string;
    };
    self?: {
      href?: string;
    };
    threads?: {
      href?: string;
    };
    web?: {
      href?: string;
    };
  };
  bcc?: Array<string>;
  cc?: Array<string>;
  closedBy?: number;
  closedByUser?: {
    email?: string;
    first?: string;
    id?: number;
    last?: string;
    type?: string;
  };
  createdAt?: string;
  createdBy?: {
    email?: string;
    first?: string;
    id?: number;
    last?: string;
    photoUrl?: string;
    type?: string;
  };
  customerWaitingSince?: {
    friendly?: string;
    time?: string;
  };
  customFields?: Array<{
    id?: number;
    name?: string;
    text?: string;
    value?: string;
  }>;
  folderId?: number;
  id?: number;
  mailboxId?: number;
  number?: number;
  preview?: string;
  primaryCustomer?: {
    email?: string;
    first?: string;
    id?: number;
    last?: string;
    photoUrl?: string;
    type?: string;
  };
  source?: {
    type?: string;
    via?: string;
  };
  state?: string;
  status?: string;
  subject?: string;
  tags?: Array<{
    color?: string;
    id?: number;
    tag?: string;
  }>;
  threads?: number;
  type?: string;
  userUpdatedAt?: string;
};

export type HelpScoutV1ConversationGetAllNode = {
  type: 'n8n-nodes-base.helpScout';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<HelpScoutV1ConversationGetAllParams>;
  output?: Items<HelpScoutV1ConversationGetAllOutput>;
};