{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/datadog-software-catalog/_shared/latest--service.schema.json",
  "description": "Schema for service entities",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/DataDog/schema/main/service-catalog/v3/service.schema.json",
    "sourceSha256": "f6266a022cdfe842ded4f667964b332ea9730b4cc01ec757b889244a82a8b30f"
  },
  "examples": [],
  "allOf": [
    {
      "$ref": "https://catalog.lintel.tools/schemas/schemastore/datadog-software-catalog/_shared/latest--entity.schema.json"
    },
    {
      "type": "object",
      "properties": {
        "apiVersion": {
          "enum": [
            "v3"
          ]
        },
        "kind": {
          "enum": [
            "service"
          ]
        },
        "metadata": {
          "type": "object"
        },
        "extensions": {
          "type": "object"
        },
        "spec": {
          "type": "object",
          "properties": {
            "lifecycle": {
              "type": "string",
              "description": "The lifecycle state of the component.",
              "examples": [
                "experimental",
                "production",
                "deprecated"
              ],
              "minLength": 1
            },
            "tier": {
              "type": "string",
              "description": "The importance of the component",
              "examples": [
                "1",
                "High"
              ],
              "minLength": 1
            },
            "type": {
              "description": "The type of service",
              "examples": [
                "web",
                "grpc",
                "http",
                "rest",
                "graphql"
              ],
              "type": "string"
            },
            "languages": {
              "description": "The service's programming language. See examples for a list of recognizable languages",
              "examples": [
                [
                  "dotnet",
                  "go",
                  "java",
                  "js",
                  "php",
                  "python",
                  "ruby",
                  "c++"
                ]
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "dependsOn": {
              "description": "A list of components the service depends on",
              "examples": [
                "service:myapp",
                "queue:myqueue",
                "datastore:mydatastore",
                "library:mylibrary"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "componentOf": {
              "description": "A list of components the service is a part of",
              "examples": [
                "system:my-example-system",
                "service:myapp"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "additionalProperties": false
        },
        "integrations": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/datadog-software-catalog/_shared/latest--integrations.schema.json"
        },
        "datadog": {
          "type": "object",
          "description": "Datadog product integrations for the service entity",
          "properties": {
            "pipelines": {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/datadog-software-catalog/_shared/latest--datadog_pipelines.schema.json"
            },
            "events": {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/datadog-software-catalog/_shared/latest--datadog_events.schema.json"
            },
            "logs": {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/datadog-software-catalog/_shared/latest--datadog_logs.schema.json"
            },
            "codeLocations": {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/datadog-software-catalog/_shared/latest--datadog_code_locations.schema.json"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  ]
}
