{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "file:///services.schema.json",
  "title": "Services Schema",
  "description": "Schema for defining services in a system",
  "type": "object",
  "properties": {
    "services": {
      "type": "array",
      "description": "List of services in the system",
      "items": {
        "$ref": "#/definitions/service"
      }
    }
  },
  "required": ["services"],
  "definitions": {
    "service": {
      "type": "object",
      "required": ["name", "type"],
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the service"
        },
        "type": {
          "type": "string",
          "description": "Type of the service"
        },
        "meta": {
          "type": "object",
          "required": [
            "github_repo",
            "terraform_configuration_path",
            "jira_issue",
            "language",
            "auth"
          ],
          "properties": {
            "github_repo": { "type": "string" },
            "terraform_configuration_path": { "type": "string" },
            "jira_issue": { "type": "string" },
            "language": { "type": "string" },
            "auth": { "type": "string" },
            "group": { "type": ["string", "null"] }
          },
          "additionalProperties": true
        },
        "dependencies": {
          "type": "array",
          "items": {
            "type": "object",
            "required": ["name", "type"],
            "properties": {
              "name": { "type": "string" },
              "type": { "type": "string" }
            },
            "additionalProperties": true
          }
        }
      },
      "additionalProperties": false
    }
  }
}