social.passports.travel.leg
Schema Diff
+12 -12
Compatibility Analysis
Breaking Changes Detected
4 breaking changes, 4 non-breaking changes.
Breaking Changes (4)
- RemovedVertex RemovedVertex { vertex_id: "social.passports.travel.leg:body.destinationRef" }
- RemovedVertex RemovedVertex { vertex_id: "social.passports.travel.leg:body.originRef" }
- RemovedEdge RemovedEdge { src: "social.passports.travel.leg:body", tgt: "social.passports.travel.leg:body.destinationRef", kind: "prop", name: Some("destinationRef") }
- RemovedEdge RemovedEdge { src: "social.passports.travel.leg:body", tgt: "social.passports.travel.leg:body.originRef", kind: "prop", name: Some("originRef") }
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "social.passports.travel.leg:body.destination" }
- AddedVertex AddedVertex { vertex_id: "social.passports.travel.leg:body.origin" }
- AddedEdge AddedEdge { src: "social.passports.travel.leg:body", tgt: "social.passports.travel.leg:body.destination", kind: "prop", name: Some("destination") }
- AddedEdge AddedEdge { src: "social.passports.travel.leg:body", tgt: "social.passports.travel.leg:body.origin", kind: "prop", name: Some("origin") }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "social.passports.travel.leg:body.destinationRef" }RemovedVertex { vertex_id: "social.passports.travel.leg:body.originRef" }
Added Elements
AddedVertex { vertex_id: "social.passports.travel.leg:body.destination" }AddedVertex { vertex_id: "social.passports.travel.leg:body.origin" }
Additional Notes
- Breaking: RemovedEdge { src: "social.passports.travel.leg:body", tgt: "social.passports.travel.leg:body.destinationRef", kind: "prop", name: Some("destinationRef") }
- Breaking: RemovedEdge { src: "social.passports.travel.leg:body", tgt: "social.passports.travel.leg:body.originRef", kind: "prop", name: Some("originRef") }
- Non-breaking: AddedEdge { src: "social.passports.travel.leg:body", tgt: "social.passports.travel.leg:body.destination", kind: "prop", name: Some("destination") }
- Non-breaking: AddedEdge { src: "social.passports.travel.leg:body", tgt: "social.passports.travel.leg:body.origin", kind: "prop", name: Some("origin") }
1
1
{
2
2
"id": "social.passports.travel.leg",
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
-
"originRef",
11
-
"destinationRef",
10
+
"origin",
11
+
"destination",
12
12
"transportation",
13
13
"createdAt"
14
14
],
15
15
"properties": {
16
+
"origin": {
17
+
"ref": "social.passports.place",
18
+
"type": "ref",
19
+
"description": "Inline origin place object. Self-contained — no external fetch required."
20
+
},
16
21
"carrier": {
17
22
"type": "string",
18
23
"maxLength": 100,
19
24
"description": "Carrier name, e.g. 'Japan Airlines' or 'Amtrak'."
20
25
},
21
26
"endDate": {
22
27
"type": "string",
23
28
"maxLength": 10,
24
29
"description": "Arrival date in YYYY-MM-DD format."
25
30
},
26
31
"createdAt": {
27
32
"type": "string",
28
33
"format": "datetime"
29
-
},
30
-
"originRef": {
31
-
"ref": "com.atproto.repo.strongRef",
32
-
"type": "ref",
33
-
"description": "Reference to the origin social.passports.place record."
34
34
},
35
35
"startDate": {
36
36
"type": "string",
37
37
"maxLength": 10,
38
38
"description": "Departure date in YYYY-MM-DD format. Stored as a date string rather than datetime to avoid timezone ambiguity — travel dates are calendar-day concepts."
39
39
},
40
40
"carrierCode": {
41
41
"type": "string",
42
42
"maxLength": 10,
43
43
"description": "Transport-agnostic carrier code — IATA airline code for flights (e.g. 'JL'), route abbreviation for non-IATA carriers (e.g. 'ACE' for Acela)."
44
44
},
45
45
"description": {
46
46
"type": "string",
47
47
"maxLength": 3000,
48
48
"description": "Free-text notes about this leg."
49
49
},
50
+
"destination": {
51
+
"ref": "social.passports.place",
52
+
"type": "ref",
53
+
"description": "Inline destination place object. Self-contained — no external fetch required."
54
+
},
50
55
"serviceNumber": {
51
56
"type": "string",
52
57
"maxLength": 20,
53
58
"description": "Flight number, train number, or equivalent service identifier, e.g. 'JL006' or 'Acela 2151'."
54
-
},
55
-
"destinationRef": {
56
-
"ref": "com.atproto.repo.strongRef",
57
-
"type": "ref",
58
-
"description": "Reference to the destination social.passports.place record."
59
59
},
60
60
"transportation": {
61
61
"type": "string",
62
62
"description": "Mode of transportation.",
63
63
"knownValues": [
64
64
"flight",
65
65
"train",
66
66
"bus",
67
67
"car",
68
68
"ferry",
69
69
"walking",
70
70
"cycling",
71
71
"other"
72
72
]
73
73
},
74
74
"originTransportCode": {
75
75
"type": "string",
76
76
"maxLength": 10,
77
77
"description": "Terminal code at origin — IATA airport code for flights (e.g. 'JFK'), station code for rail (e.g. 'NYP'), etc. Overrides the place record's transport_code for this specific leg."
78
78
},
79
79
"destinationTransportCode": {
80
80
"type": "string",
81
81
"maxLength": 10,
82
82
"description": "Terminal code at destination — IATA airport code for flights (e.g. 'CDG'), station code for rail, etc. Overrides the place record's transport_code for this specific leg."
83
83
}
84
84
}
85
85
},
86
86
"description": "One transport segment of a trip — a single origin-to-destination movement. Part of a social.passports.travel.trip."
87
87
}
88
88
},
89
89
"$type": "com.atproto.lexicon.schema",
90
90
"lexicon": 1
91
91
}