---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: dittos.iot.eclipse.org
spec:
  group: iot.eclipse.org
  names:
    categories: []
    kind: Ditto
    plural: dittos
    shortNames: []
    singular: ditto
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: ".status.phase"
          name: Phase
          type: string
        - jsonPath: ".status.message"
          name: Message
          type: string
      name: v1alpha1
      schema:
        openAPIV3Schema:
          description: "Auto-generated derived type for DittoSpec via `CustomResource`"
          properties:
            spec:
              properties:
                createDefaultUser:
                  description: "Create the default \"ditto\" user when initially deploying.\n\nThis has no effect when using OAuth2."
                  nullable: true
                  type: boolean
                devops:
                  description: Devops endpoint
                  nullable: true
                  properties:
                    expose:
                      type: boolean
                    insecure:
                      type: boolean
                    password:
                      nullable: true
                      oneOf:
                        - required:
                            - value
                        - required:
                            - secret
                        - required:
                            - configMap
                      properties:
                        configMap:
                          description: Selects a key from a ConfigMap.
                          properties:
                            key:
                              description: The key to select.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the ConfigMap or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        secret:
                          description: SecretKeySelector selects a key of a Secret.
                          properties:
                            key:
                              description: The key of the secret to select from.  Must be a valid secret key.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        value:
                          type: string
                      type: object
                    statusPassword:
                      nullable: true
                      oneOf:
                        - required:
                            - value
                        - required:
                            - secret
                        - required:
                            - configMap
                      properties:
                        configMap:
                          description: Selects a key from a ConfigMap.
                          properties:
                            key:
                              description: The key to select.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the ConfigMap or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        secret:
                          description: SecretKeySelector selects a key of a Secret.
                          properties:
                            key:
                              description: The key of the secret to select from.  Must be a valid secret key.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        value:
                          type: string
                      type: object
                  type: object
                disableInfraProxy:
                  description: "Don't expose infra endpoints"
                  type: boolean
                disableWelcomePage:
                  description: Allow disabling the welcome page
                  type: boolean
                ingress:
                  description: "Configure ingress options\n\nIf the field is missing, no ingress resource is being created."
                  nullable: true
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: "Annotations which should be applied to the ingress resources.\n\nThe annotations will be set to the resource, not merged. All changes done on the ingress resource itself will be overridden.\n\nIf no annotations are configured, reasonable defaults will be used instead. You can prevent this by setting a single dummy annotation."
                      type: object
                    className:
                      description: The optional ingress class name.
                      nullable: true
                      type: string
                    host:
                      description: "The host of the ingress resource.\n\nThis is required if the ingress resource should be created by the operator"
                      type: string
                  required:
                    - host
                  type: object
                keycloak:
                  description: Enable and configure keycloak integration.
                  nullable: true
                  properties:
                    clientId:
                      oneOf:
                        - required:
                            - value
                        - required:
                            - secret
                        - required:
                            - configMap
                      properties:
                        configMap:
                          description: Selects a key from a ConfigMap.
                          properties:
                            key:
                              description: The key to select.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the ConfigMap or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        secret:
                          description: SecretKeySelector selects a key of a Secret.
                          properties:
                            key:
                              description: The key of the secret to select from.  Must be a valid secret key.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        value:
                          type: string
                      type: object
                    clientSecret:
                      oneOf:
                        - required:
                            - value
                        - required:
                            - secret
                        - required:
                            - configMap
                      properties:
                        configMap:
                          description: Selects a key from a ConfigMap.
                          properties:
                            key:
                              description: The key to select.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the ConfigMap or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        secret:
                          description: SecretKeySelector selects a key of a Secret.
                          properties:
                            key:
                              description: The key of the secret to select from.  Must be a valid secret key.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        value:
                          type: string
                      type: object
                    description:
                      description: Description of this login option.
                      nullable: true
                      type: string
                    disableProxy:
                      type: boolean
                    groups:
                      items:
                        type: string
                      type: array
                    label:
                      description: Label when referencing this login option.
                      nullable: true
                      type: string
                    realm:
                      type: string
                    redirectUrl:
                      description: Allow overriding the redirect URL.
                      nullable: true
                      type: string
                    url:
                      type: string
                  required:
                    - clientId
                    - clientSecret
                    - realm
                    - url
                  type: object
                mongoDb:
                  default:
                    host: mongodb
                    port: 27017
                  properties:
                    database:
                      description: "The optional database name used to connect, defaults to \"ditto\"."
                      nullable: true
                      oneOf:
                        - required:
                            - value
                        - required:
                            - secret
                        - required:
                            - configMap
                      properties:
                        configMap:
                          description: Selects a key from a ConfigMap.
                          properties:
                            key:
                              description: The key to select.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the ConfigMap or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        secret:
                          description: SecretKeySelector selects a key of a Secret.
                          properties:
                            key:
                              description: The key of the secret to select from.  Must be a valid secret key.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        value:
                          type: string
                      type: object
                    host:
                      default: mongodb
                      description: The hostname of the MongoDB instance.
                      type: string
                    password:
                      description: The password used to connect to the MongoDB instance.
                      nullable: true
                      oneOf:
                        - required:
                            - value
                        - required:
                            - secret
                        - required:
                            - configMap
                      properties:
                        configMap:
                          description: Selects a key from a ConfigMap.
                          properties:
                            key:
                              description: The key to select.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the ConfigMap or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        secret:
                          description: SecretKeySelector selects a key of a Secret.
                          properties:
                            key:
                              description: The key of the secret to select from.  Must be a valid secret key.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        value:
                          type: string
                      type: object
                    port:
                      default: 27017
                      description: The port name of the MongoDB instance.
                      format: uint16
                      minimum: 0.0
                      type: integer
                    username:
                      description: The username used to connect to the MongoDB instance.
                      nullable: true
                      oneOf:
                        - required:
                            - value
                        - required:
                            - secret
                        - required:
                            - configMap
                      properties:
                        configMap:
                          description: Selects a key from a ConfigMap.
                          properties:
                            key:
                              description: The key to select.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the ConfigMap or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        secret:
                          description: SecretKeySelector selects a key of a Secret.
                          properties:
                            key:
                              description: The key of the secret to select from.  Must be a valid secret key.
                              type: string
                            name:
                              description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                        value:
                          type: string
                      type: object
                  type: object
                oauth:
                  description: Provide additional OAuth configuration
                  nullable: true
                  properties:
                    issuers:
                      additionalProperties:
                        properties:
                          subjects:
                            items:
                              type: string
                            type: array
                          url:
                            type: string
                        required:
                          - url
                        type: object
                      type: object
                  type: object
                openApi:
                  description: Influence some options of the hosted OpenAPI spec.
                  nullable: true
                  properties:
                    serverLabel:
                      nullable: true
                      type: string
                  type: object
                pullPolicy:
                  description: "Override the imagePullPolicy\n\nBy default this will use Always if the image version is \":latest\" and IfNotPresent otherwise"
                  nullable: true
                  type: string
                registry:
                  description: Allow to override the Ditto container registry
                  nullable: true
                  type: string
                services:
                  default:
                    concierge: {}
                    connectivity: {}
                    gateway: {}
                    policies: {}
                    things: {}
                    thingsSearch: {}
                  description: Services configuration
                  properties:
                    concierge:
                      default: {}
                      description: The concierge service
                      properties:
                        additionalProperties:
                          additionalProperties:
                            type: string
                          description: "Additional system properties, which will be appended to the list of system properties.\n\nNote: Setting arbitrary system properties may break the deployment and may also not be compatible with future versions."
                          type: object
                        logLevel:
                          description: Allow configuring the application log level.
                          enum:
                            - Trace
                            - Debug
                            - Info
                            - Warning
                            - Error
                          nullable: true
                          type: string
                      type: object
                    connectivity:
                      default: {}
                      description: The connectivity service
                      properties:
                        additionalProperties:
                          additionalProperties:
                            type: string
                          description: "Additional system properties, which will be appended to the list of system properties.\n\nNote: Setting arbitrary system properties may break the deployment and may also not be compatible with future versions."
                          type: object
                        logLevel:
                          description: Allow configuring the application log level.
                          enum:
                            - Trace
                            - Debug
                            - Info
                            - Warning
                            - Error
                          nullable: true
                          type: string
                      type: object
                    gateway:
                      default: {}
                      description: The gateway service
                      properties:
                        additionalProperties:
                          additionalProperties:
                            type: string
                          description: "Additional system properties, which will be appended to the list of system properties.\n\nNote: Setting arbitrary system properties may break the deployment and may also not be compatible with future versions."
                          type: object
                        logLevel:
                          description: Allow configuring the application log level.
                          enum:
                            - Trace
                            - Debug
                            - Info
                            - Warning
                            - Error
                          nullable: true
                          type: string
                      type: object
                    policies:
                      default: {}
                      description: The policies service
                      properties:
                        additionalProperties:
                          additionalProperties:
                            type: string
                          description: "Additional system properties, which will be appended to the list of system properties.\n\nNote: Setting arbitrary system properties may break the deployment and may also not be compatible with future versions."
                          type: object
                        logLevel:
                          description: Allow configuring the application log level.
                          enum:
                            - Trace
                            - Debug
                            - Info
                            - Warning
                            - Error
                          nullable: true
                          type: string
                      type: object
                    things:
                      default: {}
                      description: The things service
                      properties:
                        additionalProperties:
                          additionalProperties:
                            type: string
                          description: "Additional system properties, which will be appended to the list of system properties.\n\nNote: Setting arbitrary system properties may break the deployment and may also not be compatible with future versions."
                          type: object
                        logLevel:
                          description: Allow configuring the application log level.
                          enum:
                            - Trace
                            - Debug
                            - Info
                            - Warning
                            - Error
                          nullable: true
                          type: string
                      type: object
                    thingsSearch:
                      default: {}
                      description: The things search service
                      properties:
                        additionalProperties:
                          additionalProperties:
                            type: string
                          description: "Additional system properties, which will be appended to the list of system properties.\n\nNote: Setting arbitrary system properties may break the deployment and may also not be compatible with future versions."
                          type: object
                        logLevel:
                          description: Allow configuring the application log level.
                          enum:
                            - Trace
                            - Debug
                            - Info
                            - Warning
                            - Error
                          nullable: true
                          type: string
                      type: object
                  type: object
                swaggerUi:
                  description: Influence some options of the hosted SwaggerUI.
                  nullable: true
                  properties:
                    disable:
                      type: boolean
                    image:
                      nullable: true
                      type: string
                  type: object
                version:
                  description: Allow to override the Ditto image version.
                  nullable: true
                  type: string
              type: object
            status:
              nullable: true
              properties:
                conditions:
                  description: Status conditions
                  items:
                    description: Condition contains details for one aspect of the current state of this API Resource.
                    properties:
                      lastTransitionTime:
                        description: "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable."
                        format: date-time
                        type: string
                      message:
                        description: message is a human readable message indicating details about the transition. This may be an empty string.
                        type: string
                      observedGeneration:
                        description: "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance."
                        format: int64
                        type: integer
                      reason:
                        description: "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty."
                        type: string
                      status:
                        description: "status of the condition, one of True, False, Unknown."
                        type: string
                      type:
                        description: type of condition in CamelCase or in foo.example.com/CamelCase.
                        type: string
                    required:
                      - lastTransitionTime
                      - message
                      - reason
                      - status
                      - type
                    type: object
                  type: array
                message:
                  description: An optional message
                  nullable: true
                  type: string
                phase:
                  default: ""
                  description: The phase the deployment is in.
                  type: string
              type: object
          required:
            - spec
          title: Ditto
          type: object
      served: true
      storage: true
      subresources:
        status: {}
