# cv.atmos.feed.post

> A post that lives on Atmos and is not shown on Bluesky. It sits in the author's own repo and is public like every record there: any AT Protocol app can read it, but apps that do not know this type do not show it, so it does not appear on Bluesky. When the author shares it to Bluesky, an app.bsky.feed.post is written at the same record key and crosspost names it; the two records are one post. Treat crosspost as the link between them, never the shared record key alone, and only when crosspost.uri is an app.bsky.feed.post in the same repo (same DID) at the same record key as this record: consumers must ignore any other crosspost.

- Kind: record
- Record key: tid
- Authority: feed.atmos.cv
- Lexicon: 1
- Published by [lexicons.atmos.cv](https://lexicon.garden/identity/did:plc:phscmolkgirxzzjoatkfd5xx), the NSID's authority

## Links

- [Documentation](https://lexicon.garden/lexicon/did:plc:phscmolkgirxzzjoatkfd5xx/cv.atmos.feed.post)
- [Schema JSON](https://lexicon.garden/lexicon/did:plc:phscmolkgirxzzjoatkfd5xx/cv.atmos.feed.post/schema.json)
- [Analytics](https://lexicon.garden/lexicon/did:plc:phscmolkgirxzzjoatkfd5xx/cv.atmos.feed.post/analytics)

## Record (`cv.atmos.feed.post`)

Type: record · key tid

### Properties

- `createdAt` (string · datetime, required): When the post was made.
- `crosspost` (ref): The app.bsky.feed.post the author shared this post as, written at the same record key. Absent until the post is shared. The uri MUST be an app.bsky.feed.post in the same repo (same DID) and at the same record key as this record; consumers must ignore a crosspost that is not.
  - Reference: `com.atproto.repo.strongRef`
- `embed` (union): Images, a video, a link card, a quoted post, or a quote with media. Open, so other media can be added later.
  - One of: `app.bsky.embed.images`, `app.bsky.embed.video`, `app.bsky.embed.external`, `app.bsky.embed.record`, `app.bsky.embed.recordWithMedia`
- `facets` (array): Annotations of the text (mentions, links, tags), byte-offset indexed.
  - Constraints: maxLength: 500
  - `items` (ref)
    - Reference: `app.bsky.richtext.facet`
- `labels` (union): Self-applied labels, such as a content warning.
  - One of: `com.atproto.label.defs#selfLabels`
- `langs` (array): Languages the post is written in.
  - Constraints: maxLength: 3
  - `items` (string · language)
- `reply` (ref)
  - Reference: `#replyRef`
- `tags` (array): Additional hashtags, in addition to any in the text and facets.
  - Constraints: maxLength: 8
  - `items` (string)
    - Constraints: maxLength: 640, maxGraphemes: 64
- `text` (string, required): The post text. Mentions, links and tags are marked by facets.
  - Constraints: maxLength: 30000, maxGraphemes: 3000

## #replyRef (`cv.atmos.feed.post#replyRef`)

Type: object

### Properties

- `parent` (ref, required)
  - Reference: `com.atproto.repo.strongRef`
- `root` (ref, required)
  - Reference: `com.atproto.repo.strongRef`

## Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A post that lives on Atmos and is not shown on Bluesky. It sits in the author's own repo and is public like every record there: any AT Protocol app can read it, but apps that do not know this type do not show it, so it does not appear on Bluesky. When the author shares it to Bluesky, an app.bsky.feed.post is written at the same record key and crosspost names it; the two records are one post. Treat crosspost as the link between them, never the shared record key alone, and only when crosspost.uri is an app.bsky.feed.post in the same repo (same DID) at the same record key as this record: consumers must ignore any other crosspost.",
      "key": "tid",
      "record": {
        "properties": {
          "createdAt": {
            "description": "When the post was made.",
            "format": "datetime",
            "type": "string"
          },
          "crosspost": {
            "description": "The app.bsky.feed.post the author shared this post as, written at the same record key. Absent until the post is shared. The uri MUST be an app.bsky.feed.post in the same repo (same DID) and at the same record key as this record; consumers must ignore a crosspost that is not.",
            "ref": "com.atproto.repo.strongRef",
            "type": "ref"
          },
          "embed": {
            "closed": false,
            "description": "Images, a video, a link card, a quoted post, or a quote with media. Open, so other media can be added later.",
            "refs": [
              "app.bsky.embed.images",
              "app.bsky.embed.video",
              "app.bsky.embed.external",
              "app.bsky.embed.record",
              "app.bsky.embed.recordWithMedia"
            ],
            "type": "union"
          },
          "facets": {
            "description": "Annotations of the text (mentions, links, tags), byte-offset indexed.",
            "items": {
              "ref": "app.bsky.richtext.facet",
              "type": "ref"
            },
            "maxLength": 500,
            "type": "array"
          },
          "labels": {
            "description": "Self-applied labels, such as a content warning.",
            "refs": [
              "com.atproto.label.defs#selfLabels"
            ],
            "type": "union"
          },
          "langs": {
            "description": "Languages the post is written in.",
            "items": {
              "format": "language",
              "type": "string"
            },
            "maxLength": 3,
            "type": "array"
          },
          "reply": {
            "ref": "#replyRef",
            "type": "ref"
          },
          "tags": {
            "description": "Additional hashtags, in addition to any in the text and facets.",
            "items": {
              "maxGraphemes": 64,
              "maxLength": 640,
              "type": "string"
            },
            "maxLength": 8,
            "type": "array"
          },
          "text": {
            "description": "The post text. Mentions, links and tags are marked by facets.",
            "maxGraphemes": 3000,
            "maxLength": 30000,
            "type": "string"
          }
        },
        "required": [
          "text",
          "createdAt"
        ],
        "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": "cv.atmos.feed.post",
  "lexicon": 1
}
```
