app.atmobb.forum.membership
Schema Diff
+66 -0
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 27 non-breaking changes.
Breaking Changes (1)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.atmobb.forum.membership#closedPeriod", src: "app.atmobb.forum.membership#closedPeriod", tgt: "app.atmobb.forum.membership#closedPeriod.from", kind: "prop", name: Some("from") }
Non-Breaking Changes (27)
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership#closedPeriod" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership#closedPeriod.from" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership#closedPeriod.to" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbook" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbookBlocked" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbookBlocked:items" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbookClosed" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbookClosed:items" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbookHidden" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbookHidden:items" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership:body.pinned" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership:body.pinned:items" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership:body.wearing" }
- AddedVertex AddedVertex { vertex_id: "app.atmobb.forum.membership:body.wearing:items" }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership#closedPeriod", tgt: "app.atmobb.forum.membership#closedPeriod.to", kind: "prop", name: Some("to") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership:body", tgt: "app.atmobb.forum.membership:body.guestbook", kind: "prop", name: Some("guestbook") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership:body", tgt: "app.atmobb.forum.membership:body.guestbookBlocked", kind: "prop", name: Some("guestbookBlocked") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership:body", tgt: "app.atmobb.forum.membership:body.guestbookClosed", kind: "prop", name: Some("guestbookClosed") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership:body", tgt: "app.atmobb.forum.membership:body.guestbookHidden", kind: "prop", name: Some("guestbookHidden") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership:body", tgt: "app.atmobb.forum.membership:body.pinned", kind: "prop", name: Some("pinned") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership:body", tgt: "app.atmobb.forum.membership:body.wearing", kind: "prop", name: Some("wearing") }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership:body.guestbookBlocked", tgt: "app.atmobb.forum.membership:body.guestbookBlocked:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership:body.guestbookClosed", tgt: "app.atmobb.forum.membership:body.guestbookClosed:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership:body.guestbookClosed:items", tgt: "app.atmobb.forum.membership#closedPeriod", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership:body.guestbookHidden", tgt: "app.atmobb.forum.membership:body.guestbookHidden:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership:body.pinned", tgt: "app.atmobb.forum.membership:body.pinned:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "app.atmobb.forum.membership:body.wearing", tgt: "app.atmobb.forum.membership:body.wearing:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.atmobb.forum.membership#closedPeriod" }AddedVertex { vertex_id: "app.atmobb.forum.membership#closedPeriod.from" }AddedVertex { vertex_id: "app.atmobb.forum.membership#closedPeriod.to" }AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbook" }AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbookBlocked" }AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbookBlocked:items" }AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbookClosed" }AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbookClosed:items" }AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbookHidden" }AddedVertex { vertex_id: "app.atmobb.forum.membership:body.guestbookHidden:items" }AddedVertex { vertex_id: "app.atmobb.forum.membership:body.pinned" }AddedVertex { vertex_id: "app.atmobb.forum.membership:body.pinned:items" }AddedVertex { vertex_id: "app.atmobb.forum.membership:body.wearing" }AddedVertex { vertex_id: "app.atmobb.forum.membership:body.wearing:items" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "app.atmobb.forum.membership#closedPeriod", src: "app.atmobb.forum.membership#closedPeriod", tgt: "app.atmobb.forum.membership#closedPeriod.from", kind: "prop", name: Some("from") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership#closedPeriod", tgt: "app.atmobb.forum.membership#closedPeriod.to", kind: "prop", name: Some("to") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership:body", tgt: "app.atmobb.forum.membership:body.guestbook", kind: "prop", name: Some("guestbook") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership:body", tgt: "app.atmobb.forum.membership:body.guestbookBlocked", kind: "prop", name: Some("guestbookBlocked") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership:body", tgt: "app.atmobb.forum.membership:body.guestbookClosed", kind: "prop", name: Some("guestbookClosed") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership:body", tgt: "app.atmobb.forum.membership:body.guestbookHidden", kind: "prop", name: Some("guestbookHidden") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership:body", tgt: "app.atmobb.forum.membership:body.pinned", kind: "prop", name: Some("pinned") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership:body", tgt: "app.atmobb.forum.membership:body.wearing", kind: "prop", name: Some("wearing") }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership:body.guestbookBlocked", tgt: "app.atmobb.forum.membership:body.guestbookBlocked:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership:body.guestbookClosed", tgt: "app.atmobb.forum.membership:body.guestbookClosed:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership:body.guestbookClosed:items", tgt: "app.atmobb.forum.membership#closedPeriod", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership:body.guestbookHidden", tgt: "app.atmobb.forum.membership:body.guestbookHidden:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership:body.pinned", tgt: "app.atmobb.forum.membership:body.pinned:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "app.atmobb.forum.membership:body.wearing", tgt: "app.atmobb.forum.membership:body.wearing:items", kind: "items", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
+
"closedPeriod": {
5
+
"description": "A span the guestbook was closed. With no end it is closed still.",
6
+
"properties": {
7
+
"from": {
8
+
"format": "datetime",
9
+
"type": "string"
10
+
},
11
+
"to": {
12
+
"format": "datetime",
13
+
"type": "string"
14
+
}
15
+
},
16
+
"required": [
17
+
"from"
18
+
],
19
+
"type": "object"
20
+
},
4
21
"main": {
5
22
"description": "Declares membership in a forum. Lives in the member's own repo, pointing at the forum's DID — joining is an act of the member, leaving is deleting this record.",
6
23
"key": "tid",
7
24
"record": {
8
25
"properties": {
9
26
"createdAt": {
10
27
"format": "datetime",
11
28
"type": "string"
12
29
},
13
30
"forum": {
14
31
"format": "did",
15
32
"type": "string"
33
+
},
34
+
"guestbook": {
35
+
"description": "Whether the member's guestbook on this forum is open for signing. Absent means closed.",
36
+
"type": "boolean"
37
+
},
38
+
"guestbookBlocked": {
39
+
"description": "Signers the member blocked from their guestbook; none of their entries show.",
40
+
"items": {
41
+
"format": "did",
42
+
"type": "string"
43
+
},
44
+
"maxLength": 500,
45
+
"type": "array"
46
+
},
47
+
"guestbookClosed": {
48
+
"description": "Periods the guestbook was closed; an entry indexed during one never shows. Turning the guestbook on records the end of the current closed period (or, the first time, a period from the beginning of time to now); turning it off starts a new one. Past 20, the oldest periods merge into one, so nothing they covered resurfaces.",
49
+
"items": {
50
+
"ref": "#closedPeriod",
51
+
"type": "ref"
52
+
},
53
+
"maxLength": 20,
54
+
"type": "array"
55
+
},
56
+
"guestbookHidden": {
57
+
"description": "At-uris of guestbook entries the member hid.",
58
+
"items": {
59
+
"format": "at-uri",
60
+
"type": "string"
61
+
},
62
+
"maxLength": 500,
63
+
"type": "array"
64
+
},
65
+
"pinned": {
66
+
"description": "At-uris of the member's own topics on this forum, pinned to their profile page in order.",
67
+
"items": {
68
+
"format": "at-uri",
69
+
"type": "string"
70
+
},
71
+
"maxLength": 4,
72
+
"type": "array"
73
+
},
74
+
"wearing": {
75
+
"description": "Stamp ids the member wears on this forum, in order: an admin stamp's at-uri, or the fixed id of a generated stamp (atmobb:board:<board at-uri>, atmobb:arrival, atmobb:first-light, atmobb:early-days).",
76
+
"items": {
77
+
"maxLength": 300,
78
+
"type": "string"
79
+
},
80
+
"maxLength": 6,
81
+
"type": "array"
16
82
}
17
83
},
18
84
"required": [
19
85
"forum"
20
86
],
21
87
"type": "object"
22
88
},
23
89
"type": "record"
24
90
}
25
91
},
26
92
"id": "app.atmobb.forum.membership",
27
93
"lexicon": 1
28
94
}