app.certified.location
Schema Diff
+33 -6
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 9 non-breaking changes.
Breaking Changes (2)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "app.certified.location#string", src: "app.certified.location#string", tgt: "app.certified.location#string.string", kind: "prop", name: Some("string") }
- ConstraintTightened ConstraintTightened { vertex_id: "app.certified.location:body.locationType", sort: "knownValues", old_value: "[\"coordinate-decimal\",\"geojson-point\"]", new_value: "[\"coordinate-decimal\",\"geojson-point\",\"geojson\",\"h3\",\"geohash\",\"wkt\",\"address\",\"scaledCoordinates\"]" }
Non-Breaking Changes (9)
- AddedVertex AddedVertex { vertex_id: "app.certified.location#string" }
- AddedVertex AddedVertex { vertex_id: "app.certified.location#string.string" }
- AddedVertex AddedVertex { vertex_id: "app.certified.location:body.location:variant2" }
- AddedVertex AddedVertex { vertex_id: "app.certified.location:body.signatures" }
- AddedVertex AddedVertex { vertex_id: "app.certified.signature.defs#list" }
- AddedEdge AddedEdge { src: "app.certified.location:body", tgt: "app.certified.location:body.signatures", kind: "prop", name: Some("signatures") }
- AddedEdge AddedEdge { src: "app.certified.location:body.location", tgt: "app.certified.location:body.location:variant2", kind: "variant", name: Some("#string") }
- AddedEdge AddedEdge { src: "app.certified.location:body.location:variant2", tgt: "app.certified.location#string", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "app.certified.location:body.signatures", tgt: "app.certified.signature.defs#list", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.certified.location#string" }AddedVertex { vertex_id: "app.certified.location#string.string" }AddedVertex { vertex_id: "app.certified.location:body.location:variant2" }AddedVertex { vertex_id: "app.certified.location:body.signatures" }AddedVertex { vertex_id: "app.certified.signature.defs#list" }
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "app.certified.location:body.locationType", sort: "knownValues", old_value: "[\"coordinate-decimal\",\"geojson-point\"]", new_value: "[\"coordinate-decimal\",\"geojson-point\",\"geojson\",\"h3\",\"geohash\",\"wkt\",\"address\",\"scaledCoordinates\"]" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "app.certified.location#string", src: "app.certified.location#string", tgt: "app.certified.location#string.string", kind: "prop", name: Some("string") }
- Non-breaking: AddedEdge { src: "app.certified.location:body", tgt: "app.certified.location:body.signatures", kind: "prop", name: Some("signatures") }
- Non-breaking: AddedEdge { src: "app.certified.location:body.location", tgt: "app.certified.location:body.location:variant2", kind: "variant", name: Some("#string") }
- Non-breaking: AddedEdge { src: "app.certified.location:body.location:variant2", tgt: "app.certified.location#string", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "app.certified.location:body.signatures", tgt: "app.certified.signature.defs#list", kind: "ref", name: None }
1
1
{
2
2
"id": "app.certified.location",
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
"lpVersion",
11
11
"srs",
12
12
"locationType",
13
13
"location",
14
14
"createdAt"
15
15
],
16
16
"properties": {
17
17
"srs": {
18
18
"type": "string",
19
19
"format": "uri",
20
20
"maxLength": 100,
21
21
"description": "The Spatial Reference System URI (e.g., http://www.opengis.net/def/crs/OGC/1.3/CRS84) that defines the coordinate system."
22
22
},
23
23
"name": {
24
24
"type": "string",
25
25
"maxLength": 1000,
26
-
"description": "Optional name for this location",
26
+
"description": "Human-readable name for this location (e.g. 'Golden Gate Park', 'San Francisco Bay Area')",
27
27
"maxGraphemes": 100
28
28
},
29
29
"location": {
30
30
"refs": [
31
31
"org.hypercerts.defs#uri",
32
-
"org.hypercerts.defs#smallBlob"
32
+
"org.hypercerts.defs#smallBlob",
33
+
"#string"
33
34
],
34
35
"type": "union",
35
-
"description": "The location of where the work was performed as a URI or blob."
36
+
"description": "The location of where the work was performed as a URI, blob, or inline string."
36
37
},
37
38
"createdAt": {
38
39
"type": "string",
39
40
"format": "datetime",
40
41
"description": "Client-declared timestamp when this record was originally created"
41
42
},
42
43
"lpVersion": {
43
44
"type": "string",
44
45
"maxLength": 10,
45
46
"description": "The version of the Location Protocol"
46
47
},
48
+
"signatures": {
49
+
"ref": "app.certified.signature.defs#list",
50
+
"type": "ref",
51
+
"description": "Optional cryptographic signatures attesting to this record's content."
52
+
},
47
53
"description": {
48
54
"type": "string",
49
55
"maxLength": 2000,
50
-
"description": "Optional description for this location",
56
+
"description": "Additional context about this location, such as its significance to the work or specific boundaries",
51
57
"maxGraphemes": 500
52
58
},
53
59
"locationType": {
54
60
"type": "string",
55
61
"maxLength": 20,
56
-
"description": "An identifier for the format of the location data (e.g., coordinate-decimal, geojson-point)",
62
+
"description": "An identifier for the format of the location data. Use `geojson-point` for a single GeoJSON Point; use `geojson` as the catch-all for any other GeoJSON geometry (Polygon, MultiPolygon, FeatureCollection, etc.) — the inner payload's own GeoJSON `type` field carries the specifics. Values beyond the known set are permitted; see the Location Protocol spec for the canonical registry: https://spec.decentralizedgeo.org/specification/location-types/#location-type-registry",
57
63
"knownValues": [
58
64
"coordinate-decimal",
59
-
"geojson-point"
65
+
"geojson-point",
66
+
"geojson",
67
+
"h3",
68
+
"geohash",
69
+
"wkt",
70
+
"address",
71
+
"scaledCoordinates"
60
72
]
61
73
}
62
74
}
63
75
},
64
76
"description": "A location reference"
77
+
},
78
+
"string": {
79
+
"type": "object",
80
+
"required": [
81
+
"string"
82
+
],
83
+
"properties": {
84
+
"string": {
85
+
"type": "string",
86
+
"maxLength": 10000,
87
+
"description": "The location string value",
88
+
"maxGraphemes": 1000
89
+
}
90
+
},
91
+
"description": "A location represented as a string, e.g. coordinates or a small GeoJSON string."
65
92
}
66
93
},
67
94
"$type": "com.atproto.lexicon.schema",
68
95
"lexicon": 1
69
96
}