{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"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.",
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"capabilities": {
"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.",
"items": {
"maxLength": 64,
"type": "string"
},
"maxLength": 128,
"type": "array"
},
"minimumClient": {
"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.",
"maxLength": 32,
"type": "string"
},
"notices": {
"description": "Messages for the viewer, such as a degraded subsystem or a scheduled maintenance window.",
"items": {
"ref": "#notice",
"type": "ref"
},
"maxLength": 8,
"type": "array"
},
"recommendedClient": {
"description": "The newest released client version for the requested platform, so a client can offer a soft update prompt without a separate service.",
"maxLength": 32,
"type": "string"
}
},
"required": [
"capabilities"
],
"type": "object"
}
},
"parameters": {
"properties": {
"platform": {
"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.",
"knownValues": [
"ios",
"web"
],
"type": "string"
}
},
"type": "params"
},
"type": "query"
},
"notice": {
"description": "One operator message. `id` is stable so a client can remember that this viewer has already dismissed it.",
"properties": {
"id": {
"maxLength": 64,
"type": "string"
},
"message": {
"maxLength": 1000,
"type": "string"
},
"severity": {
"description": "Absent means info. A severity this client does not recognise must be presented as info rather than dropped or treated as blocking.",
"knownValues": [
"info",
"warning",
"blocking"
],
"type": "string"
},
"url": {
"format": "uri",
"type": "string"
}
},
"required": [
"id",
"message"
],
"type": "object"
}
},
"id": "com.getorbyt.getServiceInfo",
"lexicon": 1
}