community.buynothing.listing
Schema Diff
+9 -2
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 0 non-breaking changes.
Breaking Changes (2)
- ConstraintAdded ConstraintAdded { vertex_id: "community.buynothing.listing:body.description", sort: "minLength", value: "1" }
- ConstraintAdded ConstraintAdded { vertex_id: "community.buynothing.listing:body.title", sort: "minLength", value: "1" }
Migration Guidance
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "community.buynothing.listing:body.title", sort: "minLength", value: "1" }
- ConstraintAdded ConstraintAdded { vertex_id: "community.buynothing.listing:body.description", sort: "minLength", value: "1" }
1
1
{
2
2
"id": "community.buynothing.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
+
"description",
12
13
"geohash",
13
14
"createdAt"
14
15
],
15
16
"properties": {
16
17
"title": {
17
18
"type": "string",
18
19
"maxLength": 200,
19
-
"maxGraphemes": 100
20
+
"minLength": 1,
21
+
"description": "Required short title for the item being offered or requested.",
22
+
"maxGraphemes": 100,
23
+
"minGraphemes": 1
20
24
},
21
25
"images": {
22
26
"type": "array",
23
27
"items": {
24
28
"type": "blob",
25
29
"accept": [
26
30
"image/jpeg",
27
31
"image/png",
28
32
"image/webp"
29
33
],
30
34
"maxSize": 1000000
31
35
},
32
36
"maxLength": 4,
33
37
"description": "Up to 4 images of the item, stored as blobs in the poster's repo."
34
38
},
35
39
"intent": {
36
40
"enum": [
37
41
"offer",
38
42
"request"
39
43
],
40
44
"type": "string",
41
45
"description": "Whether the poster is giving away an item or looking for one."
42
46
},
43
47
"status": {
44
48
"enum": [
45
49
"available",
46
50
"pending",
47
51
"gone"
48
52
],
49
53
"type": "string",
50
54
"description": "Current availability. Clients should treat a missing value as 'available'."
51
55
},
52
56
"geohash": {
53
57
"type": "string",
54
58
"maxLength": 6,
55
59
"minLength": 1,
56
60
"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."
57
61
},
58
62
"createdAt": {
59
63
"type": "string",
60
64
"format": "datetime"
61
65
},
62
66
"imageAlts": {
63
67
"type": "array",
64
68
"items": {
65
69
"type": "string",
66
70
"maxGraphemes": 1000
67
71
},
68
72
"maxLength": 4,
69
73
"description": "Alt text for images, parallel to the images array by index."
70
74
},
71
75
"description": {
72
76
"type": "string",
73
77
"maxLength": 3000,
74
-
"maxGraphemes": 1500
78
+
"minLength": 1,
79
+
"description": "Required free text describing the item being offered or requested.",
80
+
"maxGraphemes": 1500,
81
+
"minGraphemes": 1
75
82
},
76
83
"locationName": {
77
84
"type": "string",
78
85
"maxLength": 300,
79
86
"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.",
80
87
"maxGraphemes": 100
81
88
}
82
89
}
83
90
},
84
91
"description": "An offer or request for a free item, discoverable by approximate location."
85
92
}
86
93
},
87
94
"$type": "com.atproto.lexicon.schema",
88
95
"lexicon": 1
89
96
}