app.certified.location
Schema Diff
+34 -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\",\"country-code\",\"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\",\"country-code\",\"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
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "A location reference",
6
6
"key": "tid",
7
7
"record": {
8
8
"properties": {
9
9
"createdAt": {
10
10
"description": "Client-declared timestamp when this record was originally created",
11
11
"format": "datetime",
12
12
"type": "string"
13
13
},
14
14
"description": {
15
-
"description": "Optional description for this location",
15
+
"description": "Additional context about this location, such as its significance to the work or specific boundaries",
16
16
"maxGraphemes": 500,
17
17
"maxLength": 2000,
18
18
"type": "string"
19
19
},
20
20
"location": {
21
-
"description": "The location of where the work was performed as a URI or blob.",
21
+
"description": "The location of where the work was performed as a URI, blob, or inline string.",
22
22
"refs": [
23
23
"org.hypercerts.defs#uri",
24
-
"org.hypercerts.defs#smallBlob"
24
+
"org.hypercerts.defs#smallBlob",
25
+
"#string"
25
26
],
26
27
"type": "union"
27
28
},
28
29
"locationType": {
29
-
"description": "An identifier for the format of the location data (e.g., coordinate-decimal, geojson-point)",
30
+
"description": "An identifier for the format of the location data. Use `country-code` for uppercase ISO 3166-1 alpha-2 codes in `location.string` (e.g. `CH`). Although this lexicon requires `srs`, it has no meaning for this type and consumers must ignore it. 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",
30
31
"knownValues": [
31
32
"coordinate-decimal",
32
-
"geojson-point"
33
+
"geojson-point",
34
+
"geojson",
35
+
"h3",
36
+
"geohash",
37
+
"wkt",
38
+
"address",
39
+
"country-code",
40
+
"scaledCoordinates"
33
41
],
34
42
"maxLength": 20,
35
43
"type": "string"
36
44
},
37
45
"lpVersion": {
38
46
"description": "The version of the Location Protocol",
39
47
"maxLength": 10,
40
48
"type": "string"
41
49
},
42
50
"name": {
43
-
"description": "Optional name for this location",
51
+
"description": "Human-readable name for this location (e.g. 'Golden Gate Park', 'San Francisco Bay Area')",
44
52
"maxGraphemes": 100,
45
53
"maxLength": 1000,
46
54
"type": "string"
47
55
},
56
+
"signatures": {
57
+
"description": "Optional cryptographic signatures attesting to this record's content.",
58
+
"ref": "app.certified.signature.defs#list",
59
+
"type": "ref"
60
+
},
48
61
"srs": {
49
62
"description": "The Spatial Reference System URI (e.g., http://www.opengis.net/def/crs/OGC/1.3/CRS84) that defines the coordinate system.",
50
63
"format": "uri",
51
64
"maxLength": 100,
52
65
"type": "string"
53
66
}
54
67
},
55
68
"required": [
56
69
"lpVersion",
57
70
"srs",
58
71
"locationType",
59
72
"location",
60
73
"createdAt"
61
74
],
62
75
"type": "object"
63
76
},
64
77
"type": "record"
78
+
},
79
+
"string": {
80
+
"description": "A location represented as a string, e.g. coordinates or a small GeoJSON string.",
81
+
"properties": {
82
+
"string": {
83
+
"description": "The location string value",
84
+
"maxGraphemes": 1000,
85
+
"maxLength": 10000,
86
+
"type": "string"
87
+
}
88
+
},
89
+
"required": [
90
+
"string"
91
+
],
92
+
"type": "object"
65
93
}
66
94
},
67
95
"id": "app.certified.location",
68
96
"lexicon": 1
69
97
}