{
  "$schema": "http://json-schema.org/draft-07/schema",
  "$id": "SystemV1alpha1",
  "description": "A system is a collection of resources and components. The system may expose or consume one or several APIs. It is viewed as abstraction level that provides potential consumers insights into exposed features without needing a too detailed view into the details of all components. This also gives the owning team the possibility to decide about published artifacts and APIs.",
  "examples": [
    {
      "apiVersion": "backstage.io/v1alpha1",
      "kind": "System",
      "metadata": {
        "name": "artist-engagement-portal",
        "description": "Handy tools to keep artists in the loop"
      },
      "spec": {
        "owner": "artist-relations-team",
        "domain": "artists"
      }
    }
  ],
  "allOf": [
    {
      "$ref": "Entity"
    },
    {
      "type": "object",
      "required": ["spec"],
      "properties": {
        "apiVersion": {
          "enum": ["backstage.io/v1alpha1", "backstage.io/v1beta1"]
        },
        "kind": {
          "enum": ["System"]
        },
        "spec": {
          "type": "object",
          "required": ["owner"],
          "properties": {
            "owner": {
              "type": "string",
              "description": "An entity reference to the owner of the component.",
              "examples": ["artist-relations-team", "user:john.johnson"],
              "minLength": 1
            },
            "domain": {
              "type": "string",
              "description": "An entity reference to the domain that the system belongs to.",
              "examples": ["artists"],
              "minLength": 1
            }
          }
        }
      }
    }
  ]
}
