# app.zeens.post

> Published by [zeens.app](https://lexicon.garden/identity/did:plc:pwpuqwge6g7xrjmfbw73uycw)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:pwpuqwge6g7xrjmfbw73uycw/app.zeens.post)
- [Documentation](https://lexicon.garden/lexicon/did:plc:pwpuqwge6g7xrjmfbw73uycw/app.zeens.post/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:pwpuqwge6g7xrjmfbw73uycw/app.zeens.post/examples)

## Definitions

### `app.zeens.post`

**Type**: `record`

A Zeens-only photo post. Structurally a subset of app.bsky.feed.post, but written to a Zeens-owned collection so it is NOT indexed by the Bluesky AppView and never appears on Bluesky. Used when the creator disables 'Post to Bluesky'. Carries the same app.zeens.v marker and supports the full Zeens feature set (likes, reposts, replies, collections, search, EXIF, film, location) via app.zeens.postMeta, which references this record by AT-URI.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `app.zeens.film` | `integer` | No | Present (value 1) when the post is marked as a film/analog shot. |
| `app.zeens.v` | `integer` | Yes | Zeens version marker (always 1). Lets firehose + Lua filters recognise Zeens content. |
| `createdAt` | `string` (datetime) | Yes | Client-declared timestamp when this post was originally created. |
| `embed` | `union` | No | Image embed. Reuses Bluesky embed lexicons so existing image-rendering paths work unchanged. |
| `facets` | `array` | No | Rich-text facets (mentions, links, tags) over text, reusing the Bluesky richtext lexicon. |
| `langs` | `array` | No | Indicates language(s) of the caption text. |
| `reply` | `ref` → `#replyRef` | No | Reply metadata for Zeens-only threads. parent/root reference app.zeens.post URIs. |
| `text` | `string` | No | Caption text. Matches app.bsky.feed.post#text semantics. |

### `app.zeens.post#replyRef`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `parent` | `ref` → `com.atproto.repo.strongRef` | Yes |  |
| `root` | `ref` → `com.atproto.repo.strongRef` | Yes |  |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A Zeens-only photo post. Structurally a subset of app.bsky.feed.post, but written to a Zeens-owned collection so it is NOT indexed by the Bluesky AppView and never appears on Bluesky. Used when the creator disables 'Post to Bluesky'. Carries the same app.zeens.v marker and supports the full Zeens feature set (likes, reposts, replies, collections, search, EXIF, film, location) via app.zeens.postMeta, which references this record by AT-URI.",
      "key": "tid",
      "record": {
        "properties": {
          "app.zeens.film": {
            "description": "Present (value 1) when the post is marked as a film/analog shot.",
            "type": "integer"
          },
          "app.zeens.v": {
            "description": "Zeens version marker (always 1). Lets firehose + Lua filters recognise Zeens content.",
            "type": "integer"
          },
          "createdAt": {
            "description": "Client-declared timestamp when this post was originally created.",
            "format": "datetime",
            "type": "string"
          },
          "embed": {
            "description": "Image embed. Reuses Bluesky embed lexicons so existing image-rendering paths work unchanged.",
            "refs": [
              "app.bsky.embed.images",
              "app.bsky.embed.recordWithMedia"
            ],
            "type": "union"
          },
          "facets": {
            "description": "Rich-text facets (mentions, links, tags) over text, reusing the Bluesky richtext lexicon.",
            "items": {
              "ref": "app.bsky.richtext.facet",
              "type": "ref"
            },
            "type": "array"
          },
          "langs": {
            "description": "Indicates language(s) of the caption text.",
            "items": {
              "format": "language",
              "type": "string"
            },
            "maxLength": 3,
            "type": "array"
          },
          "reply": {
            "description": "Reply metadata for Zeens-only threads. parent/root reference app.zeens.post URIs.",
            "ref": "#replyRef",
            "type": "ref"
          },
          "text": {
            "description": "Caption text. Matches app.bsky.feed.post#text semantics.",
            "maxGraphemes": 300,
            "maxLength": 3000,
            "type": "string"
          }
        },
        "required": [
          "createdAt",
          "app.zeens.v"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "replyRef": {
      "properties": {
        "parent": {
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        },
        "root": {
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        }
      },
      "required": [
        "root",
        "parent"
      ],
      "type": "object"
    }
  },
  "id": "app.zeens.post",
  "lexicon": 1
}
```
