app.fitsky.profile
Schema Diff
+19 -0
Compatibility Analysis
Breaking Changes Detected
2 breaking changes, 8 non-breaking changes.
Breaking Changes (2)
- ConstraintAdded ConstraintAdded { vertex_id: "app.fitsky.profile:body.weightGrams", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.fitsky.profile:body.heightCm", sort: "minimum", value: "0" }
Non-Breaking Changes (8)
- AddedVertex AddedVertex { vertex_id: "app.fitsky.profile:body.dateOfBirth" }
- AddedVertex AddedVertex { vertex_id: "app.fitsky.profile:body.heightCm" }
- AddedVertex AddedVertex { vertex_id: "app.fitsky.profile:body.publicProfile" }
- AddedVertex AddedVertex { vertex_id: "app.fitsky.profile:body.weightGrams" }
- AddedEdge AddedEdge { src: "app.fitsky.profile:body", tgt: "app.fitsky.profile:body.dateOfBirth", kind: "prop", name: Some("dateOfBirth") }
- AddedEdge AddedEdge { src: "app.fitsky.profile:body", tgt: "app.fitsky.profile:body.heightCm", kind: "prop", name: Some("heightCm") }
- AddedEdge AddedEdge { src: "app.fitsky.profile:body", tgt: "app.fitsky.profile:body.publicProfile", kind: "prop", name: Some("publicProfile") }
- AddedEdge AddedEdge { src: "app.fitsky.profile:body", tgt: "app.fitsky.profile:body.weightGrams", kind: "prop", name: Some("weightGrams") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.fitsky.profile:body.dateOfBirth" }AddedVertex { vertex_id: "app.fitsky.profile:body.heightCm" }AddedVertex { vertex_id: "app.fitsky.profile:body.publicProfile" }AddedVertex { vertex_id: "app.fitsky.profile:body.weightGrams" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "app.fitsky.profile:body.weightGrams", sort: "minimum", value: "0" }
- ConstraintAdded ConstraintAdded { vertex_id: "app.fitsky.profile:body.heightCm", sort: "minimum", value: "0" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.fitsky.profile:body", tgt: "app.fitsky.profile:body.dateOfBirth", kind: "prop", name: Some("dateOfBirth") }
- Non-breaking: AddedEdge { src: "app.fitsky.profile:body", tgt: "app.fitsky.profile:body.heightCm", kind: "prop", name: Some("heightCm") }
- Non-breaking: AddedEdge { src: "app.fitsky.profile:body", tgt: "app.fitsky.profile:body.publicProfile", kind: "prop", name: Some("publicProfile") }
- Non-breaking: AddedEdge { src: "app.fitsky.profile:body", tgt: "app.fitsky.profile:body.weightGrams", kind: "prop", name: Some("weightGrams") }
1
1
{
2
2
"id": "app.fitsky.profile",
3
3
"defs": {
4
4
"main": {
5
5
"key": "literal:self",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"properties": {
10
10
"bio": {
11
11
"type": "string",
12
12
"maxLength": 2560,
13
13
"description": "FitSky-specific bio text",
14
14
"maxGraphemes": 256
15
15
},
16
16
"banner": {
17
17
"type": "blob",
18
18
"accept": [
19
19
"image/png",
20
20
"image/jpeg",
21
21
"image/webp"
22
22
],
23
23
"maxSize": 1000000,
24
24
"description": "Custom FitSky banner image. Falls back to Bluesky banner if not set."
25
25
},
26
+
"heightCm": {
27
+
"type": "integer",
28
+
"minimum": 0,
29
+
"description": "Height in centimeters"
30
+
},
26
31
"createdAt": {
27
32
"type": "string",
28
33
"format": "datetime"
29
34
},
30
35
"unitSystem": {
31
36
"type": "string",
32
37
"maxLength": 64,
33
38
"description": "User's preferred unit system",
34
39
"knownValues": [
35
40
"metric",
36
41
"imperial"
37
42
]
43
+
},
44
+
"dateOfBirth": {
45
+
"type": "string",
46
+
"format": "datetime",
47
+
"description": "User's date of birth (ISO 8601). Used for max HR calculation."
48
+
},
49
+
"weightGrams": {
50
+
"type": "integer",
51
+
"minimum": 0,
52
+
"description": "Weight in grams"
53
+
},
54
+
"publicProfile": {
55
+
"type": "boolean",
56
+
"description": "Whether workout detail pages are publicly viewable without authentication"
38
57
}
39
58
}
40
59
},
41
60
"description": "A FitSky-specific user profile with custom banner and bio"
42
61
}
43
62
},
44
63
"$type": "com.atproto.lexicon.schema",
45
64
"lexicon": 1
46
65
}