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. 'studios' is the whole table of studios they are credited on, which runs to hundreds of rows."
changedInput schema / properties / sections / items / enum
Previous value: -[
- "basic",
- "appearance",
- "images",
- "scenes",
- "studios"
-]New value: +[
+ "basic",
+ "appearance",
+ "images",
+ "studios"
+]
addedInput schema / properties / sections / maxItems
Added value: +4
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 performer when 'status' is 'established'. When it is 'deleted' or 'merged' this is a marker: it carries the identifier, the catalogue, the successor, the identifiers folded in and the former name, and no field describing a person."
removedOutput schema / properties / aliases
Removed value: -{
- "description": "Stage names and variant spellings alike.",
- "items": {
- "type": "string"
- },
- "type": "array"
-}
removedOutput schema / properties / appearance
Removed value: -{
- "additionalProperties": false,
- "properties": {
- "band_size": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "breast_type": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "cup_size": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "ethnicity": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "eye_color": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "hair_color": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "height_cm": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "hip_size": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- },
- "piercings": {
- "anyOf": [
- {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ]
- },
- "tattoos": {
- "anyOf": [
- {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ]
- },
- "waist_size": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "ethnicity",
- "eye_color",
- "hair_color",
- "height_cm",
- "breast_type",
- "cup_size",
- "band_size",
- "waist_size",
- "hip_size",
- "tattoos",
- "piercings"
- ],
- "type": "object"
-}
removedOutput schema / properties / birth_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"
- }
- ]
-}
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 / career_end_year
Removed value: -{
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
-}
removedOutput schema / properties / career_start_year
Removed value: -{
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
-}
removedOutput schema / properties / country
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
-}
removedOutput schema / properties / created
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
-}
removedOutput schema / properties / death_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"
- }
- ]
-}
removedOutput schema / properties / disambiguation
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Free text telling two people apart. It reads and never parses."
-}
removedOutput schema / properties / former_name
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Present on a marker: the name the record carried."
-}
removedOutput schema / properties / gender
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
-}
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_ids
Removed value: -{
- "items": {
- "type": "string"
- },
- "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 / name
Removed value: -{
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
-}
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 / retrieved_at
Removed value: -{
- "description": "When this record came off the catalogue, ISO 8601.",
- "type": "string"
-}
removedOutput schema / properties / scene_count
Removed value: -{
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "Scenes this catalogue has indexed crediting this performer. A settled record naming a career spanning decades can report zero, which measures coverage and states nothing about a person's work. Null on a marker, since the count belongs to the record that continues it."
-}
removedOutput schema / properties / scene_count_means
Removed value: -{
- "type": "string"
-}
removedOutput schema / properties / scenes
Removed value: -{
- "items": {
- "additionalProperties": false,
- "properties": {
- "id": {
- "type": "string"
- },
- "release_date": {
- "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"
- }
- ]
- },
- "source_url": {
- "type": "string"
- },
- "studio": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "title": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "id",
- "title",
- "release_date",
- "studio",
- "source_url"
- ],
- "type": "object"
- },
- "type": "array"
-}
removedOutput schema / properties / scenes_total
Removed value: -{
- "description": "What the catalogue holds behind the one page this section shows.",
- "type": "number"
-}
removedOutput schema / properties / scenes_unavailable
Removed value: -{
- "description": "Why the section is missing, when it was asked for and could not be read. Its absence then says nothing about what the catalogue holds.",
- "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 / studios
Removed value: -{
- "items": {
- "additionalProperties": false,
- "properties": {
- "id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "sceneCount": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "required": [
- "id",
- "name",
- "sceneCount"
- ],
- "type": "object"
- },
- "type": "array"
-}
removedOutput schema / properties / studios_total
Removed value: -{
- "description": "How many the record credits, where the section shows a page of them.",
- "type": "number"
-}
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"
+]