com.getorbyt.getServiceInfo

getorbyt.com

Schema Diff

+132 -0

From

CID
bafyreihmh6bcwbh...
Indexed At
2026-09-01 05:23 UTC
View this version

To

CID
bafyreibzhtg4few...
Indexed At
2026-10-10 20:16 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

7 breaking changes, 37 non-breaking changes.

Breaking Changes (7)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#configValue", src: "com.getorbyt.getServiceInfo#configValue", tgt: "com.getorbyt.getServiceInfo#configValue.value", kind: "prop", name: Some("value") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#configValue", src: "com.getorbyt.getServiceInfo#configValue", tgt: "com.getorbyt.getServiceInfo#configValue.key", kind: "prop", name: Some("key") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#releaseNotes", src: "com.getorbyt.getServiceInfo#releaseNotes", tgt: "com.getorbyt.getServiceInfo#releaseNotes.version", kind: "prop", name: Some("version") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#releaseNotes", src: "com.getorbyt.getServiceInfo#releaseNotes", tgt: "com.getorbyt.getServiceInfo#releaseNotes.items", kind: "prop", name: Some("items") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#releaseNote", src: "com.getorbyt.getServiceInfo#releaseNote", tgt: "com.getorbyt.getServiceInfo#releaseNote.title", kind: "prop", name: Some("title") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#config", src: "com.getorbyt.getServiceInfo#config", tgt: "com.getorbyt.getServiceInfo#config.values", kind: "prop", name: Some("values") }
  • 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 (37)
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#config" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#config.values" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#config.values:items" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#configValue" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#configValue.key" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#configValue.value" }
  • 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#releaseNote" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#releaseNote.detail" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#releaseNote.title" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#releaseNotes" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#releaseNotes.items" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#releaseNotes.items:items" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#releaseNotes.version" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo:output.config" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo:output.providers" }
  • AddedVertex AddedVertex { vertex_id: "com.getorbyt.getServiceInfo:output.releaseNotes" }
  • AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo#config.values", tgt: "com.getorbyt.getServiceInfo#config.values:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo#config.values:items", tgt: "com.getorbyt.getServiceInfo#configValue", kind: "ref", name: None }
  • 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#releaseNote", tgt: "com.getorbyt.getServiceInfo#releaseNote.detail", kind: "prop", name: Some("detail") }
  • AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo#releaseNotes.items", tgt: "com.getorbyt.getServiceInfo#releaseNotes.items:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo#releaseNotes.items:items", tgt: "com.getorbyt.getServiceInfo#releaseNote", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo:output", tgt: "com.getorbyt.getServiceInfo:output.config", kind: "prop", name: Some("config") }
  • 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", tgt: "com.getorbyt.getServiceInfo:output.releaseNotes", kind: "prop", name: Some("releaseNotes") }
  • AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo:output.config", tgt: "com.getorbyt.getServiceInfo#config", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo:output.providers", tgt: "com.getorbyt.getServiceInfo#providers", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "com.getorbyt.getServiceInfo:output.releaseNotes", tgt: "com.getorbyt.getServiceInfo#releaseNotes", kind: "ref", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#config" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#config.values" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#config.values:items" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#configValue" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#configValue.key" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#configValue.value" }
  • 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#releaseNote" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#releaseNote.detail" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#releaseNote.title" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#releaseNotes" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#releaseNotes.items" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#releaseNotes.items:items" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo#releaseNotes.version" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo:output.config" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo:output.providers" }
  • AddedVertex { vertex_id: "com.getorbyt.getServiceInfo:output.releaseNotes" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#configValue", src: "com.getorbyt.getServiceInfo#configValue", tgt: "com.getorbyt.getServiceInfo#configValue.value", kind: "prop", name: Some("value") }
  • Breaking: RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#configValue", src: "com.getorbyt.getServiceInfo#configValue", tgt: "com.getorbyt.getServiceInfo#configValue.key", kind: "prop", name: Some("key") }
  • Breaking: RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#providers", src: "com.getorbyt.getServiceInfo#providers", tgt: "com.getorbyt.getServiceInfo#providers.network", kind: "prop", name: Some("network") }
  • Breaking: RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#config", src: "com.getorbyt.getServiceInfo#config", tgt: "com.getorbyt.getServiceInfo#config.values", kind: "prop", name: Some("values") }
  • Breaking: RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#releaseNotes", src: "com.getorbyt.getServiceInfo#releaseNotes", tgt: "com.getorbyt.getServiceInfo#releaseNotes.version", kind: "prop", name: Some("version") }
  • Breaking: RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#releaseNotes", src: "com.getorbyt.getServiceInfo#releaseNotes", tgt: "com.getorbyt.getServiceInfo#releaseNotes.items", kind: "prop", name: Some("items") }
  • Breaking: RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#releaseNote", src: "com.getorbyt.getServiceInfo#releaseNote", tgt: "com.getorbyt.getServiceInfo#releaseNote.title", kind: "prop", name: Some("title") }
  • Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo#config.values", tgt: "com.getorbyt.getServiceInfo#config.values:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo#config.values:items", tgt: "com.getorbyt.getServiceInfo#configValue", kind: "ref", name: None }
  • 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#releaseNote", tgt: "com.getorbyt.getServiceInfo#releaseNote.detail", kind: "prop", name: Some("detail") }
  • Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo#releaseNotes.items", tgt: "com.getorbyt.getServiceInfo#releaseNotes.items:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo#releaseNotes.items:items", tgt: "com.getorbyt.getServiceInfo#releaseNote", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo:output", tgt: "com.getorbyt.getServiceInfo:output.config", kind: "prop", name: Some("config") }
  • 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", tgt: "com.getorbyt.getServiceInfo:output.releaseNotes", kind: "prop", name: Some("releaseNotes") }
  • Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo:output.config", tgt: "com.getorbyt.getServiceInfo#config", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo:output.providers", tgt: "com.getorbyt.getServiceInfo#providers", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "com.getorbyt.getServiceInfo:output.releaseNotes", tgt: "com.getorbyt.getServiceInfo#releaseNotes", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 +
    "config": {
5 +
      "description": "Client settings decided by the service. Every value is optional for the client: it keeps a built-in default for each key it reads and ignores keys it does not know.",
6 +
      "properties": {
7 +
        "values": {
8 +
          "description": "Already filtered to the requesting platform and version.",
9 +
          "items": {
10 +
            "ref": "#configValue",
11 +
            "type": "ref"
12 +
          },
13 +
          "maxLength": 64,
14 +
          "type": "array"
15 +
        }
16 +
      },
17 +
      "required": [
18 +
        "values"
19 +
      ],
20 +
      "type": "object"
21 +
    },
22 +
    "configValue": {
23 +
      "description": "One setting. Values are strings so new keys need no schema change; the client parses each key it reads and falls back to its default when the value does not parse.",
24 +
      "properties": {
25 +
        "key": {
26 +
          "maxLength": 64,
27 +
          "type": "string"
28 +
        },
29 +
        "value": {
30 +
          "maxLength": 256,
31 +
          "type": "string"
32 +
        }
33 +
      },
34 +
      "required": [
35 +
        "key",
36 +
        "value"
37 +
      ],
38 +
      "type": "object"
39 +
    },
4 40
    "main": {
5 41
      "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 42
      "output": {
7 43
        "encoding": "application/json",
8 44
        "schema": {
9 45
          "properties": {
10 46
            "capabilities": {
11 47
              "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 48
              "items": {
13 49
                "maxLength": 64,
14 50
                "type": "string"
15 51
              },
16 52
              "maxLength": 128,
17 53
              "type": "array"
18 54
            },
55 +
            "config": {
56 +
              "description": "Values the client reads instead of building them in, so they can change without a release. Absent from an older service; a client that finds it absent, or a key missing from it, keeps its built-in default.",
57 +
              "ref": "#config",
58 +
              "type": "ref"
59 +
            },
19 60
            "minimumClient": {
20 61
              "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 62
              "maxLength": 32,
22 63
              "type": "string"
23 64
            },
24 65
            "notices": {
25 66
              "description": "Messages for the viewer, such as a degraded subsystem or a scheduled maintenance window.",
26 67
              "items": {
27 68
                "ref": "#notice",
28 69
                "type": "ref"
29 70
              },
30 71
              "maxLength": 8,
31 72
              "type": "array"
32 73
            },
74 +
            "providers": {
75 +
              "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.",
76 +
              "ref": "#providers",
77 +
              "type": "ref"
78 +
            },
33 79
            "recommendedClient": {
34 80
              "description": "The newest released client version for the requested platform, so a client can offer a soft update prompt without a separate service.",
35 81
              "maxLength": 32,
36 82
              "type": "string"
83 +
            },
84 +
            "releaseNotes": {
85 +
              "description": "What is new in the asking client's own version, for the sheet a client shows once on its first launch after an update. Present only when the request names a platform and a readable version this service has notes for. Absent from an older service; a client that finds it absent shows nothing.",
86 +
              "ref": "#releaseNotes",
87 +
              "type": "ref"
37 88
            }
38 89
          },
39 90
          "required": [
40 91
            "capabilities"
41 92
          ],
42 93
          "type": "object"
43 94
        }
44 95
      },
45 96
      "parameters": {
46 97
        "properties": {
47 98
          "platform": {
48 99
            "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 100
            "knownValues": [
50 101
              "ios",
51 102
              "web"
52 103
            ],
53 104
            "type": "string"
105 +
          },
106 +
          "version": {
107 +
            "description": "The asking client's own version, as a semantic version. Lets the service aim `config` values at particular builds, for example to turn something off only in the builds that have a bug. Absent or unreadable is answered as if no build were targeted.",
108 +
            "maxLength": 32,
109 +
            "type": "string"
54 110
          }
55 111
        },
56 112
        "type": "params"
57 113
      },
58 114
      "type": "query"
59 115
    },
60 116
    "notice": {
61 117
      "description": "One operator message. `id` is stable so a client can remember that this viewer has already dismissed it.",
62 118
      "properties": {
63 119
        "id": {
64 120
          "maxLength": 64,
65 121
          "type": "string"
66 122
        },
67 123
        "message": {
68 124
          "maxLength": 1000,
69 125
          "type": "string"
70 126
        },
71 127
        "severity": {
72 128
          "description": "Absent means info. A severity this client does not recognise must be presented as info rather than dropped or treated as blocking.",
73 129
          "knownValues": [
74 130
            "info",
75 131
            "warning",
76 132
            "blocking"
77 133
          ],
78 134
          "type": "string"
79 135
        },
80 136
        "url": {
81 137
          "format": "uri",
82 138
          "type": "string"
83 139
        }
84 140
      },
85 141
      "required": [
86 142
        "id",
87 143
        "message"
88 144
      ],
89 145
      "type": "object"
146 +
    },
147 +
    "providers": {
148 +
      "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.",
149 +
      "properties": {
150 +
        "appView": {
151 +
          "description": "Service DID with fragment answering `app.bsky.*` reads, e.g. `did:web:api.bsky.app#bsky_appview`.",
152 +
          "maxLength": 256,
153 +
          "type": "string"
154 +
        },
155 +
        "chat": {
156 +
          "description": "Service DID with fragment for chat.",
157 +
          "maxLength": 256,
158 +
          "type": "string"
159 +
        },
160 +
        "discoveryFeed": {
161 +
          "description": "The feed generator behind Your Mix.",
162 +
          "format": "at-uri",
163 +
          "type": "string"
164 +
        },
165 +
        "discoveryFeedService": {
166 +
          "description": "Service DID with fragment for `discoveryFeed`.",
167 +
          "maxLength": 256,
168 +
          "type": "string"
169 +
        },
170 +
        "network": {
171 +
          "description": "A stable label for the connected network, such as `bluesky`.",
172 +
          "maxLength": 32,
173 +
          "type": "string"
174 +
        }
175 +
      },
176 +
      "required": [
177 +
        "network"
178 +
      ],
179 +
      "type": "object"
180 +
    },
181 +
    "releaseNote": {
182 +
      "description": "One new thing: a short name and a sentence or two about it.",
183 +
      "properties": {
184 +
        "detail": {
185 +
          "maxLength": 500,
186 +
          "type": "string"
187 +
        },
188 +
        "title": {
189 +
          "maxLength": 100,
190 +
          "type": "string"
191 +
        }
192 +
      },
193 +
      "required": [
194 +
        "title"
195 +
      ],
196 +
      "type": "object"
197 +
    },
198 +
    "releaseNotes": {
199 +
      "description": "Notes for one released client version. Written by people for people, in the service so they can be written or corrected without a release.",
200 +
      "properties": {
201 +
        "items": {
202 +
          "description": "What is new, most important first.",
203 +
          "items": {
204 +
            "ref": "#releaseNote",
205 +
            "type": "ref"
206 +
          },
207 +
          "maxLength": 8,
208 +
          "minLength": 1,
209 +
          "type": "array"
210 +
        },
211 +
        "version": {
212 +
          "description": "The version these notes describe, as a semantic version. A client shows them only when it is its own version.",
213 +
          "maxLength": 32,
214 +
          "type": "string"
215 +
        }
216 +
      },
217 +
      "required": [
218 +
        "version",
219 +
        "items"
220 +
      ],
221 +
      "type": "object"
90 222
    }
91 223
  },
92 224
  "id": "com.getorbyt.getServiceInfo",
93 225
  "lexicon": 1
94 226
}

Compare Other Versions

Lexicon Garden

@