# space.zelk.movies.watched

> A single viewing (the dated diary entry) of a movie. The record key is deterministic: <idprefix><id>-<watchedAt as YYYYMMDDHHmm UTC>, e.g. tmdb99861-202302042259. What Popfeed already models lives in Popfeed records, linked here: the title marked as watched (social.popfeed.feed.listItem) and the rating and review text (social.popfeed.feed.review). This record keeps what Popfeed has no place for: the date of each viewing, its moods and its favorite character.

- Kind: record
- Record key: any
- Authority: movies.zelk.space
- Lexicon: 1
- Published by [zelk.space](https://lexicon.garden/identity/did:plc:jjshdbukte3twegd25atxydo), the NSID's authority

## Links

- [Documentation](https://lexicon.garden/lexicon/did:plc:jjshdbukte3twegd25atxydo/space.zelk.movies.watched)
- [Schema JSON](https://lexicon.garden/lexicon/did:plc:jjshdbukte3twegd25atxydo/space.zelk.movies.watched/schema.json)
- [Analytics](https://lexicon.garden/lexicon/did:plc:jjshdbukte3twegd25atxydo/space.zelk.movies.watched/analytics)

## Record (`space.zelk.movies.watched`)

Type: record · key any

### Properties

- `comment` (string): Legacy: review texts now live in the linked Popfeed review (popfeedReview). Read only from records without one.
  - Constraints: maxLength: 10000, maxGraphemes: 3000, nullable
- `createdAt` (string · datetime, required)
- `favoriteCharacter` (string): Identifier of the viewer's favorite character (opaque, source-specific).
  - Constraints: maxLength: 128, nullable
- `liked` (boolean): Whether the viewer liked it.
- `popfeedItem` (string · at-uri): The social.popfeed.feed.listItem marking the movie as watched (on the watched_movies list).
- `popfeedReview` (string · at-uri): The social.popfeed.feed.review holding the rating and review text of this viewing. Replies and reactions go to it, so zelk.tv and Popfeed share one thread.
- `precision` (string): How precise watchedAt is. Imported history is often only minute-accurate.
  - Constraints: knownValues: day | minute | second
- `rating` (integer): Legacy: ratings now live in the linked Popfeed review (popfeedReview). Read only from records without one.
  - Constraints: minimum: 1, maximum: 10, nullable
- `reaction` (array): Moods of this viewing: shocked, touched, amused, scared, bored, thrilled, confused, tense (Bingers' feelings; zelk only: Popfeed has none).
  - Constraints: maxLength: 8, nullable
  - `items` (string)
    - Constraints: maxLength: 64
- `source` (string): Where the record came from, e.g. import:trakt.
  - Constraints: maxLength: 128
- `subject` (ref, required): External identifiers of the movie.
  - Reference: `#subject`
- `watchedAt` (string · datetime, required): When the movie was watched.

## #subject (`space.zelk.movies.watched#subject`)

Type: object

At least one identifier should be present.

### Properties

- `imdb` (string): IMDb id, e.g. tt2395427.
  - Constraints: maxLength: 32
- `tmdb` (integer): TMDB movie id.

## Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A single viewing (the dated diary entry) of a movie. The record key is deterministic: <idprefix><id>-<watchedAt as YYYYMMDDHHmm UTC>, e.g. tmdb99861-202302042259. What Popfeed already models lives in Popfeed records, linked here: the title marked as watched (social.popfeed.feed.listItem) and the rating and review text (social.popfeed.feed.review). This record keeps what Popfeed has no place for: the date of each viewing, its moods and its favorite character.",
      "key": "any",
      "record": {
        "nullable": [
          "rating",
          "comment",
          "reaction",
          "favoriteCharacter"
        ],
        "properties": {
          "comment": {
            "description": "Legacy: review texts now live in the linked Popfeed review (popfeedReview). Read only from records without one.",
            "maxGraphemes": 3000,
            "maxLength": 10000,
            "type": "string"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "favoriteCharacter": {
            "description": "Identifier of the viewer's favorite character (opaque, source-specific).",
            "maxLength": 128,
            "type": "string"
          },
          "liked": {
            "description": "Whether the viewer liked it.",
            "type": "boolean"
          },
          "popfeedItem": {
            "description": "The social.popfeed.feed.listItem marking the movie as watched (on the watched_movies list).",
            "format": "at-uri",
            "type": "string"
          },
          "popfeedReview": {
            "description": "The social.popfeed.feed.review holding the rating and review text of this viewing. Replies and reactions go to it, so zelk.tv and Popfeed share one thread.",
            "format": "at-uri",
            "type": "string"
          },
          "precision": {
            "description": "How precise watchedAt is. Imported history is often only minute-accurate.",
            "knownValues": [
              "day",
              "minute",
              "second"
            ],
            "type": "string"
          },
          "rating": {
            "description": "Legacy: ratings now live in the linked Popfeed review (popfeedReview). Read only from records without one.",
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          },
          "reaction": {
            "description": "Moods of this viewing: shocked, touched, amused, scared, bored, thrilled, confused, tense (Bingers' feelings; zelk only: Popfeed has none).",
            "items": {
              "maxLength": 64,
              "type": "string"
            },
            "maxLength": 8,
            "type": "array"
          },
          "source": {
            "description": "Where the record came from, e.g. import:trakt.",
            "maxLength": 128,
            "type": "string"
          },
          "subject": {
            "description": "External identifiers of the movie.",
            "ref": "#subject",
            "type": "ref"
          },
          "watchedAt": {
            "description": "When the movie was watched.",
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "subject",
          "watchedAt",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "subject": {
      "description": "At least one identifier should be present.",
      "properties": {
        "imdb": {
          "description": "IMDb id, e.g. tt2395427.",
          "maxLength": 32,
          "type": "string"
        },
        "tmdb": {
          "description": "TMDB movie id.",
          "type": "integer"
        }
      },
      "type": "object"
    }
  },
  "id": "space.zelk.movies.watched",
  "lexicon": 1
}
```
