{
  "$id": "https://firefox-ci-tc.services.mozilla.com/schemas/common/manifest-v2.json#",
  "$schema": "http://json-schema.org/draft-06/schema#",
  "additionalProperties": false,
  "description": "Manifest of taskcluster service definitions available in a taskcluster service deployment.\nThese manifests are served from `$ROOT_URL/references/manifest.json`.",
  "properties": {
    "services": {
      "default": [],
      "description": "List of services that comprise a taskcluster build.",
      "items": {
        "additionalProperties": false,
        "description": "A taskcluster microservice's APIs",
        "properties": {
          "apis": {
            "default": [],
            "description": "HTTP API exposed by this service.",
            "items": {
              "additionalProperties": false,
              "description": "HTTP API",
              "properties": {
                "reference": {
                  "description": "A document conformant to `$ROOT_URL/schemas/common/api-reference-v1.json#` describing the API exposed by service.",
                  "title": "HTTP API reference",
                  "type": "string"
                },
                "version": {
                  "description": "Version of API, e.g. `v1`.",
                  "pattern": "^v[0-9][0-9]*$",
                  "title": "Version",
                  "type": "string"
                }
              },
              "required": [
                "version",
                "reference"
              ],
              "title": "HTTP API Reference",
              "type": "object"
            },
            "title": "HTTP APIs",
            "type": "array",
            "uniqueItems": true
          },
          "pulse": {
            "default": [],
            "description": "Pulse exchanges exposed by this service.",
            "items": {
              "additionalProperties": false,
              "description": "AMQP API",
              "properties": {
                "reference": {
                  "description": "A document conformant to `$ROOT_URL/schemas/common/exchanges-reference-v1.json#` describing the API exposed by service.",
                  "title": "Pulse exchanges reference",
                  "type": "string"
                },
                "version": {
                  "description": "Version of API, e.g. `v1`.",
                  "pattern": "^v[0-9][0-9]*$",
                  "title": "Version",
                  "type": "string"
                }
              },
              "required": [
                "version",
                "reference"
              ],
              "title": "Pulse reference",
              "type": "object"
            },
            "title": "Pulse references",
            "type": "array",
            "uniqueItems": true
          },
          "serviceName": {
            "description": "A short name for the service, such as `queue` / `purge-cache` / `ec2-manager`.\nThis matches the `serviceName` field in any references linked from here.\n",
            "pattern": "^[a-z][a-z0-9_-]*$",
            "title": "Service Name",
            "type": "string"
          }
        },
        "required": [
          "serviceName"
        ],
        "title": "Service",
        "type": "object"
      },
      "title": "List of taskcluster services",
      "type": "array",
      "uniqueItems": true
    }
  },
  "required": [
    "services"
  ],
  "title": "Taskcluster Service Manifest",
  "type": "object"
}