app.thedistance.activity
Schema Diff
+121 -0
Compatibility Analysis
Breaking Changes Detected
22 breaking changes, 47 non-breaking changes.
Breaking Changes (22)
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity:body.totalWork", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.visibility", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.uvIndex", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity:body.sourceId", sort: "maxLength", value: "256" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.maxTemperature", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.windBearing", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.avgTemperature", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity:body.weightedAvgPower", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.windGust", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity:body.perceivedExertion", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.humidity", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.dewpoint", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.precipitationType", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.pressure", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity:body.elevationLoss", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.apparentTemperature", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.temperature", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.windSpeed", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.precipitationProbability", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.cloudCover", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.condition", sort: "maxLength", value: "128" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.precipitationIntensity", sort: "maxLength", value: "64" }
Non-Breaking Changes (47)
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.apparentTemperature" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.avgTemperature" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.cloudCover" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.condition" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.dewpoint" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.humidity" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.maxTemperature" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.precipitationIntensity" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.precipitationProbability" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.precipitationType" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.pressure" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.temperature" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.uvIndex" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.visibility" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.windBearing" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.windGust" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity#weather.windSpeed" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity:body.elevationLoss" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity:body.perceivedExertion" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity:body.sourceId" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity:body.totalWork" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity:body.weather" }
- AddedVertex AddedVertex { vertex_id: "app.thedistance.activity:body.weightedAvgPower" }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.apparentTemperature", kind: "prop", name: Some("apparentTemperature") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.avgTemperature", kind: "prop", name: Some("avgTemperature") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.cloudCover", kind: "prop", name: Some("cloudCover") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.condition", kind: "prop", name: Some("condition") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.dewpoint", kind: "prop", name: Some("dewpoint") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.humidity", kind: "prop", name: Some("humidity") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.maxTemperature", kind: "prop", name: Some("maxTemperature") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.precipitationIntensity", kind: "prop", name: Some("precipitationIntensity") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.precipitationProbability", kind: "prop", name: Some("precipitationProbability") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.precipitationType", kind: "prop", name: Some("precipitationType") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.pressure", kind: "prop", name: Some("pressure") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.temperature", kind: "prop", name: Some("temperature") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.uvIndex", kind: "prop", name: Some("uvIndex") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.visibility", kind: "prop", name: Some("visibility") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.windBearing", kind: "prop", name: Some("windBearing") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.windGust", kind: "prop", name: Some("windGust") }
- AddedEdge AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.windSpeed", kind: "prop", name: Some("windSpeed") }
- AddedEdge AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.elevationLoss", kind: "prop", name: Some("elevationLoss") }
- AddedEdge AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.perceivedExertion", kind: "prop", name: Some("perceivedExertion") }
- AddedEdge AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.sourceId", kind: "prop", name: Some("sourceId") }
- AddedEdge AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.totalWork", kind: "prop", name: Some("totalWork") }
- AddedEdge AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.weather", kind: "prop", name: Some("weather") }
- AddedEdge AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.weightedAvgPower", kind: "prop", name: Some("weightedAvgPower") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.thedistance.activity#weather" }AddedVertex { vertex_id: "app.thedistance.activity#weather.apparentTemperature" }AddedVertex { vertex_id: "app.thedistance.activity#weather.avgTemperature" }AddedVertex { vertex_id: "app.thedistance.activity#weather.cloudCover" }AddedVertex { vertex_id: "app.thedistance.activity#weather.condition" }AddedVertex { vertex_id: "app.thedistance.activity#weather.dewpoint" }AddedVertex { vertex_id: "app.thedistance.activity#weather.humidity" }AddedVertex { vertex_id: "app.thedistance.activity#weather.maxTemperature" }AddedVertex { vertex_id: "app.thedistance.activity#weather.precipitationIntensity" }AddedVertex { vertex_id: "app.thedistance.activity#weather.precipitationProbability" }AddedVertex { vertex_id: "app.thedistance.activity#weather.precipitationType" }AddedVertex { vertex_id: "app.thedistance.activity#weather.pressure" }AddedVertex { vertex_id: "app.thedistance.activity#weather.temperature" }AddedVertex { vertex_id: "app.thedistance.activity#weather.uvIndex" }AddedVertex { vertex_id: "app.thedistance.activity#weather.visibility" }AddedVertex { vertex_id: "app.thedistance.activity#weather.windBearing" }AddedVertex { vertex_id: "app.thedistance.activity#weather.windGust" }AddedVertex { vertex_id: "app.thedistance.activity#weather.windSpeed" }AddedVertex { vertex_id: "app.thedistance.activity:body.elevationLoss" }AddedVertex { vertex_id: "app.thedistance.activity:body.perceivedExertion" }AddedVertex { vertex_id: "app.thedistance.activity:body.sourceId" }AddedVertex { vertex_id: "app.thedistance.activity:body.totalWork" }AddedVertex { vertex_id: "app.thedistance.activity:body.weather" }AddedVertex { vertex_id: "app.thedistance.activity:body.weightedAvgPower" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.dewpoint", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.maxTemperature", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.windSpeed", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.avgTemperature", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.windBearing", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity:body.sourceId", sort: "maxLength", value: "256" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.cloudCover", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.visibility", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.precipitationType", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity:body.elevationLoss", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.windGust", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.precipitationProbability", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.apparentTemperature", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.humidity", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.condition", sort: "maxLength", value: "128" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.temperature", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity:body.totalWork", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.pressure", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity:body.weightedAvgPower", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity:body.perceivedExertion", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.precipitationIntensity", sort: "maxLength", value: "64" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.thedistance.activity#weather.uvIndex", sort: "maxLength", value: "64" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.apparentTemperature", kind: "prop", name: Some("apparentTemperature") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.avgTemperature", kind: "prop", name: Some("avgTemperature") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.cloudCover", kind: "prop", name: Some("cloudCover") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.condition", kind: "prop", name: Some("condition") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.dewpoint", kind: "prop", name: Some("dewpoint") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.humidity", kind: "prop", name: Some("humidity") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.maxTemperature", kind: "prop", name: Some("maxTemperature") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.precipitationIntensity", kind: "prop", name: Some("precipitationIntensity") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.precipitationProbability", kind: "prop", name: Some("precipitationProbability") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.precipitationType", kind: "prop", name: Some("precipitationType") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.pressure", kind: "prop", name: Some("pressure") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.temperature", kind: "prop", name: Some("temperature") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.uvIndex", kind: "prop", name: Some("uvIndex") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.visibility", kind: "prop", name: Some("visibility") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.windBearing", kind: "prop", name: Some("windBearing") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.windGust", kind: "prop", name: Some("windGust") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity#weather", tgt: "app.thedistance.activity#weather.windSpeed", kind: "prop", name: Some("windSpeed") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.elevationLoss", kind: "prop", name: Some("elevationLoss") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.perceivedExertion", kind: "prop", name: Some("perceivedExertion") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.sourceId", kind: "prop", name: Some("sourceId") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.totalWork", kind: "prop", name: Some("totalWork") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.weather", kind: "prop", name: Some("weather") }
- Non-breaking: AddedEdge { src: "app.thedistance.activity:body", tgt: "app.thedistance.activity:body.weightedAvgPower", kind: "prop", name: Some("weightedAvgPower") }
1
1
{
2
2
"id": "app.thedistance.activity",
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
"sportType",
11
11
"startedAt",
12
12
"elapsedTime",
13
13
"movingTime",
14
14
"distance",
15
15
"createdAt"
16
16
],
17
17
"properties": {
18
18
"title": {
19
19
"type": "string",
20
20
"maxLength": 300,
21
21
"description": "User-provided name for the activity."
22
22
},
23
23
"device": {
24
24
"type": "string",
25
25
"maxLength": 300,
26
26
"description": "Name of the device that recorded the activity."
27
27
},
28
28
"images": {
29
29
"type": "array",
30
30
"items": {
31
31
"ref": "#image",
32
32
"type": "ref"
33
33
},
34
34
"maxLength": 8,
35
35
"description": "Photos from the activity."
36
36
},
37
37
"source": {
38
38
"type": "string",
39
39
"maxLength": 128,
40
40
"description": "Where the activity data was imported from.",
41
41
"knownValues": [
42
42
"garmin",
43
43
"strava",
44
44
"wahoo",
45
45
"manual",
46
46
"fit-file",
47
47
"gpx-file"
48
48
]
49
49
},
50
+
"weather": {
51
+
"ref": "#weather",
52
+
"type": "ref",
53
+
"description": "Weather conditions during the activity."
54
+
},
50
55
"avgPower": {
51
56
"type": "integer",
52
57
"minimum": 0,
53
58
"description": "Average power output in watts."
54
59
},
55
60
"avgSpeed": {
56
61
"type": "string",
57
62
"maxLength": 64,
58
63
"description": "Average speed in meters per second. String-encoded decimal number."
59
64
},
60
65
"calories": {
61
66
"type": "integer",
62
67
"minimum": 0,
63
68
"description": "Estimated calories burned."
64
69
},
65
70
"distance": {
66
71
"type": "string",
67
72
"maxLength": 64,
68
73
"description": "Total distance in meters. String-encoded decimal number, e.g. '51214.6'."
69
74
},
70
75
"maxPower": {
71
76
"type": "integer",
72
77
"minimum": 0,
73
78
"description": "Maximum power output in watts."
74
79
},
75
80
"maxSpeed": {
76
81
"type": "string",
77
82
"maxLength": 64,
78
83
"description": "Maximum speed in meters per second. String-encoded decimal number."
79
84
},
80
85
"polyline": {
81
86
"type": "string",
82
87
"maxLength": 20000,
83
88
"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."
84
89
},
90
+
"sourceId": {
91
+
"type": "string",
92
+
"maxLength": 256,
93
+
"description": "Identifier for this activity in the source system, e.g. a Strava activity ID."
94
+
},
85
95
"createdAt": {
86
96
"type": "string",
87
97
"format": "datetime",
88
98
"description": "Timestamp of when this record was created."
89
99
},
90
100
"sportType": {
91
101
"type": "string",
92
102
"maxLength": 128,
93
103
"description": "The type of activity.",
94
104
"knownValues": [
95
105
"ride"
96
106
]
97
107
},
98
108
"startedAt": {
99
109
"type": "string",
100
110
"format": "datetime",
101
111
"description": "When the activity started."
102
112
},
113
+
"totalWork": {
114
+
"type": "integer",
115
+
"minimum": 0,
116
+
"description": "Total mechanical work in kilojoules."
117
+
},
103
118
"avgCadence": {
104
119
"type": "integer",
105
120
"minimum": 0,
106
121
"description": "Average cadence in revolutions per minute."
107
122
},
108
123
"maxCadence": {
109
124
"type": "integer",
110
125
"minimum": 0,
111
126
"description": "Maximum cadence in revolutions per minute."
112
127
},
113
128
"movingTime": {
114
129
"type": "integer",
115
130
"minimum": 0,
116
131
"description": "Time spent in motion in seconds."
117
132
},
118
133
"description": {
119
134
"type": "string",
120
135
"maxLength": 3000,
121
136
"description": "User-provided description of the activity."
122
137
},
123
138
"elapsedTime": {
124
139
"type": "integer",
125
140
"minimum": 0,
126
141
"description": "Total elapsed time in seconds, including stopped time."
127
142
},
128
143
"avgHeartRate": {
129
144
"type": "integer",
130
145
"minimum": 0,
131
146
"description": "Average heart rate in beats per minute."
132
147
},
133
148
"maxHeartRate": {
134
149
"type": "integer",
135
150
"minimum": 0,
136
151
"description": "Maximum heart rate in beats per minute."
137
152
},
138
153
"elevationGain": {
139
154
"type": "string",
140
155
"maxLength": 64,
141
156
"description": "Total elevation gain in meters. String-encoded decimal number."
157
+
},
158
+
"elevationLoss": {
159
+
"type": "string",
160
+
"maxLength": 64,
161
+
"description": "Total elevation loss in meters. String-encoded decimal number."
162
+
},
163
+
"weightedAvgPower": {
164
+
"type": "integer",
165
+
"minimum": 0,
166
+
"description": "Normalized/weighted average power in watts."
167
+
},
168
+
"perceivedExertion": {
169
+
"type": "integer",
170
+
"minimum": 0,
171
+
"description": "Rate of perceived exertion (RPE), typically 1-10."
142
172
}
143
173
}
144
174
},
145
175
"description": "A recorded physical activity such as a bike ride."
146
176
},
147
177
"image": {
148
178
"type": "object",
149
179
"required": [
150
180
"image"
151
181
],
152
182
"properties": {
153
183
"alt": {
154
184
"type": "string",
155
185
"maxLength": 3000,
156
186
"description": "Alt text for the image."
157
187
},
158
188
"image": {
159
189
"type": "blob",
160
190
"accept": [
161
191
"image/jpeg",
162
192
"image/png",
163
193
"image/webp"
164
194
],
165
195
"maxSize": 10000000
166
196
},
167
197
"aspectRatio": {
168
198
"ref": "#aspectRatio",
169
199
"type": "ref"
170
200
}
171
201
}
172
202
},
203
+
"weather": {
204
+
"type": "object",
205
+
"properties": {
206
+
"uvIndex": {
207
+
"type": "string",
208
+
"maxLength": 64,
209
+
"description": "UV index. String-encoded decimal."
210
+
},
211
+
"dewpoint": {
212
+
"type": "string",
213
+
"maxLength": 64,
214
+
"description": "Dewpoint in degrees Celsius. String-encoded decimal."
215
+
},
216
+
"humidity": {
217
+
"type": "string",
218
+
"maxLength": 64,
219
+
"description": "Relative humidity as a percentage. String-encoded decimal."
220
+
},
221
+
"pressure": {
222
+
"type": "string",
223
+
"maxLength": 64,
224
+
"description": "Atmospheric pressure in hPa/mbar. String-encoded decimal."
225
+
},
226
+
"windGust": {
227
+
"type": "string",
228
+
"maxLength": 64,
229
+
"description": "Wind gust speed in meters per second. String-encoded decimal."
230
+
},
231
+
"condition": {
232
+
"type": "string",
233
+
"maxLength": 128,
234
+
"description": "General weather condition, e.g. 'Clear', 'Cloudy', 'Rain'."
235
+
},
236
+
"windSpeed": {
237
+
"type": "string",
238
+
"maxLength": 64,
239
+
"description": "Wind speed in meters per second. String-encoded decimal."
240
+
},
241
+
"cloudCover": {
242
+
"type": "string",
243
+
"maxLength": 64,
244
+
"description": "Cloud cover as a percentage. String-encoded decimal."
245
+
},
246
+
"visibility": {
247
+
"type": "string",
248
+
"maxLength": 64,
249
+
"description": "Visibility distance in kilometers. String-encoded decimal."
250
+
},
251
+
"temperature": {
252
+
"type": "string",
253
+
"maxLength": 64,
254
+
"description": "Air temperature in degrees Celsius. String-encoded decimal."
255
+
},
256
+
"windBearing": {
257
+
"type": "string",
258
+
"maxLength": 64,
259
+
"description": "Wind direction in degrees (0-360). String-encoded decimal."
260
+
},
261
+
"avgTemperature": {
262
+
"type": "string",
263
+
"maxLength": 64,
264
+
"description": "Average device-measured temperature in degrees Celsius. String-encoded decimal."
265
+
},
266
+
"maxTemperature": {
267
+
"type": "string",
268
+
"maxLength": 64,
269
+
"description": "Maximum device-measured temperature in degrees Celsius. String-encoded decimal."
270
+
},
271
+
"precipitationType": {
272
+
"type": "string",
273
+
"maxLength": 64,
274
+
"description": "Type of precipitation, e.g. 'rain', 'snow', 'sleet'."
275
+
},
276
+
"apparentTemperature": {
277
+
"type": "string",
278
+
"maxLength": 64,
279
+
"description": "Feels-like temperature in degrees Celsius. String-encoded decimal."
280
+
},
281
+
"precipitationIntensity": {
282
+
"type": "string",
283
+
"maxLength": 64,
284
+
"description": "Precipitation intensity in mm/hr. String-encoded decimal."
285
+
},
286
+
"precipitationProbability": {
287
+
"type": "string",
288
+
"maxLength": 64,
289
+
"description": "Precipitation probability as a percentage. String-encoded decimal."
290
+
}
291
+
},
292
+
"description": "Weather conditions observed during the activity."
293
+
},
173
294
"aspectRatio": {
174
295
"type": "object",
175
296
"required": [
176
297
"width",
177
298
"height"
178
299
],
179
300
"properties": {
180
301
"width": {
181
302
"type": "integer",
182
303
"minimum": 1
183
304
},
184
305
"height": {
185
306
"type": "integer",
186
307
"minimum": 1
187
308
}
188
309
},
189
310
"description": "Width and height of the image, used for layout before the image loads."
190
311
}
191
312
},
192
313
"$type": "com.atproto.lexicon.schema",
193
314
"lexicon": 1
194
315
}