mirror of
https://github.com/stashapp/stash.git
synced 2025-12-15 21:03:22 +01:00
* Change scrapers overview into collapsible per type * Move scraping configuration to (renamed) scrapers tab Rename the Scrapers tab to Scraping and move the scraping configuration to this tab.
283 lines
10 KiB
GraphQL
283 lines
10 KiB
GraphQL
"""The query root for this schema"""
|
|
type Query {
|
|
# Filters
|
|
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"""
|
|
listPerformerScrapers: [Scraper!]!
|
|
listSceneScrapers: [Scraper!]!
|
|
listGalleryScrapers: [Scraper!]!
|
|
listMovieScrapers: [Scraper!]!
|
|
|
|
"""Scrape a list of performers based on name"""
|
|
scrapePerformerList(scraper_id: ID!, query: String!): [ScrapedPerformer!]!
|
|
"""Scrapes a complete performer record based on a scrapePerformerList result"""
|
|
scrapePerformer(scraper_id: ID!, scraped_performer: ScrapedPerformerInput!): ScrapedPerformer
|
|
"""Scrapes a complete performer record based on a URL"""
|
|
scrapePerformerURL(url: String!): ScrapedPerformer
|
|
"""Scrapes a complete scene record based on an existing scene"""
|
|
scrapeScene(scraper_id: ID!, scene: SceneUpdateInput!): ScrapedScene
|
|
"""Scrapes a complete performer record based on a URL"""
|
|
scrapeSceneURL(url: String!): ScrapedScene
|
|
"""Scrapes a complete gallery record based on an existing gallery"""
|
|
scrapeGallery(scraper_id: ID!, gallery: GalleryUpdateInput!): ScrapedGallery
|
|
"""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 performer using Freeones"""
|
|
scrapeFreeones(performer_name: String!): ScrapedPerformer
|
|
"""Scrape a list of performers from a query"""
|
|
scrapeFreeonesPerformerList(query: String!): [String!]!
|
|
|
|
"""Query StashBox for scenes"""
|
|
queryStashBoxScene(input: StashBoxSceneQueryInput!): [ScrapedScene!]!
|
|
queryStashBoxPerformer(input: StashBoxPerformerQueryInput!): [StashBoxPerformerQueryResult!]!
|
|
|
|
# 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(path: String): Directory!
|
|
|
|
# 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!
|
|
|
|
sceneUpdate(input: SceneUpdateInput!): 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!
|
|
|
|
"""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!
|
|
|
|
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!
|
|
|
|
tagCreate(input: TagCreateInput!): Tag
|
|
tagUpdate(input: TagUpdateInput!): Tag
|
|
tagDestroy(input: TagDestroyInput!): Boolean!
|
|
tagsDestroy(ids: [ID!]!): Boolean!
|
|
tagsMerge(input: TagsMergeInput!): Tag
|
|
|
|
# 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!
|
|
|
|
"""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!
|
|
"""Migrate generated files for the current hash naming"""
|
|
migrateHashNaming: ID!
|
|
|
|
"""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!
|
|
|
|
"""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
|
|
}
|