{
  "description": "Subscription describes an pub/sub event subscription.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "scopes": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "spec": {
      "description": "SubscriptionSpec is the spec for an event subscription.",
      "properties": {
        "bulkSubscribe": {
          "description": "The option to enable bulk subscription for this topic.",
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "maxAwaitDurationMs": {
              "format": "int32",
              "type": "integer"
            },
            "maxMessagesCount": {
              "format": "int32",
              "type": "integer"
            }
          },
          "required": [
            "enabled"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "deadLetterTopic": {
          "description": "The optional dead letter queue for this topic to send events to.",
          "type": "string"
        },
        "metadata": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The optional metadata to provide the subscription.",
          "type": "object"
        },
        "pubsubname": {
          "description": "The PubSub component name.",
          "type": "string"
        },
        "routes": {
          "description": "The Routes configuration for this topic.",
          "properties": {
            "default": {
              "description": "The default path for this topic.",
              "type": "string"
            },
            "rules": {
              "description": "The list of rules for this topic.",
              "items": {
                "description": "Rule is used to specify the condition for sending\na message to a specific path.",
                "properties": {
                  "match": {
                    "description": "The optional CEL expression used to match the event.\nIf the match is not specified, then the route is considered\nthe default. The rules are tested in the order specified,\nso they should be define from most-to-least specific.\nThe default route should appear last in the list.",
                    "type": "string"
                  },
                  "path": {
                    "description": "The path for events that match this rule.",
                    "type": "string"
                  }
                },
                "required": [
                  "match",
                  "path"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "topic": {
          "description": "The topic name to subscribe to.",
          "type": "string"
        }
      },
      "required": [
        "pubsubname",
        "routes",
        "topic"
      ],
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
