{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/datadog-service-definition/_shared/latest--queue.schema.json",
  "description": "Schema for queue entities",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/DataDog/schema/main/service-catalog/v3/queue.schema.json",
    "sourceSha256": "671dcd049564ba17629e3162a642b0393db61b2d071389f8b9dcf22ccf3171a8"
  },
  "examples": [],
  "allOf": [
    {
      "$ref": "https://catalog.lintel.tools/schemas/schemastore/datadog-service-definition/_shared/latest--entity.schema.json"
    },
    {
      "type": "object",
      "properties": {
        "apiVersion": {
          "enum": [
            "v3"
          ]
        },
        "kind": {
          "enum": [
            "queue"
          ]
        },
        "metadata": {
          "type": "object"
        },
        "extensions": {
          "type": "object"
        },
        "spec": {
          "type": "object",
          "properties": {
            "lifecycle": {
              "type": "string",
              "description": "The lifecycle state of the queue.",
              "examples": [
                "experimental",
                "production",
                "deprecated"
              ],
              "minLength": 1
            },
            "tier": {
              "type": "string",
              "description": "The importance of the queue",
              "examples": [
                "1",
                "High"
              ],
              "minLength": 1
            },
            "type": {
              "description": "The type of queue",
              "examples": [
                "kafka",
                "rabbitmq"
              ],
              "type": "string"
            },
            "componentOf": {
              "description": "A list of components the queue is a part of",
              "examples": [
                "system:my-example-system",
                "service:myapp"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "dependsOn": {
              "description": "A list of components the queue depends on",
              "examples": [
                "service:myapp",
                "queue:myqueue",
                "datastore:mydatastore",
                "library:mylibrary"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "dependencyOf": {
              "description": "A list of components the queue is a dependency of",
              "examples": [
                "service:parentapp"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "additionalProperties": false
        },
        "integrations": {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/datadog-service-definition/_shared/latest--integrations.schema.json"
        },
        "datadog": {
          "type": "object",
          "description": "Datadog product integrations for the queue entity",
          "properties": {
            "pipelines": {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/datadog-service-definition/_shared/latest--datadog_pipelines.schema.json"
            },
            "events": {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/datadog-service-definition/_shared/latest--datadog_events.schema.json"
            },
            "logs": {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/datadog-service-definition/_shared/latest--datadog_logs.schema.json"
            },
            "codeLocations": {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/datadog-service-definition/_shared/latest--datadog_code_locations.schema.json"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    }
  ]
}
