One entry in a creator's Catalog — a game, video, album, essay, or other work they have released. This record is the public LISTING for that work: it says what the work is and where to reach it, and it never carries the work itself. It exists only while the work is publicly listed, and whether a particular person may open the work is decided by the service hosting it, never by this record.
tid
Timestamp-based ID
Properties
access
ref
#access
Optional
No description available.
credits
array
of
ref
#credit
Optional
Who made this work and what of it they made — the creator's own liner notes. Optional and additive: a work with no credits simply lists none, which says nothing against it (credits are asserted, never assumed). A credit naming an on-network identity by DID is withheld until that identity accepts it (see `org.anthers.creditAcceptance`), because a public claim about a third party should not be made in their name without their consent. The `types` flags are published exactly as the creator entered them — including `ai` — so a stranger can build a real filter on machine-made work.
maxLength: 100 itemsdescription
string
Optional
The creator's own summary of the work. Plain text, so that every consumer can render it safely without a sanitizer.
maxLength: 30000 bytesmaxGraphemes: 3000 graphemeskind
string
Required
What sort of work this is, in the sense of how it is handled — which player or reader opens it. Named `kind` rather than `type` because a record already carries `$type`, and two differently-scoped `type` fields in one object is a needless trap for anyone reading the JSON. `comic` and `music` are narrower than `ebook` and `audio`, which mean a book that is not a comic and audio that is not music. This is an open set: consumers must accept values not listed here, because new mediums are added over time.
maxLength: 64 bytestext, video, music, audio, image, comic, ebook, game, software, physical, servicereleasedAt
string
datetime
Required
When the work was released to the public. This is the work's own date and the only one the record carries — record-creation time is already encoded in the record key, so a separate field for it would be a second, weaker answer to a question the key already answers.
title
string
Required
The work's name, as its creator wrote it. Plain text for the same reason the description is: every consumer should be able to render it without a sanitizer. Required and never empty — a listing that names nothing is worse than no listing, so a work without a title is not published rather than published anonymously.
maxLength: 3000 bytesmaxGraphemes: 300 graphemesurl
string
uri
Required
Where this work can be reached. Usually its page on the service hosting it; a creator hosting their own Catalog points at their own. Deliberately not assumed to be an anthers.org address, because a creator's work outliving any one host is the point.
View raw schema
{
"description": "One entry in a creator's Catalog — a game, video, album, essay, or other work they have released. This record is the public LISTING for that work: it says what the work is and where to reach it, and it never carries the work itself. It exists only while the work is publicly listed, and whether a particular person may open the work is decided by the service hosting it, never by this record.",
"key": "tid",
"record": {
"properties": {
"access": {
"ref": "#access",
"type": "ref"
},
"credits": {
"description": "Who made this work and what of it they made — the creator's own liner notes. Optional and additive: a work with no credits simply lists none, which says nothing against it (credits are asserted, never assumed). A credit naming an on-network identity by DID is withheld until that identity accepts it (see `org.anthers.creditAcceptance`), because a public claim about a third party should not be made in their name without their consent. The `types` flags are published exactly as the creator entered them — including `ai` — so a stranger can build a real filter on machine-made work.",
"items": {
"ref": "#credit",
"type": "ref"
},
"maxLength": 100,
"type": "array"
},
"description": {
"description": "The creator's own summary of the work. Plain text, so that every consumer can render it safely without a sanitizer.",
"maxGraphemes": 3000,
"maxLength": 30000,
"type": "string"
},
"kind": {
"description": "What sort of work this is, in the sense of how it is handled — which player or reader opens it. Named `kind` rather than `type` because a record already carries `$type`, and two differently-scoped `type` fields in one object is a needless trap for anyone reading the JSON. `comic` and `music` are narrower than `ebook` and `audio`, which mean a book that is not a comic and audio that is not music. This is an open set: consumers must accept values not listed here, because new mediums are added over time.",
"knownValues": [
"text",
"video",
"music",
"audio",
"image",
"comic",
"ebook",
"game",
"software",
"physical",
"service"
],
"maxLength": 64,
"type": "string"
},
"releasedAt": {
"description": "When the work was released to the public. This is the work's own date and the only one the record carries — record-creation time is already encoded in the record key, so a separate field for it would be a second, weaker answer to a question the key already answers.",
"format": "datetime",
"type": "string"
},
"title": {
"description": "The work's name, as its creator wrote it. Plain text for the same reason the description is: every consumer should be able to render it without a sanitizer. Required and never empty — a listing that names nothing is worse than no listing, so a work without a title is not published rather than published anonymously.",
"maxGraphemes": 300,
"maxLength": 3000,
"type": "string"
},
"url": {
"description": "Where this work can be reached. Usually its page on the service hosting it; a creator hosting their own Catalog points at their own. Deliberately not assumed to be an anthers.org address, because a creator's work outliving any one host is the point.",
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"title",
"url",
"releasedAt"
],
"type": "object"
},
"type": "record"
}