community.gifthood.listing
Schema Diff
+37 -0
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 10 non-breaking changes.
Breaking Changes (1)
- ConstraintAdded ConstraintAdded { vertex_id: "community.gifthood.listing:body.category", sort: "enum", value: "furniture,kitchen,clothing,baby,books,electronics,tools,garden,health,pets,hobbies,food,animals,service,other" }
Non-Breaking Changes (10)
- AddedVertex AddedVertex { vertex_id: "community.gifthood.listing:body.category" }
- AddedVertex AddedVertex { vertex_id: "community.gifthood.listing:body.labels" }
- AddedVertex AddedVertex { vertex_id: "community.gifthood.listing:body.labels:variant0" }
- AddedVertex AddedVertex { vertex_id: "community.gifthood.listing:body.langs" }
- AddedVertex AddedVertex { vertex_id: "community.gifthood.listing:body.langs:items" }
- AddedEdge AddedEdge { src: "community.gifthood.listing:body", tgt: "community.gifthood.listing:body.category", kind: "prop", name: Some("category") }
- AddedEdge AddedEdge { src: "community.gifthood.listing:body", tgt: "community.gifthood.listing:body.labels", kind: "prop", name: Some("labels") }
- AddedEdge AddedEdge { src: "community.gifthood.listing:body", tgt: "community.gifthood.listing:body.langs", kind: "prop", name: Some("langs") }
- AddedEdge AddedEdge { src: "community.gifthood.listing:body.labels", tgt: "community.gifthood.listing:body.labels:variant0", kind: "variant", name: Some("com.atproto.label.defs#selfLabels") }
- AddedEdge AddedEdge { src: "community.gifthood.listing:body.langs", tgt: "community.gifthood.listing:body.langs:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "community.gifthood.listing:body.category" }AddedVertex { vertex_id: "community.gifthood.listing:body.labels" }AddedVertex { vertex_id: "community.gifthood.listing:body.labels:variant0" }AddedVertex { vertex_id: "community.gifthood.listing:body.langs" }AddedVertex { vertex_id: "community.gifthood.listing:body.langs:items" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "community.gifthood.listing:body.category", sort: "enum", value: "furniture,kitchen,clothing,baby,books,electronics,tools,garden,health,pets,hobbies,food,animals,service,other" }
Additional Notes
- Non-breaking: AddedEdge { src: "community.gifthood.listing:body", tgt: "community.gifthood.listing:body.category", kind: "prop", name: Some("category") }
- Non-breaking: AddedEdge { src: "community.gifthood.listing:body", tgt: "community.gifthood.listing:body.labels", kind: "prop", name: Some("labels") }
- Non-breaking: AddedEdge { src: "community.gifthood.listing:body", tgt: "community.gifthood.listing:body.langs", kind: "prop", name: Some("langs") }
- Non-breaking: AddedEdge { src: "community.gifthood.listing:body.labels", tgt: "community.gifthood.listing:body.labels:variant0", kind: "variant", name: Some("com.atproto.label.defs#selfLabels") }
- Non-breaking: AddedEdge { src: "community.gifthood.listing:body.langs", tgt: "community.gifthood.listing:body.langs:items", kind: "items", name: None }
1
1
{
2
2
"id": "community.gifthood.listing",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"title",
11
11
"intent",
12
12
"description",
13
13
"geohash",
14
14
"createdAt"
15
15
],
16
16
"properties": {
17
+
"langs": {
18
+
"type": "array",
19
+
"items": {
20
+
"type": "string",
21
+
"format": "language"
22
+
},
23
+
"maxLength": 3,
24
+
"description": "Language(s) the content is written in, as BCP-47 language tags. Author-asserted; clients default from the composer's locale."
25
+
},
17
26
"title": {
18
27
"type": "string",
19
28
"maxLength": 200,
20
29
"minLength": 1,
21
30
"description": "Required short title for the item being offered or requested.",
22
31
"maxGraphemes": 100,
23
32
"minGraphemes": 1
24
33
},
25
34
"images": {
26
35
"type": "array",
27
36
"items": {
28
37
"type": "blob",
29
38
"accept": [
30
39
"image/jpeg",
31
40
"image/png",
32
41
"image/webp"
33
42
],
34
43
"maxSize": 1000000
35
44
},
36
45
"maxLength": 4,
37
46
"description": "Up to 4 images of the item, stored as blobs in the poster's repo."
38
47
},
39
48
"intent": {
40
49
"enum": [
41
50
"offer",
42
51
"request"
43
52
],
44
53
"type": "string",
45
54
"description": "Whether the poster is giving away an item or looking for one."
46
55
},
56
+
"labels": {
57
+
"refs": [
58
+
"com.atproto.label.defs#selfLabels"
59
+
],
60
+
"type": "union",
61
+
"description": "Self-labels set by the author. Used to flag mature/adult content (e.g. the global 'sexual' value), which the AppView gates behind an opt-in."
62
+
},
47
63
"status": {
48
64
"enum": [
49
65
"available",
50
66
"pending",
51
67
"gone"
52
68
],
53
69
"type": "string",
54
70
"description": "Current availability. Clients should treat a missing value as 'available'."
55
71
},
56
72
"geohash": {
57
73
"type": "string",
58
74
"maxLength": 6,
59
75
"minLength": 1,
60
76
"description": "Approximate location as a geohash, precision 6 (~1.2km cell). This is a privacy floor: indexers MUST truncate any finer-precision value to 6 characters before indexing or display."
61
77
},
78
+
"category": {
79
+
"enum": [
80
+
"furniture",
81
+
"kitchen",
82
+
"clothing",
83
+
"baby",
84
+
"books",
85
+
"electronics",
86
+
"tools",
87
+
"garden",
88
+
"health",
89
+
"pets",
90
+
"hobbies",
91
+
"food",
92
+
"animals",
93
+
"service",
94
+
"other"
95
+
],
96
+
"type": "string",
97
+
"description": "Optional single-level category for opt-out feed filtering. Append-only enum; unknown or missing values index as 'other'. Never used for proximity or safety logic."
98
+
},
62
99
"createdAt": {
63
100
"type": "string",
64
101
"format": "datetime"
65
102
},
66
103
"imageAlts": {
67
104
"type": "array",
68
105
"items": {
69
106
"type": "string",
70
107
"maxGraphemes": 1000
71
108
},
72
109
"maxLength": 4,
73
110
"description": "Alt text for images, parallel to the images array by index."
74
111
},
75
112
"description": {
76
113
"type": "string",
77
114
"maxLength": 3000,
78
115
"minLength": 1,
79
116
"description": "Required free text describing the item being offered or requested.",
80
117
"maxGraphemes": 1500,
81
118
"minGraphemes": 1
82
119
},
83
120
"locationName": {
84
121
"type": "string",
85
122
"maxLength": 300,
86
123
"description": "Optional human-readable area name. App-populated via reverse geocoding of the geohash cell. Display only; MUST NOT be used for proximity matching or filtering.",
87
124
"maxGraphemes": 100
88
125
}
89
126
}
90
127
},
91
128
"description": "An offer or request for a free item, discoverable by approximate location."
92
129
}
93
130
},
94
131
"$type": "com.atproto.lexicon.schema",
95
132
"lexicon": 1
96
133
}