{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "bindings": {
      "additionalProperties": false,
      "properties": {
        "http": {
          "additionalProperties": false,
          "properties": {
            "prefix": {
              "type": "string"
            }
          },
          "required": [
            "prefix"
          ],
          "type": "object"
        },
        "primary": {
          "type": "string"
        }
      },
      "required": [
        "primary",
        "http"
      ],
      "type": "object"
    },
    "build": {
      "additionalProperties": false,
      "properties": {
        "dirty": {
          "type": "boolean"
        },
        "go": {
          "type": "string"
        },
        "revision": {
          "type": "string"
        }
      },
      "required": [
        "revision",
        "dirty",
        "go"
      ],
      "type": "object"
    },
    "contract": {
      "type": "string"
    },
    "files": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "operations": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "doc": {
            "type": "string"
          },
          "errors": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "http": {
            "additionalProperties": false,
            "properties": {
              "method": {
                "type": "string"
              },
              "path": {
                "type": "string"
              }
            },
            "required": [
              "method",
              "path"
            ],
            "type": "object"
          },
          "kind": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "params": {
            "items": {
              "additionalProperties": false,
              "properties": {
                "doc": {
                  "type": "string"
                },
                "kind": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "required": {
                  "type": "boolean"
                }
              },
              "required": [
                "name",
                "kind",
                "required",
                "doc"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "request": {
            "type": "string"
          },
          "response": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "kind",
          "doc",
          "params",
          "errors",
          "http"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "refusals": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "http": {
            "type": "integer"
          },
          "meaning": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "http",
          "meaning"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "service": {
      "type": "string"
    },
    "surface": {
      "type": "string"
    }
  },
  "required": [
    "service",
    "surface",
    "contract",
    "build",
    "bindings",
    "operations",
    "refusals",
    "files"
  ],
  "type": "object"
}
