---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.0
  name: resolverendpoints.route53resolver.aws.crossplane.io
spec:
  group: route53resolver.aws.crossplane.io
  names:
    categories:
    - crossplane
    - managed
    - aws
    kind: ResolverEndpoint
    listKind: ResolverEndpointList
    plural: resolverendpoints
    singular: resolverendpoint
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: READY
      type: string
    - jsonPath: .status.conditions[?(@.type=='Synced')].status
      name: SYNCED
      type: string
    - jsonPath: .metadata.annotations.crossplane\.io/external-name
      name: EXTERNAL-NAME
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ResolverEndpoint is the Schema for the ResolverEndpoints 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: ResolverEndpointSpec defines the desired state of ResolverEndpoint
            properties:
              deletionPolicy:
                default: Delete
                description: |-
                  DeletionPolicy specifies what will happen to the underlying external
                  when this managed resource is deleted - either "Delete" or "Orphan" the
                  external resource.
                  This field is planned to be deprecated in favor of the ManagementPolicies
                  field in a future release. Currently, both could be set independently and
                  non-default values would be honored if the feature flag is enabled.
                  See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223
                enum:
                - Orphan
                - Delete
                type: string
              forProvider:
                description: ResolverEndpointParameters defines the desired state
                  of ResolverEndpoint
                properties:
                  direction:
                    description: |-
                      Specify the applicable value:

                         * INBOUND: Resolver forwards DNS queries to the DNS service for a VPC
                         from your network

                         * OUTBOUND: Resolver forwards DNS queries from the DNS service for a VPC
                         to your network
                    type: string
                  ipAddresses:
                    description: |-
                      IPAddresses are the subnets and IP addresses in your VPC that DNS queries originate from
                      (for outbound endpoints) or that you forward DNS queries to (for inbound
                      endpoints). The subnet ID uniquely identifies a VPC.
                    items:
                      description: IPAddressRequest is used by ResolverEndpoint
                      properties:
                        ip:
                          description: IP address that you want to use for DNS queries.
                          type: string
                        subnetId:
                          description: SubnetId is the ID of the subnet that contains
                            the IP address.
                          type: string
                        subnetIdRef:
                          description: |-
                            SubnetIDRefs is a list of references to Subnets used to set
                            the SubnetIDs.
                          properties:
                            name:
                              description: Name of the referenced object.
                              type: string
                            policy:
                              description: Policies for referencing.
                              properties:
                                resolution:
                                  default: Required
                                  description: |-
                                    Resolution specifies whether resolution of this reference is required.
                                    The default is 'Required', which means the reconcile will fail if the
                                    reference cannot be resolved. 'Optional' means this reference will be
                                    a no-op if it cannot be resolved.
                                  enum:
                                  - Required
                                  - Optional
                                  type: string
                                resolve:
                                  description: |-
                                    Resolve specifies when this reference should be resolved. The default
                                    is 'IfNotPresent', which will attempt to resolve the reference only when
                                    the corresponding field is not present. Use 'Always' to resolve the
                                    reference on every reconcile.
                                  enum:
                                  - Always
                                  - IfNotPresent
                                  type: string
                              type: object
                          required:
                          - name
                          type: object
                        subnetIdSelector:
                          description: |-
                            SubnetIDSelector selects references to Subnets used
                            to set the SubnetIDs.
                          properties:
                            matchControllerRef:
                              description: |-
                                MatchControllerRef ensures an object with the same controller reference
                                as the selecting object is selected.
                              type: boolean
                            matchLabels:
                              additionalProperties:
                                type: string
                              description: MatchLabels ensures an object with matching
                                labels is selected.
                              type: object
                            policy:
                              description: Policies for selection.
                              properties:
                                resolution:
                                  default: Required
                                  description: |-
                                    Resolution specifies whether resolution of this reference is required.
                                    The default is 'Required', which means the reconcile will fail if the
                                    reference cannot be resolved. 'Optional' means this reference will be
                                    a no-op if it cannot be resolved.
                                  enum:
                                  - Required
                                  - Optional
                                  type: string
                                resolve:
                                  description: |-
                                    Resolve specifies when this reference should be resolved. The default
                                    is 'IfNotPresent', which will attempt to resolve the reference only when
                                    the corresponding field is not present. Use 'Always' to resolve the
                                    reference on every reconcile.
                                  enum:
                                  - Always
                                  - IfNotPresent
                                  type: string
                              type: object
                          type: object
                      type: object
                    type: array
                  name:
                    description: |-
                      A friendly name that lets you easily find a configuration in the Resolver
                      dashboard in the Route 53 console.
                    type: string
                  outpostARN:
                    description: |-
                      The Amazon Resource Name (ARN) of the Outpost. If you specify this, you must
                      also specify a value for the PreferredInstanceType.
                    type: string
                  preferredInstanceType:
                    description: |-
                      The instance type. If you specify this, you must also specify a value for
                      the OutpostArn.
                    type: string
                  region:
                    description: Region is which region the ResolverEndpoint will
                      be created.
                    type: string
                  resolverEndpointType:
                    description: |-
                      For the endpoint type you can choose either IPv4, IPv6, or dual-stack. A
                      dual-stack endpoint means that it will resolve via both IPv4 and IPv6. This
                      endpoint type is applied to all IP addresses.
                    type: string
                  securityGroupIdRefs:
                    description: |-
                      SecurityGroupIDRefs is a list of references to SecurityGroups used to set
                      the SecurityGroupIDs.
                    items:
                      description: A Reference to a named object.
                      properties:
                        name:
                          description: Name of the referenced object.
                          type: string
                        policy:
                          description: Policies for referencing.
                          properties:
                            resolution:
                              default: Required
                              description: |-
                                Resolution specifies whether resolution of this reference is required.
                                The default is 'Required', which means the reconcile will fail if the
                                reference cannot be resolved. 'Optional' means this reference will be
                                a no-op if it cannot be resolved.
                              enum:
                              - Required
                              - Optional
                              type: string
                            resolve:
                              description: |-
                                Resolve specifies when this reference should be resolved. The default
                                is 'IfNotPresent', which will attempt to resolve the reference only when
                                the corresponding field is not present. Use 'Always' to resolve the
                                reference on every reconcile.
                              enum:
                              - Always
                              - IfNotPresent
                              type: string
                          type: object
                      required:
                      - name
                      type: object
                    type: array
                  securityGroupIdSelector:
                    description: |-
                      SecurityGroupIDsSelector selects references to SecurityGroupID used
                      to set the SecurityGroupIDs.
                    properties:
                      matchControllerRef:
                        description: |-
                          MatchControllerRef ensures an object with the same controller reference
                          as the selecting object is selected.
                        type: boolean
                      matchLabels:
                        additionalProperties:
                          type: string
                        description: MatchLabels ensures an object with matching labels
                          is selected.
                        type: object
                      policy:
                        description: Policies for selection.
                        properties:
                          resolution:
                            default: Required
                            description: |-
                              Resolution specifies whether resolution of this reference is required.
                              The default is 'Required', which means the reconcile will fail if the
                              reference cannot be resolved. 'Optional' means this reference will be
                              a no-op if it cannot be resolved.
                            enum:
                            - Required
                            - Optional
                            type: string
                          resolve:
                            description: |-
                              Resolve specifies when this reference should be resolved. The default
                              is 'IfNotPresent', which will attempt to resolve the reference only when
                              the corresponding field is not present. Use 'Always' to resolve the
                              reference on every reconcile.
                            enum:
                            - Always
                            - IfNotPresent
                            type: string
                        type: object
                    type: object
                  securityGroupIds:
                    description: |-
                      The ID of one or more security groups that you want to use to control access
                      to this VPC. The security group that you specify must include one or more
                      inbound rules (for inbound Resolver endpoints) or outbound rules (for outbound
                      Resolver endpoints). Inbound and outbound rules must allow TCP and UDP access.
                      For inbound access, open port 53. For outbound access, open the port that
                      you're using for DNS queries on your network.
                    items:
                      type: string
                    type: array
                  tags:
                    description: A list of the tag keys and values that you want to
                      associate with the endpoint.
                    items:
                      properties:
                        key:
                          type: string
                        value:
                          type: string
                      type: object
                    type: array
                required:
                - direction
                - ipAddresses
                - region
                type: object
              managementPolicies:
                default:
                - '*'
                description: |-
                  THIS IS A BETA FIELD. It is on by default but can be opted out
                  through a Crossplane feature flag.
                  ManagementPolicies specify the array of actions Crossplane is allowed to
                  take on the managed and external resources.
                  This field is planned to replace the DeletionPolicy field in a future
                  release. Currently, both could be set independently and non-default
                  values would be honored if the feature flag is enabled. If both are
                  custom, the DeletionPolicy field will be ignored.
                  See the design doc for more information: https://github.com/crossplane/crossplane/blob/499895a25d1a1a0ba1604944ef98ac7a1a71f197/design/design-doc-observe-only-resources.md?plain=1#L223
                  and this one: https://github.com/crossplane/crossplane/blob/444267e84783136daa93568b364a5f01228cacbe/design/one-pager-ignore-changes.md
                items:
                  description: |-
                    A ManagementAction represents an action that the Crossplane controllers
                    can take on an external resource.
                  enum:
                  - Observe
                  - Create
                  - Update
                  - Delete
                  - LateInitialize
                  - '*'
                  type: string
                type: array
              providerConfigRef:
                default:
                  name: default
                description: |-
                  ProviderConfigReference specifies how the provider that will be used to
                  create, observe, update, and delete this managed resource should be
                  configured.
                properties:
                  name:
                    description: Name of the referenced object.
                    type: string
                  policy:
                    description: Policies for referencing.
                    properties:
                      resolution:
                        default: Required
                        description: |-
                          Resolution specifies whether resolution of this reference is required.
                          The default is 'Required', which means the reconcile will fail if the
                          reference cannot be resolved. 'Optional' means this reference will be
                          a no-op if it cannot be resolved.
                        enum:
                        - Required
                        - Optional
                        type: string
                      resolve:
                        description: |-
                          Resolve specifies when this reference should be resolved. The default
                          is 'IfNotPresent', which will attempt to resolve the reference only when
                          the corresponding field is not present. Use 'Always' to resolve the
                          reference on every reconcile.
                        enum:
                        - Always
                        - IfNotPresent
                        type: string
                    type: object
                required:
                - name
                type: object
              publishConnectionDetailsTo:
                description: |-
                  PublishConnectionDetailsTo specifies the connection secret config which
                  contains a name, metadata and a reference to secret store config to
                  which any connection details for this managed resource should be written.
                  Connection details frequently include the endpoint, username,
                  and password required to connect to the managed resource.
                properties:
                  configRef:
                    default:
                      name: default
                    description: |-
                      SecretStoreConfigRef specifies which secret store config should be used
                      for this ConnectionSecret.
                    properties:
                      name:
                        description: Name of the referenced object.
                        type: string
                      policy:
                        description: Policies for referencing.
                        properties:
                          resolution:
                            default: Required
                            description: |-
                              Resolution specifies whether resolution of this reference is required.
                              The default is 'Required', which means the reconcile will fail if the
                              reference cannot be resolved. 'Optional' means this reference will be
                              a no-op if it cannot be resolved.
                            enum:
                            - Required
                            - Optional
                            type: string
                          resolve:
                            description: |-
                              Resolve specifies when this reference should be resolved. The default
                              is 'IfNotPresent', which will attempt to resolve the reference only when
                              the corresponding field is not present. Use 'Always' to resolve the
                              reference on every reconcile.
                            enum:
                            - Always
                            - IfNotPresent
                            type: string
                        type: object
                    required:
                    - name
                    type: object
                  metadata:
                    description: Metadata is the metadata for connection secret.
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        description: |-
                          Annotations are the annotations to be added to connection secret.
                          - For Kubernetes secrets, this will be used as "metadata.annotations".
                          - It is up to Secret Store implementation for others store types.
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        description: |-
                          Labels are the labels/tags to be added to connection secret.
                          - For Kubernetes secrets, this will be used as "metadata.labels".
                          - It is up to Secret Store implementation for others store types.
                        type: object
                      type:
                        description: |-
                          Type is the SecretType for the connection secret.
                          - Only valid for Kubernetes Secret Stores.
                        type: string
                    type: object
                  name:
                    description: Name is the name of the connection secret.
                    type: string
                required:
                - name
                type: object
              writeConnectionSecretToRef:
                description: |-
                  WriteConnectionSecretToReference specifies the namespace and name of a
                  Secret to which any connection details for this managed resource should
                  be written. Connection details frequently include the endpoint, username,
                  and password required to connect to the managed resource.
                  This field is planned to be replaced in a future release in favor of
                  PublishConnectionDetailsTo. Currently, both could be set independently
                  and connection details would be published to both without affecting
                  each other.
                properties:
                  name:
                    description: Name of the secret.
                    type: string
                  namespace:
                    description: Namespace of the secret.
                    type: string
                required:
                - name
                - namespace
                type: object
            required:
            - forProvider
            type: object
          status:
            description: ResolverEndpointStatus defines the observed state of ResolverEndpoint.
            properties:
              atProvider:
                description: ResolverEndpointObservation defines the observed state
                  of ResolverEndpoint
                properties:
                  arn:
                    description: The ARN (Amazon Resource Name) for the Resolver endpoint.
                    type: string
                  creationTime:
                    description: |-
                      The date and time that the endpoint was created, in Unix time format and
                      Coordinated Universal Time (UTC).
                    type: string
                  creatorRequestID:
                    description: |-
                      A unique string that identifies the request that created the Resolver endpoint.
                      The CreatorRequestId allows failed requests to be retried without the risk
                      of running the operation twice.
                    type: string
                  hostVPCID:
                    description: The ID of the VPC that you want to create the Resolver
                      endpoint in.
                    type: string
                  id:
                    description: The ID of the Resolver endpoint.
                    type: string
                  ipAddressCount:
                    description: The number of IP addresses that the Resolver endpoint
                      can use for DNS queries.
                    format: int64
                    type: integer
                  modificationTime:
                    description: |-
                      The date and time that the endpoint was last modified, in Unix time format
                      and Coordinated Universal Time (UTC).
                    type: string
                  securityGroupIDs:
                    description: |-
                      The ID of one or more security groups that control access to this VPC. The
                      security group must include one or more inbound rules (for inbound endpoints)
                      or outbound rules (for outbound endpoints). Inbound and outbound rules must
                      allow TCP and UDP access. For inbound access, open port 53. For outbound
                      access, open the port that you're using for DNS queries on your network.
                    items:
                      type: string
                    type: array
                  status:
                    description: |-
                      A code that specifies the current status of the Resolver endpoint. Valid
                      values include the following:

                         * CREATING: Resolver is creating and configuring one or more Amazon VPC
                         network interfaces for this endpoint.

                         * OPERATIONAL: The Amazon VPC network interfaces for this endpoint are
                         correctly configured and able to pass inbound or outbound DNS queries
                         between your network and Resolver.

                         * UPDATING: Resolver is associating or disassociating one or more network
                         interfaces with this endpoint.

                         * AUTO_RECOVERING: Resolver is trying to recover one or more of the network
                         interfaces that are associated with this endpoint. During the recovery
                         process, the endpoint functions with limited capacity because of the limit
                         on the number of DNS queries per IP address (per network interface). For
                         the current limit, see Limits on Route 53 Resolver (https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/DNSLimitations.html#limits-api-entities-resolver).

                         * ACTION_NEEDED: This endpoint is unhealthy, and Resolver can't automatically
                         recover it. To resolve the problem, we recommend that you check each IP
                         address that you associated with the endpoint. For each IP address that
                         isn't available, add another IP address and then delete the IP address
                         that isn't available. (An endpoint must always include at least two IP
                         addresses.) A status of ACTION_NEEDED can have a variety of causes. Here
                         are two common causes: One or more of the network interfaces that are
                         associated with the endpoint were deleted using Amazon VPC. The network
                         interface couldn't be created for some reason that's outside the control
                         of Resolver.

                         * DELETING: Resolver is deleting this endpoint and the associated network
                         interfaces.
                    type: string
                  statusMessage:
                    description: A detailed description of the status of the Resolver
                      endpoint.
                    type: string
                type: object
              conditions:
                description: Conditions of the resource.
                items:
                  description: A Condition that may apply to a resource.
                  properties:
                    lastTransitionTime:
                      description: |-
                        LastTransitionTime is the last time this condition transitioned from one
                        status to another.
                      format: date-time
                      type: string
                    message:
                      description: |-
                        A Message containing details about this condition's last transition from
                        one status to another, if any.
                      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: A Reason for this condition's last transition from
                        one status to another.
                      type: string
                    status:
                      description: Status of this condition; is it currently True,
                        False, or Unknown?
                      type: string
                    type:
                      description: |-
                        Type of this condition. At most one of each condition type may apply to
                        a resource at any point in time.
                      type: string
                  required:
                  - lastTransitionTime
                  - reason
                  - status
                  - type
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - type
                x-kubernetes-list-type: map
              observedGeneration:
                description: |-
                  ObservedGeneration is the latest metadata.generation
                  which resulted in either a ready state, or stalled due to error
                  it can not recover from without human intervention.
                format: int64
                type: integer
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
