/**
 * Microsoft Outlook Node - Version 2
 * Discriminator: resource=contact, operation=get
 */


interface Credentials {
  microsoftOutlookOAuth2Api: CredentialReference;
}

/** Retrieve a calendar */
export type MicrosoftOutlookV2ContactGetParams = {
  resource: 'contact';
  operation: 'get';
/**
 * Contact
 * @default {"mode":"list","value":""}
 */
    contactId?: { __rl: true; mode: 'list' | 'id'; value: string; cachedResultName?: string };
/**
 * Output
 * @default simple
 */
    output?: 'simple' | 'raw' | 'fields' | Expression<string>;
/**
 * The fields to add to the output
 * @displayOptions.show { output: ["fields"] }
 * @default []
 */
    fields?: Array<'createdDateTime' | 'lastModifiedDateTime' | 'changeKey' | 'categories' | 'parentFolderId' | 'birthday' | 'fileAs' | 'displayName' | 'givenName' | 'initials' | 'middleName' | 'nickName' | 'surname' | 'title' | 'yomiGivenName' | 'yomiSurname' | 'yomiCompanyName' | 'generation' | 'imAddresses' | 'jobTitle' | 'companyName' | 'department' | 'officeLocation' | 'profession' | 'businessHomePage' | 'assistantName' | 'manager' | 'homePhones' | 'mobilePhone' | 'businessPhones' | 'spouseName' | 'personalNotes' | 'children' | 'emailAddresses' | 'homeAddress' | 'businessAddress' | 'otherAddress'>;
};

export type MicrosoftOutlookV2ContactGetOutput = {
  '@odata.context'?: string;
  '@odata.etag'?: string;
  businessPhones?: Array<string>;
  displayName?: string;
  emailAddresses?: Array<{
    address?: string;
    name?: string;
  }>;
  id?: string;
};

export type MicrosoftOutlookV2ContactGetNode = {
  type: 'n8n-nodes-base.microsoftOutlook';
  version: 2;
  credentials?: Credentials;
  config: NodeConfig<MicrosoftOutlookV2ContactGetParams>;
  output?: Items<MicrosoftOutlookV2ContactGetOutput>;
};