apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: subscriptions.dapr.io
spec:
  group: dapr.io
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        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
          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
          metadata:
            type: object
          scopes:
            items:
              type: string
            type: array
          spec:
            description: SubscriptionSpec is the spec for an event subscription.
            properties:
              pubsubname:
                type: string
              route:
                type: string
              topic:
                type: string
              metadata:
                additionalProperties:
                  type: string
                type: object
              dlq:
                description: Dead letter queue properties for the specified subscription
                properties:
                  pubsubname:
                    type: string
                  topic: 
                    type: string
                  isbrokerspecific:
                    description: Specifies if the user wants to use the broker's dead letter queue or not.
                    type: boolean
                type: object
            required:
            - pubsubname
            - route
            - topic
            type: object
        type: object
    served: true
    storage: false
  - name: v2alpha1
    schema:
      openAPIV3Schema:
        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
          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
          metadata:
            type: object
          scopes:
            items:
              type: string
            type: array
          spec:
            description: SubscriptionSpec is the spec for an event subscription.
            properties:
              metadata:
                additionalProperties:
                  type: string
                description: The optional metadata to provide the the subscription.
                type: object
              pubsubname:
                description: The PubSub component name.
                type: string
              routes:
                description: The Routes configuration for this topic.
                properties:
                  default:
                    type: string
                  rules:
                    description: The list of rules for this topic.
                    items:
                      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
                type: object
              topic:
                description: The topic name to subscribe to.
                type: string
              dlq:
                description: Dead letter queue properties for the specified subscription
                properties:
                  pubsubname:
                    type: string
                  topic: 
                    type: string
                  isbrokerspecific:
                    description: T/F if the user wants to use the broker's native dead letter queue
                    type: boolean
                type: object
            required:
            - pubsubname
            - routes
            - topic
            type: object
        type: object
    served: true
    storage: true
  names:
    kind: Subscription
    listKind: SubscriptionList
    plural: subscriptions
    singular: subscription
    categories:
    - all
    - dapr
  scope: Namespaced
