com.getorbyt.getServiceInfo
Schema Diff
+39 -0
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 13 non-breaking changes.
Breaking Changes (1)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#providers", src: "com.getorbyt.getServiceInfo#providers", tgt: "com.getorbyt.getServiceInfo#providers.network", kind: "prop", name: Some("network") }
Non-Breaking Changes (13)
- AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#providers" }
- AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#providers.appView" }
- AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#providers.chat" }
- AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#providers.discoveryFeed" }
- AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#providers.discoveryFeedService" }
- AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#providers.network" }
- AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo:output.providers" }
- AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo#providers", tgt: "com.getorbyt.getServiceInfo#providers.appView", kind: "prop", name: Some("appView") }
- AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo#providers", tgt: "com.getorbyt.getServiceInfo#providers.chat", kind: "prop", name: Some("chat") }
- AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo#providers", tgt: "com.getorbyt.getServiceInfo#providers.discoveryFeed", kind: "prop", name: Some("discoveryFeed") }
- AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo#providers", tgt: "com.getorbyt.getServiceInfo#providers.discoveryFeedService", kind: "prop", name: Some("discoveryFeedService") }
- AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo:output", tgt: "com.getorbyt.getServiceInfo:output.providers", kind: "prop", name: Some("providers") }
- AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo:output.providers", tgt: "com.getorbyt.getServiceInfo#providers", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#providers" }AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#providers.appView" }AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#providers.chat" }AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#providers.discoveryFeed" }AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#providers.discoveryFeedService" }AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#providers.network" }AddedVertex { vertex_id: "com.getorbyt.getServiceInfo:output.providers" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#providers", src: "com.getorbyt.getServiceInfo#providers", tgt: "com.getorbyt.getServiceInfo#providers.network", kind: "prop", name: Some("network") }
- Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo#providers", tgt: "com.getorbyt.getServiceInfo#providers.appView", kind: "prop", name: Some("appView") }
- Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo#providers", tgt: "com.getorbyt.getServiceInfo#providers.chat", kind: "prop", name: Some("chat") }
- Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo#providers", tgt: "com.getorbyt.getServiceInfo#providers.discoveryFeed", kind: "prop", name: Some("discoveryFeed") }
- Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo#providers", tgt: "com.getorbyt.getServiceInfo#providers.discoveryFeedService", kind: "prop", name: Some("discoveryFeedService") }
- Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo:output", tgt: "com.getorbyt.getServiceInfo:output.providers", kind: "prop", name: Some("providers") }
- Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo:output.providers", tgt: "com.getorbyt.getServiceInfo#providers", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "What this deployment of the Orbyt service can currently do, for clients that cannot be upgraded in step with it. Clients feature-detect against `capabilities` rather than comparing version numbers: only one version of this service is ever live, while many client builds run for months. Every field is optional and the whole call is optional — a client that cannot reach it, or reads an older service that does not serve it, must behave exactly as it did before. Unauthenticated.",
6
6
"output": {
7
7
"encoding": "application/json",
8
8
"schema": {
9
9
"properties": {
10
10
"capabilities": {
11
11
"description": "Behaviours this deployment supports, as opaque identifiers a client tests for membership of. Deliberately not `knownValues`: the whole point is that a client meets identifiers it has never heard of and ignores them. Removing one is how a feature is turned off in already-installed clients.",
12
12
"items": {
13
13
"maxLength": 64,
14
14
"type": "string"
15
15
},
16
16
"maxLength": 128,
17
17
"type": "array"
18
18
},
19
19
"minimumClient": {
20
20
"description": "The oldest client version this service still answers correctly for the requested platform, as a semantic version. Advisory: this service does not refuse older clients, it tells them. A client below it should prompt for an update.",
21
21
"maxLength": 32,
22
22
"type": "string"
23
23
},
24
24
"notices": {
25
25
"description": "Messages for the viewer, such as a degraded subsystem or a scheduled maintenance window.",
26
26
"items": {
27
27
"ref": "#notice",
28
28
"type": "ref"
29
29
},
30
30
"maxLength": 8,
31
31
"type": "array"
32
32
},
33
+
"providers": {
34
+
"description": "Which external services this deployment is attached to, so a client can aim `atproto-proxy` at them without a release. Absent from an older service; a client that finds it absent keeps its built-in defaults.",
35
+
"ref": "#providers",
36
+
"type": "ref"
37
+
},
33
38
"recommendedClient": {
34
39
"description": "The newest released client version for the requested platform, so a client can offer a soft update prompt without a separate service.",
35
40
"maxLength": 32,
36
41
"type": "string"
37
42
}
38
43
},
39
44
"required": [
40
45
"capabilities"
41
46
],
42
47
"type": "object"
43
48
}
44
49
},
45
50
"parameters": {
46
51
"properties": {
47
52
"platform": {
48
53
"description": "Which client is asking, so version advice can be answered for it. An unknown or absent platform is answered without version advice rather than refused.",
49
54
"knownValues": [
50
55
"ios",
51
56
"web"
52
57
],
53
58
"type": "string"
54
59
}
55
60
},
56
61
"type": "params"
57
62
},
58
63
"type": "query"
59
64
},
60
65
"notice": {
61
66
"description": "One operator message. `id` is stable so a client can remember that this viewer has already dismissed it.",
62
67
"properties": {
63
68
"id": {
64
69
"maxLength": 64,
65
70
"type": "string"
66
71
},
67
72
"message": {
68
73
"maxLength": 1000,
69
74
"type": "string"
70
75
},
71
76
"severity": {
72
77
"description": "Absent means info. A severity this client does not recognise must be presented as info rather than dropped or treated as blocking.",
73
78
"knownValues": [
74
79
"info",
75
80
"warning",
76
81
"blocking"
77
82
],
78
83
"type": "string"
79
84
},
80
85
"url": {
81
86
"format": "uri",
82
87
"type": "string"
83
88
}
84
89
},
85
90
"required": [
86
91
"id",
87
92
"message"
88
93
],
89
94
"type": "object"
95
+
},
96
+
"providers": {
97
+
"description": "Service identities only, never operational endpoints. Each service field is absent when this deployment has none; for `appView` that means standard social reads are unavailable and the client should not attempt them.",
98
+
"properties": {
99
+
"appView": {
100
+
"description": "Service DID with fragment answering `app.bsky.*` reads, e.g. `did:web:api.bsky.app#bsky_appview`.",
101
+
"maxLength": 256,
102
+
"type": "string"
103
+
},
104
+
"chat": {
105
+
"description": "Service DID with fragment for chat.",
106
+
"maxLength": 256,
107
+
"type": "string"
108
+
},
109
+
"discoveryFeed": {
110
+
"description": "The feed generator behind Your Mix.",
111
+
"format": "at-uri",
112
+
"type": "string"
113
+
},
114
+
"discoveryFeedService": {
115
+
"description": "Service DID with fragment for `discoveryFeed`.",
116
+
"maxLength": 256,
117
+
"type": "string"
118
+
},
119
+
"network": {
120
+
"description": "A stable label for the connected network, such as `bluesky`.",
121
+
"maxLength": 32,
122
+
"type": "string"
123
+
}
124
+
},
125
+
"required": [
126
+
"network"
127
+
],
128
+
"type": "object"
90
129
}
91
130
},
92
131
"id": "com.getorbyt.getServiceInfo",
93
132
"lexicon": 1
94
133
}