social.coves.community.post.update

coves.social

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Update an existing post",
      "errors": [
        {
          "description": "Post not found",
          "name": "PostNotFound"
        },
        {
          "description": "User is not authorized to edit this post",
          "name": "NotAuthorized"
        },
        {
          "description": "The post changed between being read and being written, so the edit was composed against content that no longer stands. Re-read the post and re-apply the edit; the server does not merge, because re-applying server-side would silently erase a change the editor never saw.",
          "name": "ConcurrentModification"
        },
        {
          "description": "The service holds no credentials it can write to the author's repository with. Distinct from an expired caller session: signing in again is the fix for a person and no fix at all for a non-interactive author whose stored grant was revoked.",
          "name": "NoAuthorCredentials"
        },
        {
          "description": "DEPRECATED, retained for backward compatibility: no edit window is enforced - a post is editable by its author for as long as it exists. This name ships on main; removing a declared error is a non-additive break, so it stays declared until a new-NSID change retires it.",
          "name": "EditWindowExpired"
        },
        {
          "description": "DEPRECATED, retained for backward compatibility: never emitted. Refusals this once covered are answered by name instead - an edit naming a different community is an InvalidRequest validation error, and a post whose collection is not editable is the same. This name ships on main; removing a declared error is a non-additive break, so it stays declared until a new-NSID change retires it.",
          "name": "InvalidUpdate"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "content": {
              "description": "Updated content - main text for text posts, description for media, etc.",
              "maxGraphemes": 50000,
              "maxLength": 500000,
              "type": "string"
            },
            "editNote": {
              "description": "DEPRECATED, retained for backward compatibility: an optional note explaining the edit. This field ships on main; removing it is a non-additive break, so it stays declared as an optional input until a new-NSID change retires it.",
              "maxGraphemes": 300,
              "maxLength": 3000,
              "type": "string"
            },
            "embed": {
              "description": "Updated embedded content (note: changing embed type may be restricted)",
              "refs": [
                "social.coves.embed.images",
                "social.coves.embed.video",
                "social.coves.embed.external",
                "social.coves.embed.post"
              ],
              "type": "union"
            },
            "facets": {
              "description": "Updated annotations for rich text (mentions, links, formatting, block structure)",
              "items": {
                "ref": "social.coves.richtext.facet",
                "type": "ref"
              },
              "maxLength": 200,
              "type": "array"
            },
            "labels": {
              "description": "Updated self-applied content labels",
              "ref": "com.atproto.label.defs#selfLabels",
              "type": "ref"
            },
            "langs": {
              "description": "Updated languages (ISO 639-1)",
              "items": {
                "format": "language",
                "type": "string"
              },
              "maxLength": 3,
              "type": "array"
            },
            "tags": {
              "description": "Updated topic tags",
              "items": {
                "maxGraphemes": 64,
                "maxLength": 640,
                "type": "string"
              },
              "maxLength": 8,
              "type": "array"
            },
            "title": {
              "description": "Updated title",
              "maxGraphemes": 300,
              "maxLength": 3000,
              "type": "string"
            },
            "uri": {
              "description": "AT-URI of the post to update",
              "format": "at-uri",
              "type": "string"
            }
          },
          "required": [
            "uri"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "cid": {
              "description": "New CID of the updated post",
              "format": "cid",
              "type": "string"
            },
            "uri": {
              "description": "AT-URI of the updated post",
              "format": "at-uri",
              "type": "string"
            }
          },
          "required": [
            "uri",
            "cid"
          ],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "id": "social.coves.community.post.update",
  "lexicon": 1
}

Validate Record

Validate a record against social.coves.community.post.update

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:web:coves.social
CID
bafyreidkpnqlqdbus5l5bhlbabpkc4j5k3hc4ujzk552iniqv4ey2xr73e
Indexed At
2026-09-07 20:28 UTC
AT-URI
at://did:web:coves.social/com.atproto.lexicon.schema/social.coves.community.post.update

Version History (2 versions)

Referenced Schemas (6)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • Update an existing comment's content, facets, embed, languages, or labels. Threading references (reply.root and reply.parent) are immutable and cannot be changed.

  • Update a scheduled post. Only PENDING posts can be updated.

  • Create a new post in a community

  • Edit an existing app.didpic.feed.post record via putRecord on the authenticated viewer's own PDS, mediated by the AppView using its server-held session (confidential OAuth client only). The image, aspectRatio, and creat…

  • Edit an artwork the authenticated member owns. Only the fields present in the request change; the rest of the record is preserved as it stands at the member's PDS.

Lexicon Garden

@