/**
 * Invoice Ninja Node - Version 2
 * Discriminator: resource=invoice, operation=getAll
 */


interface Credentials {
  invoiceNinjaApi: CredentialReference;
}

/** Get data of many clients */
export type InvoiceNinjaV2InvoiceGetAllParams = {
  resource: 'invoice';
  operation: 'getAll';
/**
 * API Version
 * @default v5
 */
    apiVersion?: 'v4' | 'v5' | 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 50
 */
    limit?: number | Expression<number>;
/**
 * Options
 * @default {}
 */
    options?: {
    /** Invoice Number
     */
    invoiceNumber?: string | Expression<string> | PlaceholderValue;
    /** Include
     * @default client
     */
    include?: 'client' | Expression<string>;
    /** Status
     * @default active
     */
    status?: 'active' | 'archived' | 'deleted' | Expression<string>;
    /** Created At
     */
    createdAt?: string | Expression<string>;
    /** Updated At
     */
    updatedAt?: string | Expression<string>;
    /** Is Deleted
     * @default false
     */
    isDeleted?: boolean | Expression<boolean>;
    /** Client Status
     * @default all
     */
    clientStatus?: 'all' | 'paid' | 'unpaid' | 'overdue' | Expression<string>;
  };
};

export type InvoiceNinjaV2InvoiceGetAllOutput = {
  archived_at?: number;
  assigned_user_id?: string;
  auto_bill_enabled?: boolean;
  balance?: number;
  client_id?: string;
  created_at?: number;
  custom_surcharge_tax1?: boolean;
  custom_surcharge_tax2?: boolean;
  custom_surcharge_tax3?: boolean;
  custom_surcharge_tax4?: boolean;
  custom_surcharge1?: number;
  custom_surcharge2?: number;
  custom_surcharge3?: number;
  custom_surcharge4?: number;
  custom_value1?: string;
  custom_value2?: string;
  custom_value3?: string;
  custom_value4?: string;
  date?: string;
  design_id?: string;
  discount?: number;
  due_date?: string;
  entity_type?: string;
  exchange_rate?: number;
  footer?: string;
  has_expenses?: boolean;
  has_tasks?: boolean;
  id?: string;
  invitations?: Array<{
    archived_at?: number;
    client_contact_id?: string;
    created_at?: number;
    email_error?: string;
    email_status?: string;
    id?: string;
    key?: string;
    link?: string;
    message_id?: string;
    opened_date?: string;
    sent_date?: string;
    updated_at?: number;
    viewed_date?: string;
  }>;
  is_amount_discount?: boolean;
  is_deleted?: boolean;
  last_sent_date?: string;
  line_items?: Array<{
    _id?: string;
    custom_value1?: string;
    custom_value2?: string;
    custom_value3?: string;
    custom_value4?: string;
    date?: string;
    discount?: number;
    expense_id?: string;
    is_amount_discount?: boolean;
    notes?: string;
    product_cost?: number;
    product_key?: string;
    sort_id?: string;
    task_id?: string;
    tax_amount?: number;
    tax_id?: string;
    tax_name1?: string;
    tax_name2?: string;
    tax_name3?: string;
    tax_rate1?: number;
    tax_rate2?: number;
    tax_rate3?: number;
    type_id?: string;
    unit_code?: string;
  }>;
  next_send_date?: string;
  number?: string;
  partial?: number;
  partial_due_date?: string;
  po_number?: string;
  private_notes?: string;
  project_id?: string;
  public_notes?: string;
  recurring_id?: string;
  reminder_last_sent?: string;
  reminder1_sent?: string;
  reminder2_sent?: string;
  reminder3_sent?: string;
  status_id?: string;
  subscription_id?: string;
  tax_name1?: string;
  tax_name2?: string;
  tax_name3?: string;
  tax_rate2?: number;
  tax_rate3?: number;
  terms?: string;
  updated_at?: number;
  user_id?: string;
  uses_inclusive_taxes?: boolean;
  vendor_id?: string;
};

export type InvoiceNinjaV2InvoiceGetAllNode = {
  type: 'n8n-nodes-base.invoiceNinja';
  version: 2;
  credentials?: Credentials;
  config: NodeConfig<InvoiceNinjaV2InvoiceGetAllParams>;
  output?: Items<InvoiceNinjaV2InvoiceGetAllOutput>;
};