removedInput schema / properties / id / description
Removed value: -"Identifier as returned by another tool, such as stashdb:<uuid>."
addedInput schema / properties / id / pattern
Added value: +"^(?:(?:stashdb|tpdb|fansdb|pmv|javstash):)?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
addedInput schema / properties / prefer
Added value: +{
+ "description": "The order the catalogues are preferred in where they disagree on a field. Left out, the order the registry declares stands. Every card states the order that was applied.",
+ "items": {
+ "enum": [
+ "stashdb",
+ "tpdb",
+ "fansdb",
+ "pmv",
+ "javstash"
+ ],
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+}
changedInput schema / properties / sections / description
Previous value: -"Which blocks to load. Defaults to basic."New value: +"The blocks read beside the record's own fields, which come back whatever is written here. Each name adds a block, and 'basic' asks for those fields alone."
addedInput schema / properties / sections / maxItems
Added value: +3
addedInput schema / properties / sections / minItems
Added value: +1
addedInput schema / properties / sources
Added value: +{
+ "items": {
+ "enum": [
+ "stashdb",
+ "tpdb",
+ "fansdb",
+ "pmv",
+ "javstash"
+ ],
+ "type": "string"
+ },
+ "maxItems": 5,
+ "minItems": 1,
+ "type": "array"
+}
removedOutput schema / description
Removed value: -"A scene when 'status' is 'established'. When it is 'deleted' or 'merged' this is a marker: it carries the identifier, the catalogue, the successor and the former title, and no field describing a scene."
addedOutput schema / properties / cached
Added value: +{
+ "type": "boolean"
+}
addedOutput schema / properties / card
Added value: +{
+ "additionalProperties": false,
+ "properties": {
+ "counts": {
+ "additionalProperties": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "source": {
+ "type": "string"
+ },
+ "state": {
+ "enum": [
+ "answered",
+ "failed",
+ "absent"
+ ],
+ "type": "string"
+ },
+ "value": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "required": [
+ "source",
+ "value",
+ "state"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "description": "Counts, one entry per catalogue asked and never added together. A null is read with the state beside it: a catalogue that publishes no such count, one that could not answer, and one nobody asked are three different facts.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "fields": {
+ "additionalProperties": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "agreed_by": {
+ "description": "The catalogues that published this reading. Two agreeing is evidence of its own.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "disagreed": {
+ "description": "The readings nobody preferred, published rather than dropped: choosing between them is a policy, and a policy applied in silence is a claim nobody can check.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "source": {
+ "type": "string"
+ },
+ "value": {}
+ },
+ "required": [
+ "source",
+ "value"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "value": {
+ "description": "The reading the preference named, null where none published one."
+ }
+ },
+ "required": [
+ "value",
+ "agreed_by"
+ ],
+ "type": "object"
+ },
+ {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "also_at": {
+ "description": "What this same record is called on another catalogue, from a link joining the two.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "source",
+ "id"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "published_by": {
+ "description": "Every catalogue that published this very record. A shared name is no join, so an entry one catalogue minted names that one.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "same_name_as": {
+ "description": "A record another catalogue published under a matching name. A resemblance, never a join.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "source",
+ "id"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "value": {}
+ },
+ "required": [
+ "value",
+ "published_by"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ ]
+ },
+ "description": "Each field of the record. A scalar carries the catalogues that said it; a list is the union, each entry naming who published it.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "held_by": {
+ "description": "Every catalogue asked, with the identifier the record carries there.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "error": {
+ "type": "string"
+ },
+ "id": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "retrieved_at": {
+ "description": "The moment this client read it there.",
+ "type": "string"
+ },
+ "source": {
+ "type": "string"
+ },
+ "source_url": {
+ "description": "The address it was read at, which credits it.",
+ "type": "string"
+ },
+ "state": {
+ "enum": [
+ "answered",
+ "failed",
+ "absent"
+ ],
+ "type": "string"
+ },
+ "status": {
+ "description": "What the identifier addresses there now. A folded record is held elsewhere.",
+ "enum": [
+ "established",
+ "merged",
+ "deleted"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "source",
+ "state"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "type": "string"
+ },
+ "notes": {
+ "description": "What this answer does not establish, which is what makes it safe to act on.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "preferred": {
+ "description": "The order the readings were preferred in. This is the policy that was applied, whether or not every catalogue in it answered.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "read_from": {
+ "description": "The catalogues that answered, in the order they were preferred. A policy and an outcome are two facts, and a reader deciding whether to change the policy needs both.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "kind",
+ "fields",
+ "counts",
+ "held_by",
+ "preferred",
+ "read_from",
+ "notes"
+ ],
+ "type": "object"
+}
removedOutput schema / properties / code
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The studio's own reference, in whatever form it publishes."
-}
removedOutput schema / properties / created
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
-}
removedOutput schema / properties / details
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
-}
removedOutput schema / properties / director
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Free text, which can name several people."
-}
removedOutput schema / properties / duration_seconds
Removed value: -{
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
-}
removedOutput schema / properties / fingerprint_count
Removed value: -{
- "additionalProperties": {
- "type": "number"
- },
- "propertyNames": {
- "type": "string"
- },
- "type": "object"
-}
removedOutput schema / properties / fingerprints
Removed value: -{
- "items": {
- "additionalProperties": false,
- "properties": {
- "algorithm": {
- "enum": [
- "MD5",
- "OSHASH",
- "PHASH"
- ],
- "type": "string"
- },
- "contested": {
- "anyOf": [
- {
- "type": "boolean"
- },
- {
- "type": "null"
- }
- ],
- "description": "Whether the reports reach the submissions. Null where the catalogue publishes no report count: a fingerprint nobody has disputed and one on a catalogue that counts no disputes are different things."
- },
- "duration_seconds": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "hash": {
- "type": "string"
- },
- "reports": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "How many people reported against it. Null on a catalogue that records no reports, which is an unknown contest and never an absence of one."
- },
- "submissions": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "How many people entered this fingerprint. Null where the catalogue counts none."
- }
- },
- "required": [
- "algorithm",
- "hash",
- "duration_seconds",
- "submissions",
- "reports",
- "contested"
- ],
- "type": "object"
- },
- "type": "array"
-}
removedOutput schema / properties / fingerprints_held
Removed value: -{
- "description": "How many the record holds, where the section shows a page of them.",
- "type": "number"
-}
removedOutput schema / properties / former_title
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Present on a marker: the title the record carried."
-}
removedOutput schema / properties / id
Removed value: -{
- "type": "string"
-}
removedOutput schema / properties / images
Removed value: -{
- "items": {
- "additionalProperties": false,
- "properties": {
- "height": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "url": {
- "description": "The address of the image. The image itself is never returned.",
- "type": "string"
- },
- "width": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "url",
- "width",
- "height"
- ],
- "type": "object"
- },
- "type": "array"
-}
removedOutput schema / properties / merged_into
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Present on a marker: the identifier that continues this record."
-}
removedOutput schema / properties / notes
Removed value: -{
- "items": {
- "type": "string"
- },
- "type": "array"
-}
addedOutput schema / properties / per_source
Added value: +{
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "algorithms_not_searched": {
+ "description": "Fingerprint algorithms its lookup does not search, so they were never put to it.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "count": {
+ "description": "Rows it contributed. Never added to another catalogue's: they index corpora that overlap by an amount none of them publishes.",
+ "type": "number"
+ },
+ "error": {
+ "enum": [
+ "not_found",
+ "invalid_input",
+ "rate_limited",
+ "parse_failure",
+ "network_error",
+ "timeout"
+ ],
+ "type": "string"
+ },
+ "index_total": {
+ "description": "What its own index holds for this question, the rows on this page included.",
+ "type": "number"
+ },
+ "index_total_over_any_word": {
+ "description": "The total counts rows carrying any word of the query, its text index reading them apart.",
+ "type": "boolean"
+ },
+ "moment": {
+ "description": "Which moment failed.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The name that catalogue calls itself.",
+ "type": "string"
+ },
+ "narrowings_naming_no_record": {
+ "description": "Narrowings written only with identifiers another catalogue minted.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "narrowings_not_received": {
+ "description": "Narrowings this catalogue cannot receive. This is the one field that says a catalogue cannot do something.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "narrowings_received_in_part": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "reason": {
+ "description": "Why it was not asked, or what went wrong.",
+ "type": "string"
+ },
+ "records": {
+ "description": "Distinct records behind its rows.",
+ "type": "number"
+ },
+ "skipped": {
+ "description": "Rows it answered with that this client could not read and left out.",
+ "type": "number"
+ },
+ "source": {
+ "description": "The catalogue this row is about.",
+ "type": "string"
+ },
+ "state": {
+ "description": "'answered' looked, and a count of zero means it found nothing. 'failed' could not answer, and states nothing about what it holds. 'absent' was never asked. Only the first is evidence about the world.",
+ "enum": [
+ "answered",
+ "failed",
+ "absent"
+ ],
+ "type": "string"
+ },
+ "unattributed": {
+ "description": "Records it answered with while carrying none of what was asked about.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "source",
+ "state"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
removedOutput schema / properties / performers
Removed value: -{
- "items": {
- "additionalProperties": false,
- "properties": {
- "credited_as": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The name printed on this release, where it differs from the performer's own. It travels beside that name and never in place of it."
- },
- "disambiguation": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "credited_as",
- "disambiguation"
- ],
- "type": "object"
- },
- "type": "array"
-}
removedOutput schema / properties / production_date
Removed value: -{
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "precision": {
- "description": "How much of the date a cataloguer entered. A value recorded to the year carries no month and no day, and reading it as one would claim a precision nobody entered.",
- "enum": [
- "day",
- "month",
- "year"
- ],
- "type": "string"
- },
- "value": {
- "description": "The date exactly as the catalogue publishes it.",
- "type": "string"
- }
- },
- "required": [
- "value",
- "precision"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "When the scene was made, which is a different question from when it was published. Rarely recorded, and never filled in from the release date."
-}
removedOutput schema / properties / release_date
Removed value: -{
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "precision": {
- "description": "How much of the date a cataloguer entered. A value recorded to the year carries no month and no day, and reading it as one would claim a precision nobody entered.",
- "enum": [
- "day",
- "month",
- "year"
- ],
- "type": "string"
- },
- "value": {
- "description": "The date exactly as the catalogue publishes it.",
- "type": "string"
- }
- },
- "required": [
- "value",
- "precision"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "When the scene was published."
-}
removedOutput schema / properties / retrieved_at
Removed value: -{
- "description": "When this record came off the catalogue, ISO 8601.",
- "type": "string"
-}
removedOutput schema / properties / source
Removed value: -{
- "type": "string"
-}
removedOutput schema / properties / source_url
Removed value: -{
- "type": "string"
-}
removedOutput schema / properties / status
Removed value: -{
- "description": "'established' is a record the catalogue holds. 'merged' and 'deleted' are markers: the identifier resolves, and what comes back describes the record rather than the thing it once named.",
- "enum": [
- "established",
- "deleted",
- "merged"
- ],
- "type": "string"
-}
removedOutput schema / properties / studio
Removed value: -{
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "parent": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "id",
- "name",
- "parent"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
-}
removedOutput schema / properties / tags
Removed value: -{
- "items": {
- "additionalProperties": false,
- "properties": {
- "category": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "name",
- "category"
- ],
- "type": "object"
- },
- "type": "array"
-}
removedOutput schema / properties / title
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
-}
removedOutput schema / properties / updated
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
-}
removedOutput schema / properties / urls
Removed value: -{
- "items": {
- "additionalProperties": false,
- "properties": {
- "site_category": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The catalogue's own category for that site. Null on a catalogue that publishes no table of sites, since borrowing a neighbour's would sort a link by a taxonomy this catalogue never applied."
- },
- "site_name": {
- "type": "string"
- },
- "url": {
- "type": "string"
- }
- },
- "required": [
- "url",
- "site_name",
- "site_category"
- ],
- "type": "object"
- },
- "type": "array"
-}
changedOutput schema / required
Previous value: -[
- "id",
- "source",
- "source_url",
- "retrieved_at",
- "status",
- "notes"
-]New value: +[
+ "card"
+]