at.mapped.post

mapped.at

Schema Diff

+5 -18

From

CID
bafyreid6te4r752...
Indexed At
2026-04-06 10:36 UTC
View this version

To

CID
bafyreifhe7cmtnz...
Indexed At
2026-04-06 13:42 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

8 breaking changes, 3 non-breaking changes.

Breaking Changes (8)
  • RemovedVertex RemovedVertex { vertex_id: "at.mapped.post:body.stats" }
  • RemovedVertex RemovedVertex { vertex_id: "at.mapped.post:body.stats.distance" }
  • RemovedVertex RemovedVertex { vertex_id: "at.mapped.post:body.stats.duration" }
  • RemovedVertex RemovedVertex { vertex_id: "at.mapped.post:body.stats.elevation" }
  • RemovedEdge RemovedEdge { src: "at.mapped.post:body", tgt: "at.mapped.post:body.stats", kind: "prop", name: Some("stats") }
  • RemovedEdge RemovedEdge { src: "at.mapped.post:body.stats", tgt: "at.mapped.post:body.stats.distance", kind: "prop", name: Some("distance") }
  • RemovedEdge RemovedEdge { src: "at.mapped.post:body.stats", tgt: "at.mapped.post:body.stats.duration", kind: "prop", name: Some("duration") }
  • RemovedEdge RemovedEdge { src: "at.mapped.post:body.stats", tgt: "at.mapped.post:body.stats.elevation", kind: "prop", name: Some("elevation") }
Non-Breaking Changes (3)
  • AddedVertex AddedVertex { vertex_id: "at.mapped.post:body.basePost" }
  • AddedEdge AddedEdge { src: "at.mapped.post:body", tgt: "at.mapped.post:body.basePost", kind: "prop", name: Some("basePost") }
  • AddedEdge AddedEdge { src: "at.mapped.post:body.basePost", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "at.mapped.post:body.stats" }
  • RemovedVertex { vertex_id: "at.mapped.post:body.stats.distance" }
  • RemovedVertex { vertex_id: "at.mapped.post:body.stats.duration" }
  • RemovedVertex { vertex_id: "at.mapped.post:body.stats.elevation" }

Added Elements

  • AddedVertex { vertex_id: "at.mapped.post:body.basePost" }

Additional Notes

  • Breaking: RemovedEdge { src: "at.mapped.post:body", tgt: "at.mapped.post:body.stats", kind: "prop", name: Some("stats") }
  • Breaking: RemovedEdge { src: "at.mapped.post:body.stats", tgt: "at.mapped.post:body.stats.distance", kind: "prop", name: Some("distance") }
  • Breaking: RemovedEdge { src: "at.mapped.post:body.stats", tgt: "at.mapped.post:body.stats.duration", kind: "prop", name: Some("duration") }
  • Breaking: RemovedEdge { src: "at.mapped.post:body.stats", tgt: "at.mapped.post:body.stats.elevation", kind: "prop", name: Some("elevation") }
  • Non-breaking: AddedEdge { src: "at.mapped.post:body", tgt: "at.mapped.post:body.basePost", kind: "prop", name: Some("basePost") }
  • Non-breaking: AddedEdge { src: "at.mapped.post:body.basePost", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "A post representing either an activity or a travel experience",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 9
          "activityType": {
10 10
            "description": "Reference to an activityType record. If present, this is an activity post; if absent, it's a travel post",
11 11
            "ref": "com.atproto.repo.strongRef",
12 12
            "type": "ref"
13 13
          },
14 +
          "basePost": {
15 +
            "description": "Reference to another post that this post is based on (e.g. a travel post based on an activity post)",
16 +
            "ref": "com.atproto.repo.strongRef",
17 +
            "type": "ref"
18 +
          },
14 19
          "location": {
15 20
            "description": "Reference to a location record",
16 21
            "ref": "com.atproto.repo.strongRef",
17 22
            "type": "ref"
18 -
          },
19 -
          "stats": {
20 -
            "description": "Activity statistics (distance, duration, elevation). Only relevant for activity posts",
21 -
            "properties": {
22 -
              "distance": {
23 -
                "description": "Distance covered in meters",
24 -
                "type": "integer"
25 -
              },
26 -
              "duration": {
27 -
                "description": "Duration of the activity in seconds",
28 -
                "type": "integer"
29 -
              },
30 -
              "elevation": {
31 -
                "description": "Elevation gain in meters",
32 -
                "type": "integer"
33 -
              }
34 -
            },
35 -
            "type": "object"
36 23
          },
37 24
          "text": {
38 25
            "description": "Caption or description text for the post",
39 26
            "maxLength": 500,
40 27
            "type": "string"
41 28
          },
42 29
          "timestamp": {
43 30
            "description": "When the post was created",
44 31
            "format": "datetime",
45 32
            "type": "string"
46 33
          },
47 34
          "title": {
48 35
            "description": "Optional title for the post (especially useful for travel posts)",
49 36
            "maxLength": 100,
50 37
            "type": "string"
51 38
          },
52 39
          "trail": {
53 40
            "description": "Reference to a trail record with route geometry",
54 41
            "ref": "com.atproto.repo.strongRef",
55 42
            "type": "ref"
56 43
          }
57 44
        },
58 45
        "required": [
59 46
          "timestamp"
60 47
        ],
61 48
        "type": "object"
62 49
      },
63 50
      "type": "record"
64 51
    }
65 52
  },
66 53
  "id": "at.mapped.post",
67 54
  "lexicon": 1
68 55
}

Compare Other Versions

Lexicon Garden

@