{"components":{"schemas":{"AmendProposalInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/AmendProposalInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"note":{"description":"Must not be used as a discriminant.","maxLength":2000,"type":"string"},"set":{"additionalProperties":{},"description":"Field-key to corrected value.","type":"object"},"unset":{"description":"Field keys to drop, at most 100.","items":{"type":"string"},"maxItems":100,"type":"array"}},"type":"object"},"Amendment":{"additionalProperties":true,"properties":{"amender_uid":{"description":"The claiming site's own user id of the amender. Not a catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"created_at":{"description":"RFC 3339 UTC.","format":"date-time","maxLength":32,"type":"string"},"id":{"description":"Amendment id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"note":{"description":"Amender's own summary. Must not be used as a discriminant.","maxLength":2000,"type":"string"},"object":{"description":"Type discriminant. Always amendment.","enum":["amendment"],"type":"string","x-vocabulary-closed":true},"seq":{"description":"Position in this proposal's amendment chain.","format":"int64","minimum":1,"type":"integer"}},"required":["object","id","seq","amender_uid","note","created_at"],"type":"object"},"Appearance":{"additionalProperties":true,"properties":{"identity":{"description":"Opaque roster row identity for a catalog.work.roster.suppressed proposal on THIS work; echo it back, never rebuild it. The same key the mirror-image works/{id}.characters[] row publishes. Absent when the work is reached only through a voice credit, where roster_role is unknown and spoiler is none. Must not be used as a discriminant.","maxLength":64,"type":"string"},"object":{"description":"Type discriminant. Always appearance.","enum":["appearance"],"type":"string","x-vocabulary-closed":true},"roster_role":{"description":"Appearance strength on this work.","enum":["main","secondary","appears","unknown"],"type":"string","x-vocabulary-closed":true},"spoiler":{"description":"Spoiler level of this appearance.","enum":["none","minor","major"],"type":"string","x-vocabulary-closed":true},"voices":{"description":"Voice credits on this appearance. Empty array, never null.","items":{"$ref":"#/components/schemas/CreditName"},"type":"array"},"work":{"$ref":"#/components/schemas/Work","description":"Work this character appears on. view=basic."}},"required":["object","work","roster_role","spoiler","voices"],"type":"object"},"BatchPlaytimesInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/BatchPlaytimesInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"items":{"description":"At most 100 items.","items":{"$ref":"#/components/schemas/Item"},"maxItems":100,"type":"array"}},"required":["items"],"type":"object"},"CalendarList":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/CalendarList.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Work"},"type":"array"},"meta":{"$ref":"#/components/schemas/CalendarMeta","description":"Calendar navigation block. Always present on this collection."},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["meta","object","items"],"type":"object"},"CalendarMeta":{"additionalProperties":true,"properties":{"has_next":{"description":"Whether a month after the requested one has dated releases. Only the dated month window carries it; null on the year-only and undated windows.","type":["boolean","null"]},"has_prev":{"description":"Whether a month before the requested one has dated releases. Only the dated month window carries it; null on the year-only and undated windows.","type":["boolean","null"]},"max_month":{"description":"Latest month with a dated release under the same filters. Only the dated month window carries it; null when that window's population has no dated release at all.","maxLength":7,"pattern":"^[0-9]{4}-[0-9]{2}$","type":["string","null"]},"min_month":{"description":"Earliest month with a dated release under the same filters. Only the dated month window carries it; null when that window's population has no dated release at all.","maxLength":7,"pattern":"^[0-9]{4}-[0-9]{2}$","type":["string","null"]},"today":{"description":"Today in Asia/Tokyo, the calendar's home timezone.","format":"date","maxLength":10,"type":"string"}},"required":["today","min_month","max_month","has_prev","has_next"],"type":"object"},"CatalogStats":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/CatalogStats.json"],"format":"uri","readOnly":true,"type":"string"},"characters":{"description":"Live characters.","format":"int64","minimum":0,"type":"integer"},"companies":{"description":"Company registry rows.","format":"int64","minimum":0,"type":"integer"},"credit_names":{"description":"Live credit names.","format":"int64","minimum":0,"type":"integer"},"object":{"description":"Type discriminant. Always catalog_stats.","enum":["catalog_stats"],"type":"string","x-vocabulary-closed":true},"persons":{"description":"Live persons.","format":"int64","minimum":0,"type":"integer"},"works":{"description":"Live works.","format":"int64","minimum":0,"type":"integer"}},"required":["object","works","companies","characters","credit_names","persons"],"type":"object"},"Change":{"additionalProperties":true,"properties":{"gone":{"description":"Present and true when the id has left the public population: merged away, or otherwise no longer served. Absent means the id is still live — never sent as false. Drop the mirrored row; if it was merged, /v2/catalog/redirects names the id that replaced it.","type":"boolean"},"id":{"description":"Catalog id of the changed row.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"object":{"description":"Type discriminant. Always change.","enum":["change"],"type":"string","x-vocabulary-closed":true},"target_object":{"description":"Family of the row that changed.","enum":["work","release","character","credit_name","person","company","tag","engine"],"type":"string","x-vocabulary-closed":true},"updated_at":{"description":"RFC 3339 UTC. The moment the row last changed, and the value the cursor resumes from.","format":"date-time","maxLength":32,"type":"string"}},"required":["object","target_object","id","updated_at"],"type":"object"},"Character":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/Character.json"],"format":"uri","readOnly":true,"type":"string"},"aliases":{"description":"Alternate spellings of THIS character name. Present when include=aliases, detail face only. Empty array if none.","items":{"$ref":"#/components/schemas/EntityName"},"type":"array"},"birthday":{"description":"MM-DD. Present on view=full. null if unrecorded. Not a date: there is no year.","maxLength":5,"pattern":"^[0-1][0-9]-[0-3][0-9]$","type":"string"},"blood_type":{"description":"Present on view=full. null if unrecorded.","enum":["a","b","ab","o"],"type":"string","x-vocabulary-closed":true},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"figure":{"$ref":"#/components/schemas/Image","description":"Present only when include=figure and this character has a full-body figure cutout; absent otherwise. Detail face only."},"gender":{"description":"Present on view=full. null if unrecorded.","enum":["male","female","other"],"type":"string","x-vocabulary-closed":true},"height_cm":{"description":"Present on view=full. null if unrecorded.","format":"int64","minimum":0,"type":"integer"},"id":{"description":"Catalog character id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"image":{"$ref":"#/components/schemas/Image","description":"Present only when include=image and this character has an image; absent otherwise. Detail face only."},"instance_of_id":{"description":"Another character this row is an instance of. Present on view=full. null if none.","maxLength":20,"pattern":"^[0-9]+$","type":"string"},"intros":{"description":"Character descriptions, one per language. Present when include=intros, detail face only. Empty array if none.","items":{"$ref":"#/components/schemas/Intro"},"type":"array"},"lang":{"description":"BCP-47 language tag of display_name. null if unrecorded. Must not be used as a discriminant.","format":"bcp47","maxLength":32,"type":["string","null"]},"latin":{"description":"null if unrecorded. Must not be used as a discriminant.","maxLength":512,"type":["string","null"]},"localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"BCP-47 keys. Empty object if none. Must not be used as a discriminant.","type":"object"},"measurements":{"$ref":"#/components/schemas/Measurements","description":"Present on view=full. null if unrecorded."},"object":{"description":"Type discriminant. Always character.","enum":["character"],"type":"string","x-vocabulary-closed":true},"refs":{"description":"Exact upstream anchors of this character. Present when include=refs, detail face only. Empty array if none.","items":{"$ref":"#/components/schemas/Ref"},"type":"array"},"traits":{"description":"Present when include=traits, detail face only. Empty array if none.","items":{"$ref":"#/components/schemas/CharacterTrait"},"type":"array"},"weight_kg":{"description":"Present on view=full. null if unrecorded.","format":"int64","minimum":0,"type":"integer"}},"required":["object","id","display_name","latin","lang","localized"],"type":"object"},"CharacterTrait":{"additionalProperties":true,"properties":{"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"group":{"description":"Root trait group name. null for a root trait. Must not be used as a discriminant.","maxLength":512,"type":["string","null"]},"group_localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"Localized names of the root group, BCP-47 keys. Empty object if none. Must not be used as a discriminant.","type":"object"},"id":{"description":"Catalog trait id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"is_lie":{"description":"Whether this trait is an in-story deception.","type":"boolean"},"is_sexual":{"description":"Whether this trait is in the sexual family.","type":"boolean"},"localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"BCP-47 keys. Empty object if none. Must not be used as a discriminant.","type":"object"},"object":{"description":"Type discriminant. Always character_trait.","enum":["character_trait"],"type":"string","x-vocabulary-closed":true},"spoiler":{"description":"Spoiler level of this trait on this character.","enum":["none","minor","major"],"type":"string","x-vocabulary-closed":true}},"required":["object","id","display_name","group","localized","group_localized","spoiler","is_sexual","is_lie"],"type":"object"},"Claim":{"additionalProperties":true,"properties":{"content_limit":{"description":"Editorial display axis for this claim.","enum":["sfw","nsfw"],"type":"string","x-vocabulary-closed":true},"site":{"description":"Claiming site key.","maxLength":64,"pattern":"^[a-z][a-z0-9_]*$","type":"string"},"site_work_id":{"description":"The site's own work id, not the catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"state":{"description":"Claim lifecycle state.","enum":["live","draft","pending","declined","hidden"],"type":"string","x-vocabulary-closed":true}},"required":["site","site_work_id","state","content_limit"],"type":"object"},"ClaimDecisionRecord":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ClaimDecisionRecord.json"],"format":"uri","readOnly":true,"type":"string"},"decision":{"description":"approve publishes a pending claim, decline sends it back, ban hides it from any state, unban restores the state it was hidden from.","enum":["approve","decline","ban","unban"],"type":"string","x-vocabulary-closed":true},"from_state":{"description":"Claim state before this decision. null when the claim had none.","enum":["none","live","draft","pending","declined","hidden"],"type":["string","null"],"x-vocabulary-closed":true},"id":{"description":"Claim event id issued by this decision.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"note":{"description":"Must not be used as a discriminant.","maxLength":2000,"type":"string"},"object":{"description":"Type discriminant. Always decision.","enum":["decision"],"type":"string","x-vocabulary-closed":true},"to_state":{"description":"Claim state after this decision. The authoritative outcome; do not derive it from decision, because unban has no fixed target.","enum":["none","live","draft","pending","declined","hidden"],"type":"string","x-vocabulary-closed":true}},"required":["object","id","decision","note","from_state","to_state"],"type":"object"},"ClaimEvent":{"additionalProperties":true,"properties":{"actor_uid":{"description":"The claiming site's own user id of the actor. Not a catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"created_at":{"description":"RFC 3339 UTC.","format":"date-time","maxLength":32,"type":"string"},"from_state":{"description":"State before the event. null on the event that created the claim.","enum":["none","live","draft","pending","declined","hidden"],"type":["string","null"],"x-vocabulary-closed":true},"id":{"description":"Claim event id. Ascending; the watermark a mirror stores.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"object":{"description":"Type discriminant. Always claim_event.","enum":["claim_event"],"type":"string","x-vocabulary-closed":true},"product_work_id":{"description":"The claim's CURRENT product-side id — a snapshot, not the value at event time. null when the work is unclaimed or gone.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]},"reason":{"description":"Actor's note, usually a decline reason. null when none was given. Must not be used as a discriminant.","maxLength":2000,"type":["string","null"]},"site":{"description":"Tenant the event was recorded under. Open vocabulary; must not be used as a discriminant.","maxLength":64,"type":"string"},"to_state":{"description":"State after the event.","enum":["none","live","draft","pending","declined","hidden"],"type":"string","x-vocabulary-closed":true},"work_id":{"description":"Catalog work id the event is on.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},"required":["object","id","work_id","from_state","to_state","reason","actor_uid","site","product_work_id","created_at"],"type":"object"},"ClaimEventRef":{"additionalProperties":true,"properties":{"actor_uid":{"description":"The claiming site's own user id of the actor — a moderator on a decision event, not necessarily the claim owner.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"created_at":{"description":"RFC 3339 UTC.","format":"date-time","maxLength":32,"type":"string"},"from_state":{"description":"State before the event. null on the event that created the claim.","enum":["none","live","draft","pending","declined","hidden"],"type":["string","null"],"x-vocabulary-closed":true},"id":{"description":"Claim event id. Same id space as /v2/catalog/claim-events.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"object":{"description":"Type discriminant. Always claim_event.","enum":["claim_event"],"type":"string","x-vocabulary-closed":true},"reason":{"description":"Actor's note, usually a decline reason. null when none was given. Must not be used as a discriminant.","maxLength":2000,"type":["string","null"]},"to_state":{"description":"State after the event.","enum":["none","live","draft","pending","declined","hidden"],"type":"string","x-vocabulary-closed":true}},"required":["object","id","from_state","to_state","reason","actor_uid","created_at"],"type":"object"},"ClaimRecord":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ClaimRecord.json"],"format":"uri","readOnly":true,"type":"string"},"acted_count":{"description":"How many times the bearer acted on this work, within the site= scope when given. Present on the me faces.","format":"int64","minimum":0,"type":"integer"},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"first_acted_at":{"description":"RFC 3339 UTC of the bearer's first action on this work. Present on the me faces.","format":"date-time","maxLength":32,"type":"string"},"id":{"description":"Catalog work id this claim is on.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"last_event":{"$ref":"#/components/schemas/ClaimEventRef","description":"The newest claim event on this work, whoever acted. Present on the me faces and single-claim reads; absent on the moderation queue rows."},"object":{"description":"Type discriminant. Always claim.","enum":["claim"],"type":"string","x-vocabulary-closed":true},"product_work_id":{"description":"The claiming site's own work id. null when unclaimed.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]},"site":{"description":"Claiming site key, empty when unclaimed. Open vocabulary; must not be used as a discriminant.","maxLength":64,"type":"string"},"state":{"description":"Claim lifecycle state. none means the work is not currently claimed by any site.","enum":["none","live","draft","pending","declined","hidden"],"type":"string","x-vocabulary-closed":true}},"required":["object","id","state","display_name","site","product_work_id"],"type":"object"},"ClaimRefBody":{"additionalProperties":true,"properties":{"external_id":{"description":"Verbatim upstream id. Must not be used as a discriminant beyond exact match.","maxLength":256,"minLength":1,"type":"string"},"source":{"description":"Open vocabulary source key such as vndb. Must not be used as a discriminant.","maxLength":64,"minLength":1,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false}},"required":["source","external_id"],"type":"object"},"Company":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/Company.json"],"format":"uri","readOnly":true,"type":"string"},"aliases":{"description":"Present when include=aliases. Empty array if none.","items":{"$ref":"#/components/schemas/EntityName"},"type":"array"},"company_kind":{"description":"Company registry class. No other.","enum":["game_brand","bunko","publisher","anime_studio","doujin_circle","group"],"type":"string","x-vocabulary-closed":true},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"id":{"description":"Catalog company id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"intros":{"description":"Present when include=intros on the detail and batch lanes; the cursor list lane does not carry it. Empty array if none.","items":{"$ref":"#/components/schemas/Intro"},"type":"array"},"lang":{"description":"BCP-47 language tag of display_name. null if unrecorded. Must not be used as a discriminant.","format":"bcp47","maxLength":32,"type":["string","null"]},"latin":{"description":"null if unrecorded. Must not be used as a discriminant.","maxLength":512,"type":["string","null"]},"links":{"description":"Present when include=links on the detail and batch lanes; the cursor list lane does not carry it. Empty array if none.","items":{"$ref":"#/components/schemas/WorkLink"},"type":"array"},"localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"BCP-47 keys. Empty object if none. Must not be used as a discriminant.","type":"object"},"logo":{"$ref":"#/components/schemas/Image","description":"Present only when include=logo and this company has a logo; absent otherwise."},"object":{"description":"Type discriminant. Always company.","enum":["company"],"type":"string","x-vocabulary-closed":true},"work_count":{"description":"Works visible under the same NSFW gate.","format":"int64","minimum":0,"type":"integer"}},"required":["object","id","display_name","latin","lang","localized","company_kind","work_count"],"type":"object"},"CompanyGraph":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/CompanyGraph.json"],"format":"uri","readOnly":true,"type":"string"},"edges":{"description":"Directed relations among nodes. Empty array, never null. Inverse relations are not emitted.","items":{"$ref":"#/components/schemas/CompanyGraphEdge"},"type":"array"},"nodes":{"description":"Companies in this family. Empty array, never null.","items":{"$ref":"#/components/schemas/CompanyGraphNode"},"type":"array"},"object":{"description":"Type discriminant. Always company_graph.","enum":["company_graph"],"type":"string","x-vocabulary-closed":true},"truncated":{"description":"The walk is bounded at 60 nodes and 4 hops from the requested company. true means the family continues past what nodes[] carries and this is a partial graph; false means nodes[] is the complete connected family.","type":"boolean"}},"required":["object","nodes","edges","truncated"],"type":"object"},"CompanyGraphEdge":{"additionalProperties":true,"properties":{"from_id":{"description":"Source company id. to_id is the named relation of from_id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"relation":{"description":"to_id is this relation of from_id. Inverse edges are not emitted.","enum":["parent","imprint","spawned","succeeded_by"],"type":"string","x-vocabulary-closed":true},"to_id":{"description":"Target company id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},"required":["from_id","to_id","relation"],"type":"object"},"CompanyGraphNode":{"additionalProperties":true,"properties":{"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"id":{"description":"Catalog company id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"BCP-47 keys. Empty object if none. Must not be used as a discriminant.","type":"object"},"logo":{"$ref":"#/components/schemas/Image","description":"Present only when include=logo and this node has a logo; absent otherwise."},"object":{"description":"Type discriminant. Always company.","enum":["company"],"type":"string","x-vocabulary-closed":true},"work_count":{"description":"Works visible under the same NSFW gate.","format":"int64","minimum":0,"type":"integer"}},"required":["object","id","display_name","localized","work_count"],"type":"object"},"Cover":{"additionalProperties":true,"properties":{"cover_kind":{"description":"Upstream cover class from the pinning ladder: main, dig, pkgfront, pkgback and friends. Open vocabulary. Empty if unrecorded. Must not be used as a discriminant.","maxLength":32,"type":"string"},"hash":{"description":"Image-service content hash.","maxLength":64,"minLength":64,"pattern":"^[0-9a-f]{64}$","type":"string"},"height":{"description":"Pixel height. null if unknown.","format":"int64","maximum":65535,"minimum":0,"type":["integer","null"]},"id":{"description":"catalog_work_cover row id, not the image hash.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"portrait_pinned":{"description":"Whether this row is pinned as the portrait cover.","type":"boolean"},"sexual":{"description":"Sexual depiction. null means not assessed.","enum":["safe","suggestive","explicit"],"type":["string","null"],"x-vocabulary-closed":true},"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false},"thumbhash":{"description":"Thumbhash. null if unknown.","maxLength":128,"pattern":"^[A-Za-z0-9+/=_-]+$","type":["string","null"]},"url":{"description":"Absolute image URL. Never a bare hash.","format":"uri","maxLength":512,"type":"string"},"violence":{"description":"Violent depiction. null means not assessed. Currently always null.","enum":["tame","violent","brutal"],"type":["string","null"],"x-vocabulary-closed":true},"vote_count":{"description":"Net votes on this cover row.","format":"int64","minimum":0,"type":"integer"},"width":{"description":"Pixel width. null if unknown.","format":"int64","maximum":65535,"minimum":0,"type":["integer","null"]}},"required":["id","vote_count","portrait_pinned","cover_kind","url","hash","width","height","thumbhash","sexual","violence","source"],"type":"object"},"CoverVote":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/CoverVote.json"],"format":"uri","readOnly":true,"type":"string"},"cover_id":{"description":"Catalog cover row id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"object":{"description":"Type discriminant. Always cover_vote.","enum":["cover_vote"],"type":"string","x-vocabulary-closed":true},"vote":{"description":"Only up is stored. down is not a catalog ballot.","enum":["up"],"type":"string","x-vocabulary-closed":true},"work_id":{"description":"Work the ballot is on.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},"required":["object","cover_id","work_id","vote"],"type":"object"},"CreateClaimInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/CreateClaimInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"display_name":{"description":"Required to mint when refs do not match. Must not be used as a discriminant.","maxLength":512,"type":"string"},"field_values":{"additionalProperties":{},"description":"Editing-engine field key to value for the minted work, e.g. catalog.work.titles — the same shape GET /v2/moderation/snapshots/{object}/{id} answers. Sent alone it mints from the map; sent with work_id it is 422. Top-level display_name wins over catalog.work.display_name.","type":"object"},"refs":{"description":"source:external_id anchors, at most 100. Used when work_id is absent.","items":{"$ref":"#/components/schemas/ClaimRefBody"},"maxItems":100,"type":"array"},"site_work_id":{"description":"The site's own work id. Sent alone with display_name — no work_id, no refs — it mints a work anchored to that id.","maxLength":20,"pattern":"^[0-9]+$","type":"string"},"work_id":{"description":"Existing catalog work id to claim.","maxLength":20,"pattern":"^[0-9]+$","type":"string"}},"type":"object"},"CreateNewsInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/CreateNewsInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"banner_hash":{"description":"Image-service content hash of the banner. The format is checked; existence is not.","maxLength":64,"pattern":"^([0-9a-f]{64})?$","type":"string"},"lane":{"description":"Section of the source. Defaults to news.","enum":["news","column"],"type":"string","x-vocabulary-closed":true},"published_at":{"description":"RFC 3339. Defaults to the moment of submission.","format":"date-time","maxLength":32,"type":"string"},"source":{"description":"News source key. Must be a source bound to the bearer and active.","maxLength":64,"minLength":1,"pattern":"^[a-z][a-z0-9_]*$","type":"string","x-vocabulary":"sources","x-vocabulary-closed":false},"source_url":{"description":"Canonical link to the original item. Attribution always carries a link.","format":"uri","maxLength":1024,"minLength":1,"type":"string"},"summary":{"description":"The lede the source wrote. At most 200 runes; longer is 422 VALIDATION_FAILED with reason TOO_LONG. Must not be used as a discriminant.","maxLength":2000,"minLength":1,"type":"string"},"title":{"description":"Must not be used as a discriminant.","maxLength":512,"minLength":1,"type":"string"},"work_ids":{"description":"Catalog work ids to link. Stored with manual confidence.","items":{"type":"string"},"maxItems":100,"type":"array"}},"required":["source","title","summary","source_url"],"type":"object"},"CreateProposalInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/CreateProposalInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"entity_id":{"description":"Target catalog id.","maxLength":20,"pattern":"^[0-9]+$","type":"string"},"entity_type":{"description":"Editing-engine type, e.g. catalog.work. Must not be used as a discriminant.","maxLength":64,"type":"string"},"note":{"description":"Must not be used as a discriminant.","maxLength":2000,"type":"string"},"patch":{"additionalProperties":{},"description":"Field-key to new value.","type":"object"}},"required":["entity_type","entity_id","patch"],"type":"object"},"CreditEntry":{"additionalProperties":true,"properties":{"character_id":{"description":"null if this credit is not a voice on a character.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"id":{"description":"Catalog credit-name id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"identity":{"description":"Opaque credit row identity for a catalog.work.credits.suppressed proposal; echo it back, never rebuild it. It cannot be reconstructed from this object: role_id is not published. Must not be used as a discriminant.","maxLength":128,"type":"string"},"latin":{"description":"null if unrecorded. Must not be used as a discriminant.","maxLength":512,"type":["string","null"]},"localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"BCP-47 keys. Empty object if none. Must not be used as a discriminant.","type":"object"},"object":{"description":"Type discriminant. Always credit_name.","enum":["credit_name"],"type":"string","x-vocabulary-closed":true}},"required":["object","id","display_name","latin","localized","character_id","identity"],"type":"object"},"CreditGroup":{"additionalProperties":true,"properties":{"credits":{"description":"Names credited in this role. Empty array, never null.","items":{"$ref":"#/components/schemas/CreditEntry"},"type":"array"},"role_key":{"description":"Credit role token.","maxLength":64,"pattern":"^[a-z][a-z0-9_]*$","type":"string"},"role_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"}},"required":["role_key","role_name","credits"],"type":"object"},"CreditName":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/CreditName.json"],"format":"uri","readOnly":true,"type":"string"},"aliases":{"description":"Alternate spellings of THIS credited name, not of the person. Present when include=aliases, detail face only. Empty array if none.","items":{"$ref":"#/components/schemas/EntityName"},"type":"array"},"birth_day":{"description":"Person-level fact reached through the person link. Present on the detail face; absent when unrecorded or the name has no public person link.","format":"int64","maximum":31,"minimum":1,"type":"integer"},"birth_month":{"description":"Person-level fact reached through the person link. Present on the detail face; absent when unrecorded or the name has no public person link.","format":"int64","maximum":12,"minimum":1,"type":"integer"},"birth_year":{"description":"Person-level fact reached through the person link. Present on the detail face; absent when unrecorded or the name has no public person link. The three birth parts are independently fuzzy: a year can exist with no month or day.","format":"int64","maximum":9999,"minimum":0,"type":"integer"},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"gender":{"description":"Person-level fact reached through the person link. Present on the detail face; absent when unrecorded or the name has no public person link.","enum":["male","female","other"],"type":"string","x-vocabulary-closed":true},"id":{"description":"Catalog credit-name id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"intros":{"description":"Biography of the linked person, one per language. Present when include=intros, detail face only. Empty array if none.","items":{"$ref":"#/components/schemas/Intro"},"type":"array"},"lang":{"description":"BCP-47 language tag of display_name. null if unrecorded. Must not be used as a discriminant.","format":"bcp47","maxLength":32,"type":["string","null"]},"latin":{"description":"null if unrecorded. Must not be used as a discriminant.","maxLength":512,"type":["string","null"]},"links":{"description":"External pages for the linked person. Present when include=links, detail face only. Empty array if none.","items":{"$ref":"#/components/schemas/WorkLink"},"type":"array"},"localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"BCP-47 keys. Empty object if none. Must not be used as a discriminant.","type":"object"},"object":{"description":"Type discriminant. Always credit_name.","enum":["credit_name"],"type":"string","x-vocabulary-closed":true},"person_id":{"description":"null if this name is not linked to a person.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]},"photo":{"$ref":"#/components/schemas/Image","description":"Photograph of the linked person. Present only when include=photo and there is a photo; absent otherwise. Detail face only."},"refs":{"description":"Exact upstream anchors of this credited name. Present when include=refs, detail face only. Empty array if none.","items":{"$ref":"#/components/schemas/Ref"},"type":"array"},"siblings":{"description":"The same person's other publicly linked names, as basic entries. Present when include=siblings, detail face only. Empty array if none.","items":{"$ref":"#/components/schemas/CreditName"},"type":"array"}},"required":["object","id","display_name","latin","lang","localized","person_id"],"type":"object"},"DecideClaimInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/DecideClaimInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"decision":{"description":"approve publishes a pending claim, decline sends it back, ban hides it from any state, unban restores the state it was hidden from.","enum":["approve","decline","ban","unban"],"type":"string","x-vocabulary-closed":true},"note":{"description":"Must not be used as a discriminant. Required to decline.","maxLength":2000,"type":"string"}},"required":["decision"],"type":"object"},"DecideProposalInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/DecideProposalInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"decision":{"description":"merge writes the effective patch and records a revision. decline closes the proposal.","enum":["merge","decline"],"type":"string","x-vocabulary-closed":true},"note":{"description":"Must not be used as a discriminant.","maxLength":2000,"type":"string"}},"required":["decision"],"type":"object"},"EditImage":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/EditImage.json"],"format":"uri","readOnly":true,"type":"string"},"hash":{"description":"Image-service content hash. This is the value an edit proposal carries.","maxLength":64,"minLength":64,"pattern":"^[0-9a-f]{64}$","type":"string"},"height":{"description":"Pixel height. null if unknown.","format":"int64","maximum":65535,"minimum":0,"type":["integer","null"]},"is_deduplicated":{"description":"True when these bytes already existed and no new object was stored.","type":"boolean"},"object":{"description":"Type discriminant. Always edit_image.","enum":["edit_image"],"type":"string","x-vocabulary-closed":true},"preset":{"description":"Which editor slot these bytes were sized for.","enum":["cover","screenshot"],"type":"string","x-vocabulary-closed":true},"sexual":{"description":"Sexual depiction. null means not assessed. An upload receipt is always null; the assessment lands later.","enum":["safe","suggestive","explicit"],"type":["string","null"],"x-vocabulary-closed":true},"size_bytes":{"description":"Stored byte length after the image service re-encoded the upload.","format":"int64","minimum":0,"type":"integer"},"thumbhash":{"description":"Thumbhash. null if unknown.","maxLength":128,"pattern":"^[A-Za-z0-9+/=_-]+$","type":["string","null"]},"url":{"description":"Absolute image URL. Never a bare hash.","format":"uri","maxLength":512,"type":"string"},"violence":{"description":"Violent depiction. null means not assessed. Currently always null.","enum":["tame","violent","brutal"],"type":["string","null"],"x-vocabulary-closed":true},"width":{"description":"Pixel width. null if unknown.","format":"int64","maximum":65535,"minimum":0,"type":["integer","null"]}},"required":["object","preset","url","hash","width","height","thumbhash","sexual","violence","size_bytes","is_deduplicated"],"type":"object"},"Engine":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/Engine.json"],"format":"uri","readOnly":true,"type":"string"},"aliases":{"description":"Alternate spellings of the engine name. Empty array if none.","items":{"type":"string"},"type":"array"},"description":{"description":"Free-text description. Empty if unrecorded. Must not be used as a discriminant.","maxLength":8000,"type":"string"},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"id":{"description":"Catalog engine id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"object":{"description":"Type discriminant. Always engine.","enum":["engine"],"type":"string","x-vocabulary-closed":true},"work_count":{"description":"Works visible under the same NSFW gate.","format":"int64","minimum":0,"type":"integer"}},"required":["object","id","display_name","work_count","description","aliases"],"type":"object"},"EntityName":{"additionalProperties":true,"properties":{"alias_kind":{"description":"search_hint is internal and never appears on this type.","enum":["translation","spelling_variant"],"type":"string","x-vocabulary-closed":true},"is_machine":{"description":"Whether this name is machine-translated.","type":"boolean"},"lang":{"description":"BCP-47 language tag.","format":"bcp47","maxLength":32,"type":"string"},"value":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"}},"required":["lang","value","alias_kind","is_machine"],"type":"object"},"FacetValue":{"additionalProperties":true,"properties":{"count":{"description":"Hits in this bucket after the same filters as items.","format":"int64","minimum":0,"type":"integer"},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"value":{"description":"Token to pass back to the same filter. Must not be used as a discriminant.","maxLength":256,"type":"string"}},"required":["value","display_name","count"],"type":"object"},"FieldDiff":{"additionalProperties":true,"properties":{"from":{"description":"Value before. null when the field was unset or the revision has no predecessor."},"key":{"description":"Editing-engine field key. Must not be used as a discriminant.","maxLength":128,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"to":{"description":"Value after. null when the field was cleared."}},"required":["key","from","to"],"type":"object"},"FieldError":{"additionalProperties":true,"properties":{"detail":{"description":"English, request-specific. Must not be used as a discriminant.","maxLength":2048,"type":"string"},"header":{"description":"Request header name. Exactly one of pointer, parameter, or header is set.","maxLength":64,"pattern":"^[A-Za-z0-9-]+$","type":"string"},"parameter":{"description":"Query or path parameter name. Exactly one of pointer, parameter, or header is set.","maxLength":64,"pattern":"^[A-Za-z_][A-Za-z0-9_]*$","type":"string"},"pointer":{"description":"JSON Pointer (RFC 6901) into the request body. Exactly one of pointer, parameter, or header is set.","maxLength":256,"pattern":"^/","type":"string"},"reason":{"description":"Field-level reason from the closed reason registry.","maxLength":63,"pattern":"^[A-Z][A-Z0-9_]*[A-Z0-9]$","type":"string"}},"required":["reason","detail"],"type":"object"},"Image":{"additionalProperties":true,"properties":{"hash":{"description":"Image-service content hash.","maxLength":64,"minLength":64,"pattern":"^[0-9a-f]{64}$","type":"string"},"height":{"description":"Pixel height. null if unknown.","format":"int64","maximum":65535,"minimum":0,"type":["integer","null"]},"sexual":{"description":"Sexual depiction. null means not assessed.","enum":["safe","suggestive","explicit"],"type":["string","null"],"x-vocabulary-closed":true},"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false},"thumbhash":{"description":"Thumbhash. null if unknown.","maxLength":128,"pattern":"^[A-Za-z0-9+/=_-]+$","type":["string","null"]},"url":{"description":"Absolute image URL. Never a bare hash.","format":"uri","maxLength":512,"type":"string"},"violence":{"description":"Violent depiction. null means not assessed. Currently no catalog row has an assessment; the value is always null.","enum":["tame","violent","brutal"],"type":["string","null"],"x-vocabulary-closed":true},"width":{"description":"Pixel width. null if unknown.","format":"int64","maximum":65535,"minimum":0,"type":["integer","null"]}},"required":["url","hash","width","height","thumbhash","sexual","violence","source"],"type":"object"},"Intro":{"additionalProperties":true,"properties":{"is_machine":{"description":"Whether this intro is machine-translated.","type":"boolean"},"lang":{"description":"BCP-47 language tag.","format":"bcp47","maxLength":32,"type":"string"},"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false},"value":{"description":"Must not be used as a discriminant.","maxLength":20000,"type":"string"}},"required":["lang","value","is_machine","source"],"type":"object"},"Item":{"additionalProperties":true,"properties":{"minutes":{"description":"Absolute cumulative minutes.","format":"int64","maximum":60000,"minimum":0,"type":"integer"},"work_id":{"description":"Catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},"required":["work_id","minutes"],"type":"object"},"ListAppearance":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListAppearance.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Appearance"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListChange":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListChange.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Change"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListCharacter":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListCharacter.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Character"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListClaimEvent":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListClaimEvent.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/ClaimEvent"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListClaimRecord":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListClaimRecord.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/ClaimRecord"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListCompany":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListCompany.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Company"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListCover":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListCover.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Cover"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListCoverVote":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListCoverVote.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/CoverVote"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListCreditGroup":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListCreditGroup.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/CreditGroup"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListCreditName":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListCreditName.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/CreditName"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListEngine":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListEngine.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Engine"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListIntro":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListIntro.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Intro"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListNameCredit":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListNameCredit.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/NameCredit"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListNewsItem":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListNewsItem.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/NewsItem"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListNewsSource":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListNewsSource.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/NewsSource"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListNewsSubmission":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListNewsSubmission.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/NewsSubmission"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListObjectProblemReason":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListObjectProblemReason.json"],"format":"uri","readOnly":true,"type":"string"},"items":{"description":"The members of this list. Empty array, never null.","items":{"$ref":"#/components/schemas/ProblemReason"},"type":"array"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true}},"required":["object","items"],"type":"object"},"ListPerson":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListPerson.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Person"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListPlaytimeBatchItem":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListPlaytimeBatchItem.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/PlaytimeBatchItem"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListProblemType":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListProblemType.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/ProblemType"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListProposalRecord":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListProposalRecord.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/ProposalRecord"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListRating":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListRating.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Rating"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListRedirect":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListRedirect.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Redirect"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListRelation":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListRelation.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Relation"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListRelease":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListRelease.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Release"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListRevision":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListRevision.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Revision"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListScreenshot":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListScreenshot.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Screenshot"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListSearchHit":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListSearchHit.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/SearchHit"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListSeries":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListSeries.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Series"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListTag":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListTag.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Tag"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListTrait":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListTrait.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Trait"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListUserPlaytime":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListUserPlaytime.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/UserPlaytime"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListVocabulary":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListVocabulary.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Vocabulary"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListWork":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListWork.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/Work"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListWorkCharacter":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListWorkCharacter.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/WorkCharacter"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListWorkEngineRef":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListWorkEngineRef.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/WorkEngineRef"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListWorkLink":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListWorkLink.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/WorkLink"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListWorkPrices":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListWorkPrices.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/WorkPrices"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListWorkSeriesRef":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListWorkSeriesRef.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/WorkSeriesRef"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"ListWorkTag":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ListWorkTag.json"],"format":"uri","readOnly":true,"type":"string"},"facets":{"additionalProperties":{"items":{"$ref":"#/components/schemas/FacetValue"},"type":["array","null"]},"description":"Named facet buckets. Present only when facets= is requested.","type":"object"},"items":{"description":"Members of this page. Empty array, never null.","items":{"$ref":"#/components/schemas/WorkTag"},"type":"array"},"missing":{"description":"ids requested but not visible. Present only on the ids=/refs= batch lane.","items":{"type":"string"},"type":"array"},"next_cursor":{"description":"Opaque keyset cursor. Omitted on the last page.","maxLength":512,"pattern":"^cur_[A-Za-z0-9._~-]+$","type":"string"},"object":{"description":"Type discriminant. Always list.","enum":["list"],"type":"string","x-vocabulary-closed":true},"total":{"description":"Present only when include_total=true. Same visibility gate as items.","format":"int64","minimum":0,"type":"integer"}},"required":["object","items"],"type":"object"},"LocalizedText":{"additionalProperties":true,"properties":{"is_machine":{"description":"Whether this value is machine-translated.","type":"boolean"},"value":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"}},"required":["value","is_machine"],"type":"object"},"Measurements":{"additionalProperties":true,"properties":{"bust_cm":{"description":"null if unrecorded.","format":"int64","minimum":0,"type":["integer","null"]},"cup":{"description":"Must not be used as a discriminant. null if unrecorded.","maxLength":8,"type":["string","null"]},"hip_cm":{"description":"null if unrecorded.","format":"int64","minimum":0,"type":["integer","null"]},"waist_cm":{"description":"null if unrecorded.","format":"int64","minimum":0,"type":["integer","null"]}},"required":["bust_cm","waist_cm","hip_cm","cup"],"type":"object"},"Money":{"additionalProperties":true,"properties":{"amount":{"description":"Decimal string with two fraction digits, tax-inclusive as the store shows it.","maxLength":12,"pattern":"^[0-9]{1,9}\\.[0-9]{2}$","type":"string"},"currency":{"description":"ISO 4217 currency code.","maxLength":3,"pattern":"^[A-Z]{3}$","type":"string"}},"required":["currency","amount"],"type":"object"},"NameCredit":{"additionalProperties":true,"properties":{"object":{"description":"Type discriminant. Always name_credit.","enum":["name_credit"],"type":"string","x-vocabulary-closed":true},"roles":{"description":"Roles on this work. Empty array, never null.","items":{"$ref":"#/components/schemas/NameCreditRole"},"type":"array"},"work":{"$ref":"#/components/schemas/Work","description":"Work this name is credited on. view=basic."}},"required":["object","work","roles"],"type":"object"},"NameCreditRole":{"additionalProperties":true,"properties":{"character_id":{"description":"null if this credit is not a voice on a character.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]},"character_name":{"description":"Display name of the voiced character. null unless this credit is a voice on a character. Must not be used as a discriminant.","maxLength":512,"type":["string","null"]},"role_key":{"description":"Credit role token.","maxLength":64,"pattern":"^[a-z][a-z0-9_]*$","type":"string"},"role_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"}},"required":["role_key","role_name","character_id","character_name"],"type":"object"},"Names":{"additionalProperties":true,"properties":{"display_name":{"description":"Primary label. Never empty. Must not be used as a discriminant.","maxLength":512,"type":"string"},"latin":{"description":"Romanization. null if unrecorded. Must not be used as a discriminant.","maxLength":512,"type":["string","null"]},"localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"BCP-47 keys, sparse. Empty object if none. Must not be used as a discriminant.","type":"object"}},"required":["display_name","latin","localized"],"type":"object"},"NewsItem":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/NewsItem.json"],"format":"uri","readOnly":true,"type":"string"},"id":{"description":"News item id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"object":{"description":"Type discriminant. Always news_item.","enum":["news_item"],"type":"string","x-vocabulary-closed":true},"published_at":{"description":"RFC 3339 UTC.","format":"date-time","maxLength":32,"type":"string"},"source":{"$ref":"#/components/schemas/NewsSource","description":"Attribution. Required on view=basic."},"source_url":{"description":"Canonical link to the original item.","format":"uri","maxLength":1024,"type":"string"},"summary":{"description":"Source-provided lede. Must not be used as a discriminant.","maxLength":8000,"type":"string"},"title":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"}},"required":["object","id","title","summary","source","source_url","published_at"],"type":"object"},"NewsSource":{"additionalProperties":true,"properties":{"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"name":{"description":"Source key.","maxLength":64,"pattern":"^[a-z][a-z0-9_]*$","type":"string"},"object":{"description":"Type discriminant. Always news_source.","enum":["news_source"],"type":"string","x-vocabulary-closed":true}},"required":["object","name","display_name"],"type":"object"},"NewsSubmission":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/NewsSubmission.json"],"format":"uri","readOnly":true,"type":"string"},"banner_hash":{"description":"Image-service content hash of the banner. Empty string when there is none.","maxLength":64,"pattern":"^([0-9a-f]{64})?$","type":"string"},"id":{"description":"News item id. Same id space as /v2/news.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"lane":{"description":"Which of the source's two sections this item belongs to.","enum":["news","column"],"type":"string","x-vocabulary-closed":true},"object":{"description":"Type discriminant. Always news_submission.","enum":["news_submission"],"type":"string","x-vocabulary-closed":true},"published_at":{"description":"RFC 3339 UTC.","format":"date-time","maxLength":32,"type":"string"},"source":{"$ref":"#/components/schemas/NewsSource","description":"The source row that grants this submission."},"source_url":{"description":"Canonical link to the original item.","format":"uri","maxLength":1024,"type":"string"},"status":{"description":"Moderation lifecycle state. POST always lands on pending.","enum":["pending","published","rejected","withdrawn"],"type":"string","x-vocabulary-closed":true},"summary":{"description":"Lede, at most 200 runes. Must not be used as a discriminant.","maxLength":200,"type":"string"},"title":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"work_ids":{"description":"Catalog work ids linked by hand. Empty array, never null.","items":{"type":"string"},"type":"array"}},"required":["object","id","source","lane","status","title","summary","source_url","banner_hash","published_at","work_ids"],"type":"object"},"ObjectSchema":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ObjectSchema.json"],"format":"uri","readOnly":true,"type":"string"},"creation_disabled":{"description":"true when new rows of this family cannot be created. Always true on release.","type":"boolean"},"entity_type":{"description":"Editing-engine type this family writes as.","enum":["catalog.work","catalog.label","catalog.character","catalog.release","catalog.tag","catalog.engine","catalog.series"],"type":"string","x-vocabulary-closed":true},"fields":{"description":"Editable fields. Empty array, never null. Actor capabilities are not evaluated.","items":{"$ref":"#/components/schemas/SchemaField"},"type":"array"},"full_set":{"description":"Tokens view=full expands on the detail face. A subset of include. Empty array, never null.","items":{"type":"string"},"type":"array"},"include":{"description":"include= tokens the family's DETAIL face takes. Empty array, never null. full_set is a subset.","items":{"type":"string"},"type":"array"},"list_full_set":{"description":"Tokens view=full expands on the collection face. A subset of list_include. Empty array, never null.","items":{"type":"string"},"type":"array"},"list_include":{"description":"include= tokens the family's COLLECTION face takes, which is not always the detail vocabulary: a list hydrates in batch, so blocks whose only shape is per-record stay on the detail face and on the sub-resources. Empty array, never null.","items":{"type":"string"},"type":"array"},"object":{"description":"Type discriminant. Always object_schema.","enum":["object_schema"],"type":"string","x-vocabulary-closed":true},"target_object":{"description":"Family this schema describes.","enum":["work","company","character","release","tag","engine","series"],"type":"string","x-vocabulary-closed":true}},"required":["object","target_object","entity_type","include","full_set","list_include","list_full_set","creation_disabled","fields"],"type":"object"},"PatchClaimInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/PatchClaimInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"state":{"description":"live publishes a draft, pending submits it for review, withdrawn returns a live or pending claim to draft. draft is the older spelling of withdrawn.","enum":["live","pending","withdrawn","draft"],"type":"string","x-vocabulary-closed":true}},"required":["state"],"type":"object"},"PatchNewsSubmissionInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/PatchNewsSubmissionInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"banner_hash":{"description":"Image-service content hash. The empty string clears the banner.","maxLength":64,"pattern":"^([0-9a-f]{64})?$","type":"string"},"source_url":{"description":"Canonical link to the original item.","format":"uri","maxLength":1024,"minLength":1,"type":"string"},"status":{"description":"Only withdrawn. Publishing and rejection happen in the moderation queue, never here.","enum":["withdrawn"],"type":"string","x-vocabulary-closed":true},"summary":{"description":"At most 200 runes; longer is 422 VALIDATION_FAILED with reason TOO_LONG. Must not be used as a discriminant.","maxLength":2000,"minLength":1,"type":"string"},"title":{"description":"Must not be used as a discriminant.","maxLength":512,"minLength":1,"type":"string"},"work_ids":{"description":"Replaces the whole linked-work set.","items":{"type":"string"},"maxItems":100,"type":"array"}},"type":"object"},"PatchProposalInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/PatchProposalInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"patch":{"additionalProperties":{},"description":"Field-key to new value to amend.","type":"object"},"state":{"description":"Set withdrawn to withdraw.","enum":["withdrawn"],"type":"string","x-vocabulary-closed":true}},"type":"object"},"Person":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/Person.json"],"format":"uri","readOnly":true,"type":"string"},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"gender":{"description":"null if unrecorded.","enum":["male","female","other"],"type":["string","null"],"x-vocabulary-closed":true},"id":{"description":"Catalog person id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"object":{"description":"Type discriminant. Always person.","enum":["person"],"type":"string","x-vocabulary-closed":true},"primary_credit_name_id":{"description":"Primary credited name. null if unset.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]}},"required":["object","id","display_name","primary_credit_name_id","gender"],"type":"object"},"Playtime":{"additionalProperties":true,"properties":{"minutes":{"description":"Estimated minutes.","format":"int64","minimum":0,"type":"integer"},"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false},"vote_count":{"description":"Votes backing the estimate.","format":"int64","minimum":0,"type":"integer"}},"required":["source","minutes","vote_count"],"type":"object"},"PlaytimeBatchItem":{"additionalProperties":true,"properties":{"minutes":{"description":"Present on 200 items.","format":"int64","minimum":0,"type":"integer"},"object":{"description":"Present on 200 items. Always playtime.","enum":["playtime"],"type":"string","x-vocabulary-closed":true},"problem":{"$ref":"#/components/schemas/Problem","description":"Present on failed items. A full problem object."},"status":{"description":"HTTP status for this item.","format":"int64","maximum":599,"minimum":0,"type":"integer"},"work_id":{"description":"Catalog work id. Present on 200 items.","maxLength":20,"pattern":"^[0-9]+$","type":"string"}},"required":["status"],"type":"object"},"Popularity":{"additionalProperties":true,"properties":{"metric":{"description":"Source-native metric token.","maxLength":64,"pattern":"^[a-z][a-z0-9_]*$","type":"string"},"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false},"value":{"description":"Metric value.","format":"int64","minimum":0,"type":"integer"}},"required":["source","metric","value"],"type":"object"},"PriceQuote":{"additionalProperties":true,"properties":{"converted":{"description":"The storefront's own conversions of current, informational, not a second price. Empty array, never null.","items":{"$ref":"#/components/schemas/Money"},"type":"array"},"current":{"$ref":"#/components/schemas/Money","description":"Current price, tax-inclusive as the store shows it. null unless quote_state is priced."},"discount_percent":{"description":"Percent off list. Zero when not on sale or not priced.","format":"int64","maximum":100,"minimum":0,"type":"integer"},"expires_at":{"description":"RFC 3339 UTC instant after which this quote is stale. null when pending.","format":"date-time","maxLength":32,"type":["string","null"]},"external_id":{"description":"Verbatim upstream id. Must not be used as a discriminant beyond exact match. It is an identity anchor at this entity's own granularity, not necessarily an addressable page: a credit-name vndb ref is a staff-alias id with no page of its own. Browseable URLs come from links.","maxLength":256,"type":"string"},"fetched_at":{"description":"RFC 3339 UTC instant this quote was observed. null when pending.","format":"date-time","maxLength":32,"type":["string","null"]},"list":{"$ref":"#/components/schemas/Money","description":"List price, tax-inclusive as the store shows it. null unless quote_state is priced."},"object":{"description":"Type discriminant. Always price_quote.","enum":["price_quote"],"type":"string","x-vocabulary-closed":true},"quote_state":{"description":"priced has list and current; pending means a fetch is in flight; unavailable means the storefront has no price.","enum":["priced","pending","unavailable"],"type":"string","x-vocabulary-closed":true},"region":{"description":"ISO 3166-1 alpha-2 storefront region, lowercase. jp for DLsite.","maxLength":2,"pattern":"^[a-z]{2}$","type":"string"},"sale_ends_at":{"description":"RFC 3339 UTC instant the published sale ends. null when the store publishes no end.","format":"date-time","maxLength":32,"type":["string","null"]},"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false},"stale":{"description":"true when served past expires_at; a refresh is in flight.","type":"boolean"},"url":{"description":"Absolute URL.","format":"uri","maxLength":1024,"type":"string"}},"required":["object","source","external_id","region","quote_state","url","list","current","discount_percent","sale_ends_at","converted","fetched_at","expires_at","stale"],"type":"object"},"Problem":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/Problem.json"],"format":"uri","readOnly":true,"type":"string"},"code":{"description":"Top-level error code from the closed registry. UPPER_SNAKE.","maxLength":63,"pattern":"^[A-Z][A-Z0-9_]*[A-Z0-9]$","type":"string"},"current_id":{"description":"Canonical id when code is ENTITY_MERGED.","maxLength":20,"pattern":"^[0-9]+$","type":"string"},"detail":{"description":"English, request-specific. Must not be used as a discriminant. Empty when there is nothing to add.","maxLength":2048,"type":"string"},"errors":{"description":"Field-level failures. Empty array when this is not a field-level error.","items":{"$ref":"#/components/schemas/FieldError"},"type":"array"},"instance":{"description":"Request path and query string that failed. Empty only if the path is unknown.","maxLength":2048,"pattern":"^(/.*)?$","type":"string"},"object":{"description":"Entity family when code is ENTITY_MERGED.","maxLength":32,"pattern":"^[a-z][a-z0-9_]*$","type":"string"},"request_id":{"description":"Same value as X-Request-ID. Prefix req_ plus a 26-character ULID.","maxLength":30,"minLength":30,"pattern":"^req_[0-9A-HJKMNP-TV-Z]{26}$","type":"string"},"status":{"description":"HTTP status. Matches the response status line.","format":"int64","maximum":599,"minimum":400,"type":"integer"},"title":{"description":"Stable English phrase for this type. Does not vary per request.","maxLength":128,"pattern":"^[ -~]+$","type":"string"},"type":{"description":"Stable problem type URI of the form https://developer.nextmoe.dev/problems/{domain}/{kebab-code}.","format":"uri","maxLength":256,"type":"string"}},"required":["type","title","status","detail","instance","code","request_id","errors"],"type":"object"},"ProblemReason":{"additionalProperties":true,"properties":{"description":{"description":"English prose. Must not be used as a discriminant.","maxLength":512,"type":"string"},"object":{"description":"Type discriminant. Always problem_reason.","enum":["problem_reason"],"type":"string","x-vocabulary-closed":true},"reason":{"description":"Field-level reason. UPPER_SNAKE. Disjoint from top-level codes.","maxLength":63,"pattern":"^[A-Z][A-Z0-9_]*[A-Z0-9]$","type":"string"},"title":{"description":"Stable English phrase for this reason.","maxLength":128,"pattern":"^[ -~]+$","type":"string"}},"required":["object","reason","title","description"],"type":"object"},"ProblemType":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ProblemType.json"],"format":"uri","readOnly":true,"type":"string"},"code":{"description":"Top-level error code. UPPER_SNAKE.","maxLength":63,"pattern":"^[A-Z][A-Z0-9_]*[A-Z0-9]$","type":"string"},"description":{"description":"English prose. Must not be used as a discriminant.","maxLength":512,"type":"string"},"domain":{"description":"Type URI domain segment.","enum":["platform","catalog","me","moderation","news","store"],"type":"string","x-vocabulary-closed":true},"object":{"description":"Type discriminant. Always problem_type.","enum":["problem_type"],"type":"string","x-vocabulary-closed":true},"status":{"description":"HTTP status this code is bound to. One status per code.","format":"int64","maximum":599,"minimum":400,"type":"integer"},"title":{"description":"Stable English phrase for this type. Does not vary per request.","maxLength":128,"pattern":"^[ -~]+$","type":"string"},"type":{"description":"Problem type URI. The last path segment is the kebab-case form of code.","format":"uri","maxLength":256,"type":"string"}},"required":["object","code","domain","status","type","title","description"],"type":"object"},"ProposalDecisionRecord":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ProposalDecisionRecord.json"],"format":"uri","readOnly":true,"type":"string"},"decision":{"description":"merge writes the effective patch and records a revision. decline closes the proposal.","enum":["merge","decline"],"type":"string","x-vocabulary-closed":true},"from_state":{"description":"Proposal state before this decision. null when it could not be read.","enum":["open","merged","declined","withdrawn"],"type":["string","null"],"x-vocabulary-closed":true},"id":{"description":"Proposal id this decision closed.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"note":{"description":"Must not be used as a discriminant.","maxLength":2000,"type":"string"},"object":{"description":"Type discriminant. Always decision.","enum":["decision"],"type":"string","x-vocabulary-closed":true},"to_state":{"description":"Proposal state after this decision, read back rather than derived from decision.","enum":["open","merged","declined","withdrawn"],"type":"string","x-vocabulary-closed":true}},"required":["object","id","decision","note","from_state","to_state"],"type":"object"},"ProposalRecord":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/ProposalRecord.json"],"format":"uri","readOnly":true,"type":"string"},"amendments":{"description":"Present when include=amendments. Empty array if none.","items":{"$ref":"#/components/schemas/Amendment"},"type":"array"},"base_revision_seq":{"description":"Revision seq this proposal was written against.","format":"int64","minimum":0,"type":"integer"},"created_at":{"description":"RFC 3339 UTC.","format":"date-time","maxLength":32,"type":"string"},"decided_at":{"description":"RFC 3339 UTC. null while open.","format":"date-time","maxLength":32,"type":["string","null"]},"decided_by_uid":{"description":"The claiming site's own user id of the decider. null while open.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]},"effective_patch":{"additionalProperties":{},"description":"Present when include=patch. The patch after every amendment is folded in; this is what a merge would write.","type":"object"},"entity_id":{"description":"Target catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"entity_type":{"description":"Editing-engine type, e.g. catalog.work. Must not be used as a discriminant.","maxLength":64,"type":"string"},"id":{"description":"Proposal id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"note":{"description":"Proposer's own summary. Must not be used as a discriminant.","maxLength":2000,"type":"string"},"object":{"description":"Type discriminant. Always proposal.","enum":["proposal"],"type":"string","x-vocabulary-closed":true},"patch":{"additionalProperties":{},"description":"Present when include=patch, which only the me and moderation faces publish. Field key to proposed value.","type":"object"},"proposer_uid":{"description":"The claiming site's own user id of the proposer. Not a catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"site":{"description":"Tenant this proposal was filed under. Open vocabulary; must not be used as a discriminant.","maxLength":64,"type":"string"},"state":{"description":"Proposal lifecycle state.","enum":["open","merged","declined","withdrawn"],"type":"string","x-vocabulary-closed":true},"target_object":{"description":"Family of the entity this proposal targets.","enum":["work","company","character","release","tag","engine","series"],"type":"string","x-vocabulary-closed":true},"updated_at":{"description":"RFC 3339 UTC.","format":"date-time","maxLength":32,"type":"string"}},"required":["object","id","state","target_object","entity_type","entity_id","note","proposer_uid","site","base_revision_seq","decided_by_uid","decided_at","created_at","updated_at"],"type":"object"},"PutCoverVoteInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/PutCoverVoteInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"vote":{"description":"Only up is stored.","enum":["up"],"type":"string","x-vocabulary-closed":true}},"required":["vote"],"type":"object"},"PutPlaytimeInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/PutPlaytimeInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"minutes":{"description":"Absolute cumulative minutes.","format":"int64","maximum":60000,"minimum":0,"type":"integer"}},"required":["minutes"],"type":"object"},"Rating":{"additionalProperties":true,"properties":{"distribution":{"description":"Vote histogram on the source-native scale, ascending and sparse: a value with no votes has no bucket. Present on the work detail face and on works/{id}/ratings only, never on a list face. The bars do not share one denominator: bangumi, dlsite and howlongtobeat publish the histogram beside the aggregate, so their bars sum to vote_count; erogamescape bars come from an independently synced reviews mirror, so their sum is its own denominator and need not equal vote_count; vndb bars omit votes held on private lists, so they sum to at most vote_count.","items":{"$ref":"#/components/schemas/RatingBucket"},"type":"array"},"rank":{"description":"Source rank. null if unrecorded.","format":"int64","minimum":0,"type":["integer","null"]},"score":{"description":"Source-native aggregate score.","format":"double","minimum":0,"type":"number"},"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false},"stats":{"$ref":"#/components/schemas/RatingStats","description":"Spread of the same vote population score summarizes. Carried by erogamescape (average, stdev, min and max on its 0-100 scale) and by vndb (average only); bangumi, dlsite and howlongtobeat publish none. Present on the work detail face and on works/{id}/ratings only, never on a list face."},"vote_count":{"description":"Votes backing score.","format":"int64","minimum":0,"type":"integer"}},"required":["source","score","vote_count","rank"],"type":"object"},"RatingBucket":{"additionalProperties":true,"properties":{"count":{"description":"Votes cast at this value.","format":"int64","minimum":0,"type":"integer"},"score":{"description":"Bucket value on the source-native scale: bangumi 1-10, dlsite 1-5, vndb 1-10, erogamescape 0-100 in decile steps.","format":"double","minimum":0,"type":"number"}},"required":["score","count"],"type":"object"},"RatingStats":{"additionalProperties":true,"properties":{"average":{"description":"Plain mean on the source-native scale. Not score: erogamescape's score is the median and vndb's is bayesian-smoothed. null if this source publishes none.","format":"double","minimum":0,"type":["number","null"]},"max":{"description":"Highest vote cast. null if this source publishes none.","format":"double","minimum":0,"type":["number","null"]},"min":{"description":"Lowest vote cast. null if this source publishes none.","format":"double","minimum":0,"type":["number","null"]},"stdev":{"description":"Standard deviation of the vote population. null if this source publishes none.","format":"double","minimum":0,"type":["number","null"]}},"required":["average","stdev","min","max"],"type":"object"},"Redirect":{"additionalProperties":true,"properties":{"current_id":{"description":"Canonical catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"merged_at":{"description":"RFC 3339 UTC.","format":"date-time","maxLength":32,"type":"string"},"object":{"description":"Type discriminant. Always redirect.","enum":["redirect"],"type":"string","x-vocabulary-closed":true},"old_id":{"description":"Retired catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"target_object":{"description":"Family that was merged.","enum":["work","release","character","credit_name","person","company","tag","engine"],"type":"string","x-vocabulary-closed":true}},"required":["object","target_object","old_id","current_id","merged_at"],"type":"object"},"Ref":{"additionalProperties":true,"properties":{"external_id":{"description":"Verbatim upstream id. Must not be used as a discriminant beyond exact match. It is an identity anchor at this entity's own granularity, not necessarily an addressable page: a credit-name vndb ref is a staff-alias id with no page of its own. Browseable URLs come from links.","maxLength":256,"type":"string"},"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false}},"required":["source","external_id"],"type":"object"},"Relation":{"additionalProperties":true,"properties":{"phrase":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"relation_type":{"description":"Relation token.","maxLength":64,"pattern":"^[a-z][a-z0-9_]*$","type":"string"},"work":{"$ref":"#/components/schemas/Work","description":"Related work. Same type as the work collection. view=basic."}},"required":["relation_type","phrase","work"],"type":"object"},"Release":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/Release.json"],"format":"uri","readOnly":true,"type":"string"},"date":{"description":"Calendar date. null if undated.","format":"date","maxLength":10,"type":["string","null"]},"id":{"description":"Catalog release id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"lang":{"description":"BCP-47. Empty if unrecorded.","format":"bcp47","maxLength":32,"type":"string"},"object":{"description":"Type discriminant. Always release.","enum":["release"],"type":"string","x-vocabulary-closed":true},"platform":{"description":"Must not be used as a discriminant.","maxLength":64,"type":"string"},"platforms":{"description":"Every platform on this release. Empty array, never null.","items":{"type":"string"},"type":"array"},"refs":{"description":"Exact upstream anchors. Empty array, never null.","items":{"$ref":"#/components/schemas/Ref"},"type":"array"},"release_kind":{"description":"Release class.","enum":["default","digital","physical","trial","patch"],"type":"string","x-vocabulary-closed":true},"title":{"description":"Must not be used as a discriminant.","maxLength":512,"type":["string","null"]},"work_id":{"description":"Parent catalog work id. null on a work sub-resource, where the work is the URL.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]}},"required":["object","id","work_id","release_kind","date","title","lang","platform","platforms","refs"],"type":"object"},"RevertInputBody":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/RevertInputBody.json"],"format":"uri","readOnly":true,"type":"string"},"reason":{"description":"Must not be used as a discriminant.","maxLength":2000,"type":"string"},"revision_id":{"description":"edit_revision id.","maxLength":20,"pattern":"^[0-9]+$","type":"string"}},"required":["revision_id"],"type":"object"},"Revision":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/Revision.json"],"format":"uri","readOnly":true,"type":"string"},"action":{"description":"How this revision came about.","enum":["created","merged","direct","reverted"],"type":"string","x-vocabulary-closed":true},"actor_uid":{"description":"The claiming site's own user id of whoever caused this revision. Not a catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"amender_uid":{"description":"The claiming site's own user id of the last amender. null when nobody amended.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]},"changed_fields":{"description":"Field keys this revision touched. Empty array, never null.","items":{"type":"string"},"type":"array"},"created_at":{"description":"RFC 3339 UTC.","format":"date-time","maxLength":32,"type":"string"},"diff":{"description":"Present when include=diff. Field-level change set against diff_base, or against the preceding revision when diff_base is absent. Empty array if nothing differs.","items":{"$ref":"#/components/schemas/FieldDiff"},"type":"array"},"diff_base":{"description":"Present when include=diff. Revision the diff was taken against. null when this is the first revision of the entity.","maxLength":20,"pattern":"^[0-9]+$","type":"string"},"entity_id":{"description":"Catalog id of the entity this revision is on.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"id":{"description":"Revision id. This is the value POST /v2/moderation/reverts takes as revision_id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"object":{"description":"Type discriminant. Always revision.","enum":["revision"],"type":"string","x-vocabulary-closed":true},"proposal_id":{"description":"Proposal this revision merged. null for direct edits and imports.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]},"seq":{"description":"Position in this entity's revision chain, 1-based and contiguous.","format":"int64","minimum":1,"type":"integer"},"site":{"description":"Tenant this revision was recorded under. Open vocabulary; must not be used as a discriminant.","maxLength":64,"type":"string"},"site_work_id":{"description":"The claiming site's own work id, not the catalog id. null unless target_object is work and the claiming site equals site.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]},"target_object":{"description":"Family of the entity this revision is on.","enum":["work","company","character","release","tag","engine","series"],"type":"string","x-vocabulary-closed":true}},"required":["object","id","target_object","entity_id","site_work_id","seq","action","changed_fields","actor_uid","amender_uid","proposal_id","site","created_at"],"type":"object"},"SchemaField":{"additionalProperties":true,"properties":{"deprecated":{"description":"true when writes of this key are rejected.","type":"boolean"},"diff_hint":{"description":"How a diff of this field should be rendered.","enum":["inline","lines","items","image"],"type":"string","x-vocabulary-closed":true},"field_type":{"description":"Control type. Not a domain vocabulary.","enum":["text","i18nmap","enum","int","date","list","ref","imagehash"],"type":"string","x-vocabulary-closed":true},"key":{"description":"Editing-engine field key. Must not be used as a discriminant.","maxLength":128,"pattern":"^[a-z0-9_]+(\\.[a-z0-9_]+)+$","type":"string"},"max_elements":{"description":"Cap on a list field's element count. 0 for scalar fields.","format":"int64","minimum":0,"type":"integer"},"max_suppressed":{"description":"Cap on this field's suppression set. 0 when the field has none.","format":"int64","minimum":0,"type":"integer"}},"required":["key","field_type","diff_hint","deprecated","max_suppressed","max_elements"],"type":"object"},"Screenshot":{"additionalProperties":true,"properties":{"caption":{"description":"Must not be used as a discriminant.","maxLength":2048,"type":"string"},"hash":{"description":"Image-service content hash.","maxLength":64,"minLength":64,"pattern":"^[0-9a-f]{64}$","type":"string"},"height":{"description":"Pixel height. null if unknown.","format":"int64","maximum":65535,"minimum":0,"type":["integer","null"]},"sexual":{"description":"Sexual depiction. null means not assessed.","enum":["safe","suggestive","explicit"],"type":["string","null"],"x-vocabulary-closed":true},"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false},"thumbhash":{"description":"Thumbhash. null if unknown.","maxLength":128,"pattern":"^[A-Za-z0-9+/=_-]+$","type":["string","null"]},"url":{"description":"Absolute image URL. Never a bare hash.","format":"uri","maxLength":512,"type":"string"},"violence":{"description":"Violent depiction. null means not assessed. Currently always null.","enum":["tame","violent","brutal"],"type":["string","null"],"x-vocabulary-closed":true},"width":{"description":"Pixel width. null if unknown.","format":"int64","maximum":65535,"minimum":0,"type":["integer","null"]}},"required":["url","hash","width","height","thumbhash","sexual","violence","source","caption"],"type":"object"},"SearchHit":{"additionalProperties":true,"properties":{"content_rating":{"description":"Set on work hits. null otherwise.","enum":["all_ages","sensitive","r18"],"type":["string","null"],"x-vocabulary-closed":true},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"id":{"description":"Catalog id of the hit.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"latin":{"description":"null if unrecorded. Must not be used as a discriminant.","maxLength":512,"type":["string","null"]},"localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"BCP-47 keys. Empty object if none. Must not be used as a discriminant.","type":"object"},"object":{"description":"Type discriminant. Always search_result.","enum":["search_result"],"type":"string","x-vocabulary-closed":true},"sources":{"description":"Open vocabulary sources. Empty array, never null.","items":{"type":"string"},"type":"array"},"tag_kind":{"description":"Set on tag hits. null otherwise.","enum":["content","meta"],"type":["string","null"],"x-vocabulary-closed":true},"target_object":{"description":"Family of the hit.","enum":["work","character","credit_name","company","tag"],"type":"string","x-vocabulary-closed":true},"tier":{"description":"Set on tag hits. null otherwise.","enum":["core","longtail","hidden"],"type":["string","null"],"x-vocabulary-closed":true}},"required":["object","target_object","id","display_name","latin","localized","sources","content_rating","tier","tag_kind"],"type":"object"},"Series":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/Series.json"],"format":"uri","readOnly":true,"type":"string"},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"has_nsfw":{"description":"Whether any member work sits behind the r18 display gate. Counted over the same live-claimed members as work_count but NOT narrowed by nsfw=, so a series can report true while work_count hides every such member. Carried on every lane.","type":"boolean"},"id":{"description":"Catalog series id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"intros":{"description":"Series descriptions, one per language. Present when include=intros, detail face only. Empty array if none. is_machine is always false here: the store carries no provenance for a series description, so false records unknown, not human-written.","items":{"$ref":"#/components/schemas/Intro"},"type":"array"},"object":{"description":"Type discriminant. Always series.","enum":["series"],"type":"string","x-vocabulary-closed":true},"refs":{"description":"Exact upstream anchors of this series. Present when include=refs, detail face only. Empty array if none.","items":{"$ref":"#/components/schemas/Ref"},"type":"array"},"work_count":{"description":"Member works visible under the same NSFW gate.","format":"int64","minimum":0,"type":"integer"}},"required":["object","id","display_name","work_count","has_nsfw"],"type":"object"},"SnapshotRecord":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/SnapshotRecord.json"],"format":"uri","readOnly":true,"type":"string"},"entity_id":{"description":"Target catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"entity_type":{"description":"Editing-engine type. Must not be used as a discriminant.","maxLength":64,"type":"string"},"field_values":{"additionalProperties":{},"description":"Registered field keys to current values. Empty object if none.","type":"object"},"object":{"description":"Type discriminant. Always snapshot.","enum":["snapshot"],"type":"string","x-vocabulary-closed":true}},"required":["object","entity_type","entity_id","field_values"],"type":"object"},"StoreCampaign":{"additionalProperties":true,"properties":{"id":{"description":"Campaign id. Pair it with coupon_url when you render the offer.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"name":{"description":"Human-readable campaign name, safe to show to readers. Must not be used as a discriminant.","maxLength":256,"type":"string"},"object":{"description":"Type discriminant. Always campaign.","enum":["campaign"],"type":"string","x-vocabulary-closed":true}},"required":["object","id","name"],"type":"object"},"StorePurchaseLinks":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/StorePurchaseLinks.json"],"format":"uri","readOnly":true,"type":"string"},"campaign":{"$ref":"#/components/schemas/StoreCampaign","description":"The campaign coupon_url belongs to. null when no campaign is running."},"coupon_url":{"description":"Short link to the coupon claim page. null when no campaign is running.","format":"uri","maxLength":1024,"type":["string","null"]},"object":{"description":"Type discriminant. Always purchase_links.","enum":["purchase_links"],"type":"string","x-vocabulary-closed":true},"product_id":{"description":"The DLsite product number that was asked for, echoed back.","maxLength":10,"pattern":"^(RJ|VJ)[0-9]{6,8}$","type":"string"},"purchase_url":{"description":"Short link to send readers to. It belongs to your application alone; use it verbatim.","format":"uri","maxLength":1024,"type":"string"}},"required":["object","product_id","purchase_url","coupon_url","campaign"],"type":"object"},"StoreStatRow":{"additionalProperties":true,"properties":{"campaign_id":{"description":"The campaign id on a coupon row. null on purchase rows.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]},"date":{"description":"JST calendar day.","format":"date","maxLength":10,"type":"string"},"link_kind":{"description":"purchase is a product link, coupon is a campaign's claim link.","enum":["purchase","coupon"],"type":"string","x-vocabulary-closed":true},"object":{"description":"Type discriminant. Always store_stat.","enum":["store_stat"],"type":"string","x-vocabulary-closed":true},"product_id":{"description":"The DLsite product number on a purchase row. null on coupon rows.","maxLength":10,"pattern":"^(RJ|VJ)[0-9]{6,8}$","type":["string","null"]},"total":{"description":"Clicks that day, before de-duplication.","format":"int64","minimum":0,"type":"integer"},"uniques":{"description":"Distinct (day, fingerprint) clicks that day — the number settlement uses.","format":"int64","minimum":0,"type":"integer"}},"required":["object","link_kind","product_id","campaign_id","date","total","uniques"],"type":"object"},"StoreStatTotal":{"additionalProperties":true,"properties":{"link_kind":{"description":"Which half of the range this total covers. null on the grand total.","enum":["purchase","coupon"],"type":["string","null"],"x-vocabulary-closed":true},"total":{"description":"Clicks in the range, before de-duplication.","format":"int64","minimum":0,"type":"integer"},"uniques":{"description":"De-duplicated clicks in the range — the number settlement uses.","format":"int64","minimum":0,"type":"integer"}},"required":["link_kind","total","uniques"],"type":"object"},"StoreStats":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/StoreStats.json"],"format":"uri","readOnly":true,"type":"string"},"by_kind":{"description":"The same totals split into purchase and coupon. Empty array, never null.","items":{"$ref":"#/components/schemas/StoreStatTotal"},"type":"array"},"from_date":{"description":"First JST day covered, inclusive. The from= query parameter echoed back.","format":"date","maxLength":10,"type":"string"},"object":{"description":"Type discriminant. Always store_stats.","enum":["store_stats"],"type":"string","x-vocabulary-closed":true},"rows":{"description":"One row per link per day; days with no clicks are absent. Empty array, never null.","items":{"$ref":"#/components/schemas/StoreStatRow"},"type":"array"},"to_date":{"description":"Last JST day covered, inclusive. The to= query parameter echoed back.","format":"date","maxLength":10,"type":"string"},"totals":{"$ref":"#/components/schemas/StoreStatTotal","description":"Grand total over the range."}},"required":["object","from_date","to_date","rows","totals","by_kind"],"type":"object"},"Tag":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/Tag.json"],"format":"uri","readOnly":true,"type":"string"},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"id":{"description":"Catalog tag id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"intros":{"description":"Tag descriptions, one per language. Present when include=intros, detail face only. Empty array if none. is_machine is always false here: the store carries no provenance for a tag description, so false records unknown, not human-written.","items":{"$ref":"#/components/schemas/Intro"},"type":"array"},"is_sexual":{"description":"Whether this tag is in the sexual family. Filter on it before rendering a tag list to an SFW reader.","type":"boolean"},"object":{"description":"Type discriminant. Always tag.","enum":["tag"],"type":"string","x-vocabulary-closed":true},"tag_kind":{"description":"Tag vocabulary class.","enum":["content","meta"],"type":"string","x-vocabulary-closed":true},"tier":{"description":"Tag inventory tier.","enum":["core","longtail","hidden"],"type":"string","x-vocabulary-closed":true},"work_count":{"description":"Works visible under the same NSFW gate.","format":"int64","minimum":0,"type":"integer"}},"required":["object","id","display_name","tier","tag_kind","work_count","is_sexual"],"type":"object"},"Trait":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/Trait.json"],"format":"uri","readOnly":true,"type":"string"},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"id":{"description":"Catalog trait id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"is_sexual":{"description":"Whether this trait is in the sexual family.","type":"boolean"},"name_zh":{"description":"Must not be used as a discriminant. Empty if unrecorded.","maxLength":512,"type":"string"},"object":{"description":"Type discriminant. Always trait.","enum":["trait"],"type":"string","x-vocabulary-closed":true},"vndb_tid":{"description":"Upstream VNDB trait id. Must not be used as a discriminant.","maxLength":32,"type":"string"}},"required":["object","id","display_name","name_zh","vndb_tid","is_sexual"],"type":"object"},"UserPlaytime":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/UserPlaytime.json"],"format":"uri","readOnly":true,"type":"string"},"minutes":{"description":"Absolute cumulative minutes.","format":"int64","minimum":0,"type":"integer"},"object":{"description":"Type discriminant. Always playtime.","enum":["playtime"],"type":"string","x-vocabulary-closed":true},"work_id":{"description":"Catalog work id this row is about.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},"required":["object","work_id","minutes"],"type":"object"},"Value":{"additionalProperties":true,"properties":{"description":{"description":"English prose. Must not be used as a discriminant.","maxLength":512,"type":"string"},"display_name":{"description":"English label for this token. Must not be used as a discriminant.","maxLength":512,"type":"string"},"value":{"description":"Token as it appears on the wire. Must not be used as a discriminant.","maxLength":64,"type":"string"}},"required":["value","display_name","description"],"type":"object"},"ViaCompany":{"additionalProperties":true,"properties":{"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"id":{"description":"Catalog company id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"BCP-47 keys. Empty object if none. Must not be used as a discriminant.","type":"object"},"object":{"description":"Type discriminant. Always company.","enum":["company"],"type":"string","x-vocabulary-closed":true}},"required":["object","id","display_name","localized"],"type":"object"},"Vocabulary":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/Vocabulary.json"],"format":"uri","readOnly":true,"type":"string"},"closed":{"description":"true if adding or removing a value is a breaking change.","type":"boolean"},"name":{"description":"Vocabulary name. The path segment of /v2/vocabularies/{name}.","maxLength":64,"pattern":"^[a-z][a-z0-9_]*$","type":"string"},"object":{"description":"Type discriminant. Always vocabulary.","enum":["vocabulary"],"type":"string","x-vocabulary-closed":true},"values":{"description":"Every value currently published. Empty array, never null.","items":{"$ref":"#/components/schemas/Value"},"type":"array"}},"required":["object","name","closed","values"],"type":"object"},"Work":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/Work.json"],"format":"uri","readOnly":true,"type":"string"},"banner":{"$ref":"#/components/schemas/Image","description":"Selected landscape image. null if none."},"characters":{"description":"Present when include=characters. Empty array if none.","items":{"$ref":"#/components/schemas/WorkCharacter"},"type":"array"},"claim":{"$ref":"#/components/schemas/Claim","description":"null if unclaimed. Never omitted on view=basic."},"companies":{"description":"Present when include=companies. Empty array if none.","items":{"$ref":"#/components/schemas/WorkCompany"},"type":"array"},"content_rating":{"description":"Age axis of the work.","enum":["all_ages","sensitive","r18"],"type":"string","x-vocabulary-closed":true},"cover":{"$ref":"#/components/schemas/Image","description":"Selected portrait image. null if none."},"covers":{"description":"Present when include=covers. Empty array if none.","items":{"$ref":"#/components/schemas/Cover"},"type":"array"},"created_at":{"description":"RFC 3339 UTC.","format":"date-time","maxLength":32,"type":"string"},"credits":{"description":"Present when include=credits. Empty array if none.","items":{"$ref":"#/components/schemas/CreditGroup"},"type":"array"},"display_name":{"description":"Primary label. Never empty. Must not be used as a discriminant.","maxLength":512,"type":"string"},"engines":{"description":"Present when include=engines. Empty array if none.","items":{"$ref":"#/components/schemas/WorkEngineRef"},"type":"array"},"id":{"description":"Catalog work id. JSON string of a decimal integer.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"intros":{"description":"Present when include=intros. Empty array if none.","items":{"$ref":"#/components/schemas/Intro"},"type":"array"},"latin":{"description":"Romanization. null if unrecorded. Must not be used as a discriminant.","maxLength":512,"type":["string","null"]},"links":{"description":"Present when include=links. Empty array if none.","items":{"$ref":"#/components/schemas/WorkLink"},"type":"array"},"localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"BCP-47 keys, sparse. Empty object if none. Must not be used as a discriminant.","type":"object"},"medium":{"description":"Never null.","enum":["galgame","manga","novel","anime","asmr","doujin_game","music"],"type":"string","x-vocabulary-closed":true},"object":{"description":"Type discriminant. Always work.","enum":["work"],"type":"string","x-vocabulary-closed":true},"olang":{"description":"Original language, BCP-47. Open vocabulary languages.","format":"bcp47","maxLength":32,"type":"string"},"platforms":{"description":"Present when include=platforms. Empty array if none.","items":{"$ref":"#/components/schemas/WorkPlatform"},"type":"array"},"playtimes":{"description":"Present when include=playtimes. Empty array if none.","items":{"$ref":"#/components/schemas/Playtime"},"type":"array"},"popularity":{"description":"Present when include=popularity. Empty array if none.","items":{"$ref":"#/components/schemas/Popularity"},"type":"array"},"ratings":{"description":"Present when include=ratings. Empty array if none.","items":{"$ref":"#/components/schemas/Rating"},"type":"array"},"refs":{"description":"Present when include=refs. Empty array if none.","items":{"$ref":"#/components/schemas/Ref"},"type":"array"},"relations":{"description":"Present when include=relations. Empty array if none.","items":{"$ref":"#/components/schemas/Relation"},"type":"array"},"release_date":{"description":"Calendar date. null when release_status is announced, cancelled, or unknown.","format":"date","maxLength":10,"type":["string","null"]},"release_date_precision":{"description":"null when release_date is null. month dates sit on the 1st; year dates sit on January 1.","enum":["day","month","year"],"type":["string","null"],"x-vocabulary-closed":true},"release_status":{"description":"World state of the release, distinct from our knowledge gap.","enum":["released","dated","announced","cancelled","unknown"],"type":"string","x-vocabulary-closed":true},"releases":{"description":"Present when include=releases. Empty array if none.","items":{"$ref":"#/components/schemas/Release"},"type":"array"},"screenshots":{"description":"Present when include=screenshots. Empty array if none.","items":{"$ref":"#/components/schemas/Screenshot"},"type":"array"},"series":{"description":"Present when include=series. Empty array if none.","items":{"$ref":"#/components/schemas/WorkSeriesRef"},"type":"array"},"tags":{"description":"Present when include=tags. Empty array if none.","items":{"$ref":"#/components/schemas/WorkTag"},"type":"array"},"titles":{"description":"Present when include=titles. Empty array if none.","items":{"$ref":"#/components/schemas/WorkTitle"},"type":"array"},"updated_at":{"description":"RFC 3339 UTC.","format":"date-time","maxLength":32,"type":"string"},"via_company":{"$ref":"#/components/schemas/ViaCompany","description":"Present only on the company_id=\u0026company_rollup=true lane, on rows attributed through a one-hop imprint or subsidiary: the intermediate company. Absent when the work is attributed to the queried company directly."}},"required":["object","id","medium","display_name","latin","localized","olang","content_rating","release_date","release_date_precision","release_status","cover","banner","claim","created_at","updated_at"],"type":"object"},"WorkCharacter":{"additionalProperties":true,"properties":{"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"figure":{"$ref":"#/components/schemas/Image","description":"Figure image. null if none."},"id":{"description":"Catalog character id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"identity":{"description":"Opaque roster row identity for a catalog.work.roster.suppressed proposal; echo it back, never rebuild it. Absent when the character is reached only through a voice credit, where roster_role is unknown and spoiler is none. Must not be used as a discriminant.","maxLength":64,"type":"string"},"image":{"$ref":"#/components/schemas/Image","description":"Character image. null if none."},"latin":{"description":"null if unrecorded. Must not be used as a discriminant.","maxLength":512,"type":["string","null"]},"localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"BCP-47 keys. Empty object if none. Must not be used as a discriminant.","type":"object"},"object":{"description":"Type discriminant. Always character.","enum":["character"],"type":"string","x-vocabulary-closed":true},"roster_role":{"description":"Appearance strength on this work.","enum":["main","secondary","appears","unknown"],"type":"string","x-vocabulary-closed":true},"spoiler":{"description":"Spoiler level of this appearance.","enum":["none","minor","major"],"type":"string","x-vocabulary-closed":true},"voices":{"description":"Voice credits on this appearance. Empty array, never null.","items":{"$ref":"#/components/schemas/CreditName"},"type":"array"}},"required":["object","id","display_name","latin","localized","roster_role","spoiler","voices","image","figure"],"type":"object"},"WorkCompany":{"additionalProperties":true,"properties":{"attribution_role":{"description":"Primary capacity on this work.","enum":["circle","publisher","developer","brand"],"type":"string","x-vocabulary-closed":true},"company_kind":{"description":"Company registry class.","enum":["game_brand","bunko","publisher","anime_studio","doujin_circle","group"],"type":"string","x-vocabulary-closed":true},"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"id":{"description":"Catalog company id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"localized":{"additionalProperties":{"$ref":"#/components/schemas/LocalizedText"},"description":"BCP-47 keys. Empty object if none. Must not be used as a discriminant.","type":"object"},"logo":{"$ref":"#/components/schemas/Image","description":"Present when this company has a logo; absent otherwise."},"object":{"description":"Type discriminant. Always company.","enum":["company"],"type":"string","x-vocabulary-closed":true},"work_count":{"description":"Works visible under the same NSFW gate.","format":"int64","minimum":0,"type":"integer"}},"required":["object","id","display_name","localized","company_kind","attribution_role","work_count"],"type":"object"},"WorkEngineRef":{"additionalProperties":true,"properties":{"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"id":{"description":"Catalog engine id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"object":{"description":"Type discriminant. Always engine.","enum":["engine"],"type":"string","x-vocabulary-closed":true},"work_count":{"description":"Works visible under the same NSFW gate.","format":"int64","minimum":0,"type":"integer"}},"required":["object","id","display_name","work_count"],"type":"object"},"WorkLink":{"additionalProperties":true,"properties":{"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false},"url":{"description":"Absolute URL.","format":"uri","maxLength":1024,"type":"string"}},"required":["source","url"],"type":"object"},"WorkPlatform":{"additionalProperties":true,"properties":{"platform":{"description":"Must not be used as a discriminant.","maxLength":64,"type":"string"},"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false}},"required":["platform","source"],"type":"object"},"WorkPrices":{"additionalProperties":true,"properties":{"$schema":{"description":"A URL to the JSON Schema for this object.","examples":["https://example.com/WorkPrices.json"],"format":"uri","readOnly":true,"type":"string"},"object":{"description":"Type discriminant. Always work_prices.","enum":["work_prices"],"type":"string","x-vocabulary-closed":true},"quotes":{"description":"One quote per storefront anchor and region. Empty array, never null.","items":{"$ref":"#/components/schemas/PriceQuote"},"type":"array"},"work_id":{"description":"Catalog work id this row is about.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},"required":["object","work_id","quotes"],"type":"object"},"WorkSeriesRef":{"additionalProperties":true,"properties":{"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"id":{"description":"Catalog series id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"},"member_count":{"description":"Members visible under the same NSFW gate.","format":"int64","minimum":0,"type":"integer"},"object":{"description":"Type discriminant. Always series.","enum":["series"],"type":"string","x-vocabulary-closed":true},"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false}},"required":["object","id","display_name","source","member_count"],"type":"object"},"WorkTag":{"additionalProperties":true,"properties":{"display_name":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"id":{"description":"Canonical tag id. null if this row is not mapped.","maxLength":20,"pattern":"^[0-9]+$","type":["string","null"]},"is_sexual":{"description":"Whether this tag is in the sexual family.","type":"boolean"},"source":{"description":"Open vocabulary sources. Must not be used as a discriminant.","maxLength":64,"type":"string","x-vocabulary":"sources","x-vocabulary-closed":false},"spoiler":{"description":"Spoiler level of this attachment.","enum":["none","minor","major"],"type":"string","x-vocabulary-closed":true},"tag_kind":{"description":"Tag vocabulary class. null if unmapped.","enum":["content","meta"],"type":["string","null"],"x-vocabulary-closed":true},"tier":{"description":"Tag inventory tier. null if unmapped.","enum":["core","longtail","hidden"],"type":["string","null"],"x-vocabulary-closed":true},"work_count":{"description":"Works visible under the same NSFW gate. null if unmapped.","format":"int64","minimum":0,"type":["integer","null"]}},"required":["id","display_name","source","tier","tag_kind","spoiler","is_sexual","work_count"],"type":"object"},"WorkTitle":{"additionalProperties":true,"properties":{"is_machine":{"description":"Whether this title is machine-translated.","type":"boolean"},"lang":{"description":"BCP-47 language tag.","format":"bcp47","maxLength":32,"type":"string"},"latin":{"description":"Romanization. null if unrecorded. Must not be used as a discriminant.","maxLength":512,"type":["string","null"]},"title":{"description":"Must not be used as a discriminant.","maxLength":512,"type":"string"},"title_kind":{"description":"search_hint is internal and never appears on this type.","enum":["official","alias","abbreviation"],"type":"string","x-vocabulary-closed":true}},"required":["lang","title","latin","title_kind","is_machine"],"type":"object"}},"securitySchemes":{"applicationKey":{"description":"An application key (nmk_...) minted in the developer portal. Required scopes are named in each operation's description; a key without them answers 403 SCOPE_REQUIRED.","scheme":"bearer","type":"http"},"userToken":{"description":"An OAuth user access token. An application key sent here is refused: /v2/me and /v2/moderation act as a person, not as an app.","scheme":"bearer","type":"http"}}},"info":{"description":"NextMoe public API v2. Public since 2026-08-25: any application mints its own nmk_ key in the developer portal, no approval required. The shape evolves additively; a breaking change to this document fails CI.","title":"NextMoe Public API v2","version":"2.3.0","x-stability":"stable"},"openapi":"3.1.0","paths":{"/v2/catalog/calendar":{"get":{"description":"One collection. month=/year= pick a window; precision= and status= select among the dated month, year-only, and undated views that were three v1 routes. content_limit= gates on the editorial display axis and olang= on the original language (absent = ja plus zh). meta carries today plus, on the dated month window, min_month/max_month/has_prev/has_next for month navigation. Requires an application key. ids= is not accepted. include=titles,refs,intros,covers,companies,ratings,tags,credits fills on this lane; view=full is all of them except credits, which is an explicit ask. On a collection lane titles elects latin/localized and covers elects the two cover slots that grade the base cover — the full titles[] and covers[] arrays, and relations/releases/popularity/playtimes/series/platforms/screenshots/characters/engines/links, are per-record blocks and live on /v2/catalog/works/{id} and its sub-resources; asking for one here is 400 UNKNOWN_INCLUDE.","operationId":"listCatalogCalendar","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Dated month window YYYY-MM. Default: current month in Asia/Tokyo.","explode":false,"in":"query","name":"month","schema":{"description":"Dated month window YYYY-MM. Default: current month in Asia/Tokyo.","maxLength":7,"type":"string"}},{"description":"Year-only window YYYY (v1 pending). Default with precision=year: current year in Asia/Tokyo.","explode":false,"in":"query","name":"year","schema":{"description":"Year-only window YYYY (v1 pending). Default with precision=year: current year in Asia/Tokyo.","maxLength":4,"type":"string"}},{"description":"day, month, or year. year selects the year-only window. day and month use the dated month window.","explode":false,"in":"query","name":"precision","schema":{"description":"day, month, or year. year selects the year-only window. day and month use the dated month window.","maxLength":8,"type":"string"}},{"description":"released, dated, announced, cancelled, unknown. announced and unknown select the undated window. cancelled is empty until the catalog records cancellations.","explode":false,"in":"query","name":"status","schema":{"description":"released, dated, announced, cancelled, unknown. announced and unknown select the undated window. cancelled is empty until the catalog records cancellations.","maxLength":16,"type":"string"}},{"description":"Comma-separated closed editorial axis: sfw, nsfw.","explode":false,"in":"query","name":"content_limit","schema":{"description":"Comma-separated closed editorial axis: sfw, nsfw.","maxLength":32,"type":"string"}},{"description":"Comma-separated BCP-47, or all. Open vocabulary; unknown values match nothing. Absent = the calendar's home population, ja plus zh.","explode":false,"in":"query","name":"olang","schema":{"description":"Comma-separated BCP-47, or all. Open vocabulary; unknown values match nothing. Absent = the calendar's home population, ja plus zh.","maxLength":64,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarList"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Release calendar","tags":["catalog"]}},"/v2/catalog/changes":{"get":{"description":"Works updated recently, oldest first. Keyset-paginated. Requires an application key. ids= is not accepted.\n\n**This is the mirror channel.** If you cache any catalog-owned fact per work — above all the editorial display axis `content_limit`, whose verdict is `claimed_by.content_limit` when the claim block is present and otherwise `nsfw` when `content_rating` is `r18`, `sfw` otherwise — poll this feed instead of sweeping the catalog. Every write that changes a work's claim state, its display axis (the editorial NSFW flag or its content rating), or its existence bumps `updated_at` and surfaces the id here.\n\nBootstrap from an empty cursor: the feed enumerates the whole population oldest-updated-first, so the first drain IS the full inventory. Hydrate each page against /v2/catalog/works with ids= in batches of at most 100, with both gates open (nsfw=true and no content_limit), then keep the cursor and poll it at your own cadence.\n\ngone: an entry carrying `gone: true` has left the public population — drop the mirrored row. Merged-away ids appear here as gone AND in /v2/catalog/redirects, which names the id that replaced them; repoint rather than delete when the redirect exists.\n\nEverything else a work serves — covers, tags, titles, intros, ratings — surfaces best-effort: most of those writers touch the work too, but only claim state, the display axis and existence are promised.","operationId":"listCatalogChanges","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListChange"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Catalog changes feed","tags":["catalog"]}},"/v2/catalog/characters":{"get":{"description":"Keyset-paginated characters. Requires an application key. ids=/refs= is a batch lane and does not paginate. include=gender,birthday,height_cm,weight_kg,measurements,blood_type,instance_of_id,image,figure,traits,aliases,intros,refs fills on every lane, and view=full is all of them; traits are cut at the default spoiler ceiling and follow the nsfw gate, exactly as on the detail face.","operationId":"listCatalogCharacters","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCharacter"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List characters","tags":["catalog"]}},"/v2/catalog/characters/{id}":{"get":{"description":"Character detail. view=full adds gender, birthday, measurements, blood_type, instance_of_id. include=image,figure,traits,aliases,intros,refs adds art, trait, name, description and anchor blocks. spoiler=none|minor|major is the ceiling of the traits block and defaults to none. Merged ids are 404 ENTITY_MERGED. Requires an application key.","operationId":"getCatalogCharacter","parameters":[{"description":"Decimal catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Spoiler ceiling for the traits block: none (default), minor or major. Closed vocabulary; an unknown value is 400. Trait rows above the ceiling are not returned. Only the VNDB-derived trait vocabulary carries a spoiler level, and the default is the safe ceiling.","explode":false,"in":"query","name":"spoiler","schema":{"description":"Spoiler ceiling for the traits block: none (default), minor or major. Closed vocabulary; an unknown value is 400. Trait rows above the ceiling are not returned. Only the VNDB-derived trait vocabulary carries a spoiler level, and the default is the safe ceiling.","maxLength":16,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Character"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Get one character","tags":["catalog"]}},"/v2/catalog/characters/{id}/appearances":{"get":{"description":"Works this character appears in, with roster_role, spoiler, and voice credits. Offset cursor. Requires an application key.","operationId":"getCatalogCharacterAppearances","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAppearance"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Appearances of one character","tags":["catalog"]}},"/v2/catalog/claim-events":{"get":{"description":"Every claim lifecycle transition, newest first by default. sort=recorded_asc walks the same collection oldest-first by id, which is the shape a mirror or a reward cron reads with a watermark. Requires an application key with the claim_events:read scope on top of catalog:read; the scope is granted by an operator, not self-service, because events carry decline reasons and moderator actions.","operationId":"listCatalogClaimEvents","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated event ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated event ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"recorded_desc (default) or recorded_asc. Closed. recorded_asc is the watermark walk a mirror reads.","explode":false,"in":"query","name":"sort","schema":{"description":"recorded_desc (default) or recorded_asc. Closed. recorded_asc is the watermark walk a mirror reads.","maxLength":32,"type":"string"}},{"description":"Tenant key the event was recorded under. Open vocabulary; unknown values match nothing.","explode":false,"in":"query","name":"site","schema":{"description":"Tenant key the event was recorded under. Open vocabulary; unknown values match nothing.","maxLength":64,"type":"string"}},{"description":"The claiming site's own user id of the actor. Not a catalog id.","explode":false,"in":"query","name":"actor_uid","schema":{"description":"The claiming site's own user id of the actor. Not a catalog id.","maxLength":20,"type":"string"}},{"description":"Catalog work id to narrow to one work's claim history.","explode":false,"in":"query","name":"work_id","schema":{"description":"Catalog work id to narrow to one work's claim history.","maxLength":20,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListClaimEvent"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Claim event history","tags":["catalog"]}},"/v2/catalog/companies":{"get":{"description":"Keyset-paginated company registry (v1 labels). Requires an application key. ids=/refs= is a batch lane and does not paginate. has_works=true keeps only companies with works visible under the same nsfw gate. include=aliases,logo fills on every lane; include=intros,links fills on the batch lane only (and on the detail face).","operationId":"listCatalogCompanies","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"true keeps only companies whose work_count is \u003e 0 under the same nsfw gate. Only true or false. Absent = every company.","explode":false,"in":"query","name":"has_works","schema":{"description":"true keeps only companies whose work_count is \u003e 0 under the same nsfw gate. Only true or false. Absent = every company.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCompany"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List companies","tags":["catalog"]}},"/v2/catalog/companies/{id}":{"get":{"description":"Company registry row (v1 labels). include=aliases,logo,intros,links adds the corresponding blocks. Merged ids are 404 ENTITY_MERGED. Requires an application key.","operationId":"getCatalogCompany","parameters":[{"description":"Decimal catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Company"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Get one company","tags":["catalog"]}},"/v2/catalog/companies/{id}/graph":{"get":{"description":"Corporate-family nodes and directed edges around one company. Inverse relations are not emitted. include= is validated against the company token set, so aliases, intros and links are accepted and answered without; only include=logo changes a node, adding the brand mark to the nodes that have one. Merged ids are 404 ENTITY_MERGED. Requires an application key.","operationId":"getCatalogCompanyGraph","parameters":[{"description":"Decimal catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyGraph"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Company family graph","tags":["catalog"]}},"/v2/catalog/credit-names":{"get":{"description":"Keyset-paginated credited names. q= filters by name. Requires an application key. ids=/refs= is a batch lane and does not paginate.","operationId":"listCatalogCreditNames","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Name search. Empty lists by id. Must not be used as a discriminant.","explode":false,"in":"query","name":"q","schema":{"description":"Name search. Empty lists by id. Must not be used as a discriminant.","maxLength":512,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCreditName"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List credit names","tags":["catalog"]}},"/v2/catalog/credit-names/{id}":{"get":{"description":"A credited name, not a person — this is the staff and voice-actor read surface. person_id is null when unlinked; gender and the fuzzy birth parts are person-level facts reached through that link. include=aliases,photo,siblings,intros,links,refs adds the corresponding blocks. Works this name is credited on live at /v2/catalog/credit-names/{id}/credits. Requires an application key.","operationId":"getCatalogCreditName","parameters":[{"description":"Decimal catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditName"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Get one credit name","tags":["catalog"]}},"/v2/catalog/credit-names/{id}/credits":{"get":{"description":"Works this name is credited on. Offset cursor. Requires an application key.","operationId":"getCatalogCreditNameCredits","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListNameCredit"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Credits of one credit name","tags":["catalog"]}},"/v2/catalog/engines":{"get":{"description":"Keyset-paginated engines. Requires an application key. ids=/refs= is a batch lane and does not paginate.","operationId":"listCatalogEngines","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListEngine"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List engines","tags":["catalog"]}},"/v2/catalog/engines/{id}":{"get":{"description":"Engine detail. Requires an application key.","operationId":"getCatalogEngine","parameters":[{"description":"Decimal catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Engine"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Get one engine","tags":["catalog"]}},"/v2/catalog/persons":{"get":{"description":"Keyset-paginated persons. Requires an application key. ids=/refs= is a batch lane and does not paginate.","operationId":"listCatalogPersons","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPerson"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List persons","tags":["catalog"]}},"/v2/catalog/persons/{id}":{"get":{"description":"A person identity that groups credit names. Merged ids are 404 ENTITY_MERGED. Requires an application key.","operationId":"getCatalogPerson","parameters":[{"description":"Decimal catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Person"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Get one person","tags":["catalog"]}},"/v2/catalog/persons/{id}/credit-names":{"get":{"description":"Every credited name linked to this person. Requires an application key.","operationId":"getCatalogPersonCreditNames","parameters":[{"description":"Decimal catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCreditName"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Credit names of one person","tags":["catalog"]}},"/v2/catalog/proposals":{"get":{"description":"Filed proposals, newest first. proposer_uid=+state=merged with include_total=true is the per-contributor tally. This face publishes no patch and no decision note. Requires an application key.","operationId":"listCatalogProposals","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. amendments is the only token on this face. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. amendments is the only token on this face. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated proposal ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated proposal ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"filed_desc is the only key. Closed.","explode":false,"in":"query","name":"sort","schema":{"description":"filed_desc is the only key. Closed.","maxLength":32,"type":"string"}},{"description":"Closed family filter: work, company, character, release, tag, engine, series.","explode":false,"in":"query","name":"object","schema":{"description":"Closed family filter: work, company, character, release, tag, engine, series.","maxLength":32,"type":"string"}},{"description":"Catalog id of one entity. Requires object=.","explode":false,"in":"query","name":"entity_id","schema":{"description":"Catalog id of one entity. Requires object=.","maxLength":20,"type":"string"}},{"description":"Tenant key. Open vocabulary; unknown values match nothing.","explode":false,"in":"query","name":"site","schema":{"description":"Tenant key. Open vocabulary; unknown values match nothing.","maxLength":64,"type":"string"}},{"description":"The claiming site's own user id of the proposer. Not a catalog id.","explode":false,"in":"query","name":"proposer_uid","schema":{"description":"The claiming site's own user id of the proposer. Not a catalog id.","maxLength":20,"type":"string"}},{"description":"Closed: open, merged, declined, withdrawn.","explode":false,"in":"query","name":"state","schema":{"description":"Closed: open, merged, declined, withdrawn.","maxLength":16,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProposalRecord"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Edit proposal history","tags":["catalog"]}},"/v2/catalog/proposals/{id}":{"get":{"description":"Public transparency view: proposer, state, target entity and timestamps. include=amendments adds the amendment chain. Requires an application key.","operationId":"getCatalogProposal","parameters":[{"description":"Proposal id.","in":"path","name":"id","required":true,"schema":{"description":"Proposal id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"Comma-separated blocks. amendments is the only token on this face. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. amendments is the only token on this face. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"basic (default) or full. full adds amendments.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. full adds amendments.","maxLength":16,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD.","maxLength":1024,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalRecord"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"One proposal","tags":["catalog"]}},"/v2/catalog/redirects":{"get":{"description":"Redirects from merged-away ids, oldest first. Keyset-paginated. object= restricts to one family. Requires an application key. ids= is not accepted.","operationId":"listCatalogRedirects","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Restrict to one family. Closed: work, release, character, credit_name, person, company, tag, engine.","explode":false,"in":"query","name":"object","schema":{"description":"Restrict to one family. Closed: work, release, character, credit_name, person, company, tag, engine.","maxLength":32,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRedirect"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Entity merge feed","tags":["catalog"]}},"/v2/catalog/releases":{"get":{"description":"Keyset-paginated dated releases, sorted by date_desc by default. Requires an application key. ids= is a batch lane and does not paginate.","operationId":"listCatalogReleases","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRelease"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List releases","tags":["catalog"]}},"/v2/catalog/releases/{id}":{"get":{"description":"A catalog release. Merged ids are 404 ENTITY_MERGED. r18 parent works are 404 without nsfw=true. Requires an application key.","operationId":"getCatalogRelease","parameters":[{"description":"Decimal catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Release"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Get one release","tags":["catalog"]}},"/v2/catalog/revisions":{"get":{"description":"Every merged edit, newest first by default. sort=recorded_asc walks the same collection oldest-first by id, which is the shape a mirror or a contributor tally reads with a watermark. object=+entity_id= narrows to one entity's history. Requires an application key.","operationId":"listCatalogRevisions","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. diff is the only token. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. diff is the only token. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated revision ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated revision ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"recorded_desc (default) or recorded_asc. Closed.","explode":false,"in":"query","name":"sort","schema":{"description":"recorded_desc (default) or recorded_asc. Closed.","maxLength":32,"type":"string"}},{"description":"Closed family filter: work, company, character, release, tag, engine, series.","explode":false,"in":"query","name":"object","schema":{"description":"Closed family filter: work, company, character, release, tag, engine, series.","maxLength":32,"type":"string"}},{"description":"Catalog id of one entity. Requires object=.","explode":false,"in":"query","name":"entity_id","schema":{"description":"Catalog id of one entity. Requires object=.","maxLength":20,"type":"string"}},{"description":"Tenant key. Open vocabulary; unknown values match nothing.","explode":false,"in":"query","name":"site","schema":{"description":"Tenant key. Open vocabulary; unknown values match nothing.","maxLength":64,"type":"string"}},{"description":"The claiming site's own user id of the actor. Not a catalog id.","explode":false,"in":"query","name":"actor_uid","schema":{"description":"The claiming site's own user id of the actor. Not a catalog id.","maxLength":20,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRevision"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Entity revision history","tags":["catalog"]}},"/v2/catalog/revisions/{id}":{"get":{"description":"include=diff adds the field-level change set against diff_base, or against the preceding revision when diff_base is absent. This id is what POST /v2/moderation/reverts takes. Requires an application key.","operationId":"getCatalogRevision","parameters":[{"description":"Revision id.","in":"path","name":"id","required":true,"schema":{"description":"Revision id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"Comma-separated blocks. diff is the only token. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. diff is the only token. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"basic (default) or full. full adds diff.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. full adds diff.","maxLength":16,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD.","maxLength":1024,"type":"string"}},{"description":"Revision id to diff against. Requires include=diff. Absent means the preceding revision of the same entity.","explode":false,"in":"query","name":"diff_base","schema":{"description":"Revision id to diff against. Requires include=diff. Absent means the preceding revision of the same entity.","maxLength":20,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Revision"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"One revision","tags":["catalog"]}},"/v2/catalog/schemas/{object}":{"get":{"description":"Unauthenticated metadata: include tokens, FULL_SET, and editing-engine fields. include/full_set describe the family's DETAIL face and list_include/list_full_set its collection face, which is narrower on work. Actor capabilities are not evaluated. Unknown object is 404 NOT_FOUND. schemas/release sets creation_disabled.","operationId":"getCatalogSchema","parameters":[{"description":"Family this schema describes. Unknown family is 404 NOT_FOUND.","in":"path","name":"object","required":true,"schema":{"description":"Family this schema describes. Unknown family is 404 NOT_FOUND.","enum":["work","company","character","release","tag","engine","series"],"maxLength":32,"type":"string","x-vocabulary-closed":true}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObjectSchema"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"summary":"Editable-field schema for one family","tags":["catalog"]}},"/v2/catalog/search":{"get":{"description":"Cross-entity search. object= selects the family. Hits are search_result rows with target_object. Requires an application key. cursor= and ids= are not accepted.","operationId":"searchCatalog","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Search string. Empty runs a popularity-ordered listing of that family.","explode":false,"in":"query","name":"q","schema":{"description":"Search string. Empty runs a popularity-ordered listing of that family.","maxLength":512,"type":"string"}},{"description":"Required family: work, character, credit_name, company, tag.","explode":false,"in":"query","name":"object","schema":{"description":"Required family: work, character, credit_name, company, tag.","maxLength":32,"type":"string"}},{"description":"zh or ja. Ignored for works. Must not be used as a discriminant.","explode":false,"in":"query","name":"locale","schema":{"description":"zh or ja. Ignored for works. Must not be used as a discriminant.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSearchHit"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Search catalog entities","tags":["catalog"]}},"/v2/catalog/series":{"get":{"description":"Keyset-paginated series. Requires an application key. ids= is a batch lane and does not paginate. refs= is not resolved: series has no catalog_external_ref entity_type.","operationId":"listCatalogSeries","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListSeries"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List series","tags":["catalog"]}},"/v2/catalog/series/{id}":{"get":{"description":"Series detail. has_nsfw reports whether any member work sits behind the r18 display gate. include=intros,refs adds the corresponding blocks. Requires an application key.","operationId":"getCatalogSeries","parameters":[{"description":"Decimal catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Series"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Get one series","tags":["catalog"]}},"/v2/catalog/stats":{"get":{"description":"Live entity counts. Unauthenticated.","operationId":"getCatalogStats","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogStats"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"summary":"Catalog totals","tags":["catalog"]}},"/v2/catalog/tags":{"get":{"description":"Keyset-paginated canonical tags. Requires an application key. ids=/refs= is a batch lane and does not paginate. has_works=true keeps only tags with works visible under the same nsfw gate.","operationId":"listCatalogTags","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"true keeps only tags whose work_count is \u003e 0 under the same nsfw gate. Only true or false. Absent = every tag.","explode":false,"in":"query","name":"has_works","schema":{"description":"true keeps only tags whose work_count is \u003e 0 under the same nsfw gate. Only true or false. Absent = every tag.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTag"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List tags","tags":["catalog"]}},"/v2/catalog/tags/{id}":{"get":{"description":"Canonical tag. include=intros adds the per-language tag descriptions. Requires an application key.","operationId":"getCatalogTag","parameters":[{"description":"Decimal catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Get one tag","tags":["catalog"]}},"/v2/catalog/traits":{"get":{"description":"Keyset-paginated character traits. Requires an application key. ids= is a batch lane. refs= is not resolved: traits have no catalog_external_ref entity_type.","operationId":"listCatalogTraits","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListTrait"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List traits","tags":["catalog"]}},"/v2/catalog/traits/{id}":{"get":{"description":"A character-trait vocabulary row. Requires an application key.","operationId":"getCatalogTrait","parameters":[{"description":"Decimal catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Trait"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Get one trait","tags":["catalog"]}},"/v2/catalog/works":{"get":{"description":"Keyset-paginated work collection. q= switches to search (sort defaults to relevance). company_id=/tag_id=/series_id= filter the live registry when q= is absent. Requires an application key. view/include/fields/ids/refs/facets follow the v2 collection contract. include=titles,refs,intros,covers,companies,ratings,tags,credits fills on every lane; view=full is all of them except credits, which is an explicit ask. On a collection lane titles elects latin/localized and covers elects the two cover slots that grade the base cover — the full titles[] and covers[] arrays, and relations/releases/popularity/playtimes/series/platforms/screenshots/characters/engines/links, are per-record blocks and live on /v2/catalog/works/{id} and its sub-resources; asking for one here is 400 UNKNOWN_INCLUDE.","operationId":"listCatalogWorks","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Work title search. Switches this collection to the search index; sort defaults to relevance. Must not be used as a discriminant.","explode":false,"in":"query","name":"q","schema":{"description":"Work title search. Switches this collection to the search index; sort defaults to relevance. Must not be used as a discriminant.","maxLength":512,"type":"string"}},{"description":"Closed: all_ages, sensitive, r18. r18 requires nsfw=true.","explode":false,"in":"query","name":"content_rating","schema":{"description":"Closed: all_ages, sensitive, r18. r18 requires nsfw=true.","maxLength":16,"type":"string"}},{"description":"true or false. Absent = no gate.","explode":false,"in":"query","name":"claimed","schema":{"description":"true or false. Absent = no gate.","maxLength":8,"type":"string"}},{"description":"Comma-separated closed states: none, live, draft. pending, declined and hidden are the per-site moderation queue: they need a key holding claim_events:read and a site= naming the caller's own site, and are otherwise not in the vocabulary.","explode":false,"in":"query","name":"claim_state","schema":{"description":"Comma-separated closed states: none, live, draft. pending, declined and hidden are the per-site moderation queue: they need a key holding claim_events:read and a site= naming the caller's own site, and are otherwise not in the vocabulary.","maxLength":128,"type":"string"}},{"description":"Comma-separated closed editorial axis: sfw, nsfw.","explode":false,"in":"query","name":"content_limit","schema":{"description":"Comma-separated closed editorial axis: sfw, nsfw.","maxLength":32,"type":"string"}},{"description":"Claiming site key. Open vocabulary; unknown values match nothing.","explode":false,"in":"query","name":"site","schema":{"description":"Claiming site key. Open vocabulary; unknown values match nothing.","maxLength":64,"type":"string"}},{"description":"The claiming site's own user id of the claim owner. Requires site=. Live registry filter; cannot be combined with q= or search sorts.","explode":false,"in":"query","name":"owner_uid","schema":{"description":"The claiming site's own user id of the claim owner. Requires site=. Live registry filter; cannot be combined with q= or search sorts.","maxLength":20,"type":"string"}},{"description":"Catalog company id. Live registry filter when q= is absent.","explode":false,"in":"query","name":"company_id","schema":{"description":"Catalog company id. Live registry filter when q= is absent.","maxLength":20,"type":"string"}},{"description":"true expands company_id one hop down imprint/subsidiary. Only true or false.","explode":false,"in":"query","name":"company_rollup","schema":{"description":"true expands company_id one hop down imprint/subsidiary. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated canonical tag ids, AND, max 10.","explode":false,"in":"query","name":"tag_id","schema":{"description":"Comma-separated canonical tag ids, AND, max 10.","maxLength":256,"type":"string"}},{"description":"Catalog series id.","explode":false,"in":"query","name":"series_id","schema":{"description":"Catalog series id.","maxLength":20,"type":"string"}},{"description":"Catalog engine id.","explode":false,"in":"query","name":"engine_id","schema":{"description":"Catalog engine id.","maxLength":20,"type":"string"}},{"description":"Open vocabulary platform token. Unknown matches nothing.","explode":false,"in":"query","name":"platform","schema":{"description":"Open vocabulary platform token. Unknown matches nothing.","maxLength":64,"type":"string"}},{"description":"YYYY-MM-DD inclusive, earliest release per work.","explode":false,"in":"query","name":"released_after","schema":{"description":"YYYY-MM-DD inclusive, earliest release per work.","maxLength":10,"type":"string"}},{"description":"YYYY-MM-DD inclusive, earliest release per work.","explode":false,"in":"query","name":"released_before","schema":{"description":"YYYY-MM-DD inclusive, earliest release per work.","maxLength":10,"type":"string"}},{"description":"Comma-separated BCP-47, or all. Open vocabulary; unknown values match nothing. Absent = no language gate.","explode":false,"in":"query","name":"olang","schema":{"description":"Comma-separated BCP-47, or all. Open vocabulary; unknown values match nothing. Absent = no language gate.","maxLength":64,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWork"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List catalog works","tags":["catalog"]}},"/v2/catalog/works/{id}":{"get":{"description":"Work detail. spoiler=none|minor|major is the ceiling of the tags block and defaults to none. Merged ids are 404 ENTITY_MERGED with Link rel=canonical. r18 is 404 without nsfw=true. Requires an application key.","operationId":"getCatalogWork","parameters":[{"description":"Decimal catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Spoiler ceiling for the tags block: none (default), minor or major. Closed vocabulary; an unknown value is 400. Tag rows above the ceiling are not returned. Only the VNDB-derived tag vocabulary carries a spoiler level — Bangumi and DLsite folksonomy publish no spoiler concept, so those rows read none — and the default is the safe ceiling.","explode":false,"in":"query","name":"spoiler","schema":{"description":"Spoiler ceiling for the tags block: none (default), minor or major. Closed vocabulary; an unknown value is 400. Tag rows above the ceiling are not returned. Only the VNDB-derived tag vocabulary carries a spoiler level — Bangumi and DLsite folksonomy publish no spoiler concept, so those rows read none — and the default is the safe ceiling.","maxLength":16,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Work"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Get one catalog work","tags":["catalog"]}},"/v2/catalog/works/{id}/characters":{"get":{"description":"Roster characters. Same items as include=characters. Requires an application key.","operationId":"getCatalogWorkCharacters","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWorkCharacter"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List characters of one work","tags":["catalog"]}},"/v2/catalog/works/{id}/covers":{"get":{"description":"Work cover rows. Same items as include=covers. Requires an application key.","operationId":"getCatalogWorkCovers","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCover"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List covers of one work","tags":["catalog"]}},"/v2/catalog/works/{id}/credits":{"get":{"description":"Credits grouped by role. Same items as include=credits. Requires an application key.","operationId":"getCatalogWorkCredits","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCreditGroup"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List credits of one work","tags":["catalog"]}},"/v2/catalog/works/{id}/engines":{"get":{"description":"Engines. Same items as include=engines. Requires an application key.","operationId":"getCatalogWorkEngines","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWorkEngineRef"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List engines of one work","tags":["catalog"]}},"/v2/catalog/works/{id}/intros":{"get":{"description":"Intros. Same items as include=intros. Requires an application key.","operationId":"getCatalogWorkIntros","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIntro"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List intros of one work","tags":["catalog"]}},"/v2/catalog/works/{id}/links":{"get":{"description":"Outbound links. Same items as include=links. Requires an application key.","operationId":"getCatalogWorkLinks","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWorkLink"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List links of one work","tags":["catalog"]}},"/v2/catalog/works/{id}/ratings":{"get":{"description":"Source ratings. Same items as include=ratings. Requires an application key.","operationId":"getCatalogWorkRatings","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRating"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List ratings of one work","tags":["catalog"]}},"/v2/catalog/works/{id}/relations":{"get":{"description":"Related works. Same items as include=relations. Requires an application key.","operationId":"getCatalogWorkRelations","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRelation"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List relations of one work","tags":["catalog"]}},"/v2/catalog/works/{id}/releases":{"get":{"description":"Releases of this work. Same items as include=releases. Requires an application key.","operationId":"getCatalogWorkReleases","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRelease"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List releases of one work","tags":["catalog"]}},"/v2/catalog/works/{id}/screenshots":{"get":{"description":"Work screenshots. Same items as include=screenshots. Requires an application key.","operationId":"getCatalogWorkScreenshots","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListScreenshot"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List screenshots of one work","tags":["catalog"]}},"/v2/catalog/works/{id}/series":{"get":{"description":"Series memberships. Same items as include=series. Requires an application key.","operationId":"getCatalogWorkSeries","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWorkSeriesRef"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List series of one work","tags":["catalog"]}},"/v2/catalog/works/{id}/tags":{"get":{"description":"Tags attached to this work. Same items as include=tags. spoiler=none|minor|major is the ceiling of this page and defaults to none, exactly as on the work detail face. Requires an application key.","operationId":"getCatalogWorkTags","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20.","maxLength":8,"type":"string"}},{"description":"Spoiler ceiling for this page: none (default), minor or major. Closed vocabulary; an unknown value is 400. Tag rows above the ceiling are not returned. Only the VNDB-derived tag vocabulary carries a spoiler level — Bangumi and DLsite folksonomy publish no spoiler concept, so those rows read none — and the default is the safe ceiling.","explode":false,"in":"query","name":"spoiler","schema":{"description":"Spoiler ceiling for this page: none (default), minor or major. Closed vocabulary; an unknown value is 400. Tag rows above the ceiling are not returned. Only the VNDB-derived tag vocabulary carries a spoiler level — Bangumi and DLsite folksonomy publish no spoiler concept, so those rows read none — and the default is the safe ceiling.","maxLength":16,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWorkTag"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"List tags of one work","tags":["catalog"]}},"/v2/me/claims":{"get":{"description":"Claims the bearer acted on. kind=submitted (the default) keeps the ones the bearer owns, kind=audited the ones the bearer only reviewed, kind=all everything they touched. claim_state= and site= narrow further, and site= also scopes first_acted_at/acted_count. Requires a user access token.","operationId":"listMyClaims","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated closed states: none, live, draft, pending, declined, hidden.","explode":false,"in":"query","name":"claim_state","schema":{"description":"Comma-separated closed states: none, live, draft, pending, declined, hidden.","maxLength":128,"type":"string"}},{"description":"submitted (default) keeps works the bearer owns, audited keeps works the bearer reviewed but does not own, all keeps everything the bearer touched.","explode":false,"in":"query","name":"kind","schema":{"description":"submitted (default) keeps works the bearer owns, audited keeps works the bearer reviewed but does not own, all keeps everything the bearer touched.","maxLength":16,"type":"string"}},{"description":"Claiming site key. Open vocabulary; unknown values match nothing. Also scopes first_acted_at and acted_count.","explode":false,"in":"query","name":"site","schema":{"description":"Claiming site key. Open vocabulary; unknown values match nothing. Also scopes first_acted_at and acted_count.","maxLength":64,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListClaimRecord"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"List my claims","tags":["me"]},"post":{"description":"Mint or claim a work. work_id claims an existing catalog work. refs= claims the work they resolve to, or mints one from display_name when none match. site_work_id with display_name and neither work_id nor refs mints a work anchored to the site's own id. field_values carries an editing-engine work field map onto any mint lane and may be sent alone, without work_id, refs or site_work_id; it is refused with work_id, and refs that already resolve to a work answer 409 instead of dropping it. A caller holding catalog.edit.trusted mints straight to live rather than pending. Requires a user access token bound to a catalog site.","operationId":"createMyClaim","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateClaimInputBody"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimRecord"}}},"description":"Created","headers":{"ETag":{"schema":{"description":"Opaque validator. Send it back as If-Match to move this claim.","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Submit a claim","tags":["me"]}},"/v2/me/claims/{id}":{"delete":{"description":"Deletes a draft the caller owns; a live or pending claim must be withdrawn to draft first (PATCH state=withdrawn). This soft-deletes the catalog work row and writes no claim event. 204 with no body. Requires a user access token.","operationId":"deleteMyClaim","parameters":[{"description":"Catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Delete a draft claim","tags":["me"]},"get":{"description":"id is the catalog work id. Requires a user access token.","operationId":"getMyClaim","parameters":[{"description":"Catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimRecord"}}},"description":"OK","headers":{"ETag":{"schema":{"description":"Opaque validator. Send it back as If-Match to move this claim.","type":"string"}}}},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Get one of my claims","tags":["me"]},"patch":{"description":"PATCH {state: live|pending|withdrawn}. live publishes a draft without review, pending submits it for review, withdrawn returns it to draft. The owner may act, and an unowned claim is adopted by its first claimant. If-Match required. Requires a user access token bound to a catalog site.","operationId":"patchMyClaim","parameters":[{"description":"Catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"Current ETag. Required; its absence is 428 PRECONDITION_REQUIRED.","in":"header","name":"If-Match","required":true,"schema":{"description":"Current ETag. Required; its absence is 428 PRECONDITION_REQUIRED.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchClaimInputBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimRecord"}}},"description":"OK","headers":{"ETag":{"schema":{"description":"Opaque validator. Send it back as If-Match to move this claim.","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Move a claim the caller owns","tags":["me"]}},"/v2/me/cover-votes":{"get":{"description":"Every cover the bearer has voted up. Requires a user access token.","operationId":"listMyCoverVotes","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCoverVote"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"List my cover votes","tags":["me"]}},"/v2/me/cover-votes/{cover_id}":{"delete":{"description":"204 with no body. Requires a user access token.","operationId":"deleteMyCoverVote","parameters":[{"description":"Catalog cover row id.","in":"path","name":"cover_id","required":true,"schema":{"description":"Catalog cover row id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Withdraw a cover vote","tags":["me"]},"put":{"description":"Only vote=up is stored. One ballot per work. Requires a user access token.","operationId":"putMyCoverVote","parameters":[{"description":"Catalog cover row id.","in":"path","name":"cover_id","required":true,"schema":{"description":"Catalog cover row id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutCoverVoteInputBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoverVote"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Cast a cover vote","tags":["me"]}},"/v2/me/edit-images":{"post":{"description":"multipart/form-data with preset and file. Returns the hash an edit proposal carries in a cover or screenshot row. Requires a user access token bound to a catalog site.","operationId":"uploadMyEditImage","requestBody":{"content":{"multipart/form-data":{"encoding":{"file":{"contentType":"application/octet-stream"},"preset":{"contentType":"text/plain"}},"schema":{"properties":{"file":{"contentEncoding":"binary","contentMediaType":"application/octet-stream","description":"The image bytes. The ceiling is the service's own body limit, not a field constraint.","format":"binary","type":"string"},"preset":{"description":"Which editor slot these bytes are for.","enum":["cover","screenshot"],"type":"string"}},"required":["preset","file"],"type":"object"}}}},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditImage"}}},"description":"Created","headers":{"Location":{"schema":{"description":"Absolute URL of the stored image.","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Upload an image for an edit proposal","tags":["me"]}},"/v2/me/news":{"get":{"description":"Items under the sources bound to the bearer, pending included. Keyset-paginated. Requires a user access token.","operationId":"listMyNews","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListNewsSubmission"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"List my news items","tags":["me"]},"post":{"description":"Always lands on pending: publishing is a human step. source must be bound to the bearer and active. Requires a user access token.","operationId":"createMyNews","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNewsInputBody"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsSubmission"}}},"description":"Created","headers":{"ETag":{"schema":{"type":"string"}},"Location":{"schema":{"type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Submit a news item","tags":["me"]}},"/v2/me/news/{id}":{"get":{"description":"Carries an ETag for If-Match. Requires a user access token.","operationId":"getMyNewsItem","parameters":[{"description":"News item id.","in":"path","name":"id","required":true,"schema":{"description":"News item id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsSubmission"}}},"description":"OK","headers":{"ETag":{"schema":{"type":"string"}}}},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Get one of my news items","tags":["me"]},"patch":{"description":"While pending, edits title/summary/source_url/banner_hash/work_ids and sends the item back for machine scoring. Once published the only legal transition is {\"status\":\"withdrawn\"} with If-Match. rejected is terminal.","operationId":"patchMyNewsItem","parameters":[{"description":"News item id.","in":"path","name":"id","required":true,"schema":{"description":"News item id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"Current ETag. Required to withdraw.","in":"header","name":"If-Match","schema":{"description":"Current ETag. Required to withdraw.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchNewsSubmissionInputBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsSubmission"}}},"description":"OK","headers":{"ETag":{"schema":{"type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Edit or withdraw one of my news items","tags":["me"]}},"/v2/me/playtimes":{"get":{"description":"The bearer user's playtime rows. work_ids= is a batch read. Requires a user access token. Any app may call this; playtime:read is not required.","operationId":"listMyPlaytimes","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated work ids, max 100. Batch read, no pagination.","explode":false,"in":"query","name":"work_ids","schema":{"description":"Comma-separated work ids, max 100. Batch read, no pagination.","maxLength":4096,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListUserPlaytime"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"List my playtimes","tags":["me"]},"post":{"description":"207 Multi-Status. Each item is a playtime or a problem. Requires a user access token. Any app may call this; playtime:write is not required.","operationId":"batchMyPlaytimes","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchPlaytimesInputBody"}}},"required":true},"responses":{"207":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPlaytimeBatchItem"}}},"description":"Multi-Status"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Batch write playtimes","tags":["me"]}},"/v2/me/playtimes/{work_id}":{"delete":{"description":"204 with no body. Requires a user access token. Any app may call this; playtime:write is not required.","operationId":"deleteMyPlaytime","parameters":[{"description":"Catalog work id.","in":"path","name":"work_id","required":true,"schema":{"description":"Catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Delete my playtime on one work","tags":["me"]},"get":{"description":"404 when the user has never reported. Requires a user access token. Any app may call this; playtime:read is not required.","operationId":"getMyPlaytime","parameters":[{"description":"Catalog work id.","in":"path","name":"work_id","required":true,"schema":{"description":"Catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPlaytime"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Get my playtime on one work","tags":["me"]},"put":{"description":"Absolute minutes. Naturally idempotent. Requires a user access token. Any app may call this; playtime:write is not required.","operationId":"putMyPlaytime","parameters":[{"description":"Catalog work id.","in":"path","name":"work_id","required":true,"schema":{"description":"Catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PutPlaytimeInputBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPlaytime"}}},"description":"OK"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Replace my playtime on one work","tags":["me"]}},"/v2/me/proposals":{"get":{"description":"The bearer's own proposals. state= is a closed vocabulary and an unknown value is 400. object= or entity_type= narrows to one family, entity_id= to one entity — on this lane entity_id= is accepted without a family because every row already belongs to the caller. Requires a user access token.","operationId":"listMyProposals","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Closed: open, pending, merged, declined, withdrawn. Unknown value is 400 UNKNOWN_ENUM_VALUE.","explode":false,"in":"query","name":"state","schema":{"description":"Closed: open, pending, merged, declined, withdrawn. Unknown value is 400 UNKNOWN_ENUM_VALUE.","maxLength":16,"type":"string"}},{"description":"Closed family filter: work, company, character, release, tag, engine, series.","explode":false,"in":"query","name":"object","schema":{"description":"Closed family filter: work, company, character, release, tag, engine, series.","maxLength":32,"type":"string"}},{"description":"Editing-engine type, e.g. catalog.work. The same spelling POST /v2/me/proposals takes in its body. Names the same filter as object=; sending both with different families is 400.","explode":false,"in":"query","name":"entity_type","schema":{"description":"Editing-engine type, e.g. catalog.work. The same spelling POST /v2/me/proposals takes in its body. Names the same filter as object=; sending both with different families is 400.","maxLength":64,"type":"string"}},{"description":"Catalog id of one entity. Accepted alone on this lane, which is already fenced to the bearer's own proposals; pair it with object= or entity_type= when ids collide across families.","explode":false,"in":"query","name":"entity_id","schema":{"description":"Catalog id of one entity. Accepted alone on this lane, which is already fenced to the bearer's own proposals; pair it with object= or entity_type= when ids collide across families.","maxLength":20,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProposalRecord"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"List my proposals","tags":["me"]},"post":{"description":"Requires a user access token bound to a catalog site.","operationId":"createMyProposal","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProposalInputBody"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalRecord"}}},"description":"Created","headers":{"ETag":{"schema":{"description":"Opaque validator. Send it back as If-Match to amend, withdraw, or decide this proposal.","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"File a proposal","tags":["me"]}},"/v2/me/proposals/{id}":{"get":{"description":"Requires a user access token.","operationId":"getMyProposal","parameters":[{"description":"Proposal id.","in":"path","name":"id","required":true,"schema":{"description":"Proposal id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"Comma-separated blocks: amendments, patch. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks: amendments, patch. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"basic (default) or full. full adds amendments and patch.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. full adds amendments and patch.","maxLength":16,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalRecord"}}},"description":"OK","headers":{"ETag":{"schema":{"description":"Opaque validator. Send it back as If-Match to amend, withdraw, or decide this proposal.","type":"string"}}}},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Get one of my proposals","tags":["me"]},"patch":{"description":"If-Match required. Requires a user access token.","operationId":"patchMyProposal","parameters":[{"description":"Proposal id.","in":"path","name":"id","required":true,"schema":{"description":"Proposal id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"Current ETag. Required; its absence is 428 PRECONDITION_REQUIRED.","in":"header","name":"If-Match","required":true,"schema":{"description":"Current ETag. Required; its absence is 428 PRECONDITION_REQUIRED.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchProposalInputBody"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalRecord"}}},"description":"OK","headers":{"ETag":{"schema":{"description":"Opaque validator. Send it back as If-Match to amend, withdraw, or decide this proposal.","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Amend or withdraw a proposal","tags":["me"]}},"/v2/me/proposals/{id}/amendments":{"post":{"description":"If-Match required. Requires a user access token.","operationId":"amendMyProposal","parameters":[{"description":"Proposal id.","in":"path","name":"id","required":true,"schema":{"description":"Proposal id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"Current ETag. Required; its absence is 428 PRECONDITION_REQUIRED.","in":"header","name":"If-Match","required":true,"schema":{"description":"Current ETag. Required; its absence is 428 PRECONDITION_REQUIRED.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmendProposalInputBody"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalRecord"}}},"description":"Created","headers":{"ETag":{"schema":{"description":"Opaque validator. Send it back as If-Match to amend, withdraw, or decide this proposal.","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Append an amendment","tags":["me"]}},"/v2/moderation/claims":{"get":{"description":"Claims on the token site awaiting a decision. claim_state= selects which states the queue lists and defaults to pending; the decision face also acts on live, draft and declined (ban) and on hidden (unban), so those are listable here too. Oldest submission first. ids= and refs= are not accepted. Requires a user access token with review authority.","operationId":"listModerationClaims","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated closed states: live, draft, pending, declined, hidden. Default pending. hidden is how a banned claim is found for unban.","explode":false,"in":"query","name":"claim_state","schema":{"description":"Comma-separated closed states: live, draft, pending, declined, hidden. Default pending. hidden is how a banned claim is found for unban.","maxLength":128,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListClaimRecord"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Moderation claim queue","tags":["moderation"]}},"/v2/moderation/claims/{id}":{"get":{"description":"id is the catalog work id. Site-fenced. Requires a user access token bound to a catalog site.","operationId":"getModerationClaim","parameters":[{"description":"Catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimRecord"}}},"description":"OK","headers":{"ETag":{"schema":{"description":"Opaque validator. Send it back as If-Match to move this claim.","type":"string"}}}},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Get one moderation claim","tags":["moderation"]}},"/v2/moderation/claims/{id}/decisions":{"post":{"description":"decision=approve|decline|ban|unban. unban restores the state the claim was hidden from. If-Match required, and the ETag comes from GET /v2/moderation/claims/{id}. Requires the catalog.claim.review permission.","operationId":"decideModerationClaim","parameters":[{"description":"Catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"Current ETag. Required; its absence is 428 PRECONDITION_REQUIRED.","in":"header","name":"If-Match","required":true,"schema":{"description":"Current ETag. Required; its absence is 428 PRECONDITION_REQUIRED.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecideClaimInputBody"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClaimDecisionRecord"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Decide a claim","tags":["moderation"]}},"/v2/moderation/proposals":{"get":{"description":"Open proposals on the token site. The whole queue requires a catalog review permission. object= (or entity_type=) with entity_id= narrows it to one entity, which that entity's owner may read without one — the same owner-review channel the editing engine resolves per field. entity_id= without a family is 422.","operationId":"listModerationProposals","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Closed family filter: work, company, character, release, tag, engine, series.","explode":false,"in":"query","name":"object","schema":{"description":"Closed family filter: work, company, character, release, tag, engine, series.","maxLength":32,"type":"string"}},{"description":"Editing-engine type, e.g. catalog.work. Names the same filter as object=; sending both with different families is 400.","explode":false,"in":"query","name":"entity_type","schema":{"description":"Editing-engine type, e.g. catalog.work. Names the same filter as object=; sending both with different families is 400.","maxLength":64,"type":"string"}},{"description":"Catalog id of one entity. Requires object= or entity_type=. Narrows the queue to that entity, which its owner may read without a review permission.","explode":false,"in":"query","name":"entity_id","schema":{"description":"Catalog id of one entity. Requires object= or entity_type=. Narrows the queue to that entity, which its owner may read without a review permission.","maxLength":20,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProposalRecord"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Moderation proposal queue","tags":["moderation"]}},"/v2/moderation/proposals/{id}":{"get":{"description":"Site-fenced. include=patch adds the proposed and effective patches a decision is taken on. The ETag is the validator POST /v2/moderation/proposals/{id}/decisions takes as If-Match.","operationId":"getModerationProposal","parameters":[{"description":"Proposal id.","in":"path","name":"id","required":true,"schema":{"description":"Proposal id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"Comma-separated blocks: amendments, patch. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks: amendments, patch. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"basic (default) or full. full adds amendments and patch.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. full adds amendments and patch.","maxLength":16,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalRecord"}}},"description":"OK","headers":{"ETag":{"schema":{"description":"Opaque validator. Send it back as If-Match to amend, withdraw, or decide this proposal.","type":"string"}}}},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Get one moderation proposal","tags":["moderation"]}},"/v2/moderation/proposals/{id}/decisions":{"post":{"description":"decision=merge|decline. If-Match required.","operationId":"decideModerationProposal","parameters":[{"description":"Proposal id.","in":"path","name":"id","required":true,"schema":{"description":"Proposal id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}},{"description":"Current ETag. Required; its absence is 428 PRECONDITION_REQUIRED.","in":"header","name":"If-Match","required":true,"schema":{"description":"Current ETag. Required; its absence is 428 PRECONDITION_REQUIRED.","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecideProposalInputBody"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalDecisionRecord"}}},"description":"Created"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Decide a proposal","tags":["moderation"]}},"/v2/moderation/reverts":{"post":{"description":"Body names revision_id. Requires a user access token bound to a catalog site.","operationId":"revertModeration","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevertInputBody"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProposalRecord"}}},"description":"Created","headers":{"ETag":{"schema":{"description":"Opaque validator. Send it back as If-Match to amend, withdraw, or decide this proposal.","type":"string"}}}},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Conflict"},"412":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Failed"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"428":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Precondition Required"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Revert to a revision","tags":["moderation"]}},"/v2/moderation/snapshots/{object}/{id}":{"get":{"description":"Registered field values. Requires a user access token.","operationId":"getModerationSnapshot","parameters":[{"description":"Family: work, company, character, release, tag, engine, series.","in":"path","name":"object","required":true,"schema":{"description":"Family: work, company, character, release, tag, engine, series.","maxLength":32,"type":"string"}},{"description":"Catalog id.","in":"path","name":"id","required":true,"schema":{"description":"Catalog id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotRecord"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"userToken":[]}],"summary":"Current edit snapshot","tags":["moderation"]}},"/v2/news":{"get":{"description":"Published news feed. Keyset-paginated. Unauthenticated. Attribution fields are required on every item. lane=, source=, published_after= and published_before= narrow the population, and include_total= counts the narrowed one. ids= and refs= are not accepted.","operationId":"listNews","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated closed lanes: news, column. Absent means both. An unknown lane is 400 UNKNOWN_ENUM_VALUE.","explode":false,"in":"query","name":"lane","schema":{"description":"Comma-separated closed lanes: news, column. Absent means both. An unknown lane is 400 UNKNOWN_ENUM_VALUE.","maxLength":64,"type":"string"}},{"description":"Comma-separated news source keys, at most 20. Open vocabulary; an unknown key matches nothing rather than failing.","explode":false,"in":"query","name":"source","schema":{"description":"Comma-separated news source keys, at most 20. Open vocabulary; an unknown key matches nothing rather than failing.","maxLength":256,"type":"string"}},{"description":"Inclusive lower bound on published_at. RFC 3339 UTC ending in Z.","explode":false,"in":"query","name":"published_after","schema":{"description":"Inclusive lower bound on published_at. RFC 3339 UTC ending in Z.","maxLength":40,"type":"string"}},{"description":"Inclusive upper bound on published_at. RFC 3339 UTC ending in Z.","explode":false,"in":"query","name":"published_before","schema":{"description":"Inclusive upper bound on published_at. RFC 3339 UTC ending in Z.","maxLength":40,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListNewsItem"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"summary":"List news items","tags":["news"]}},"/v2/news/sources":{"get":{"description":"Every attributed news source. Unauthenticated.","operationId":"listNewsSources","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListNewsSource"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"summary":"List news sources","tags":["news"]}},"/v2/news/{id}":{"get":{"description":"A published news item. Withdrawn items are 404. Unauthenticated. source and source_url are always present.","operationId":"getNewsItem","parameters":[{"description":"Decimal news item id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal news item id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsItem"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"summary":"Get one news item","tags":["news"]}},"/v2/problems":{"get":{"description":"The closed registry of top-level error codes. Keyset-paginated. Unauthenticated.","operationId":"listProblemTypes","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListProblemType"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"}},"summary":"List every top-level error code","tags":["meta"]}},"/v2/problems/reasons":{"get":{"description":"The closed registry of field-level reasons. Unauthenticated. Values in this list never appear as top-level codes.","operationId":"listProblemReasons","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListObjectProblemReason"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"}},"summary":"List every field-level error reason","tags":["meta"]}},"/v2/problems/{code}":{"get":{"description":"Returns the registry entry for one code. Unknown codes are 404 NOT_FOUND, not 422 — the path parameter is a lookup key, not a closed enum.","operationId":"getProblemType","parameters":[{"description":"Top-level error code from the registry (UPPER_SNAKE).","in":"path","name":"code","required":true,"schema":{"description":"Top-level error code from the registry (UPPER_SNAKE).","maxLength":63,"pattern":"^[A-Z][A-Z0-9_]*[A-Z0-9]$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemType"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"}},"summary":"Get one top-level error code","tags":["meta"]}},"/v2/store/prices":{"get":{"description":"Cached storefront price quotes for up to 100 catalog works. Unauthenticated. Quotes are cached observations; read fetched_at / expires_at / stale. pending means a fetch is in flight, retry shortly. The batch lane never waits on a cold miss.","operationId":"listStorePrices","parameters":[{"description":"Comma-separated decimal catalog work ids, at most 100. Duplicates are collapsed. Unknown ids are listed in missing[].","explode":false,"in":"query","name":"ids","required":true,"schema":{"description":"Comma-separated decimal catalog work ids, at most 100. Duplicates are collapsed. Unknown ids are listed in missing[].","maxLength":2100,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWorkPrices"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"summary":"Get storefront prices for many works","tags":["store"]}},"/v2/store/prices/{id}":{"get":{"description":"Cached storefront price quotes for one catalog work. Unauthenticated. Quotes are cached observations; read fetched_at / expires_at / stale. pending means a fetch is in flight, retry shortly.","operationId":"getStoreWorkPrices","parameters":[{"description":"Decimal catalog work id.","in":"path","name":"id","required":true,"schema":{"description":"Decimal catalog work id.","maxLength":20,"minLength":1,"pattern":"^[0-9]+$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkPrices"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"summary":"Get storefront prices for one work","tags":["store"]}},"/v2/store/purchase-links/{product_id}":{"get":{"description":"Mints (or returns) the short links this application sends readers to. The purchase link belongs to your application alone — use it verbatim, because the click counter behind it is what settlement reads. coupon_url and campaign are present only while a campaign is running. Requires an application key with the store:read scope.","operationId":"getStorePurchaseLinks","parameters":[{"description":"DLsite product number. RJ is doujin, VJ is commercial.","in":"path","name":"product_id","required":true,"schema":{"description":"DLsite product number. RJ is doujin, VJ is commercial.","maxLength":10,"pattern":"^(RJ|VJ)[0-9]{6,8}$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorePurchaseLinks"}}},"description":"OK","headers":{"Cache-Control":{"schema":{"description":"Always private: every link is keyed to the calling application, so a shared cache would hand one site's clicks to another.","type":"string"}}}},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"502":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Gateway"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Get purchase and coupon links for one product","tags":["store"]}},"/v2/store/stats":{"get":{"description":"Daily clicks on the links this application minted, over a JST-day range of at most 92 days. The bearer application is the subject — this replaces v1's /v1/store/me/stats. Requires an application key with the store:read scope.","operationId":"getStoreStats","parameters":[{"description":"First JST day to cover, YYYY-MM-DD. Optional; defaults to 29 days before to.","explode":false,"in":"query","name":"from","schema":{"description":"First JST day to cover, YYYY-MM-DD. Optional; defaults to 29 days before to.","maxLength":10,"type":"string"}},{"description":"Last JST day to cover, YYYY-MM-DD. Optional; defaults to today. from and to must be at most 92 days apart.","explode":false,"in":"query","name":"to","schema":{"description":"Last JST day to cover, YYYY-MM-DD. Optional; defaults to today. from and to must be at most 92 days apart.","maxLength":10,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreStats"}}},"description":"OK","headers":{"Cache-Control":{"schema":{"description":"Always private: the numbers belong to the calling application alone.","type":"string"}}}},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Forbidden"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Service Unavailable"}},"security":[{"applicationKey":[]}],"summary":"Click statistics for my links","tags":["store"]}},"/v2/vocabularies":{"get":{"description":"Closed and seed-open vocabularies. Keyset-paginated. Unauthenticated.","operationId":"listVocabularies","parameters":[{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","explode":false,"in":"query","name":"cursor","schema":{"description":"Opaque keyset cursor from a prior next_cursor. Must start with cur_.","maxLength":512,"type":"string"}},{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","explode":false,"in":"query","name":"limit","schema":{"description":"Page size 1-100, default 20. Values above 100 are 400 LIMIT_TOO_LARGE, not clamped.","maxLength":8,"type":"string"}},{"description":"basic (default) or full. Closed vocabulary.","explode":false,"in":"query","name":"view","schema":{"description":"basic (default) or full. Closed vocabulary.","maxLength":16,"type":"string"}},{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","explode":false,"in":"query","name":"include","schema":{"description":"Comma-separated blocks. Unknown token is 400 UNKNOWN_INCLUDE.","maxLength":1024,"type":"string"}},{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","explode":false,"in":"query","name":"fields","schema":{"description":"Comma-separated top-level keys after view/include. Unknown token is 400 UNKNOWN_FIELD. object and id are always kept.","maxLength":1024,"type":"string"}},{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"ids","schema":{"description":"Comma-separated ids, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","explode":false,"in":"query","name":"refs","schema":{"description":"Comma-separated source:external_id, max 100. Batch lane: no pagination.","maxLength":4096,"type":"string"}},{"description":"true to include total. Only true or false.","explode":false,"in":"query","name":"include_total","schema":{"description":"true to include total. Only true or false.","maxLength":8,"type":"string"}},{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","explode":false,"in":"query","name":"facets","schema":{"description":"Comma-separated facet names. Unknown token is 400 UNKNOWN_FACET.","maxLength":512,"type":"string"}},{"description":"Closed per-collection sort key.","explode":false,"in":"query","name":"sort","schema":{"description":"Closed per-collection sort key.","maxLength":32,"type":"string"}},{"description":"true includes r18. false or absent hides r18. Only true or false.","explode":false,"in":"query","name":"nsfw","schema":{"description":"true includes r18. false or absent hides r18. Only true or false.","maxLength":8,"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListVocabulary"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Bad Request"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"}},"summary":"List published vocabularies","tags":["meta"]}},"/v2/vocabularies/{name}":{"get":{"description":"Returns every published value of one vocabulary. Unknown names are 404 NOT_FOUND.","operationId":"getVocabulary","parameters":[{"description":"Vocabulary name. The path segment of /v2/vocabularies/{name}.","in":"path","name":"name","required":true,"schema":{"description":"Vocabulary name. The path segment of /v2/vocabularies/{name}.","maxLength":63,"pattern":"^[a-z][a-z0-9_]*$","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Vocabulary"}}},"description":"OK"},"304":{"description":"Not Modified. The representation is unchanged."},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Not Found"},"422":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unprocessable Entity"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Too Many Requests"},"500":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Internal Server Error"}},"summary":"Get one vocabulary","tags":["meta"]}}},"servers":[{"description":"Production. Paths in this document already include the /v2 prefix.","url":"https://api.nextmoe.dev"}]}