community.gifthood.listing
Schema Diff
+37 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 12 non-breaking changes.
Non-Breaking Changes (12)
- AddedVertex AddedVertex { vertex_id: "com.atproto.label.defs#selfLabels" }
- 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.labels:variant0", tgt: "com.atproto.label.defs#selfLabels", kind: "ref", name: None }
- 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: "com.atproto.label.defs#selfLabels" }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" }
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.labels:variant0", tgt: "com.atproto.label.defs#selfLabels", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "community.gifthood.listing:body.langs", tgt: "community.gifthood.listing:body.langs:items", kind: "items", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "An offer or request for a free item, discoverable by approximate location.",
6
6
"key": "tid",
7
7
"record": {
8
8
"properties": {
9
+
"category": {
10
+
"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.",
11
+
"enum": [
12
+
"furniture",
13
+
"kitchen",
14
+
"clothing",
15
+
"baby",
16
+
"books",
17
+
"electronics",
18
+
"tools",
19
+
"garden",
20
+
"health",
21
+
"pets",
22
+
"hobbies",
23
+
"food",
24
+
"animals",
25
+
"service",
26
+
"other"
27
+
],
28
+
"type": "string"
29
+
},
9
30
"createdAt": {
10
31
"format": "datetime",
11
32
"type": "string"
12
33
},
13
34
"description": {
14
35
"description": "Required free text describing the item being offered or requested.",
15
36
"maxGraphemes": 1500,
16
37
"maxLength": 3000,
17
38
"minGraphemes": 1,
18
39
"minLength": 1,
19
40
"type": "string"
20
41
},
21
42
"geohash": {
22
43
"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.",
23
44
"maxLength": 6,
24
45
"minLength": 1,
25
46
"type": "string"
26
47
},
27
48
"imageAlts": {
28
49
"description": "Alt text for images, parallel to the images array by index.",
29
50
"items": {
30
51
"maxGraphemes": 1000,
31
52
"type": "string"
32
53
},
33
54
"maxLength": 4,
34
55
"type": "array"
35
56
},
36
57
"images": {
37
58
"description": "Up to 4 images of the item, stored as blobs in the poster's repo.",
38
59
"items": {
39
60
"accept": [
40
61
"image/jpeg",
41
62
"image/png",
42
63
"image/webp"
43
64
],
44
65
"maxSize": 1000000,
45
66
"type": "blob"
46
67
},
47
68
"maxLength": 4,
48
69
"type": "array"
49
70
},
50
71
"intent": {
51
72
"description": "Whether the poster is giving away an item or looking for one.",
52
73
"enum": [
53
74
"offer",
54
75
"request"
55
76
],
56
77
"type": "string"
57
78
},
79
+
"labels": {
80
+
"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.",
81
+
"refs": [
82
+
"com.atproto.label.defs#selfLabels"
83
+
],
84
+
"type": "union"
85
+
},
86
+
"langs": {
87
+
"description": "Language(s) the content is written in, as BCP-47 language tags. Author-asserted; clients default from the composer's locale.",
88
+
"items": {
89
+
"format": "language",
90
+
"type": "string"
91
+
},
92
+
"maxLength": 3,
93
+
"type": "array"
94
+
},
58
95
"locationName": {
59
96
"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.",
60
97
"maxGraphemes": 100,
61
98
"maxLength": 300,
62
99
"type": "string"
63
100
},
64
101
"status": {
65
102
"description": "Current availability. Clients should treat a missing value as 'available'.",
66
103
"enum": [
67
104
"available",
68
105
"pending",
69
106
"gone"
70
107
],
71
108
"type": "string"
72
109
},
73
110
"title": {
74
111
"description": "Required short title for the item being offered or requested.",
75
112
"maxGraphemes": 100,
76
113
"maxLength": 200,
77
114
"minGraphemes": 1,
78
115
"minLength": 1,
79
116
"type": "string"
80
117
}
81
118
},
82
119
"required": [
83
120
"title",
84
121
"intent",
85
122
"description",
86
123
"geohash",
87
124
"createdAt"
88
125
],
89
126
"type": "object"
90
127
},
91
128
"type": "record"
92
129
}
93
130
},
94
131
"id": "community.gifthood.listing",
95
132
"lexicon": 1
96
133
}