---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
  name: azureappconfigurationproviders.azconfig.io
spec:
  group: azconfig.io
  names:
    kind: AzureAppConfigurationProvider
    listKind: AzureAppConfigurationProviderList
    plural: azureappconfigurationproviders
    singular: azureappconfigurationprovider
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: AzureAppConfigurationProvider is the Schema for the AzureAppConfigurationProviders
          API
        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
          spec:
            description: AzureAppConfigurationProviderSpec defines the desired state
              of AzureAppConfigurationProvider
            properties:
              auth:
                description: AzureAppConfigurationProviderAuth defines the authentication
                  type used to connect Azure AppConfiguration
                properties:
                  managedIdentityClientId:
                    description: ClientId of the Managed Identity
                    type: string
                  servicePrincipalReference:
                    description: Secret reference for Service Principle
                    type: string
                  workloadIdentity:
                    description: Workload Identity
                    properties:
                      managedIdentityClientId:
                        type: string
                      managedIdentityClientIdReference:
                        description: ManagedIdentityReferenceParameters defines the
                          parameters for configmap reference
                        properties:
                          configMap:
                            description: ConfigMap contains the managed identity client
                              id
                            type: string
                          key:
                            description: Key of the managed identity client id
                            type: string
                        required:
                        - configMap
                        - key
                        type: object
                      serviceAccountName:
                        type: string
                    type: object
                type: object
              configuration:
                description: AzureAppConfigurationKeyValueOptions defines the options
                  of fetching key-values from AppConfiguration.
                properties:
                  refresh:
                    description: Defines the settings for dynamic configuration.
                    properties:
                      enabled:
                        default: false
                        type: boolean
                      interval:
                        default: 30s
                        format: duration
                        type: string
                      monitoring:
                        description: Defines the settings for change monitoring.
                        properties:
                          keyValues:
                            items:
                              description: Defines the keyValues to be watched.
                              properties:
                                key:
                                  type: string
                                label:
                                  default: "\0"
                                  type: string
                              required:
                              - key
                              type: object
                            minItems: 1
                            type: array
                        required:
                        - keyValues
                        type: object
                    type: object
                  selectors:
                    items:
                      description: KeyLabelSelector defines the filters when fetching
                        the data from Azure AppConfiguration
                      properties:
                        keyFilter:
                          type: string
                        labelFilter:
                          type: string
                        snapshotName:
                          type: string
                      type: object
                    type: array
                  trimKeyPrefixes:
                    items:
                      type: string
                    type: array
                type: object
              connectionStringReference:
                type: string
              endpoint:
                description: The endpoint url of AppConfiguration which should sync
                  the configuration key-values from.
                format: uri
                type: string
              featureFlag:
                description: AzureAppConfigurationFeatureFlagOptions defines the options
                  of fetching feature flags from AppConfiguration.
                properties:
                  refresh:
                    description: Defines the settings for feature flag refresh.
                    properties:
                      enabled:
                        default: false
                        type: boolean
                      interval:
                        default: 30s
                        format: duration
                        type: string
                    required:
                    - interval
                    type: object
                  selectors:
                    items:
                      description: KeyLabelSelector defines the filters when fetching
                        the data from Azure AppConfiguration
                      properties:
                        keyFilter:
                          type: string
                        labelFilter:
                          type: string
                        snapshotName:
                          type: string
                      type: object
                    type: array
                type: object
              loadBalancingEnabled:
                default: false
                type: boolean
              replicaDiscoveryEnabled:
                default: true
                type: boolean
              secret:
                description: SecretReference defines the settings for resolving secret
                  reference type items
                properties:
                  auth:
                    properties:
                      keyVaults:
                        items:
                          description: AzureKeyVaultPerVaultAuth defines the authentication
                            type used to Azure KeyVault resolve KeyVaultReference
                          properties:
                            managedIdentityClientId:
                              description: ClientId of the Managed Identity
                              type: string
                            servicePrincipalReference:
                              description: Secret reference for Service Principle
                              type: string
                            uri:
                              description: The uri of KeyVault which should sync the
                                secret reference item from
                              format: uri
                              type: string
                            workloadIdentity:
                              description: Workload Identity
                              properties:
                                managedIdentityClientId:
                                  type: string
                                managedIdentityClientIdReference:
                                  description: ManagedIdentityReferenceParameters
                                    defines the parameters for configmap reference
                                  properties:
                                    configMap:
                                      description: ConfigMap contains the managed
                                        identity client id
                                      type: string
                                    key:
                                      description: Key of the managed identity client
                                        id
                                      type: string
                                  required:
                                  - configMap
                                  - key
                                  type: object
                                serviceAccountName:
                                  type: string
                              type: object
                          required:
                          - uri
                          type: object
                        type: array
                      managedIdentityClientId:
                        description: ClientId of the Managed Identity
                        type: string
                      servicePrincipalReference:
                        description: Secret reference for Service Principle
                        type: string
                      workloadIdentity:
                        description: Workload Identity
                        properties:
                          managedIdentityClientId:
                            type: string
                          managedIdentityClientIdReference:
                            description: ManagedIdentityReferenceParameters defines
                              the parameters for configmap reference
                            properties:
                              configMap:
                                description: ConfigMap contains the managed identity
                                  client id
                                type: string
                              key:
                                description: Key of the managed identity client id
                                type: string
                            required:
                            - configMap
                            - key
                            type: object
                          serviceAccountName:
                            type: string
                        type: object
                    type: object
                  refresh:
                    description: Defines the settings for refresh.
                    properties:
                      enabled:
                        default: false
                        type: boolean
                      interval:
                        format: duration
                        type: string
                    required:
                    - interval
                    type: object
                  target:
                    description: SecretGenerationParameters defines the name of target
                      Secret
                    properties:
                      secretName:
                        maxLength: 253
                        minLength: 1
                        pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'
                        type: string
                    required:
                    - secretName
                    type: object
                required:
                - target
                type: object
              target:
                description: ConfigurationGenerationParameters defines the name of
                  target ConfigMap
                properties:
                  configMapData:
                    description: ConfigMapDataOptions defines the options of generating
                      ConfigMap data
                    properties:
                      key:
                        type: string
                      separator:
                        description: The delimiter that is used to output the ConfigMap
                          data in hierarchical format when the type is set to json
                          or yaml.
                        maxLength: 50
                        minLength: 1
                        type: string
                      type:
                        default: default
                        enum:
                        - default
                        - json
                        - yaml
                        - properties
                        type: string
                    type: object
                  configMapName:
                    maxLength: 253
                    minLength: 1
                    pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'
                    type: string
                required:
                - configMapName
                type: object
            required:
            - target
            type: object
          status:
            description: AzureAppConfigurationProviderStatus defines the observed
              state of AzureAppConfigurationProvider
            properties:
              lastReconcileTime:
                format: date-time
                type: string
              lastSyncTime:
                format: date-time
                type: string
              message:
                type: string
              phase:
                type: string
              refreshStatus:
                description: RefreshStatus defines last refresh time of configmap
                  and secret when dynamic feature is enabled
                properties:
                  lastFeatureFlagRefreshTime:
                    format: date-time
                    type: string
                  lastKeyValueRefreshTime:
                    format: date-time
                    type: string
                  lastKeyVaultReferenceRefreshTime:
                    format: date-time
                    type: string
                type: object
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
