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