UNPKG

stashapp-api

Version:

Easy to use adapter for interaction with a Stash server through GraphQL.

1,176 lines 197 kB
import { GraphQLClient, RequestOptions } from 'graphql-request'; export type Maybe<T> = T | null; export type InputMaybe<T> = Maybe<T>; export type Exact<T extends { [key: string]: unknown; }> = { [K in keyof T]: T[K]; }; export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]>; }; export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]>; }; export type MakeEmpty<T extends { [key: string]: unknown; }, K extends keyof T> = { [_ in K]?: never; }; export type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never; }; type GraphQLClientRequestHeaders = RequestOptions['requestHeaders']; /** All built-in and custom scalars, mapped to their actual values */ export type Scalars = { ID: { input: string; output: string; }; String: { input: string; output: string; }; Boolean: { input: boolean; output: boolean; }; Int: { input: number; output: number; }; Float: { input: number; output: number; }; Any: { input: any; output: any; }; BoolMap: { input: any; output: any; }; Int64: { input: any; output: any; }; Map: { input: any; output: any; }; PluginConfigMap: { input: any; output: any; }; Time: { input: any; output: any; }; Timestamp: { input: any; output: any; }; Upload: { input: any; output: any; }; }; export type AddTempDlnaipInput = { address: Scalars['String']['input']; /** Duration to enable, in minutes. 0 or null for indefinite. */ duration?: InputMaybe<Scalars['Int']['input']>; }; export type AnonymiseDatabaseInput = { download?: InputMaybe<Scalars['Boolean']['input']>; }; export type AssignSceneFileInput = { file_id: Scalars['ID']['input']; scene_id: Scalars['ID']['input']; }; export type AutoTagMetadataInput = { /** Paths to tag, null for all files */ paths?: InputMaybe<Array<Scalars['String']['input']>>; /** IDs of performers to tag files with, or "*" for all */ performers?: InputMaybe<Array<Scalars['String']['input']>>; /** IDs of studios to tag files with, or "*" for all */ studios?: InputMaybe<Array<Scalars['String']['input']>>; /** IDs of tags to tag files with, or "*" for all */ tags?: InputMaybe<Array<Scalars['String']['input']>>; }; export type AutoTagMetadataOptions = { __typename?: 'AutoTagMetadataOptions'; /** IDs of performers to tag files with, or "*" for all */ performers?: Maybe<Array<Scalars['String']['output']>>; /** IDs of studios to tag files with, or "*" for all */ studios?: Maybe<Array<Scalars['String']['output']>>; /** IDs of tags to tag files with, or "*" for all */ tags?: Maybe<Array<Scalars['String']['output']>>; }; export type BackupDatabaseInput = { download?: InputMaybe<Scalars['Boolean']['input']>; }; export type BaseFile = { basename: Scalars['String']['output']; created_at: Scalars['Time']['output']; fingerprint?: Maybe<Scalars['String']['output']>; fingerprints: Array<Fingerprint>; id: Scalars['ID']['output']; mod_time: Scalars['Time']['output']; parent_folder_id: Scalars['ID']['output']; path: Scalars['String']['output']; size: Scalars['Int64']['output']; updated_at: Scalars['Time']['output']; zip_file_id?: Maybe<Scalars['ID']['output']>; }; export type BaseFileFingerprintArgs = { type: Scalars['String']['input']; }; export declare enum BlobsStorageType { /** Database */ Database = "DATABASE", /** Filesystem */ Filesystem = "FILESYSTEM" } export type BulkGalleryUpdateInput = { clientMutationId?: InputMaybe<Scalars['String']['input']>; code?: InputMaybe<Scalars['String']['input']>; date?: InputMaybe<Scalars['String']['input']>; details?: InputMaybe<Scalars['String']['input']>; ids?: InputMaybe<Array<Scalars['ID']['input']>>; organized?: InputMaybe<Scalars['Boolean']['input']>; performer_ids?: InputMaybe<BulkUpdateIds>; photographer?: InputMaybe<Scalars['String']['input']>; rating100?: InputMaybe<Scalars['Int']['input']>; scene_ids?: InputMaybe<BulkUpdateIds>; studio_id?: InputMaybe<Scalars['ID']['input']>; tag_ids?: InputMaybe<BulkUpdateIds>; url?: InputMaybe<Scalars['String']['input']>; urls?: InputMaybe<BulkUpdateStrings>; }; export type BulkGroupUpdateInput = { clientMutationId?: InputMaybe<Scalars['String']['input']>; containing_groups?: InputMaybe<BulkUpdateGroupDescriptionsInput>; director?: InputMaybe<Scalars['String']['input']>; ids?: InputMaybe<Array<Scalars['ID']['input']>>; rating100?: InputMaybe<Scalars['Int']['input']>; studio_id?: InputMaybe<Scalars['ID']['input']>; sub_groups?: InputMaybe<BulkUpdateGroupDescriptionsInput>; tag_ids?: InputMaybe<BulkUpdateIds>; urls?: InputMaybe<BulkUpdateStrings>; }; export type BulkImageUpdateInput = { clientMutationId?: InputMaybe<Scalars['String']['input']>; code?: InputMaybe<Scalars['String']['input']>; date?: InputMaybe<Scalars['String']['input']>; details?: InputMaybe<Scalars['String']['input']>; gallery_ids?: InputMaybe<BulkUpdateIds>; ids?: InputMaybe<Array<Scalars['ID']['input']>>; organized?: InputMaybe<Scalars['Boolean']['input']>; performer_ids?: InputMaybe<BulkUpdateIds>; photographer?: InputMaybe<Scalars['String']['input']>; rating100?: InputMaybe<Scalars['Int']['input']>; studio_id?: InputMaybe<Scalars['ID']['input']>; tag_ids?: InputMaybe<BulkUpdateIds>; title?: InputMaybe<Scalars['String']['input']>; url?: InputMaybe<Scalars['String']['input']>; urls?: InputMaybe<BulkUpdateStrings>; }; export type BulkMovieUpdateInput = { clientMutationId?: InputMaybe<Scalars['String']['input']>; director?: InputMaybe<Scalars['String']['input']>; ids?: InputMaybe<Array<Scalars['ID']['input']>>; rating100?: InputMaybe<Scalars['Int']['input']>; studio_id?: InputMaybe<Scalars['ID']['input']>; tag_ids?: InputMaybe<BulkUpdateIds>; urls?: InputMaybe<BulkUpdateStrings>; }; export type BulkPerformerUpdateInput = { alias_list?: InputMaybe<BulkUpdateStrings>; birthdate?: InputMaybe<Scalars['String']['input']>; career_length?: InputMaybe<Scalars['String']['input']>; circumcised?: InputMaybe<CircumisedEnum>; clientMutationId?: InputMaybe<Scalars['String']['input']>; country?: InputMaybe<Scalars['String']['input']>; custom_fields?: InputMaybe<CustomFieldsInput>; death_date?: InputMaybe<Scalars['String']['input']>; details?: InputMaybe<Scalars['String']['input']>; disambiguation?: InputMaybe<Scalars['String']['input']>; ethnicity?: InputMaybe<Scalars['String']['input']>; eye_color?: InputMaybe<Scalars['String']['input']>; fake_tits?: InputMaybe<Scalars['String']['input']>; favorite?: InputMaybe<Scalars['Boolean']['input']>; gender?: InputMaybe<GenderEnum>; hair_color?: InputMaybe<Scalars['String']['input']>; height_cm?: InputMaybe<Scalars['Int']['input']>; ids?: InputMaybe<Array<Scalars['ID']['input']>>; ignore_auto_tag?: InputMaybe<Scalars['Boolean']['input']>; instagram?: InputMaybe<Scalars['String']['input']>; measurements?: InputMaybe<Scalars['String']['input']>; penis_length?: InputMaybe<Scalars['Float']['input']>; piercings?: InputMaybe<Scalars['String']['input']>; rating100?: InputMaybe<Scalars['Int']['input']>; tag_ids?: InputMaybe<BulkUpdateIds>; tattoos?: InputMaybe<Scalars['String']['input']>; twitter?: InputMaybe<Scalars['String']['input']>; url?: InputMaybe<Scalars['String']['input']>; urls?: InputMaybe<BulkUpdateStrings>; weight?: InputMaybe<Scalars['Int']['input']>; }; export type BulkSceneUpdateInput = { clientMutationId?: InputMaybe<Scalars['String']['input']>; code?: InputMaybe<Scalars['String']['input']>; date?: InputMaybe<Scalars['String']['input']>; details?: InputMaybe<Scalars['String']['input']>; director?: InputMaybe<Scalars['String']['input']>; gallery_ids?: InputMaybe<BulkUpdateIds>; group_ids?: InputMaybe<BulkUpdateIds>; ids?: InputMaybe<Array<Scalars['ID']['input']>>; movie_ids?: InputMaybe<BulkUpdateIds>; organized?: InputMaybe<Scalars['Boolean']['input']>; performer_ids?: InputMaybe<BulkUpdateIds>; rating100?: InputMaybe<Scalars['Int']['input']>; studio_id?: InputMaybe<Scalars['ID']['input']>; tag_ids?: InputMaybe<BulkUpdateIds>; title?: InputMaybe<Scalars['String']['input']>; url?: InputMaybe<Scalars['String']['input']>; urls?: InputMaybe<BulkUpdateStrings>; }; export type BulkTagUpdateInput = { aliases?: InputMaybe<BulkUpdateStrings>; child_ids?: InputMaybe<BulkUpdateIds>; description?: InputMaybe<Scalars['String']['input']>; favorite?: InputMaybe<Scalars['Boolean']['input']>; ids?: InputMaybe<Array<Scalars['ID']['input']>>; ignore_auto_tag?: InputMaybe<Scalars['Boolean']['input']>; parent_ids?: InputMaybe<BulkUpdateIds>; }; export type BulkUpdateGroupDescriptionsInput = { groups: Array<GroupDescriptionInput>; mode: BulkUpdateIdMode; }; export declare enum BulkUpdateIdMode { Add = "ADD", Remove = "REMOVE", Set = "SET" } export type BulkUpdateIds = { ids?: InputMaybe<Array<Scalars['ID']['input']>>; mode: BulkUpdateIdMode; }; export type BulkUpdateStrings = { mode: BulkUpdateIdMode; values?: InputMaybe<Array<Scalars['String']['input']>>; }; export type CircumcisionCriterionInput = { modifier: CriterionModifier; value?: InputMaybe<Array<CircumisedEnum>>; }; export declare enum CircumisedEnum { Cut = "CUT", Uncut = "UNCUT" } export type CleanGeneratedInput = { /** Clean blob files without blob entries */ blobFiles?: InputMaybe<Scalars['Boolean']['input']>; /** Do a dry run. Don't delete any files */ dryRun?: InputMaybe<Scalars['Boolean']['input']>; /** Clean image thumbnails/clips without image entries */ imageThumbnails?: InputMaybe<Scalars['Boolean']['input']>; /** Clean marker files without marker entries */ markers?: InputMaybe<Scalars['Boolean']['input']>; /** Clean preview files without scene entries */ screenshots?: InputMaybe<Scalars['Boolean']['input']>; /** Clean sprite and vtt files without scene entries */ sprites?: InputMaybe<Scalars['Boolean']['input']>; /** Clean scene transcodes without scene entries */ transcodes?: InputMaybe<Scalars['Boolean']['input']>; }; export type CleanMetadataInput = { /** Do a dry run. Don't delete any files */ dryRun: Scalars['Boolean']['input']; paths?: InputMaybe<Array<Scalars['String']['input']>>; }; export type ConfigDlnaInput = { /** True if DLNA service should be enabled by default */ enabled?: InputMaybe<Scalars['Boolean']['input']>; /** List of interfaces to run DLNA on. Empty for all */ interfaces?: InputMaybe<Array<Scalars['String']['input']>>; /** Defaults to 1338 */ port?: InputMaybe<Scalars['Int']['input']>; serverName?: InputMaybe<Scalars['String']['input']>; /** Order to sort videos */ videoSortOrder?: InputMaybe<Scalars['String']['input']>; /** List of IPs whitelisted for DLNA service */ whitelistedIPs?: InputMaybe<Array<Scalars['String']['input']>>; }; export type ConfigDlnaResult = { __typename?: 'ConfigDLNAResult'; /** True if DLNA service should be enabled by default */ enabled: Scalars['Boolean']['output']; /** List of interfaces to run DLNA on. Empty for all */ interfaces: Array<Scalars['String']['output']>; /** Defaults to 1338 */ port: Scalars['Int']['output']; serverName: Scalars['String']['output']; /** Order to sort videos */ videoSortOrder: Scalars['String']['output']; /** List of IPs whitelisted for DLNA service */ whitelistedIPs: Array<Scalars['String']['output']>; }; export type ConfigDefaultSettingsInput = { autoTag?: InputMaybe<AutoTagMetadataInput>; /** If true, delete file checkbox will be checked by default */ deleteFile?: InputMaybe<Scalars['Boolean']['input']>; /** If true, delete generated files checkbox will be checked by default */ deleteGenerated?: InputMaybe<Scalars['Boolean']['input']>; generate?: InputMaybe<GenerateMetadataInput>; identify?: InputMaybe<IdentifyMetadataInput>; scan?: InputMaybe<ScanMetadataInput>; }; export type ConfigDefaultSettingsResult = { __typename?: 'ConfigDefaultSettingsResult'; autoTag?: Maybe<AutoTagMetadataOptions>; /** If true, delete file checkbox will be checked by default */ deleteFile?: Maybe<Scalars['Boolean']['output']>; /** If true, delete generated supporting files checkbox will be checked by default */ deleteGenerated?: Maybe<Scalars['Boolean']['output']>; generate?: Maybe<GenerateMetadataOptions>; identify?: Maybe<IdentifyMetadataTaskOptions>; scan?: Maybe<ScanMetadataOptions>; }; export type ConfigDisableDropdownCreate = { __typename?: 'ConfigDisableDropdownCreate'; movie: Scalars['Boolean']['output']; performer: Scalars['Boolean']['output']; studio: Scalars['Boolean']['output']; tag: Scalars['Boolean']['output']; }; export type ConfigDisableDropdownCreateInput = { movie?: InputMaybe<Scalars['Boolean']['input']>; performer?: InputMaybe<Scalars['Boolean']['input']>; studio?: InputMaybe<Scalars['Boolean']['input']>; tag?: InputMaybe<Scalars['Boolean']['input']>; }; export type ConfigGeneralInput = { /** Path to backup directory */ backupDirectoryPath?: InputMaybe<Scalars['String']['input']>; /** Path to blobs - required for filesystem blob storage */ blobsPath?: InputMaybe<Scalars['String']['input']>; /** Where to store blobs */ blobsStorage?: InputMaybe<BlobsStorageType>; /** Path to cache */ cachePath?: InputMaybe<Scalars['String']['input']>; /** Whether to calculate MD5 checksums for scene video files */ calculateMD5?: InputMaybe<Scalars['Boolean']['input']>; /** True if galleries should be created from folders with images */ createGalleriesFromFolders?: InputMaybe<Scalars['Boolean']['input']>; /** Create Image Clips from Video extensions when Videos are disabled in Library */ createImageClipsFromVideos?: InputMaybe<Scalars['Boolean']['input']>; /** Custom Performer Image Location */ customPerformerImageLocation?: InputMaybe<Scalars['String']['input']>; /** Path to the SQLite database */ databasePath?: InputMaybe<Scalars['String']['input']>; /** whether to include range in generated funscript heatmaps */ drawFunscriptHeatmapRange?: InputMaybe<Scalars['Boolean']['input']>; /** Array of file regexp to exclude from Video Scans */ excludes?: InputMaybe<Array<Scalars['String']['input']>>; /** Path to the ffmpeg binary. If empty, stash will attempt to find it in the path or config directory */ ffmpegPath?: InputMaybe<Scalars['String']['input']>; /** Path to the ffprobe binary. If empty, stash will attempt to find it in the path or config directory */ ffprobePath?: InputMaybe<Scalars['String']['input']>; /** Regex used to identify images as gallery covers */ galleryCoverRegex?: InputMaybe<Scalars['String']['input']>; /** Array of gallery zip file extensions */ galleryExtensions?: InputMaybe<Array<Scalars['String']['input']>>; /** Path to generated files */ generatedPath?: InputMaybe<Scalars['String']['input']>; /** Array of file regexp to exclude from Image Scans */ imageExcludes?: InputMaybe<Array<Scalars['String']['input']>>; /** Array of image file extensions */ imageExtensions?: InputMaybe<Array<Scalars['String']['input']>>; /** * ffmpeg stream input args - injected before input file * These are applied when live transcoding */ liveTranscodeInputArgs?: InputMaybe<Array<Scalars['String']['input']>>; /** * ffmpeg stream output args - injected before output file * These are applied when live transcoding */ liveTranscodeOutputArgs?: InputMaybe<Array<Scalars['String']['input']>>; /** Whether to log http access */ logAccess?: InputMaybe<Scalars['Boolean']['input']>; /** Name of the log file */ logFile?: InputMaybe<Scalars['String']['input']>; /** Minimum log level */ logLevel?: InputMaybe<Scalars['String']['input']>; /** Whether to also output to stderr */ logOut?: InputMaybe<Scalars['Boolean']['input']>; /** Maximum session cookie age */ maxSessionAge?: InputMaybe<Scalars['Int']['input']>; /** Max streaming transcode size */ maxStreamingTranscodeSize?: InputMaybe<StreamingResolutionEnum>; /** Max generated transcode size */ maxTranscodeSize?: InputMaybe<StreamingResolutionEnum>; /** Path to import/export files */ metadataPath?: InputMaybe<Scalars['String']['input']>; /** Number of parallel tasks to start during scan/generate */ parallelTasks?: InputMaybe<Scalars['Int']['input']>; /** Password */ password?: InputMaybe<Scalars['String']['input']>; /** Source of plugin packages */ pluginPackageSources?: InputMaybe<Array<PackageSourceInput>>; /** Path to plugins */ pluginsPath?: InputMaybe<Scalars['String']['input']>; /** Include audio stream in previews */ previewAudio?: InputMaybe<Scalars['Boolean']['input']>; /** Duration of end of video to exclude when generating previews */ previewExcludeEnd?: InputMaybe<Scalars['String']['input']>; /** Duration of start of video to exclude when generating previews */ previewExcludeStart?: InputMaybe<Scalars['String']['input']>; /** Preset when generating preview */ previewPreset?: InputMaybe<PreviewPreset>; /** Preview segment duration, in seconds */ previewSegmentDuration?: InputMaybe<Scalars['Float']['input']>; /** Number of segments in a preview file */ previewSegments?: InputMaybe<Scalars['Int']['input']>; /** Python path - resolved using path if unset */ pythonPath?: InputMaybe<Scalars['String']['input']>; /** Source of scraper packages */ scraperPackageSources?: InputMaybe<Array<PackageSourceInput>>; /** Path to scrapers */ scrapersPath?: InputMaybe<Scalars['String']['input']>; /** Stash-box instances used for tagging */ stashBoxes?: InputMaybe<Array<StashBoxInput>>; /** Array of file paths to content */ stashes?: InputMaybe<Array<StashConfigInput>>; /** Transcode Hardware Acceleration */ transcodeHardwareAcceleration?: InputMaybe<Scalars['Boolean']['input']>; /** * ffmpeg transcode input args - injected before input file * These are applied to generated transcodes (previews and transcodes) */ transcodeInputArgs?: InputMaybe<Array<Scalars['String']['input']>>; /** * ffmpeg transcode output args - injected before output file * These are applied to generated transcodes (previews and transcodes) */ transcodeOutputArgs?: InputMaybe<Array<Scalars['String']['input']>>; /** Username */ username?: InputMaybe<Scalars['String']['input']>; /** Array of video file extensions */ videoExtensions?: InputMaybe<Array<Scalars['String']['input']>>; /** Hash algorithm to use for generated file naming */ videoFileNamingAlgorithm?: InputMaybe<HashAlgorithm>; /** Write image thumbnails to disk when generating on the fly */ writeImageThumbnails?: InputMaybe<Scalars['Boolean']['input']>; }; export type ConfigGeneralResult = { __typename?: 'ConfigGeneralResult'; /** API Key */ apiKey: Scalars['String']['output']; /** Path to backup directory */ backupDirectoryPath: Scalars['String']['output']; /** Path to blobs - required for filesystem blob storage */ blobsPath: Scalars['String']['output']; /** Where to store blobs */ blobsStorage: BlobsStorageType; /** Path to cache */ cachePath: Scalars['String']['output']; /** Whether to calculate MD5 checksums for scene video files */ calculateMD5: Scalars['Boolean']['output']; /** Path to the config file used */ configFilePath: Scalars['String']['output']; /** True if galleries should be created from folders with images */ createGalleriesFromFolders: Scalars['Boolean']['output']; /** Create Image Clips from Video extensions when Videos are disabled in Library */ createImageClipsFromVideos: Scalars['Boolean']['output']; /** Custom Performer Image Location */ customPerformerImageLocation?: Maybe<Scalars['String']['output']>; /** Path to the SQLite database */ databasePath: Scalars['String']['output']; /** whether to include range in generated funscript heatmaps */ drawFunscriptHeatmapRange: Scalars['Boolean']['output']; /** Array of file regexp to exclude from Video Scans */ excludes: Array<Scalars['String']['output']>; /** Path to the ffmpeg binary. If empty, stash will attempt to find it in the path or config directory */ ffmpegPath: Scalars['String']['output']; /** Path to the ffprobe binary. If empty, stash will attempt to find it in the path or config directory */ ffprobePath: Scalars['String']['output']; /** Regex used to identify images as gallery covers */ galleryCoverRegex: Scalars['String']['output']; /** Array of gallery zip file extensions */ galleryExtensions: Array<Scalars['String']['output']>; /** Path to generated files */ generatedPath: Scalars['String']['output']; /** Array of file regexp to exclude from Image Scans */ imageExcludes: Array<Scalars['String']['output']>; /** Array of image file extensions */ imageExtensions: Array<Scalars['String']['output']>; /** * ffmpeg stream input args - injected before input file * These are applied when live transcoding */ liveTranscodeInputArgs: Array<Scalars['String']['output']>; /** * ffmpeg stream output args - injected before output file * These are applied when live transcoding */ liveTranscodeOutputArgs: Array<Scalars['String']['output']>; /** Whether to log http access */ logAccess: Scalars['Boolean']['output']; /** Name of the log file */ logFile?: Maybe<Scalars['String']['output']>; /** Minimum log level */ logLevel: Scalars['String']['output']; /** Whether to also output to stderr */ logOut: Scalars['Boolean']['output']; /** Maximum session cookie age */ maxSessionAge: Scalars['Int']['output']; /** Max streaming transcode size */ maxStreamingTranscodeSize?: Maybe<StreamingResolutionEnum>; /** Max generated transcode size */ maxTranscodeSize?: Maybe<StreamingResolutionEnum>; /** Path to import/export files */ metadataPath: Scalars['String']['output']; /** Number of parallel tasks to start during scan/generate */ parallelTasks: Scalars['Int']['output']; /** Password */ password: Scalars['String']['output']; /** Source of plugin packages */ pluginPackageSources: Array<PackageSource>; /** Path to plugins */ pluginsPath: Scalars['String']['output']; /** Include audio stream in previews */ previewAudio: Scalars['Boolean']['output']; /** Duration of end of video to exclude when generating previews */ previewExcludeEnd: Scalars['String']['output']; /** Duration of start of video to exclude when generating previews */ previewExcludeStart: Scalars['String']['output']; /** Preset when generating preview */ previewPreset: PreviewPreset; /** Preview segment duration, in seconds */ previewSegmentDuration: Scalars['Float']['output']; /** Number of segments in a preview file */ previewSegments: Scalars['Int']['output']; /** Python path - resolved using path if unset */ pythonPath: Scalars['String']['output']; /** Source of scraper packages */ scraperPackageSources: Array<PackageSource>; /** Path to scrapers */ scrapersPath: Scalars['String']['output']; /** Stash-box instances used for tagging */ stashBoxes: Array<StashBox>; /** Array of file paths to content */ stashes: Array<StashConfig>; /** Transcode Hardware Acceleration */ transcodeHardwareAcceleration: Scalars['Boolean']['output']; /** * ffmpeg transcode input args - injected before input file * These are applied to generated transcodes (previews and transcodes) */ transcodeInputArgs: Array<Scalars['String']['output']>; /** * ffmpeg transcode output args - injected before output file * These are applied to generated transcodes (previews and transcodes) */ transcodeOutputArgs: Array<Scalars['String']['output']>; /** Username */ username: Scalars['String']['output']; /** Array of video file extensions */ videoExtensions: Array<Scalars['String']['output']>; /** Hash algorithm to use for generated file naming */ videoFileNamingAlgorithm: HashAlgorithm; /** Write image thumbnails to disk when generating on the fly */ writeImageThumbnails: Scalars['Boolean']['output']; }; export type ConfigImageLightboxInput = { displayMode?: InputMaybe<ImageLightboxDisplayMode>; resetZoomOnNav?: InputMaybe<Scalars['Boolean']['input']>; scaleUp?: InputMaybe<Scalars['Boolean']['input']>; scrollAttemptsBeforeChange?: InputMaybe<Scalars['Int']['input']>; scrollMode?: InputMaybe<ImageLightboxScrollMode>; slideshowDelay?: InputMaybe<Scalars['Int']['input']>; }; export type ConfigImageLightboxResult = { __typename?: 'ConfigImageLightboxResult'; displayMode?: Maybe<ImageLightboxDisplayMode>; resetZoomOnNav?: Maybe<Scalars['Boolean']['output']>; scaleUp?: Maybe<Scalars['Boolean']['output']>; scrollAttemptsBeforeChange: Scalars['Int']['output']; scrollMode?: Maybe<ImageLightboxScrollMode>; slideshowDelay?: Maybe<Scalars['Int']['output']>; }; export type ConfigInterfaceInput = { /** If true, video will autostart on load in the scene player */ autostartVideo?: InputMaybe<Scalars['Boolean']['input']>; /** If true, video will autostart when loading from play random or play selected */ autostartVideoOnPlaySelected?: InputMaybe<Scalars['Boolean']['input']>; /** If true, next scene in playlist will be played at video end by default */ continuePlaylistDefault?: InputMaybe<Scalars['Boolean']['input']>; /** Custom CSS */ css?: InputMaybe<Scalars['String']['input']>; cssEnabled?: InputMaybe<Scalars['Boolean']['input']>; /** Custom Locales */ customLocales?: InputMaybe<Scalars['String']['input']>; customLocalesEnabled?: InputMaybe<Scalars['Boolean']['input']>; /** Set to true to disable creating new objects via the dropdown menus */ disableDropdownCreate?: InputMaybe<ConfigDisableDropdownCreateInput>; /** Funscript Time Offset */ funscriptOffset?: InputMaybe<Scalars['Int']['input']>; /** Handy Connection Key */ handyKey?: InputMaybe<Scalars['String']['input']>; imageLightbox?: InputMaybe<ConfigImageLightboxInput>; /** Custom Javascript */ javascript?: InputMaybe<Scalars['String']['input']>; javascriptEnabled?: InputMaybe<Scalars['Boolean']['input']>; /** Interface language */ language?: InputMaybe<Scalars['String']['input']>; /** Maximum duration (in seconds) in which a scene video will loop in the scene player */ maximumLoopDuration?: InputMaybe<Scalars['Int']['input']>; /** Ordered list of items that should be shown in the menu */ menuItems?: InputMaybe<Array<Scalars['String']['input']>>; /** True if we should not auto-open a browser window on startup */ noBrowser?: InputMaybe<Scalars['Boolean']['input']>; /** True if we should send notifications to the desktop */ notificationsEnabled?: InputMaybe<Scalars['Boolean']['input']>; /** Show scene scrubber by default */ showScrubber?: InputMaybe<Scalars['Boolean']['input']>; /** If true, studio overlays will be shown as text instead of logo images */ showStudioAsText?: InputMaybe<Scalars['Boolean']['input']>; /** Enable sound on mouseover previews */ soundOnPreview?: InputMaybe<Scalars['Boolean']['input']>; /** Whether to use Stash Hosted Funscript */ useStashHostedFunscript?: InputMaybe<Scalars['Boolean']['input']>; /** Wall playback type */ wallPlayback?: InputMaybe<Scalars['String']['input']>; /** Show title and tags in wall view */ wallShowTitle?: InputMaybe<Scalars['Boolean']['input']>; }; export type ConfigInterfaceResult = { __typename?: 'ConfigInterfaceResult'; /** If true, video will autostart on load in the scene player */ autostartVideo?: Maybe<Scalars['Boolean']['output']>; /** If true, video will autostart when loading from play random or play selected */ autostartVideoOnPlaySelected?: Maybe<Scalars['Boolean']['output']>; /** If true, next scene in playlist will be played at video end by default */ continuePlaylistDefault?: Maybe<Scalars['Boolean']['output']>; /** Custom CSS */ css?: Maybe<Scalars['String']['output']>; cssEnabled?: Maybe<Scalars['Boolean']['output']>; /** Custom Locales */ customLocales?: Maybe<Scalars['String']['output']>; customLocalesEnabled?: Maybe<Scalars['Boolean']['output']>; /** Fields are true if creating via dropdown menus are disabled */ disableDropdownCreate: ConfigDisableDropdownCreate; /** Funscript Time Offset */ funscriptOffset?: Maybe<Scalars['Int']['output']>; /** Handy Connection Key */ handyKey?: Maybe<Scalars['String']['output']>; imageLightbox: ConfigImageLightboxResult; /** Custom Javascript */ javascript?: Maybe<Scalars['String']['output']>; javascriptEnabled?: Maybe<Scalars['Boolean']['output']>; /** Interface language */ language?: Maybe<Scalars['String']['output']>; /** Maximum duration (in seconds) in which a scene video will loop in the scene player */ maximumLoopDuration?: Maybe<Scalars['Int']['output']>; /** Ordered list of items that should be shown in the menu */ menuItems?: Maybe<Array<Scalars['String']['output']>>; /** True if we should not auto-open a browser window on startup */ noBrowser?: Maybe<Scalars['Boolean']['output']>; /** True if we should send desktop notifications */ notificationsEnabled?: Maybe<Scalars['Boolean']['output']>; /** Show scene scrubber by default */ showScrubber?: Maybe<Scalars['Boolean']['output']>; /** If true, studio overlays will be shown as text instead of logo images */ showStudioAsText?: Maybe<Scalars['Boolean']['output']>; /** Enable sound on mouseover previews */ soundOnPreview?: Maybe<Scalars['Boolean']['output']>; /** Whether to use Stash Hosted Funscript */ useStashHostedFunscript?: Maybe<Scalars['Boolean']['output']>; /** Wall playback type */ wallPlayback?: Maybe<Scalars['String']['output']>; /** Show title and tags in wall view */ wallShowTitle?: Maybe<Scalars['Boolean']['output']>; }; /** All configuration settings */ export type ConfigResult = { __typename?: 'ConfigResult'; defaults: ConfigDefaultSettingsResult; dlna: ConfigDlnaResult; general: ConfigGeneralResult; interface: ConfigInterfaceResult; plugins: Scalars['PluginConfigMap']['output']; scraping: ConfigScrapingResult; ui: Scalars['Map']['output']; }; /** All configuration settings */ export type ConfigResultPluginsArgs = { include?: InputMaybe<Array<Scalars['ID']['input']>>; }; export type ConfigScrapingInput = { /** Tags blacklist during scraping */ excludeTagPatterns?: InputMaybe<Array<Scalars['String']['input']>>; /** Scraper CDP path. Path to chrome executable or remote address */ scraperCDPPath?: InputMaybe<Scalars['String']['input']>; /** Whether the scraper should check for invalid certificates */ scraperCertCheck?: InputMaybe<Scalars['Boolean']['input']>; /** Scraper user agent string */ scraperUserAgent?: InputMaybe<Scalars['String']['input']>; }; export type ConfigScrapingResult = { __typename?: 'ConfigScrapingResult'; /** Tags blacklist during scraping */ excludeTagPatterns: Array<Scalars['String']['output']>; /** Scraper CDP path. Path to chrome executable or remote address */ scraperCDPPath?: Maybe<Scalars['String']['output']>; /** Whether the scraper should check for invalid certificates */ scraperCertCheck: Scalars['Boolean']['output']; /** Scraper user agent string */ scraperUserAgent?: Maybe<Scalars['String']['output']>; }; export declare enum CriterionModifier { /** >= AND <= */ Between = "BETWEEN", /** = */ Equals = "EQUALS", Excludes = "EXCLUDES", /** > */ GreaterThan = "GREATER_THAN", Includes = "INCLUDES", /** INCLUDES ALL */ IncludesAll = "INCLUDES_ALL", /** IS NULL */ IsNull = "IS_NULL", /** < */ LessThan = "LESS_THAN", /** MATCHES REGEX */ MatchesRegex = "MATCHES_REGEX", /** < OR > */ NotBetween = "NOT_BETWEEN", /** != */ NotEquals = "NOT_EQUALS", /** NOT MATCHES REGEX */ NotMatchesRegex = "NOT_MATCHES_REGEX", /** IS NOT NULL */ NotNull = "NOT_NULL" } export type CustomFieldCriterionInput = { field: Scalars['String']['input']; modifier: CriterionModifier; value?: InputMaybe<Array<Scalars['Any']['input']>>; }; export type CustomFieldsInput = { /** If populated, the entire custom fields map will be replaced with this value */ full?: InputMaybe<Scalars['Map']['input']>; /** If populated, only the keys in this map will be updated */ partial?: InputMaybe<Scalars['Map']['input']>; }; export type Dlnaip = { __typename?: 'DLNAIP'; ipAddress: Scalars['String']['output']; /** Time until IP will be no longer allowed/disallowed */ until?: Maybe<Scalars['Time']['output']>; }; export type DlnaStatus = { __typename?: 'DLNAStatus'; allowedIPAddresses: Array<Dlnaip>; recentIPAddresses: Array<Scalars['String']['output']>; running: Scalars['Boolean']['output']; /** If not currently running, time until it will be started. If running, time until it will be stopped */ until?: Maybe<Scalars['Time']['output']>; }; export type DateCriterionInput = { modifier: CriterionModifier; value: Scalars['String']['input']; value2?: InputMaybe<Scalars['String']['input']>; }; export type DestroyFilterInput = { id: Scalars['ID']['input']; }; /** Directory structure of a path */ export type Directory = { __typename?: 'Directory'; directories: Array<Scalars['String']['output']>; parent?: Maybe<Scalars['String']['output']>; path: Scalars['String']['output']; }; export type DisableDlnaInput = { /** Duration to enable, in minutes. 0 or null for indefinite. */ duration?: InputMaybe<Scalars['Int']['input']>; }; export type EnableDlnaInput = { /** Duration to enable, in minutes. 0 or null for indefinite. */ duration?: InputMaybe<Scalars['Int']['input']>; }; export type ExportObjectTypeInput = { all?: InputMaybe<Scalars['Boolean']['input']>; ids?: InputMaybe<Array<Scalars['String']['input']>>; }; export type ExportObjectsInput = { galleries?: InputMaybe<ExportObjectTypeInput>; groups?: InputMaybe<ExportObjectTypeInput>; images?: InputMaybe<ExportObjectTypeInput>; includeDependencies?: InputMaybe<Scalars['Boolean']['input']>; movies?: InputMaybe<ExportObjectTypeInput>; performers?: InputMaybe<ExportObjectTypeInput>; scenes?: InputMaybe<ExportObjectTypeInput>; studios?: InputMaybe<ExportObjectTypeInput>; tags?: InputMaybe<ExportObjectTypeInput>; }; export type FileSetFingerprintsInput = { /** only supplied fingerprint types will be modified */ fingerprints: Array<SetFingerprintsInput>; id: Scalars['ID']['input']; }; export declare enum FilterMode { Galleries = "GALLERIES", Groups = "GROUPS", Images = "IMAGES", Movies = "MOVIES", Performers = "PERFORMERS", Scenes = "SCENES", SceneMarkers = "SCENE_MARKERS", Studios = "STUDIOS", Tags = "TAGS" } export type FindFilterType = { direction?: InputMaybe<SortDirectionEnum>; page?: InputMaybe<Scalars['Int']['input']>; /** use per_page = -1 to indicate all results. Defaults to 25. */ per_page?: InputMaybe<Scalars['Int']['input']>; q?: InputMaybe<Scalars['String']['input']>; sort?: InputMaybe<Scalars['String']['input']>; }; export type FindGalleriesResultType = { __typename?: 'FindGalleriesResultType'; count: Scalars['Int']['output']; galleries: Array<Gallery>; }; export type FindGalleryChaptersResultType = { __typename?: 'FindGalleryChaptersResultType'; chapters: Array<GalleryChapter>; count: Scalars['Int']['output']; }; export type FindGroupsResultType = { __typename?: 'FindGroupsResultType'; count: Scalars['Int']['output']; groups: Array<Group>; }; export type FindImagesResultType = { __typename?: 'FindImagesResultType'; count: Scalars['Int']['output']; /** Total file size in bytes */ filesize: Scalars['Float']['output']; images: Array<Image>; /** Total megapixels of the images */ megapixels: Scalars['Float']['output']; }; export type FindJobInput = { id: Scalars['ID']['input']; }; export type FindMoviesResultType = { __typename?: 'FindMoviesResultType'; count: Scalars['Int']['output']; movies: Array<Movie>; }; export type FindPerformersResultType = { __typename?: 'FindPerformersResultType'; count: Scalars['Int']['output']; performers: Array<Performer>; }; export type FindSceneMarkersResultType = { __typename?: 'FindSceneMarkersResultType'; count: Scalars['Int']['output']; scene_markers: Array<SceneMarker>; }; export type FindScenesResultType = { __typename?: 'FindScenesResultType'; count: Scalars['Int']['output']; /** Total duration in seconds */ duration: Scalars['Float']['output']; /** Total file size in bytes */ filesize: Scalars['Float']['output']; scenes: Array<Scene>; }; export type FindStudiosResultType = { __typename?: 'FindStudiosResultType'; count: Scalars['Int']['output']; studios: Array<Studio>; }; export type FindTagsResultType = { __typename?: 'FindTagsResultType'; count: Scalars['Int']['output']; tags: Array<Tag>; }; export type Fingerprint = { __typename?: 'Fingerprint'; type: Scalars['String']['output']; value: Scalars['String']['output']; }; export type FloatCriterionInput = { modifier: CriterionModifier; value: Scalars['Float']['input']; value2?: InputMaybe<Scalars['Float']['input']>; }; export type Folder = { __typename?: 'Folder'; created_at: Scalars['Time']['output']; id: Scalars['ID']['output']; mod_time: Scalars['Time']['output']; parent_folder_id?: Maybe<Scalars['ID']['output']>; path: Scalars['String']['output']; updated_at: Scalars['Time']['output']; zip_file_id?: Maybe<Scalars['ID']['output']>; }; /** Gallery type */ export type Gallery = { __typename?: 'Gallery'; chapters: Array<GalleryChapter>; code?: Maybe<Scalars['String']['output']>; cover?: Maybe<Image>; created_at: Scalars['Time']['output']; date?: Maybe<Scalars['String']['output']>; details?: Maybe<Scalars['String']['output']>; files: Array<GalleryFile>; folder?: Maybe<Folder>; id: Scalars['ID']['output']; image: Image; image_count: Scalars['Int']['output']; organized: Scalars['Boolean']['output']; paths: GalleryPathsType; performers: Array<Performer>; photographer?: Maybe<Scalars['String']['output']>; rating100?: Maybe<Scalars['Int']['output']>; scenes: Array<Scene>; studio?: Maybe<Studio>; tags: Array<Tag>; title?: Maybe<Scalars['String']['output']>; updated_at: Scalars['Time']['output']; /** @deprecated Use urls */ url?: Maybe<Scalars['String']['output']>; urls: Array<Scalars['String']['output']>; }; /** Gallery type */ export type GalleryImageArgs = { index: Scalars['Int']['input']; }; export type GalleryAddInput = { gallery_id: Scalars['ID']['input']; image_ids: Array<Scalars['ID']['input']>; }; export type GalleryChapter = { __typename?: 'GalleryChapter'; created_at: Scalars['Time']['output']; gallery: Gallery; id: Scalars['ID']['output']; image_index: Scalars['Int']['output']; title: Scalars['String']['output']; updated_at: Scalars['Time']['output']; }; export type GalleryChapterCreateInput = { gallery_id: Scalars['ID']['input']; image_index: Scalars['Int']['input']; title: Scalars['String']['input']; }; export type GalleryChapterUpdateInput = { gallery_id?: InputMaybe<Scalars['ID']['input']>; id: Scalars['ID']['input']; image_index?: InputMaybe<Scalars['Int']['input']>; title?: InputMaybe<Scalars['String']['input']>; }; export type GalleryCreateInput = { code?: InputMaybe<Scalars['String']['input']>; date?: InputMaybe<Scalars['String']['input']>; details?: InputMaybe<Scalars['String']['input']>; organized?: InputMaybe<Scalars['Boolean']['input']>; performer_ids?: InputMaybe<Array<Scalars['ID']['input']>>; photographer?: InputMaybe<Scalars['String']['input']>; rating100?: InputMaybe<Scalars['Int']['input']>; scene_ids?: InputMaybe<Array<Scalars['ID']['input']>>; studio_id?: InputMaybe<Scalars['ID']['input']>; tag_ids?: InputMaybe<Array<Scalars['ID']['input']>>; title: Scalars['String']['input']; url?: InputMaybe<Scalars['String']['input']>; urls?: InputMaybe<Array<Scalars['String']['input']>>; }; export type GalleryDestroyInput = { /** * If true, then the zip file will be deleted if the gallery is zip-file-based. * If gallery is folder-based, then any files not associated with other * galleries will be deleted, along with the folder, if it is not empty. */ delete_file?: InputMaybe<Scalars['Boolean']['input']>; delete_generated?: InputMaybe<Scalars['Boolean']['input']>; ids: Array<Scalars['ID']['input']>; }; export type GalleryFile = BaseFile & { __typename?: 'GalleryFile'; basename: Scalars['String']['output']; created_at: Scalars['Time']['output']; fingerprint?: Maybe<Scalars['String']['output']>; fingerprints: Array<Fingerprint>; id: Scalars['ID']['output']; mod_time: Scalars['Time']['output']; parent_folder_id: Scalars['ID']['output']; path: Scalars['String']['output']; size: Scalars['Int64']['output']; updated_at: Scalars['Time']['output']; zip_file_id?: Maybe<Scalars['ID']['output']>; }; export type GalleryFileFingerprintArgs = { type: Scalars['String']['input']; }; export type GalleryFilterType = { AND?: InputMaybe<GalleryFilterType>; NOT?: InputMaybe<GalleryFilterType>; OR?: InputMaybe<GalleryFilterType>; /** Filter by average image resolution */ average_resolution?: InputMaybe<ResolutionCriterionInput>; /** Filter by file checksum */ checksum?: InputMaybe<StringCriterionInput>; /** Filter by studio code */ code?: InputMaybe<StringCriterionInput>; /** Filter by creation time */ created_at?: InputMaybe<TimestampCriterionInput>; /** Filter by date */ date?: InputMaybe<DateCriterionInput>; details?: InputMaybe<StringCriterionInput>; /** Filter by zip-file count */ file_count?: InputMaybe<IntCriterionInput>; /** Filter to only include galleries that have chapters. `true` or `false` */ has_chapters?: InputMaybe<Scalars['String']['input']>; id?: InputMaybe<IntCriterionInput>; /** Filter by number of images in this gallery */ image_count?: InputMaybe<IntCriterionInput>; /** Filter by related images that meet this criteria */ images_filter?: InputMaybe<ImageFilterType>; /** Filter to only include galleries missing this property */ is_missing?: InputMaybe<Scalars['String']['input']>; /** Filter to include/exclude galleries that were created from zip */ is_zip?: InputMaybe<Scalars['Boolean']['input']>; /** Filter by organized */ organized?: InputMaybe<Scalars['Boolean']['input']>; /** Filter by path */ path?: InputMaybe<StringCriterionInput>; /** Filter galleries by performer age at time of gallery */ performer_age?: InputMaybe<IntCriterionInput>; /** Filter by performer count */ performer_count?: InputMaybe<IntCriterionInput>; /** Filter galleries that have performers that have been favorited */ performer_favorite?: InputMaybe<Scalars['Boolean']['input']>; /** Filter to only include galleries with performers with these tags */ performer_tags?: InputMaybe<HierarchicalMultiCriterionInput>; /** Filter to only include galleries with these performers */ performers?: InputMaybe<MultiCriterionInput>; /** Filter by related performers that meet this criteria */ performers_filter?: InputMaybe<PerformerFilterType>; /** Filter by photographer */ photographer?: InputMaybe<StringCriterionInput>; rating100?: InputMaybe<IntCriterionInput>; /** Filter to only include galleries with these scenes */ scenes?: InputMaybe<MultiCriterionInput>; /** Filter by related scenes that meet this criteria */ scenes_filter?: InputMaybe<SceneFilterType>; /** Filter to only include galleries with this studio */ studios?: InputMaybe<HierarchicalMultiCriterionInput>; /** Filter by related studios that meet this criteria */ studios_filter?: InputMaybe<StudioFilterType>; /** Filter by tag count */ tag_count?: InputMaybe<IntCriterionInput>; /** Filter to only include galleries with these tags */ tags?: InputMaybe<HierarchicalMultiCriterionInput>; /** Filter by related tags that meet this criteria */ tags_filter?: InputMaybe<TagFilterType>; title?: InputMaybe<StringCriterionInput>; /** Filter by last update time */ updated_at?: InputMaybe<TimestampCriterionInput>; /** Filter by url */ url?: InputMaybe<StringCriterionInput>; }; export type GalleryPathsType = { __typename?: 'GalleryPathsType'; cover: Scalars['String']['output']; preview: Scalars['String']['output']; }; export type GalleryRemoveInput = { gallery_id: Scalars['ID']['input']; image_ids: Array<Scalars['ID']['input']>; }; export type GalleryResetCoverInput = { gallery_id: Scalars['ID']['input']; }; export type GallerySetCoverInput = { cover_image_id: Scalars['ID']['input']; gallery_id: Scalars['ID']['input']; }; export type GalleryUpdateInput = { clientMutationId?: InputMaybe<Scalars['String']['input']>; code?: InputMaybe<Scalars['String']['input']>; date?: InputMaybe<Scalars['String']['input']>; details?: InputMaybe<Scalars['String']['input']>; id: Scalars['ID']['input']; organized?: InputMaybe<Scalars['Boolean']['input']>; performer_ids?: InputMaybe<Array<Scalars['ID']['input']>>; photographer?: InputMaybe<Scalars['String']['input']>; primary_file_id?: InputMaybe<Scalars['ID']['input']>; rating100?: InputMaybe<Scalars['Int']['input']>; scene_ids?: InputMaybe<Array<Scalars['ID']['input']>>; studio_id?: InputMaybe<Scalars['ID']['input']>; tag_ids?: InputMaybe<Array<Scalars['ID']['input']>>; title?: InputMaybe<Scalars['String']['input']>; url?: InputMaybe<Scalars['String']['input']>; urls?: InputMaybe<Array<Scalars['String']['input']>>; }; export type GenderCriterionInput = { modifier: CriterionModifier; value?: InputMaybe<GenderEnum>; value_list?: InputMaybe<Array<GenderEnum>>; }; export declare enum GenderEnum { Female = "FEMALE", Intersex = "INTERSEX", Male = "MALE", NonBinary = "NON_BINARY", TransgenderFemale = "TRANSGENDER_FEMALE", TransgenderMale = "TRANSGENDER_MALE" } export type GenerateApiKeyInput = { clear?: InputMaybe<Scalars['Boolean']['input']>; }; export type GenerateMetadataInput = { clipPreviews?: InputMaybe<Scalars['Boolean']['input']>; covers?: InputMaybe<Scalars['Boolean']['input']>; /** Generate transcodes even if not required */ forceTranscodes?: InputMaybe<Scalars['Boolean']['input']>; imagePreviews?: InputMaybe<Scalars['Boolean']['input']>; imageThumbnails?: InputMaybe<Scalars['Boolean']['input']>; interactiveHeatmapsSpeeds?: InputMaybe<Scalars['Boolean']['input']>; /** marker ids to generate for */ markerIDs?: InputMaybe<Array<Scalars['ID']['input']>>; markerImagePreviews?: InputMaybe<Scalars['Boolean']['input']>; markerScreenshots?: InputMaybe<Scalars['Boolean']['input']>; markers?: InputMaybe<Scalars['Boolean']['input']>; /** overwrite existing media */ overwrite?: InputMaybe<Scalars['Boolean']['input']>; phashes?: InputMaybe<Scalars['Boolean']['input']>; previewOptions?: InputMaybe<GeneratePreviewOptionsInput>; previews?: InputMaybe<Scalars['Boolean']['input']>; /** scene ids to generate for */ sceneIDs?: InputMaybe<Array<Scalars['ID']['input']>>; sprites?: InputMaybe<Scalars['Boolean']['input']>; transcodes?: InputMaybe<Scalars['Boolean']['input']>; }; export type GenerateMetadataOptions = { __typename?: 'GenerateMetadataOptions'; clipPreviews?: Maybe<Scalars['Boolean']['output']>; covers?: Maybe<Scalars['Boolean']['output']>; imagePreviews?: Maybe<Scalars['Boolean']['output']>; imageThumbnails?: Maybe<Scalars['Boolean']['output']>; interactiveHeatmapsSpeeds?: Maybe<Scalars['Boolean']['output']>; markerImagePreviews?: Maybe<Scalars['Boolean']['output']>; markerScreenshots?: Maybe<Scalars['Boolean']['output']>; markers?: Maybe<Scalars['Boolean']['output']>; phashes?: Maybe<Scalars