app.thedistance.activity

thedistance.app

Schema Diff

+5 -0

From

CID
bafyreied54mn53i...
Indexed At
2026-04-20 18:27 UTC
View this version

To

CID
bafyreiazfmrunst...
Indexed At
2026-05-30 19:15 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 2 non-breaking changes.

Non-Breaking Changes (2)
  • AddedVertex AddedVertex { vertex_id: "app.thedistance.activity:body.sourceId" }
  • AddedEdge AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.sourceId", kind: "prop", name: Some("sourceId") }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "app.thedistance.activity:body.sourceId" }

Additional Notes

  • Non-breaking: AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.sourceId", kind: "prop", name: Some("sourceId") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "aspectRatio": {
5 5
      "description": "Width and height of the image, used for layout before the image loads.",
6 6
      "properties": {
7 7
        "height": {
8 8
          "minimum": 1,
9 9
          "type": "integer"
10 10
        },
11 11
        "width": {
12 12
          "minimum": 1,
13 13
          "type": "integer"
14 14
        }
15 15
      },
16 16
      "required": [
17 17
        "width",
18 18
        "height"
19 19
      ],
20 20
      "type": "object"
21 21
    },
22 22
    "image": {
23 23
      "properties": {
24 24
        "alt": {
25 25
          "description": "Alt text for the image.",
26 26
          "maxLength": 3000,
27 27
          "type": "string"
28 28
        },
29 29
        "aspectRatio": {
30 30
          "ref": "#aspectRatio",
31 31
          "type": "ref"
32 32
        },
33 33
        "image": {
34 34
          "accept": [
35 35
            "image/jpeg",
36 36
            "image/png",
37 37
            "image/webp"
38 38
          ],
39 39
          "maxSize": 10000000,
40 40
          "type": "blob"
41 41
        }
42 42
      },
43 43
      "required": [
44 44
        "image"
45 45
      ],
46 46
      "type": "object"
47 47
    },
48 48
    "main": {
49 49
      "description": "A recorded physical activity such as a bike ride.",
50 50
      "key": "tid",
51 51
      "record": {
52 52
        "properties": {
53 53
          "avgCadence": {
54 54
            "description": "Average cadence in revolutions per minute.",
55 55
            "minimum": 0,
56 56
            "type": "integer"
57 57
          },
58 58
          "avgHeartRate": {
59 59
            "description": "Average heart rate in beats per minute.",
60 60
            "minimum": 0,
61 61
            "type": "integer"
62 62
          },
63 63
          "avgPower": {
64 64
            "description": "Average power output in watts.",
65 65
            "minimum": 0,
66 66
            "type": "integer"
67 67
          },
68 68
          "avgSpeed": {
69 69
            "description": "Average speed in meters per second. String-encoded decimal number.",
70 70
            "maxLength": 64,
71 71
            "type": "string"
72 72
          },
73 73
          "calories": {
74 74
            "description": "Estimated calories burned.",
75 75
            "minimum": 0,
76 76
            "type": "integer"
77 77
          },
78 78
          "createdAt": {
79 79
            "description": "Timestamp of when this record was created.",
80 80
            "format": "datetime",
81 81
            "type": "string"
82 82
          },
83 83
          "description": {
84 84
            "description": "User-provided description of the activity.",
85 85
            "maxLength": 3000,
86 86
            "type": "string"
87 87
          },
88 88
          "device": {
89 89
            "description": "Name of the device that recorded the activity.",
90 90
            "maxLength": 300,
91 91
            "type": "string"
92 92
          },
93 93
          "distance": {
94 94
            "description": "Total distance in meters. String-encoded decimal number, e.g. '51214.6'.",
95 95
            "maxLength": 64,
96 96
            "type": "string"
97 97
          },
98 98
          "elapsedTime": {
99 99
            "description": "Total elapsed time in seconds, including stopped time.",
100 100
            "minimum": 0,
101 101
            "type": "integer"
102 102
          },
103 103
          "elevationGain": {
104 104
            "description": "Total elevation gain in meters. String-encoded decimal number.",
105 105
            "maxLength": 64,
106 106
            "type": "string"
107 107
          },
108 108
          "images": {
109 109
            "description": "Photos from the activity.",
110 110
            "items": {
111 111
              "ref": "#image",
112 112
              "type": "ref"
113 113
            },
114 114
            "maxLength": 8,
115 115
            "type": "array"
116 116
          },
117 117
          "maxCadence": {
118 118
            "description": "Maximum cadence in revolutions per minute.",
119 119
            "minimum": 0,
120 120
            "type": "integer"
121 121
          },
122 122
          "maxHeartRate": {
123 123
            "description": "Maximum heart rate in beats per minute.",
124 124
            "minimum": 0,
125 125
            "type": "integer"
126 126
          },
127 127
          "maxPower": {
128 128
            "description": "Maximum power output in watts.",
129 129
            "minimum": 0,
130 130
            "type": "integer"
131 131
          },
132 132
          "maxSpeed": {
133 133
            "description": "Maximum speed in meters per second. String-encoded decimal number.",
134 134
            "maxLength": 64,
135 135
            "type": "string"
136 136
          },
137 137
          "movingTime": {
138 138
            "description": "Time spent in motion in seconds.",
139 139
            "minimum": 0,
140 140
            "type": "integer"
141 141
          },
142 142
          "polyline": {
143 143
            "description": "Encoded polyline string representing a simplified, privacy-trimmed route for map display. Uses Google's encoded polyline algorithm format. Ingestion services should simplify polylines to fit within the 20,000 byte limit. This limit may be revisited if it proves insufficient.",
144 144
            "maxLength": 20000,
145 145
            "type": "string"
146 146
          },
147 147
          "source": {
148 148
            "description": "Where the activity data was imported from.",
149 149
            "knownValues": [
150 150
              "garmin",
151 151
              "strava",
152 152
              "wahoo",
153 153
              "manual",
154 154
              "fit-file",
155 155
              "gpx-file"
156 156
            ],
157 157
            "maxLength": 128,
158 158
            "type": "string"
159 159
          },
160 +
          "sourceId": {
161 +
            "description": "Identifier for this activity in the source system, e.g. a Strava activity ID.",
162 +
            "maxLength": 256,
163 +
            "type": "string"
164 +
          },
160 165
          "sportType": {
161 166
            "description": "The type of activity.",
162 167
            "knownValues": [
163 168
              "ride"
164 169
            ],
165 170
            "maxLength": 128,
166 171
            "type": "string"
167 172
          },
168 173
          "startedAt": {
169 174
            "description": "When the activity started.",
170 175
            "format": "datetime",
171 176
            "type": "string"
172 177
          },
173 178
          "title": {
174 179
            "description": "User-provided name for the activity.",
175 180
            "maxLength": 300,
176 181
            "type": "string"
177 182
          }
178 183
        },
179 184
        "required": [
180 185
          "sportType",
181 186
          "startedAt",
182 187
          "elapsedTime",
183 188
          "movingTime",
184 189
          "distance",
185 190
          "createdAt"
186 191
        ],
187 192
        "type": "object"
188 193
      },
189 194
      "type": "record"
190 195
    }
191 196
  },
192 197
  "id": "app.thedistance.activity",
193 198
  "lexicon": 1
194 199
}

Compare Other Versions

Lexicon Garden

@