{
  "description": "ReplicationGroup is the Schema for the ReplicationGroups 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": "ReplicationGroupSpec defines the desired state of ReplicationGroup.\n\nContains all of the attributes of a specific Valkey or Redis OSS replication\ngroup.",
      "properties": {
        "atRestEncryptionEnabled": {
          "description": "A flag that enables encryption at rest when set to true.\n\nYou cannot modify the value of AtRestEncryptionEnabled after the replication\ngroup is created. To enable encryption at rest on a replication group you\nmust set AtRestEncryptionEnabled to true when you create the replication\ngroup.\n\nRequired: Only available when creating a replication group in an Amazon VPC\nusing Redis OSS version 3.2.6, 4.x or later.\n\nDefault: false",
          "type": "boolean"
        },
        "authToken": {
          "description": "Reserved parameter. The password used to access a password protected server.\n\nAuthToken can be specified only on replication groups where TransitEncryptionEnabled\nis true.\n\nFor HIPAA compliance, you must specify TransitEncryptionEnabled as true,\nan AuthToken, and a CacheSubnetGroup.\n\nPassword constraints:\n\n  - Must be only printable ASCII characters.\n\n  - Must be at least 16 characters and no more than 128 characters in length.",
          "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
        },
        "automaticFailoverEnabled": {
          "description": "Specifies whether a read-only replica is automatically promoted to read/write\nprimary if the existing primary fails.\n\nAutomaticFailoverEnabled must be enabled for Valkey or Redis OSS (cluster\nmode enabled) replication groups.\n\nDefault: false",
          "type": "boolean"
        },
        "cacheNodeType": {
          "description": "The compute and memory capacity of the nodes in the node group (shard).\n\nThe following node types are supported by ElastiCache. Generally speaking,\nthe current generation types provide more memory and computational power\nat lower cost when compared to their equivalent previous generation counterparts.\n\n  - General purpose: Current generation: M7g node types: cache.m7g.large,\n    cache.m7g.xlarge, cache.m7g.2xlarge, cache.m7g.4xlarge, cache.m7g.8xlarge,\n    cache.m7g.12xlarge, cache.m7g.16xlarge For region availability, see Supported\n    Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)\n    M6g node types (available only for Redis OSS engine version 5.0.6 onward\n    and for Memcached engine version 1.5.16 onward): cache.m6g.large, cache.m6g.xlarge,\n    cache.m6g.2xlarge, cache.m6g.4xlarge, cache.m6g.8xlarge, cache.m6g.12xlarge,\n    cache.m6g.16xlarge M5 node types: cache.m5.large, cache.m5.xlarge, cache.m5.2xlarge,\n    cache.m5.4xlarge, cache.m5.12xlarge, cache.m5.24xlarge M4 node types:\n    cache.m4.large, cache.m4.xlarge, cache.m4.2xlarge, cache.m4.4xlarge, cache.m4.10xlarge\n    T4g node types (available only for Redis OSS engine version 5.0.6 onward\n    and Memcached engine version 1.5.16 onward): cache.t4g.micro, cache.t4g.small,\n    cache.t4g.medium T3 node types: cache.t3.micro, cache.t3.small, cache.t3.medium\n    T2 node types: cache.t2.micro, cache.t2.small, cache.t2.medium Previous\n    generation: (not recommended. Existing clusters are still supported but\n    creation of new clusters is not supported for these types.) T1 node types:\n    cache.t1.micro M1 node types: cache.m1.small, cache.m1.medium, cache.m1.large,\n    cache.m1.xlarge M3 node types: cache.m3.medium, cache.m3.large, cache.m3.xlarge,\n    cache.m3.2xlarge\n\n  - Compute optimized: Previous generation: (not recommended. Existing clusters\n    are still supported but creation of new clusters is not supported for\n    these types.) C1 node types: cache.c1.xlarge\n\n  - Memory optimized: Current generation: R7g node types: cache.r7g.large,\n    cache.r7g.xlarge, cache.r7g.2xlarge, cache.r7g.4xlarge, cache.r7g.8xlarge,\n    cache.r7g.12xlarge, cache.r7g.16xlarge For region availability, see Supported\n    Node Types (https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/CacheNodes.SupportedTypes.html#CacheNodes.SupportedTypesByRegion)\n    R6g node types (available only for Redis OSS engine version 5.0.6 onward\n    and for Memcached engine version 1.5.16 onward): cache.r6g.large, cache.r6g.xlarge,\n    cache.r6g.2xlarge, cache.r6g.4xlarge, cache.r6g.8xlarge, cache.r6g.12xlarge,\n    cache.r6g.16xlarge R5 node types: cache.r5.large, cache.r5.xlarge, cache.r5.2xlarge,\n    cache.r5.4xlarge, cache.r5.12xlarge, cache.r5.24xlarge R4 node types:\n    cache.r4.large, cache.r4.xlarge, cache.r4.2xlarge, cache.r4.4xlarge, cache.r4.8xlarge,\n    cache.r4.16xlarge Previous generation: (not recommended. Existing clusters\n    are still supported but creation of new clusters is not supported for\n    these types.) M2 node types: cache.m2.xlarge, cache.m2.2xlarge, cache.m2.4xlarge\n    R3 node types: cache.r3.large, cache.r3.xlarge, cache.r3.2xlarge, cache.r3.4xlarge,\n    cache.r3.8xlarge\n\nAdditional node type info\n\n  - All current generation instance types are created in Amazon VPC by default.\n\n  - Valkey or Redis OSS append-only files (AOF) are not supported for T1\n    or T2 instances.\n\n  - Valkey or Redis OSS Multi-AZ with automatic failover is not supported\n    on T1 instances.\n\n  - The configuration variables appendonly and appendfsync are not supported\n    on Valkey, or on Redis OSS version 2.8.22 and later.",
          "type": "string"
        },
        "cacheParameterGroupName": {
          "description": "The name of the parameter group to associate with this replication group.\nIf this argument is omitted, the default cache parameter group for the specified\nengine is used.\n\nIf you are running Valkey or Redis OSS version 3.2.4 or later, only one node\ngroup (shard), and want to use a default parameter group, we recommend that\nyou specify the parameter group by name.\n\n  - To create a Valkey or Redis OSS (cluster mode disabled) replication\n    group, use CacheParameterGroupName=default.redis3.2.\n\n  - To create a Valkey or Redis OSS (cluster mode enabled) replication group,\n    use CacheParameterGroupName=default.redis3.2.cluster.on.",
          "type": "string"
        },
        "cacheParameterGroupRef": {
          "description": "AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\ntype to provide more user friendly syntax for references using 'from' field\nEx:\nAPIIDRef:\n\n\tfrom:\n\t  name: my-api",
          "properties": {
            "from": {
              "description": "AWSResourceReference provides all the values necessary to reference another\nk8s resource for finding the identifier(Id/ARN/Name)",
              "properties": {
                "name": {
                  "type": "string"
                },
                "namespace": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "cacheSecurityGroupNames": {
          "description": "A list of cache security group names to associate with this replication group.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "cacheSubnetGroupName": {
          "description": "The name of the cache subnet group to be used for the replication group.\n\nIf you're going to launch your cluster in an Amazon VPC, you need to create\na subnet group before you start creating a cluster. For more information,\nsee Subnets and Subnet Groups (https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/SubnetGroups.html).",
          "type": "string"
        },
        "cacheSubnetGroupRef": {
          "description": "AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\ntype to provide more user friendly syntax for references using 'from' field\nEx:\nAPIIDRef:\n\n\tfrom:\n\t  name: my-api",
          "properties": {
            "from": {
              "description": "AWSResourceReference provides all the values necessary to reference another\nk8s resource for finding the identifier(Id/ARN/Name)",
              "properties": {
                "name": {
                  "type": "string"
                },
                "namespace": {
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "dataTieringEnabled": {
          "description": "Enables data tiering. Data tiering is only supported for replication groups\nusing the r6gd node type. This parameter must be set to true when using r6gd\nnodes. For more information, see Data tiering (https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/data-tiering.html).",
          "type": "boolean"
        },
        "description": {
          "description": "A user-created description for the replication group.",
          "type": "string"
        },
        "engine": {
          "description": "The name of the cache engine to be used for the clusters in this replication\ngroup. The value must be set to Redis.",
          "type": "string"
        },
        "engineVersion": {
          "description": "The version number of the cache engine to be used for the clusters in this\nreplication group. To view the supported cache engine versions, use the DescribeCacheEngineVersions\noperation.\n\nImportant: You can upgrade to a newer engine version (see Selecting a Cache\nEngine and Version (https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/SelectEngine.html#VersionManagement))\nin the ElastiCache User Guide, but you cannot downgrade to an earlier engine\nversion. If you want to use an earlier engine version, you must delete the\nexisting cluster or replication group and create it anew with the earlier\nengine version.",
          "type": "string"
        },
        "kmsKeyID": {
          "description": "The ID of the KMS key used to encrypt the disk in the cluster.",
          "type": "string"
        },
        "logDeliveryConfigurations": {
          "description": "Specifies the destination, format and type of the logs.",
          "items": {
            "description": "Specifies the destination, format and type of the logs.",
            "properties": {
              "destinationDetails": {
                "description": "Configuration details of either a CloudWatch Logs destination or Kinesis\nData Firehose destination.",
                "properties": {
                  "cloudWatchLogsDetails": {
                    "description": "The configuration details of the CloudWatch Logs destination.",
                    "properties": {
                      "logGroup": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "kinesisFirehoseDetails": {
                    "description": "The configuration details of the Kinesis Data Firehose destination.",
                    "properties": {
                      "deliveryStream": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "destinationType": {
                "type": "string"
              },
              "enabled": {
                "type": "boolean"
              },
              "logFormat": {
                "type": "string"
              },
              "logType": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "multiAZEnabled": {
          "description": "A flag indicating if you have Multi-AZ enabled to enhance fault tolerance.\nFor more information, see Minimizing Downtime: Multi-AZ (http://docs.aws.amazon.com/AmazonElastiCache/latest/dg/AutoFailover.html).",
          "type": "boolean"
        },
        "nodeGroupConfiguration": {
          "description": "A list of node group (shard) configuration options. Each node group (shard)\nconfiguration has the following members: PrimaryAvailabilityZone, ReplicaAvailabilityZones,\nReplicaCount, and Slots.\n\nIf you're creating a Valkey or Redis OSS (cluster mode disabled) or a Valkey\nor Redis OSS (cluster mode enabled) replication group, you can use this parameter\nto individually configure each node group (shard), or you can omit this parameter.\nHowever, it is required when seeding a Valkey or Redis OSS (cluster mode\nenabled) cluster from a S3 rdb file. You must configure each node group (shard)\nusing this parameter because you must specify the slots for each node group.",
          "items": {
            "description": "Node group (shard) configuration options. Each node group (shard) configuration\nhas the following: Slots, PrimaryAvailabilityZone, ReplicaAvailabilityZones,\nReplicaCount.",
            "properties": {
              "nodeGroupID": {
                "type": "string"
              },
              "primaryAvailabilityZone": {
                "type": "string"
              },
              "primaryOutpostARN": {
                "type": "string"
              },
              "replicaAvailabilityZones": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "replicaCount": {
                "format": "int64",
                "type": "integer"
              },
              "replicaOutpostARNs": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "slots": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "notificationTopicARN": {
          "description": "The Amazon Resource Name (ARN) of the Amazon Simple Notification Service\n(SNS) topic to which notifications are sent.\n\nThe Amazon SNS topic owner must be the same as the cluster owner.",
          "type": "string"
        },
        "numNodeGroups": {
          "description": "An optional parameter that specifies the number of node groups (shards) for\nthis Valkey or Redis OSS (cluster mode enabled) replication group. For Valkey\nor Redis OSS (cluster mode disabled) either omit this parameter or set it\nto 1.\n\nDefault: 1",
          "format": "int64",
          "type": "integer"
        },
        "port": {
          "description": "The port number on which each member of the replication group accepts connections.",
          "format": "int64",
          "type": "integer"
        },
        "preferredCacheClusterAZs": {
          "description": "A list of EC2 Availability Zones in which the replication group's clusters\nare created. The order of the Availability Zones in the list is the order\nin which clusters are allocated. The primary cluster is created in the first\nAZ in the list.\n\nThis parameter is not used if there is more than one node group (shard).\nYou should use NodeGroupConfiguration instead.\n\nIf you are creating your replication group in an Amazon VPC (recommended),\nyou can only locate clusters in Availability Zones associated with the subnets\nin the selected subnet group.\n\nThe number of Availability Zones listed must equal the value of NumCacheClusters.\n\nDefault: system chosen Availability Zones.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "preferredMaintenanceWindow": {
          "description": "Specifies the weekly time range during which maintenance on the cluster is\nperformed. It is specified as a range in the format ddd:hh24:mi-ddd:hh24:mi\n(24H Clock UTC). The minimum maintenance window is a 60 minute period.\n\nValid values for ddd are:\n\n  - sun\n\n  - mon\n\n  - tue\n\n  - wed\n\n  - thu\n\n  - fri\n\n  - sat\n\nExample: sun:23:00-mon:01:30",
          "type": "string"
        },
        "primaryClusterID": {
          "description": "The identifier of the cluster that serves as the primary for this replication\ngroup. This cluster must already exist and have a status of available.\n\nThis parameter is not required if NumCacheClusters, NumNodeGroups, or ReplicasPerNodeGroup\nis specified.",
          "type": "string"
        },
        "replicasPerNodeGroup": {
          "description": "An optional parameter that specifies the number of replica nodes in each\nnode group (shard). Valid values are 0 to 5.",
          "format": "int64",
          "type": "integer"
        },
        "replicationGroupID": {
          "description": "The replication group identifier. This parameter is stored as a lowercase\nstring.\n\nConstraints:\n\n  - A name must contain from 1 to 40 alphanumeric characters or hyphens.\n\n  - The first character must be a letter.\n\n  - A name cannot end with a hyphen or contain two consecutive hyphens.",
          "type": "string"
        },
        "securityGroupIDs": {
          "description": "One or more Amazon VPC security groups associated with this replication group.\n\nUse this parameter only when you are creating a replication group in an Amazon\nVirtual Private Cloud (Amazon VPC).",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "securityGroupRefs": {
          "items": {
            "description": "AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference\ntype to provide more user friendly syntax for references using 'from' field\nEx:\nAPIIDRef:\n\n\tfrom:\n\t  name: my-api",
            "properties": {
              "from": {
                "description": "AWSResourceReference provides all the values necessary to reference another\nk8s resource for finding the identifier(Id/ARN/Name)",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "namespace": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "snapshotARNs": {
          "description": "A list of Amazon Resource Names (ARN) that uniquely identify the Valkey or\nRedis OSS RDB snapshot files stored in Amazon S3. The snapshot files are\nused to populate the new replication group. The Amazon S3 object name in\nthe ARN cannot contain any commas. The new replication group will have the\nnumber of node groups (console: shards) specified by the parameter NumNodeGroups\nor the number of node groups configured by NodeGroupConfiguration regardless\nof the number of ARNs specified here.\n\nExample of an Amazon S3 ARN: arn:aws:s3:::my_bucket/snapshot1.rdb",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "snapshotName": {
          "description": "The name of a snapshot from which to restore data into the new replication\ngroup. The snapshot status changes to restoring while the new replication\ngroup is being created.",
          "type": "string"
        },
        "snapshotRetentionLimit": {
          "description": "The number of days for which ElastiCache retains automatic snapshots before\ndeleting them. For example, if you set SnapshotRetentionLimit to 5, a snapshot\nthat was taken today is retained for 5 days before being deleted.\n\nDefault: 0 (i.e., automatic backups are disabled for this cluster).",
          "format": "int64",
          "type": "integer"
        },
        "snapshotWindow": {
          "description": "The daily time range (in UTC) during which ElastiCache begins taking a daily\nsnapshot of your node group (shard).\n\nExample: 05:00-09:00\n\nIf you do not specify this parameter, ElastiCache automatically chooses an\nappropriate time range.",
          "type": "string"
        },
        "tags": {
          "description": "A list of tags to be added to this resource. Tags are comma-separated key,value\npairs (e.g. Key=myKey, Value=myKeyValue. You can include multiple tags as\nshown following: Key=myKey, Value=myKeyValue Key=mySecondKey, Value=mySecondKeyValue.\nTags on replication groups will be replicated to all nodes.",
          "items": {
            "description": "A tag that can be added to an ElastiCache cluster or replication group. Tags\nare composed of a Key/Value pair. You can use tags to categorize and track\nall your ElastiCache resources, with the exception of global replication\ngroup. When you add or remove tags on replication groups, those actions will\nbe replicated to all nodes in the replication group. A tag with a null Value\nis permitted.",
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "transitEncryptionEnabled": {
          "description": "A flag that enables in-transit encryption when set to true.\n\nThis parameter is valid only if the Engine parameter is redis, the EngineVersion\nparameter is 3.2.6, 4.x or later, and the cluster is being created in an\nAmazon VPC.\n\nIf you enable in-transit encryption, you must also specify a value for CacheSubnetGroup.\n\nRequired: Only available when creating a replication group in an Amazon VPC\nusing Redis OSS version 3.2.6, 4.x or later.\n\nDefault: false\n\nFor HIPAA compliance, you must specify TransitEncryptionEnabled as true,\nan AuthToken, and a CacheSubnetGroup.",
          "type": "boolean"
        },
        "userGroupIDs": {
          "description": "The user group to associate with the replication group.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "description",
        "replicationGroupID"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "ReplicationGroupStatus defines the observed state of ReplicationGroup",
      "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
        },
        "allowedScaleDownModifications": {
          "description": "A string list, each element of which specifies a cache node type which you\ncan use to scale your cluster or replication group. When scaling down a Valkey\nor Redis OSS cluster or replication group using ModifyCacheCluster or ModifyReplicationGroup,\nuse a value from this list for the CacheNodeType parameter.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "allowedScaleUpModifications": {
          "description": "A string list, each element of which specifies a cache node type which you\ncan use to scale your cluster or replication group.\n\nWhen scaling up a Valkey or Redis OSS cluster or replication group using\nModifyCacheCluster or ModifyReplicationGroup, use a value from this list\nfor the CacheNodeType parameter.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "authTokenEnabled": {
          "description": "A flag that enables using an AuthToken (password) when issuing Valkey or\nRedis OSS commands.\n\nDefault: false",
          "type": "boolean"
        },
        "authTokenLastModifiedDate": {
          "description": "The date the auth token was last modified",
          "format": "date-time",
          "type": "string"
        },
        "autoMinorVersionUpgrade": {
          "description": "If you are running Valkey 7.2 and above, or Redis OSS engine version 6.0\nand above, set this parameter to yes if you want to opt-in to the next auto\nminor version upgrade campaign. This parameter is disabled for previous versions.",
          "type": "boolean"
        },
        "automaticFailover": {
          "description": "Indicates the status of automatic failover for this Valkey or Redis OSS replication\ngroup.",
          "type": "string"
        },
        "clusterEnabled": {
          "description": "A flag indicating whether or not this replication group is cluster enabled;\ni.e., whether its data can be partitioned across multiple shards (API/CLI:\nnode groups).\n\nValid values: true | false",
          "type": "boolean"
        },
        "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"
        },
        "configurationEndpoint": {
          "description": "The configuration endpoint for this replication group. Use the configuration\nendpoint to connect to this replication group.",
          "properties": {
            "address": {
              "type": "string"
            },
            "port": {
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "dataTiering": {
          "description": "Enables data tiering. Data tiering is only supported for replication groups\nusing the r6gd node type. This parameter must be set to true when using r6gd\nnodes. For more information, see Data tiering (https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/data-tiering.html).",
          "type": "string"
        },
        "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, adding or removing a cache\nnode, or rebooting a node.",
            "properties": {
              "date": {
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "sourceIdentifier": {
                "type": "string"
              },
              "sourceType": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "globalReplicationGroupInfo": {
          "description": "The name of the Global datastore and role of this replication group in the\nGlobal datastore.",
          "properties": {
            "globalReplicationGroupID": {
              "type": "string"
            },
            "globalReplicationGroupMemberRole": {
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "logDeliveryConfigurations": {
          "description": "Returns the destination, format and type of the logs.",
          "items": {
            "description": "Returns the destination, format and type of the logs.",
            "properties": {
              "destinationDetails": {
                "description": "Configuration details of either a CloudWatch Logs destination or Kinesis\nData Firehose destination.",
                "properties": {
                  "cloudWatchLogsDetails": {
                    "description": "The configuration details of the CloudWatch Logs destination.",
                    "properties": {
                      "logGroup": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "kinesisFirehoseDetails": {
                    "description": "The configuration details of the Kinesis Data Firehose destination.",
                    "properties": {
                      "deliveryStream": {
                        "type": "string"
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "destinationType": {
                "type": "string"
              },
              "logFormat": {
                "type": "string"
              },
              "logType": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "status": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "memberClusters": {
          "description": "The names of all the cache clusters that are part of this replication group.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "memberClustersOutpostARNs": {
          "description": "The outpost ARNs of the replication group's member clusters.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "multiAZ": {
          "description": "A flag indicating if you have Multi-AZ enabled to enhance fault tolerance.\nFor more information, see Minimizing Downtime: Multi-AZ (http://docs.aws.amazon.com/AmazonElastiCache/latest/dg/AutoFailover.html)",
          "type": "string"
        },
        "nodeGroups": {
          "description": "A list of node groups in this replication group. For Valkey or Redis OSS\n(cluster mode disabled) replication groups, this is a single-element list.\nFor Valkey or Redis OSS (cluster mode enabled) replication groups, the list\ncontains an entry for each node group (shard).",
          "items": {
            "description": "Represents a collection of cache nodes in a replication group. One node in\nthe node group is the read/write primary node. All the other nodes are read-only\nReplica nodes.",
            "properties": {
              "nodeGroupID": {
                "type": "string"
              },
              "nodeGroupMembers": {
                "items": {
                  "description": "Represents a single node within a node group (shard).",
                  "properties": {
                    "cacheClusterID": {
                      "type": "string"
                    },
                    "cacheNodeID": {
                      "type": "string"
                    },
                    "currentRole": {
                      "type": "string"
                    },
                    "preferredAvailabilityZone": {
                      "type": "string"
                    },
                    "preferredOutpostARN": {
                      "type": "string"
                    },
                    "readEndpoint": {
                      "description": "Represents the information required for client programs to connect to a cache\nnode. This value is read-only.",
                      "properties": {
                        "address": {
                          "type": "string"
                        },
                        "port": {
                          "format": "int64",
                          "type": "integer"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "primaryEndpoint": {
                "description": "Represents the information required for client programs to connect to a cache\nnode. This value is read-only.",
                "properties": {
                  "address": {
                    "type": "string"
                  },
                  "port": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "readerEndpoint": {
                "description": "Represents the information required for client programs to connect to a cache\nnode. This value is read-only.",
                "properties": {
                  "address": {
                    "type": "string"
                  },
                  "port": {
                    "format": "int64",
                    "type": "integer"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "slots": {
                "type": "string"
              },
              "status": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "pendingModifiedValues": {
          "description": "A group of settings to be applied to the replication group, either immediately\nor during the next maintenance window.",
          "properties": {
            "authTokenStatus": {
              "type": "string"
            },
            "automaticFailoverStatus": {
              "type": "string"
            },
            "logDeliveryConfigurations": {
              "items": {
                "description": "The log delivery configurations being modified",
                "properties": {
                  "destinationDetails": {
                    "description": "Configuration details of either a CloudWatch Logs destination or Kinesis\nData Firehose destination.",
                    "properties": {
                      "cloudWatchLogsDetails": {
                        "description": "The configuration details of the CloudWatch Logs destination.",
                        "properties": {
                          "logGroup": {
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "kinesisFirehoseDetails": {
                        "description": "The configuration details of the Kinesis Data Firehose destination.",
                        "properties": {
                          "deliveryStream": {
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "destinationType": {
                    "type": "string"
                  },
                  "logFormat": {
                    "type": "string"
                  },
                  "logType": {
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "primaryClusterID": {
              "type": "string"
            },
            "resharding": {
              "description": "The status of an online resharding operation.",
              "properties": {
                "slotMigration": {
                  "description": "Represents the progress of an online resharding operation.",
                  "properties": {
                    "progressPercentage": {
                      "type": "number"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "userGroups": {
              "description": "The status of the user group update.",
              "properties": {
                "userGroupIDsToAdd": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "userGroupIDsToRemove": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "replicationGroupCreateTime": {
          "description": "The date and time when the cluster was created.",
          "format": "date-time",
          "type": "string"
        },
        "snapshottingClusterID": {
          "description": "The cluster ID that is used as the daily snapshot source for the replication\ngroup.",
          "type": "string"
        },
        "status": {
          "description": "The current state of this replication group - creating, available, modifying,\ndeleting, create-failed, snapshotting.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
