{
  "description": "User is the Schema for the Users API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore 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.\n\nYou create users and assign them specific permissions by using an access\nstring. You assign the users to Access Control Lists aligned with a specific\nrole (administrators, human resources) that are then deployed to one or more\nMemoryDB clusters.",
      "properties": {
        "accessString": {
          "description": "Access permissions string used for this user.",
          "type": "string"
        },
        "authenticationMode": {
          "description": "Denotes the user's authentication properties, such as whether it requires\na password to authenticate.",
          "properties": {
            "passwords": {
              "items": {
                "description": "SecretKeyReference combines a k8s corev1.SecretReference with a\nspecific key within the referred-to Secret",
                "properties": {
                  "key": {
                    "description": "Key is the key within the secret",
                    "type": "string"
                  },
                  "name": {
                    "description": "name is unique within a namespace to reference a secret resource.",
                    "type": "string"
                  },
                  "namespace": {
                    "description": "namespace defines the space within which the secret name must be unique.",
                    "type": "string"
                  }
                },
                "required": [
                  "key"
                ],
                "type": "object",
                "x-kubernetes-map-type": "atomic",
                "additionalProperties": false
              },
              "type": "array"
            },
            "type_": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "name": {
          "description": "The name of the user. This value must be unique as it also serves as the\nuser identifier.",
          "type": "string"
        },
        "tags": {
          "description": "A list of tags to be added to this resource. A tag is a key-value pair. A\ntag key must be accompanied by a tag value, although null is accepted.",
          "items": {
            "description": "A tag that can be added to an MemoryDB resource. Tags are composed of a Key/Value\npair. You can use tags to categorize and track all your MemoryDB resources.\nWhen you add or remove tags on clusters, those actions will be replicated\nto all nodes in the cluster. A tag with a null Value is permitted. For more\ninformation, see Tagging your MemoryDB resources (https://docs.aws.amazon.com/MemoryDB/latest/devguide/tagging-resources.html)",
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        }
      },
      "required": [
        "accessString",
        "authenticationMode",
        "name"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "UserStatus defines the observed state of User",
      "properties": {
        "ackResourceMetadata": {
          "description": "All CRs managed by ACK have a common `Status.ACKResourceMetadata` member\nthat is used to contain resource sync state, account ownership,\nconstructed ARN for the resource",
          "properties": {
            "arn": {
              "description": "ARN is the Amazon Resource Name for the resource. This is a\nglobally-unique identifier and is set only by the ACK service controller\nonce the controller has orchestrated the creation of the resource OR\nwhen it has verified that an \"adopted\" resource (a resource where the\nARN annotation was set by the Kubernetes user on the CR) exists and\nmatches the supplied CR's Spec field values.\nhttps://github.com/aws/aws-controllers-k8s/issues/270",
              "type": "string"
            },
            "ownerAccountID": {
              "description": "OwnerAccountID is the AWS Account ID of the account that owns the\nbackend AWS service API resource.",
              "type": "string"
            },
            "region": {
              "description": "Region is the AWS region in which the resource exists or will exist.",
              "type": "string"
            }
          },
          "required": [
            "ownerAccountID",
            "region"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "aclNames": {
          "description": "The names of the Access Control Lists to which the user belongs",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "authentication": {
          "description": "Denotes whether the user requires a password to authenticate.",
          "properties": {
            "passwordCount": {
              "format": "int64",
              "type": "integer"
            },
            "type_": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "conditions": {
          "description": "All CRS managed by ACK have a common `Status.Conditions` member that\ncontains a collection of `ackv1alpha1.Condition` objects that describe\nthe various terminal states of the CR and its backend AWS service API\nresource",
          "items": {
            "description": "Condition is the common struct used by all CRDs managed by ACK service\ncontrollers to indicate terminal states  of the CR and its backend AWS\nservice API resource",
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A human readable message indicating details about the transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the Condition",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "events": {
          "description": "A list of events. Each element in the list contains detailed information\nabout one event.",
          "items": {
            "description": "Represents a single occurrence of something interesting within the system.\nSome examples of events are creating a cluster or adding or removing a node.",
            "properties": {
              "date": {
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "sourceName": {
                "type": "string"
              },
              "sourceType": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "minimumEngineVersion": {
          "description": "The minimum engine version supported for the user",
          "type": "string"
        },
        "status": {
          "description": "Indicates the user status. Can be \"active\", \"modifying\" or \"deleting\".",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
