/**
 * YouTube Node - Version 1
 * Discriminator: resource=channel, operation=get
 */


interface Credentials {
  youTubeOAuth2Api: CredentialReference;
}

/** Retrieve a channel */
export type YouTubeV1ChannelGetParams = {
  resource: 'channel';
  operation: 'get';
/**
 * ID of the channel
 */
    channelId?: string | Expression<string> | PlaceholderValue;
/**
 * The fields parameter specifies a comma-separated list of one or more channel resource properties that the API response will include
 * @default ["*"]
 */
    part?: Array<'*' | 'brandingSettings' | 'contentDetails' | 'contentOwnerDetails' | 'id' | 'localizations' | 'snippet' | 'statistics' | 'status' | 'topicDetails'>;
};

export type YouTubeV1ChannelGetOutput = {
  brandingSettings?: {
    channel?: {
      country?: string;
      description?: string;
      keywords?: string;
      title?: string;
      unsubscribedTrailer?: string;
    };
    image?: {
      bannerExternalUrl?: string;
    };
  };
  contentDetails?: {
    relatedPlaylists?: {
      likes?: string;
      uploads?: string;
    };
  };
  etag?: string;
  id?: string;
  kind?: string;
  snippet?: {
    country?: string;
    customUrl?: string;
    description?: string;
    localized?: {
      description?: string;
      title?: string;
    };
    publishedAt?: string;
    thumbnails?: {
      'default'?: {
        height?: number;
        url?: string;
        width?: number;
      };
      high?: {
        height?: number;
        url?: string;
        width?: number;
      };
      medium?: {
        height?: number;
        url?: string;
        width?: number;
      };
    };
    title?: string;
  };
  statistics?: {
    hiddenSubscriberCount?: boolean;
    subscriberCount?: string;
    videoCount?: string;
    viewCount?: string;
  };
  status?: {
    isLinked?: boolean;
    longUploadsStatus?: string;
    madeForKids?: boolean;
    privacyStatus?: string;
  };
  topicDetails?: {
    topicCategories?: Array<string>;
    topicIds?: Array<string>;
  };
};

export type YouTubeV1ChannelGetNode = {
  type: 'n8n-nodes-base.youTube';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<YouTubeV1ChannelGetParams>;
  output?: Items<YouTubeV1ChannelGetOutput>;
};