mirror of https://github.com/stashapp/stash.git
336 lines
13 KiB
GraphQL
336 lines
13 KiB
GraphQL
"""The query root for this schema"""
|
|
type Query {
|
|
# Filters
|
|
findSavedFilter(id: ID!): SavedFilter
|
|
findSavedFilters(mode: FilterMode): [SavedFilter!]!
|
|
findDefaultFilter(mode: FilterMode!): SavedFilter
|
|
|
|
"""Find a scene by ID or Checksum"""
|
|
findScene(id: ID, checksum: String): Scene
|
|
findSceneByHash(input: SceneHashInput!): Scene
|
|
|
|
"""A function which queries Scene objects"""
|
|
findScenes(scene_filter: SceneFilterType, scene_ids: [Int!], filter: FindFilterType): FindScenesResultType!
|
|
|
|
findScenesByPathRegex(filter: FindFilterType): FindScenesResultType!
|
|
|
|
""" Returns any groups of scenes that are perceptual duplicates within the queried distance """
|
|
findDuplicateScenes(distance: Int): [[Scene!]!]!
|
|
|
|
"""Return valid stream paths"""
|
|
sceneStreams(id: ID): [SceneStreamEndpoint!]!
|
|
|
|
parseSceneFilenames(filter: FindFilterType, config: SceneParserInput!): SceneParserResultType!
|
|
|
|
"""A function which queries SceneMarker objects"""
|
|
findSceneMarkers(scene_marker_filter: SceneMarkerFilterType filter: FindFilterType): FindSceneMarkersResultType!
|
|
|
|
findImage(id: ID, checksum: String): Image
|
|
|
|
"""A function which queries Scene objects"""
|
|
findImages(image_filter: ImageFilterType, image_ids: [Int!], filter: FindFilterType): FindImagesResultType!
|
|
|
|
"""Find a performer by ID"""
|
|
findPerformer(id: ID!): Performer
|
|
"""A function which queries Performer objects"""
|
|
findPerformers(performer_filter: PerformerFilterType, filter: FindFilterType): FindPerformersResultType!
|
|
|
|
"""Find a studio by ID"""
|
|
findStudio(id: ID!): Studio
|
|
"""A function which queries Studio objects"""
|
|
findStudios(studio_filter: StudioFilterType, filter: FindFilterType): FindStudiosResultType!
|
|
|
|
"""Find a movie by ID"""
|
|
findMovie(id: ID!): Movie
|
|
"""A function which queries Movie objects"""
|
|
findMovies(movie_filter: MovieFilterType, filter: FindFilterType): FindMoviesResultType!
|
|
|
|
findGallery(id: ID!): Gallery
|
|
findGalleries(gallery_filter: GalleryFilterType, filter: FindFilterType): FindGalleriesResultType!
|
|
|
|
findTag(id: ID!): Tag
|
|
findTags(tag_filter: TagFilterType, filter: FindFilterType): FindTagsResultType!
|
|
|
|
"""Retrieve random scene markers for the wall"""
|
|
markerWall(q: String): [SceneMarker!]!
|
|
"""Retrieve random scenes for the wall"""
|
|
sceneWall(q: String): [Scene!]!
|
|
|
|
"""Get marker strings"""
|
|
markerStrings(q: String, sort: String): [MarkerStringsResultType]!
|
|
"""Get stats"""
|
|
stats: StatsResultType!
|
|
"""Organize scene markers by tag for a given scene ID"""
|
|
sceneMarkerTags(scene_id: ID!): [SceneMarkerTag!]!
|
|
|
|
logs: [LogEntry!]!
|
|
|
|
# Scrapers
|
|
|
|
"""List available scrapers"""
|
|
listScrapers(types: [ScrapeContentType!]!): [Scraper!]!
|
|
listPerformerScrapers: [Scraper!]! @deprecated(reason: "Use listScrapers(types: [PERFORMER])")
|
|
listSceneScrapers: [Scraper!]! @deprecated(reason: "Use listScrapers(types: [SCENE])")
|
|
listGalleryScrapers: [Scraper!]! @deprecated(reason: "Use listScrapers(types: [GALLERY])")
|
|
listMovieScrapers: [Scraper!]! @deprecated(reason: "Use listScrapers(types: [MOVIE])")
|
|
|
|
|
|
"""Scrape for a single scene"""
|
|
scrapeSingleScene(source: ScraperSourceInput!, input: ScrapeSingleSceneInput!): [ScrapedScene!]!
|
|
"""Scrape for multiple scenes"""
|
|
scrapeMultiScenes(source: ScraperSourceInput!, input: ScrapeMultiScenesInput!): [[ScrapedScene!]!]!
|
|
|
|
"""Scrape for a single performer"""
|
|
scrapeSinglePerformer(source: ScraperSourceInput!, input: ScrapeSinglePerformerInput!): [ScrapedPerformer!]!
|
|
"""Scrape for multiple performers"""
|
|
scrapeMultiPerformers(source: ScraperSourceInput!, input: ScrapeMultiPerformersInput!): [[ScrapedPerformer!]!]!
|
|
|
|
"""Scrape for a single gallery"""
|
|
scrapeSingleGallery(source: ScraperSourceInput!, input: ScrapeSingleGalleryInput!): [ScrapedGallery!]!
|
|
|
|
"""Scrape for a single movie"""
|
|
scrapeSingleMovie(source: ScraperSourceInput!, input: ScrapeSingleMovieInput!): [ScrapedMovie!]!
|
|
|
|
"Scrapes content based on a URL"
|
|
scrapeURL(url: String!, ty: ScrapeContentType!): ScrapedContent
|
|
|
|
"""Scrapes a complete performer record based on a URL"""
|
|
scrapePerformerURL(url: String!): ScrapedPerformer
|
|
"""Scrapes a complete scene record based on a URL"""
|
|
scrapeSceneURL(url: String!): ScrapedScene
|
|
"""Scrapes a complete gallery record based on a URL"""
|
|
scrapeGalleryURL(url: String!): ScrapedGallery
|
|
"""Scrapes a complete movie record based on a URL"""
|
|
scrapeMovieURL(url: String!): ScrapedMovie
|
|
|
|
"""Scrape a list of performers based on name"""
|
|
scrapePerformerList(scraper_id: ID!, query: String!): [ScrapedPerformer!]! @deprecated(reason: "use scrapeSinglePerformer")
|
|
"""Scrapes a complete performer record based on a scrapePerformerList result"""
|
|
scrapePerformer(scraper_id: ID!, scraped_performer: ScrapedPerformerInput!): ScrapedPerformer @deprecated(reason: "use scrapeSinglePerformer")
|
|
"""Scrapes a complete scene record based on an existing scene"""
|
|
scrapeScene(scraper_id: ID!, scene: SceneUpdateInput!): ScrapedScene @deprecated(reason: "use scrapeSingleScene")
|
|
"""Scrapes a complete gallery record based on an existing gallery"""
|
|
scrapeGallery(scraper_id: ID!, gallery: GalleryUpdateInput!): ScrapedGallery @deprecated(reason: "use scrapeSingleGallery")
|
|
|
|
"""Scrape a list of performers from a query"""
|
|
scrapeFreeonesPerformerList(query: String!): [String!]! @deprecated(reason: "use scrapeSinglePerformer with scraper_id = builtin_freeones")
|
|
|
|
# Plugins
|
|
"""List loaded plugins"""
|
|
plugins: [Plugin!]
|
|
"""List available plugin operations"""
|
|
pluginTasks: [PluginTask!]
|
|
|
|
# Config
|
|
"""Returns the current, complete configuration"""
|
|
configuration: ConfigResult!
|
|
"""Returns an array of paths for the given path"""
|
|
directory(
|
|
"The directory path to list"
|
|
path: String,
|
|
"Desired collation locale. Determines the order of the directory result. eg. 'en-US', 'pt-BR', ..."
|
|
locale: String = "en"
|
|
): Directory!
|
|
validateStashBoxCredentials(input: StashBoxInput!): StashBoxValidationResult!
|
|
|
|
# System status
|
|
systemStatus: SystemStatus!
|
|
|
|
# Job status
|
|
jobQueue: [Job!]
|
|
findJob(input: FindJobInput!): Job
|
|
|
|
dlnaStatus: DLNAStatus!
|
|
|
|
# Get everything
|
|
|
|
allPerformers: [Performer!]!
|
|
allStudios: [Studio!]!
|
|
allMovies: [Movie!]!
|
|
allTags: [Tag!]!
|
|
|
|
# Get everything with minimal metadata
|
|
|
|
# Version
|
|
version: Version!
|
|
|
|
# LatestVersion
|
|
latestversion: ShortVersion!
|
|
}
|
|
|
|
type Mutation {
|
|
setup(input: SetupInput!): Boolean!
|
|
migrate(input: MigrateInput!): Boolean!
|
|
|
|
sceneCreate(input: SceneCreateInput!): Scene
|
|
sceneUpdate(input: SceneUpdateInput!): Scene
|
|
sceneMerge(input: SceneMergeInput!): Scene
|
|
bulkSceneUpdate(input: BulkSceneUpdateInput!): [Scene!]
|
|
sceneDestroy(input: SceneDestroyInput!): Boolean!
|
|
scenesDestroy(input: ScenesDestroyInput!): Boolean!
|
|
scenesUpdate(input: [SceneUpdateInput!]!): [Scene]
|
|
|
|
"""Increments the o-counter for a scene. Returns the new value"""
|
|
sceneIncrementO(id: ID!): Int!
|
|
"""Decrements the o-counter for a scene. Returns the new value"""
|
|
sceneDecrementO(id: ID!): Int!
|
|
"""Resets the o-counter for a scene to 0. Returns the new value"""
|
|
sceneResetO(id: ID!): Int!
|
|
|
|
"""Sets the resume time point (if provided) and adds the provided duration to the scene's play duration"""
|
|
sceneSaveActivity(id: ID!, resume_time: Float, playDuration: Float): Boolean!
|
|
|
|
"""Increments the play count for the scene. Returns the new play count value."""
|
|
sceneIncrementPlayCount(id: ID!): Int!
|
|
|
|
"""Generates screenshot at specified time in seconds. Leave empty to generate default screenshot"""
|
|
sceneGenerateScreenshot(id: ID!, at: Float): String!
|
|
|
|
sceneMarkerCreate(input: SceneMarkerCreateInput!): SceneMarker
|
|
sceneMarkerUpdate(input: SceneMarkerUpdateInput!): SceneMarker
|
|
sceneMarkerDestroy(id: ID!): Boolean!
|
|
|
|
sceneAssignFile(input: AssignSceneFileInput!): Boolean!
|
|
|
|
imageUpdate(input: ImageUpdateInput!): Image
|
|
bulkImageUpdate(input: BulkImageUpdateInput!): [Image!]
|
|
imageDestroy(input: ImageDestroyInput!): Boolean!
|
|
imagesDestroy(input: ImagesDestroyInput!): Boolean!
|
|
imagesUpdate(input: [ImageUpdateInput!]!): [Image]
|
|
|
|
"""Increments the o-counter for an image. Returns the new value"""
|
|
imageIncrementO(id: ID!): Int!
|
|
"""Decrements the o-counter for an image. Returns the new value"""
|
|
imageDecrementO(id: ID!): Int!
|
|
"""Resets the o-counter for a image to 0. Returns the new value"""
|
|
imageResetO(id: ID!): Int!
|
|
|
|
galleryCreate(input: GalleryCreateInput!): Gallery
|
|
galleryUpdate(input: GalleryUpdateInput!): Gallery
|
|
bulkGalleryUpdate(input: BulkGalleryUpdateInput!): [Gallery!]
|
|
galleryDestroy(input: GalleryDestroyInput!): Boolean!
|
|
galleriesUpdate(input: [GalleryUpdateInput!]!): [Gallery]
|
|
|
|
addGalleryImages(input: GalleryAddInput!): Boolean!
|
|
removeGalleryImages(input: GalleryRemoveInput!): Boolean!
|
|
|
|
performerCreate(input: PerformerCreateInput!): Performer
|
|
performerUpdate(input: PerformerUpdateInput!): Performer
|
|
performerDestroy(input: PerformerDestroyInput!): Boolean!
|
|
performersDestroy(ids: [ID!]!): Boolean!
|
|
bulkPerformerUpdate(input: BulkPerformerUpdateInput!): [Performer!]
|
|
|
|
studioCreate(input: StudioCreateInput!): Studio
|
|
studioUpdate(input: StudioUpdateInput!): Studio
|
|
studioDestroy(input: StudioDestroyInput!): Boolean!
|
|
studiosDestroy(ids: [ID!]!): Boolean!
|
|
|
|
movieCreate(input: MovieCreateInput!): Movie
|
|
movieUpdate(input: MovieUpdateInput!): Movie
|
|
movieDestroy(input: MovieDestroyInput!): Boolean!
|
|
moviesDestroy(ids: [ID!]!): Boolean!
|
|
bulkMovieUpdate(input: BulkMovieUpdateInput!): [Movie!]
|
|
|
|
tagCreate(input: TagCreateInput!): Tag
|
|
tagUpdate(input: TagUpdateInput!): Tag
|
|
tagDestroy(input: TagDestroyInput!): Boolean!
|
|
tagsDestroy(ids: [ID!]!): Boolean!
|
|
tagsMerge(input: TagsMergeInput!): Tag
|
|
|
|
deleteFiles(ids: [ID!]!): Boolean!
|
|
|
|
# Saved filters
|
|
saveFilter(input: SaveFilterInput!): SavedFilter!
|
|
destroySavedFilter(input: DestroyFilterInput!): Boolean!
|
|
setDefaultFilter(input: SetDefaultFilterInput!): Boolean!
|
|
|
|
"""Change general configuration options"""
|
|
configureGeneral(input: ConfigGeneralInput!): ConfigGeneralResult!
|
|
configureInterface(input: ConfigInterfaceInput!): ConfigInterfaceResult!
|
|
configureDLNA(input: ConfigDLNAInput!): ConfigDLNAResult!
|
|
configureScraping(input: ConfigScrapingInput!): ConfigScrapingResult!
|
|
configureDefaults(input: ConfigDefaultSettingsInput!): ConfigDefaultSettingsResult!
|
|
|
|
# overwrites the entire UI configuration
|
|
configureUI(input: Map!): Map!
|
|
# sets a single UI key value
|
|
configureUISetting(key: String!, value: Any): Map!
|
|
|
|
"""Generate and set (or clear) API key"""
|
|
generateAPIKey(input: GenerateAPIKeyInput!): String!
|
|
|
|
"""Returns a link to download the result"""
|
|
exportObjects(input: ExportObjectsInput!): String
|
|
|
|
"""Performs an incremental import. Returns the job ID"""
|
|
importObjects(input: ImportObjectsInput!): ID!
|
|
|
|
"""Start an full import. Completely wipes the database and imports from the metadata directory. Returns the job ID"""
|
|
metadataImport: ID!
|
|
"""Start a full export. Outputs to the metadata directory. Returns the job ID"""
|
|
metadataExport: ID!
|
|
"""Start a scan. Returns the job ID"""
|
|
metadataScan(input: ScanMetadataInput!): ID!
|
|
"""Start generating content. Returns the job ID"""
|
|
metadataGenerate(input: GenerateMetadataInput!): ID!
|
|
"""Start auto-tagging. Returns the job ID"""
|
|
metadataAutoTag(input: AutoTagMetadataInput!): ID!
|
|
"""Clean metadata. Returns the job ID"""
|
|
metadataClean(input: CleanMetadataInput!): ID!
|
|
"""Identifies scenes using scrapers. Returns the job ID"""
|
|
metadataIdentify(input: IdentifyMetadataInput!): ID!
|
|
"""Migrate generated files for the current hash naming"""
|
|
migrateHashNaming: ID!
|
|
|
|
"""Anonymise the database in a separate file. Optionally returns a link to download the database file"""
|
|
anonymiseDatabase(input: AnonymiseDatabaseInput!): String
|
|
|
|
"""Reload scrapers"""
|
|
reloadScrapers: Boolean!
|
|
|
|
"""Run plugin task. Returns the job ID"""
|
|
runPluginTask(plugin_id: ID!, task_name: String!, args: [PluginArgInput!]): ID!
|
|
reloadPlugins: Boolean!
|
|
|
|
stopJob(job_id: ID!): Boolean!
|
|
stopAllJobs: Boolean!
|
|
|
|
"""Submit fingerprints to stash-box instance"""
|
|
submitStashBoxFingerprints(input: StashBoxFingerprintSubmissionInput!): Boolean!
|
|
|
|
"""Submit scene as draft to stash-box instance"""
|
|
submitStashBoxSceneDraft(input: StashBoxDraftSubmissionInput!): ID
|
|
"""Submit performer as draft to stash-box instance"""
|
|
submitStashBoxPerformerDraft(input: StashBoxDraftSubmissionInput!): ID
|
|
|
|
"""Backup the database. Optionally returns a link to download the database file"""
|
|
backupDatabase(input: BackupDatabaseInput!): String
|
|
|
|
"""Run batch performer tag task. Returns the job ID."""
|
|
stashBoxBatchPerformerTag(input: StashBoxBatchPerformerTagInput!): String!
|
|
|
|
"""Enables DLNA for an optional duration. Has no effect if DLNA is enabled by default"""
|
|
enableDLNA(input: EnableDLNAInput!): Boolean!
|
|
"""Disables DLNA for an optional duration. Has no effect if DLNA is disabled by default"""
|
|
disableDLNA(input: DisableDLNAInput!): Boolean!
|
|
"""Enables an IP address for DLNA for an optional duration"""
|
|
addTempDLNAIP(input: AddTempDLNAIPInput!): Boolean!
|
|
"""Removes an IP address from the temporary DLNA whitelist"""
|
|
removeTempDLNAIP(input: RemoveTempDLNAIPInput!): Boolean!
|
|
}
|
|
|
|
type Subscription {
|
|
"""Update from the metadata manager"""
|
|
jobsSubscribe: JobStatusUpdate!
|
|
|
|
loggingSubscribe: [LogEntry!]!
|
|
|
|
scanCompleteSubscribe: Boolean!
|
|
}
|
|
|
|
schema {
|
|
query: Query
|
|
mutation: Mutation
|
|
subscription: Subscription
|
|
}
|