social.coves.community.post.update
Schema Diff
+13 -5
Compatibility Analysis
Backward Compatible
Backward compatible. 2 non-breaking changes.
Non-Breaking Changes (2)
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "social.coves.community.post.update:input.content", sort: "maxLength", old_value: "100000", new_value: "500000" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "social.coves.community.post.update:input.content", sort: "maxGraphemes", old_value: "10000", new_value: "50000" }
Migration Guidance
Constraint Changes
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "social.coves.community.post.update:input.content", sort: "maxGraphemes", old_value: "10000", new_value: "50000" }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "social.coves.community.post.update:input.content", sort: "maxLength", old_value: "100000", new_value: "500000" }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "Update an existing post",
6
6
"errors": [
7
7
{
8
8
"description": "Post not found",
9
9
"name": "PostNotFound"
10
10
},
11
11
{
12
12
"description": "User is not authorized to edit this post",
13
13
"name": "NotAuthorized"
14
14
},
15
15
{
16
-
"description": "Edit window has expired (posts can only be edited within 24 hours)",
16
+
"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.",
17
+
"name": "ConcurrentModification"
18
+
},
19
+
{
20
+
"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.",
21
+
"name": "NoAuthorCredentials"
22
+
},
23
+
{
24
+
"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.",
17
25
"name": "EditWindowExpired"
18
26
},
19
27
{
20
-
"description": "Invalid update operation (e.g., changing post type)",
28
+
"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.",
21
29
"name": "InvalidUpdate"
22
30
}
23
31
],
24
32
"input": {
25
33
"encoding": "application/json",
26
34
"schema": {
27
35
"properties": {
28
36
"content": {
29
37
"description": "Updated content - main text for text posts, description for media, etc.",
30
-
"maxGraphemes": 10000,
31
-
"maxLength": 100000,
38
+
"maxGraphemes": 50000,
39
+
"maxLength": 500000,
32
40
"type": "string"
33
41
},
34
42
"editNote": {
35
-
"description": "Optional note explaining the edit",
43
+
"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.",
36
44
"maxGraphemes": 300,
37
45
"maxLength": 3000,
38
46
"type": "string"
39
47
},
40
48
"embed": {
41
49
"description": "Updated embedded content (note: changing embed type may be restricted)",
42
50
"refs": [
43
51
"social.coves.embed.images",
44
52
"social.coves.embed.video",
45
53
"social.coves.embed.external",
46
54
"social.coves.embed.post"
47
55
],
48
56
"type": "union"
49
57
},
50
58
"facets": {
51
59
"description": "Updated annotations for rich text (mentions, links, formatting, block structure)",
52
60
"items": {
53
61
"ref": "social.coves.richtext.facet",
54
62
"type": "ref"
55
63
},
56
64
"maxLength": 200,
57
65
"type": "array"
58
66
},
59
67
"labels": {
60
68
"description": "Updated self-applied content labels",
61
69
"ref": "com.atproto.label.defs#selfLabels",
62
70
"type": "ref"
63
71
},
64
72
"langs": {
65
73
"description": "Updated languages (ISO 639-1)",
66
74
"items": {
67
75
"format": "language",
68
76
"type": "string"
69
77
},
70
78
"maxLength": 3,
71
79
"type": "array"
72
80
},
73
81
"tags": {
74
82
"description": "Updated topic tags",
75
83
"items": {
76
84
"maxGraphemes": 64,
77
85
"maxLength": 640,
78
86
"type": "string"
79
87
},
80
88
"maxLength": 8,
81
89
"type": "array"
82
90
},
83
91
"title": {
84
92
"description": "Updated title",
85
93
"maxGraphemes": 300,
86
94
"maxLength": 3000,
87
95
"type": "string"
88
96
},
89
97
"uri": {
90
98
"description": "AT-URI of the post to update",
91
99
"format": "at-uri",
92
100
"type": "string"
93
101
}
94
102
},
95
103
"required": [
96
104
"uri"
97
105
],
98
106
"type": "object"
99
107
}
100
108
},
101
109
"output": {
102
110
"encoding": "application/json",
103
111
"schema": {
104
112
"properties": {
105
113
"cid": {
106
114
"description": "New CID of the updated post",
107
115
"format": "cid",
108
116
"type": "string"
109
117
},
110
118
"uri": {
111
119
"description": "AT-URI of the updated post",
112
120
"format": "at-uri",
113
121
"type": "string"
114
122
}
115
123
},
116
124
"required": [
117
125
"uri",
118
126
"cid"
119
127
],
120
128
"type": "object"
121
129
}
122
130
},
123
131
"type": "procedure"
124
132
}
125
133
},
126
134
"id": "social.coves.community.post.update",
127
135
"lexicon": 1
128
136
}