---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.16.0
  name: users.transfer.aws.crossplane.io
spec:
  group: transfer.aws.crossplane.io
  names:
    categories:
    - crossplane
    - managed
    - aws
    kind: User
    listKind: UserList
    plural: users
    singular: user
  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: User is the Schema for the Users 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: UserSpec defines the desired state of User
            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: UserParameters defines the desired state of User
                properties:
                  homeDirectory:
                    description: |-
                      The landing directory (folder) for a user when they log in to the server
                      using the client.

                      A HomeDirectory example is /bucket_name/home/mydirectory.

                      The HomeDirectory parameter is only used if HomeDirectoryType is set to PATH.
                    type: string
                  homeDirectoryMappings:
                    description: |-
                      Logical directory mappings that specify what Amazon S3 or Amazon EFS paths
                      and keys should be visible to your user and how you want to make them visible.
                      You must specify the Entry and Target pair, where Entry shows how the path
                      is made visible and Target is the actual Amazon S3 or Amazon EFS path. If
                      you only specify a target, it is displayed as is. You also must ensure that
                      your Identity and Access Management (IAM) role provides access to paths in
                      Target. This value can be set only when HomeDirectoryType is set to LOGICAL.

                      The following is an Entry and Target pair example.

                      [ { "Entry": "/directory1", "Target": "/bucket_name/home/mydirectory" } ]

                      In most cases, you can use this value instead of the session policy to lock
                      your user down to the designated home directory ("chroot"). To do this, you
                      can set Entry to / and set Target to the value the user should see for their
                      home directory when they log in.

                      The following is an Entry and Target pair example for chroot.

                      [ { "Entry": "/", "Target": "/bucket_name/home/mydirectory" } ]
                    items:
                      properties:
                        entry:
                          type: string
                        target:
                          type: string
                      type: object
                    type: array
                  homeDirectoryType:
                    description: |-
                      The type of landing directory (folder) that you want your users' home directory
                      to be when they log in to the server. If you set it to PATH, the user will
                      see the absolute Amazon S3 bucket or Amazon EFS path as is in their file
                      transfer protocol clients. If you set it to LOGICAL, you need to provide
                      mappings in the HomeDirectoryMappings for how you want to make Amazon S3
                      or Amazon EFS paths visible to your users.

                      If HomeDirectoryType is LOGICAL, you must provide mappings, using the HomeDirectoryMappings
                      parameter. If, on the other hand, HomeDirectoryType is PATH, you provide
                      an absolute path using the HomeDirectory parameter. You cannot have both
                      HomeDirectory and HomeDirectoryMappings in your template.
                    type: string
                  policy:
                    description: |-
                      A session policy for your user so that you can use the same Identity and
                      Access Management (IAM) role across multiple users. This policy scopes down
                      a user's access to portions of their Amazon S3 bucket. Variables that you
                      can use inside this policy include ${Transfer:UserName}, ${Transfer:HomeDirectory},
                      and ${Transfer:HomeBucket}.

                      This policy applies only when the domain of ServerId is Amazon S3. Amazon
                      EFS does not use session policies.

                      For session policies, Transfer Family stores the policy as a JSON blob, instead
                      of the Amazon Resource Name (ARN) of the policy. You save the policy as a
                      JSON blob and pass it in the Policy argument.

                      For an example of a session policy, see Example session policy (https://docs.aws.amazon.com/transfer/latest/userguide/session-policy.html).

                      For more information, see AssumeRole (https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)
                      in the Amazon Web Services Security Token Service API Reference.
                    type: string
                  posixProfile:
                    description: |-
                      Specifies the full POSIX identity, including user ID (Uid), group ID (Gid),
                      and any secondary groups IDs (SecondaryGids), that controls your users' access
                      to your Amazon EFS file systems. The POSIX permissions that are set on files
                      and directories in Amazon EFS determine the level of access your users get
                      when transferring files into and out of your Amazon EFS file systems.
                    properties:
                      gid:
                        format: int64
                        type: integer
                      secondaryGids:
                        items:
                          format: int64
                          type: integer
                        type: array
                      uid:
                        format: int64
                        type: integer
                    type: object
                  region:
                    description: Region is which region the User will be created.
                    type: string
                  role:
                    description: |-
                      The IAM role that controls your users' access to your Amazon S3 bucket. The
                      policies attached to this role will determine the level of access you want
                      to provide your users when transferring files into and out of your Amazon
                      S3 bucket or buckets. The IAM role should also contain a trust relationship
                      that allows the server to access your resources when servicing your users'
                      transfer requests.
                    type: string
                  roleRef:
                    description: RoleRef is a reference to a IAM role.
                    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
                  roleSelector:
                    description: RoleSelector selects references to a IAM role.
                    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
                  serverID:
                    description: |-
                      A system-assigned unique identifier for a server instance. This is the specific
                      server that you added your user to.
                    type: string
                  serverIDRef:
                    description: ServerIDRef is a reference to an server instance.
                    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
                  serverIDSelector:
                    description: ServerIDSelector selects references to an server
                      instance.
                    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
                  sshPublicKeyBody:
                    description: |-
                      The public portion of the Secure Shell (SSH) key used to authenticate the
                      user to the server.

                      The three standard SSH public key format elements are <key type>, <body base64>,
                      and an optional <comment>, with spaces between each element.

                      Transfer Family accepts RSA, ECDSA, and ED25519 keys.

                         * For RSA keys, the key type is ssh-rsa.

                         * For ED25519 keys, the key type is ssh-ed25519.

                         * For ECDSA keys, the key type is either ecdsa-sha2-nistp256, ecdsa-sha2-nistp384,
                         or ecdsa-sha2-nistp521, depending on the size of the key you generated.

                      Deprecated: This property is deprecated in favor of SSHPublicKeys.
                      Changes here will not be reflected in the external resource.
                    type: string
                  sshPublicKeys:
                    description: SSHPublicKeys that should be added to the server.
                    items:
                      properties:
                        body:
                          description: |-
                            Body is the public portion of the Secure Shell (SSH) key used to authenticate the
                            user to the server.

                            The three standard SSH public key format elements are <key type>, <body base64>,
                            and an optional <comment>, with spaces between each element.

                            Transfer Family accepts RSA, ECDSA, and ED25519 keys.

                               * For RSA keys, the key type is ssh-rsa.

                               * For ED25519 keys, the key type is ssh-ed25519.

                               * For ECDSA keys, the key type is either ecdsa-sha2-nistp256, ecdsa-sha2-nistp384,
                               or ecdsa-sha2-nistp521, depending on the size of the key you generated.
                          type: string
                      required:
                      - body
                      type: object
                    type: array
                  tags:
                    description: |-
                      Key-value pairs that can be used to group and search for users. Tags are
                      metadata attached to users for any purpose.
                    items:
                      properties:
                        key:
                          type: string
                        value:
                          type: string
                      type: object
                    type: array
                required:
                - 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: UserStatus defines the observed state of User.
            properties:
              atProvider:
                description: UserObservation defines the observed state of User
                properties:
                  arn:
                    description: |-
                      Specifies the unique Amazon Resource Name (ARN) for the user that was requested
                      to be described.
                    type: string
                  serverID:
                    description: The identifier of the server that the user is attached
                      to.
                    type: string
                  sshPublicKeys:
                    description: |-
                      Specifies the public key portion of the Secure Shell (SSH) keys stored for
                      the described user.
                    items:
                      properties:
                        dateImported:
                          format: date-time
                          type: string
                        sshPublicKeyBody:
                          type: string
                        sshPublicKeyID:
                          type: string
                      type: object
                    type: array
                  userName:
                    description: A unique string that identifies a Transfer Family
                      user.
                    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: {}
