com.getorbyt.getServiceInfo

getorbyt.com

Schema Diff

+47 -0

From

CID
bafyreidxk6rvwkg...
Indexed At
2026-10-08 20:14 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

3 breaking changes, 13 non-breaking changes.

Breaking Changes (3)
  • 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#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") }
Non-Breaking Changes (13)
  • 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.releaseNotes" }
  • 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.releaseNotes", kind: "prop", name: Some("releaseNotes") }
  • 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#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.releaseNotes" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "com.getorbyt.getServiceInfo#releaseNote", src: "com.getorbyt.getServiceInfo#releaseNote", tgt: "com.getorbyt.getServiceInfo#releaseNote.title", kind: "prop", name: Some("title") }
  • 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") }
  • 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.releaseNotes", kind: "prop", name: Some("releaseNotes") }
  • 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 4
    "config": {
5 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 6
      "properties": {
7 7
        "values": {
8 8
          "description": "Already filtered to the requesting platform and version.",
9 9
          "items": {
10 10
            "ref": "#configValue",
11 11
            "type": "ref"
12 12
          },
13 13
          "maxLength": 64,
14 14
          "type": "array"
15 15
        }
16 16
      },
17 17
      "required": [
18 18
        "values"
19 19
      ],
20 20
      "type": "object"
21 21
    },
22 22
    "configValue": {
23 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 24
      "properties": {
25 25
        "key": {
26 26
          "maxLength": 64,
27 27
          "type": "string"
28 28
        },
29 29
        "value": {
30 30
          "maxLength": 256,
31 31
          "type": "string"
32 32
        }
33 33
      },
34 34
      "required": [
35 35
        "key",
36 36
        "value"
37 37
      ],
38 38
      "type": "object"
39 39
    },
40 40
    "main": {
41 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.",
42 42
      "output": {
43 43
        "encoding": "application/json",
44 44
        "schema": {
45 45
          "properties": {
46 46
            "capabilities": {
47 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.",
48 48
              "items": {
49 49
                "maxLength": 64,
50 50
                "type": "string"
51 51
              },
52 52
              "maxLength": 128,
53 53
              "type": "array"
54 54
            },
55 55
            "config": {
56 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 57
              "ref": "#config",
58 58
              "type": "ref"
59 59
            },
60 60
            "minimumClient": {
61 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.",
62 62
              "maxLength": 32,
63 63
              "type": "string"
64 64
            },
65 65
            "notices": {
66 66
              "description": "Messages for the viewer, such as a degraded subsystem or a scheduled maintenance window.",
67 67
              "items": {
68 68
                "ref": "#notice",
69 69
                "type": "ref"
70 70
              },
71 71
              "maxLength": 8,
72 72
              "type": "array"
73 73
            },
74 74
            "providers": {
75 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 76
              "ref": "#providers",
77 77
              "type": "ref"
78 78
            },
79 79
            "recommendedClient": {
80 80
              "description": "The newest released client version for the requested platform, so a client can offer a soft update prompt without a separate service.",
81 81
              "maxLength": 32,
82 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"
83 88
            }
84 89
          },
85 90
          "required": [
86 91
            "capabilities"
87 92
          ],
88 93
          "type": "object"
89 94
        }
90 95
      },
91 96
      "parameters": {
92 97
        "properties": {
93 98
          "platform": {
94 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.",
95 100
            "knownValues": [
96 101
              "ios",
97 102
              "web"
98 103
            ],
99 104
            "type": "string"
100 105
          },
101 106
          "version": {
102 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.",
103 108
            "maxLength": 32,
104 109
            "type": "string"
105 110
          }
106 111
        },
107 112
        "type": "params"
108 113
      },
109 114
      "type": "query"
110 115
    },
111 116
    "notice": {
112 117
      "description": "One operator message. `id` is stable so a client can remember that this viewer has already dismissed it.",
113 118
      "properties": {
114 119
        "id": {
115 120
          "maxLength": 64,
116 121
          "type": "string"
117 122
        },
118 123
        "message": {
119 124
          "maxLength": 1000,
120 125
          "type": "string"
121 126
        },
122 127
        "severity": {
123 128
          "description": "Absent means info. A severity this client does not recognise must be presented as info rather than dropped or treated as blocking.",
124 129
          "knownValues": [
125 130
            "info",
126 131
            "warning",
127 132
            "blocking"
128 133
          ],
129 134
          "type": "string"
130 135
        },
131 136
        "url": {
132 137
          "format": "uri",
133 138
          "type": "string"
134 139
        }
135 140
      },
136 141
      "required": [
137 142
        "id",
138 143
        "message"
139 144
      ],
140 145
      "type": "object"
141 146
    },
142 147
    "providers": {
143 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.",
144 149
      "properties": {
145 150
        "appView": {
146 151
          "description": "Service DID with fragment answering `app.bsky.*` reads, e.g. `did:web:api.bsky.app#bsky_appview`.",
147 152
          "maxLength": 256,
148 153
          "type": "string"
149 154
        },
150 155
        "chat": {
151 156
          "description": "Service DID with fragment for chat.",
152 157
          "maxLength": 256,
153 158
          "type": "string"
154 159
        },
155 160
        "discoveryFeed": {
156 161
          "description": "The feed generator behind Your Mix.",
157 162
          "format": "at-uri",
158 163
          "type": "string"
159 164
        },
160 165
        "discoveryFeedService": {
161 166
          "description": "Service DID with fragment for `discoveryFeed`.",
162 167
          "maxLength": 256,
163 168
          "type": "string"
164 169
        },
165 170
        "network": {
166 171
          "description": "A stable label for the connected network, such as `bluesky`.",
167 172
          "maxLength": 32,
168 173
          "type": "string"
169 174
        }
170 175
      },
171 176
      "required": [
172 177
        "network"
173 178
      ],
174 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"
175 222
    }
176 223
  },
177 224
  "id": "com.getorbyt.getServiceInfo",
178 225
  "lexicon": 1
179 226
}

Compare Other Versions

Lexicon Garden

@