/**
 * Xero Node - Version 1
 * Discriminator: resource=invoice, operation=get
 */


interface Credentials {
  xeroOAuth2Api: CredentialReference;
}

/** Get a contact */
export type XeroV1InvoiceGetParams = {
  resource: 'invoice';
  operation: 'get';
/**
 * Choose from the list, or specify an ID using an &lt;a href="https://docs.n8n.io/code/expressions/"&gt;expression&lt;/a&gt;
 */
    organizationId?: string | Expression<string>;
/**
 * Invoice ID
 */
    invoiceId?: string | Expression<string> | PlaceholderValue;
};

export type XeroV1InvoiceGetOutput = {
  Attachments?: Array<{
    AttachmentID?: string;
    ContentLength?: number;
    FileName?: string;
    MimeType?: string;
    Url?: string;
  }>;
  BrandingThemeID?: string;
  Contact?: {
    AccountsReceivableTaxType?: string;
    Addresses?: Array<{
      AddressLine1?: string;
      AddressType?: string;
      City?: string;
      Country?: string;
      PostalCode?: string;
      Region?: string;
    }>;
    BankAccountDetails?: string;
    ContactGroups?: Array<{
      ContactGroupID?: string;
      HasValidationErrors?: boolean;
      Name?: string;
      Status?: string;
    }>;
    ContactID?: string;
    ContactPersons?: Array<{
      EmailAddress?: string;
      FirstName?: string;
      IncludeInEmails?: boolean;
      LastName?: string;
    }>;
    ContactStatus?: string;
    DefaultCurrency?: string;
    EmailAddress?: string;
    FirstName?: string;
    HasValidationErrors?: boolean;
    IsCustomer?: boolean;
    IsSupplier?: boolean;
    LastName?: string;
    Name?: string;
    Phones?: Array<{
      PhoneAreaCode?: string;
      PhoneCountryCode?: string;
      PhoneNumber?: string;
      PhoneType?: string;
    }>;
    PurchasesTrackingCategories?: Array<{
      TrackingCategoryName?: string;
      TrackingOptionName?: string;
    }>;
    SalesTrackingCategories?: Array<{
      TrackingCategoryName?: string;
      TrackingOptionName?: string;
    }>;
    UpdatedDateUTC?: string;
  };
  CurrencyCode?: string;
  Date?: string;
  DateString?: string;
  DueDate?: string;
  DueDateString?: string;
  HasAttachments?: boolean;
  HasErrors?: boolean;
  InvoiceID?: string;
  InvoiceNumber?: string;
  IsDiscounted?: boolean;
  LineAmountTypes?: string;
  LineItems?: Array<{
    AccountCode?: string;
    AccountID?: string;
    Description?: string;
    LineItemID?: string;
    TaxType?: string;
    Tracking?: Array<{
      Name?: string;
      Option?: string;
      TrackingCategoryID?: string;
      TrackingOptionID?: string;
    }>;
  }>;
  Overpayments?: Array<{
    AppliedAmount?: number;
    CurrencyRate?: number;
    Date?: string;
    DateString?: string;
    OverpaymentID?: string;
    Total?: number;
  }>;
  Reference?: string;
  SentToContact?: boolean;
  Status?: string;
  Type?: string;
  UpdatedDateUTC?: string;
  Url?: string;
};

export type XeroV1InvoiceGetNode = {
  type: 'n8n-nodes-base.xero';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<XeroV1InvoiceGetParams>;
  output?: Items<XeroV1InvoiceGetOutput>;
};