# org.anthers.work

> Published by [anthers.org](https://lexicon.garden/identity/did:plc:75xx6l27mt7a3uxoga5ka4qt)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:75xx6l27mt7a3uxoga5ka4qt/org.anthers.work)
- [Documentation](https://lexicon.garden/lexicon/did:plc:75xx6l27mt7a3uxoga5ka4qt/org.anthers.work/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:75xx6l27mt7a3uxoga5ka4qt/org.anthers.work/examples)

## Definitions

### `org.anthers.work#access`

**Type**: `object`

Whether reaching this work costs anything. ⚠️ A display hint and NEVER an authorization: it describes what a stranger would find, not what any particular viewer is entitled to, and a consumer that treats it as permission is wrong. An object rather than a bare string so that further context — such as where access is granted — can be added later without a breaking change.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `state` | `string` | Yes | `open` — anyone may reach the work at no cost. `gated` — reaching it requires supporting the creator or buying it, on terms shown on the work's own page. Terms themselves are deliberately absent: a price shown apart from the total a person actually pays is misleading, and this record cannot control how a consumer renders it. |

### `org.anthers.work#credit`

**Type**: `object`

One credit on the work: a contribution, its kind, and where a person made it, who. The three parts answer different questions and are kept apart so each can be absent on its own terms. `types` is the only required one — a credit must assert something.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `contributor` | `union` | No | Who is credited. A DID names an on-network identity and is withheld until that identity accepts (see `org.anthers.creditAcceptance`); a name names an off-network contributor and is published as entered. A union rather than a bare string or a single object, so a third contributor kind can join later as a permitted addition. Optional: a credit with no `created` among its types may name nobody — a license or a machine makes nothing a person owns. Required whenever `created` is among the types, alone or in a blend — anything a human made must name who. |
| `role` | `string` | No | The contribution this credit names, as a freeform title in the industry's own words — 'Written by', 'Cut by', 'Sound recording'. Freeform rather than a fixed list, because the useful roles differ by medium and a closed set would force every work into categories that fit none of them. Optional: a credit that is only a type assertion (a bare `ai` row, or an anonymous license) may leave the role unnamed. |
| `types` | `array` | Yes | The kind(s) of contribution, published as entered. `created` — a person made this part. `licensed` — this part is pre-existing material used under a right (the source may be named or not, at the creator's choice; many licenses do not require attribution). `ai` — this part was machine-made: it records THAT it was, never which model, because a model owns nothing and can be granted nothing. An open set on purpose: a `created+ai` blend and the other non-empty subsets each mean what they say, and Anthers blesses no canonical 'counts as AI' reading of a blend — whether one clears a filter is the reader's own call, and two filters reading a blend opposite ways is a feature, not a defect. |

### `org.anthers.work#didContributor`

**Type**: `object`

A contributor identified by an on-network identity — their own DID. Naming one is a public claim about a third party, so it is withheld from the work record until that identity accepts it; an unconfirmed claim rendered as fact would travel somewhere a later correction cannot follow.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | Yes | The contributor's DID. |

### `org.anthers.work`

**Type**: `record`

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`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `access` | `ref` → `#access` | No |  |
| `credits` | `array` | No | 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. |
| `description` | `string` | No | The creator's own summary of the work. Plain text, so that every consumer can render it safely without a sanitizer. |
| `kind` | `string` | Yes | 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. |
| `releasedAt` | `string` (datetime) | Yes | 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` | Yes | 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. |
| `url` | `string` (uri) | Yes | 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. |

### `org.anthers.work#namedContributor`

**Type**: `object`

A contributor with no network identity, named by the creator — an off-platform collaborator, or a source by title. Stays unconfirmed by construction: there is no actor who can accept.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes | The contributor or source, as the creator entered it. |
| `url` | `string` (uri) | No | A link giving context — a portfolio, a source page. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "access": {
      "description": "Whether reaching this work costs anything. ⚠️ A display hint and NEVER an authorization: it describes what a stranger would find, not what any particular viewer is entitled to, and a consumer that treats it as permission is wrong. An object rather than a bare string so that further context — such as where access is granted — can be added later without a breaking change.",
      "properties": {
        "state": {
          "description": "`open` — anyone may reach the work at no cost. `gated` — reaching it requires supporting the creator or buying it, on terms shown on the work's own page. Terms themselves are deliberately absent: a price shown apart from the total a person actually pays is misleading, and this record cannot control how a consumer renders it.",
          "knownValues": [
            "open",
            "gated"
          ],
          "maxLength": 32,
          "type": "string"
        }
      },
      "required": [
        "state"
      ],
      "type": "object"
    },
    "credit": {
      "description": "One credit on the work: a contribution, its kind, and where a person made it, who. The three parts answer different questions and are kept apart so each can be absent on its own terms. `types` is the only required one — a credit must assert something.",
      "properties": {
        "contributor": {
          "description": "Who is credited. A DID names an on-network identity and is withheld until that identity accepts (see `org.anthers.creditAcceptance`); a name names an off-network contributor and is published as entered. A union rather than a bare string or a single object, so a third contributor kind can join later as a permitted addition. Optional: a credit with no `created` among its types may name nobody — a license or a machine makes nothing a person owns. Required whenever `created` is among the types, alone or in a blend — anything a human made must name who.",
          "refs": [
            "#didContributor",
            "#namedContributor"
          ],
          "type": "union"
        },
        "role": {
          "description": "The contribution this credit names, as a freeform title in the industry's own words — 'Written by', 'Cut by', 'Sound recording'. Freeform rather than a fixed list, because the useful roles differ by medium and a closed set would force every work into categories that fit none of them. Optional: a credit that is only a type assertion (a bare `ai` row, or an anonymous license) may leave the role unnamed.",
          "maxGraphemes": 120,
          "maxLength": 1200,
          "type": "string"
        },
        "types": {
          "description": "The kind(s) of contribution, published as entered. `created` — a person made this part. `licensed` — this part is pre-existing material used under a right (the source may be named or not, at the creator's choice; many licenses do not require attribution). `ai` — this part was machine-made: it records THAT it was, never which model, because a model owns nothing and can be granted nothing. An open set on purpose: a `created+ai` blend and the other non-empty subsets each mean what they say, and Anthers blesses no canonical 'counts as AI' reading of a blend — whether one clears a filter is the reader's own call, and two filters reading a blend opposite ways is a feature, not a defect.",
          "items": {
            "knownValues": [
              "created",
              "licensed",
              "ai"
            ],
            "maxLength": 16,
            "type": "string"
          },
          "minLength": 1,
          "type": "array"
        }
      },
      "required": [
        "types"
      ],
      "type": "object"
    },
    "didContributor": {
      "description": "A contributor identified by an on-network identity — their own DID. Naming one is a public claim about a third party, so it is withheld from the work record until that identity accepts it; an unconfirmed claim rendered as fact would travel somewhere a later correction cannot follow.",
      "properties": {
        "did": {
          "description": "The contributor's DID.",
          "format": "did",
          "type": "string"
        }
      },
      "required": [
        "did"
      ],
      "type": "object"
    },
    "main": {
      "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"
    },
    "namedContributor": {
      "description": "A contributor with no network identity, named by the creator — an off-platform collaborator, or a source by title. Stays unconfirmed by construction: there is no actor who can accept.",
      "properties": {
        "name": {
          "description": "The contributor or source, as the creator entered it.",
          "maxGraphemes": 300,
          "maxLength": 3000,
          "type": "string"
        },
        "url": {
          "description": "A link giving context — a portfolio, a source page.",
          "format": "uri",
          "maxLength": 2048,
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    }
  },
  "id": "org.anthers.work",
  "lexicon": 1
}
```
