/**
 * Dropbox Node - Version 1
 * Discriminator: resource=folder, operation=list
 */


interface Credentials {
  dropboxApi: CredentialReference;
  dropboxOAuth2Api: CredentialReference;
}

/** Return the files and folders in a given folder */
export type DropboxV1FolderListParams = {
  resource: 'folder';
  operation: 'list';
/**
 * Means of authenticating with the service
 * @default accessToken
 */
    authentication?: 'accessToken' | 'oAuth2' | Expression<string>;
/**
 * The path of which to list the content
 */
    path?: string | Expression<string> | PlaceholderValue;
/**
 * 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 100
 */
    limit?: number | Expression<number>;
/**
 * Filters
 * @default {}
 */
    filters?: {
    /** Whether the results will include entries for files and folders that used to exist but were deleted. The default for this field is False.
     * @default false
     */
    include_deleted?: boolean | Expression<boolean>;
    /** Whether the results will include a flag for each file indicating whether or not that file has any explicit members. The default for this field is False.
     * @default false
     */
    include_has_explicit_shared_members?: boolean | Expression<boolean>;
    /** Whether the results will include entries under mounted folders which includes app folder, shared folder and team folder. The default for this field is True.
     * @default true
     */
    include_mounted_folders?: boolean | Expression<boolean>;
    /** Whether to include files that are not downloadable, i.e. Google Docs. The default for this field is True.
     * @default true
     */
    include_non_downloadable_files?: boolean | Expression<boolean>;
    /** Whether the list folder operation will be applied recursively to all subfolders and the response will contain contents of all subfolders. The default for this field is False.
     * @default false
     */
    recursive?: boolean | Expression<boolean>;
  };
};

export type DropboxV1FolderListOutput = {
  contentHash?: string;
  contentSize?: number;
  id?: string;
  isDownloadable?: boolean;
  lastModifiedClient?: string;
  lastModifiedServer?: string;
  name?: string;
  pathDisplay?: string;
  pathLower?: string;
  rev?: string;
  type?: string;
};

export type DropboxV1FolderListNode = {
  type: 'n8n-nodes-base.dropbox';
  version: 1;
  credentials?: Credentials;
  config: NodeConfig<DropboxV1FolderListParams>;
  output?: Items<DropboxV1FolderListOutput>;
};