{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://astrocollabapi.com/schemas/Capabilities.schema.json",
  "title": "Capabilities",
  "type": "object",
  "required": [
    "server_id",
    "api_root",
    "protocol_versions",
    "spec_version",
    "features",
    "account_url",
    "artifact_formats",
    "limits"
  ],
  "properties": {
    "server_id": {
      "$ref": "Uuid.schema.json"
    },
    "api_root": {
      "$ref": "ServiceUrl.schema.json"
    },
    "protocol_versions": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "v1"
        ]
      },
      "minItems": 1,
      "maxItems": 100
    },
    "spec_version": {
      "type": "string",
      "enum": [
        "0.1.0-draft.1"
      ]
    },
    "features": {
      "type": "array",
      "items": {
        "$ref": "FeatureName.schema.json"
      },
      "minItems": 0,
      "maxItems": 32
    },
    "account_url": {
      "$ref": "ServiceUrl.schema.json",
      "description": "Account pages, where users sign up and create API keys."
    },
    "artifact_formats": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "fits",
          "xisf"
        ]
      },
      "minItems": 1,
      "maxItems": 2
    },
    "external_retrieval_hosts": {
      "type": "array",
      "items": {
        "$ref": "Hostname.schema.json"
      },
      "minItems": 1,
      "maxItems": 32,
      "description": "Hosts this server fetches externally shared files from by itself. Absent means\nmaintainers retrieve them by hand."
    },
    "limits": {
      "$ref": "Limits.schema.json"
    }
  },
  "description": "Public server description.",
  "additionalProperties": false
}
