{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2022-11-28",
    "endpointPrefix":"docdb-elastic",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "protocols":["rest-json"],
    "serviceAbbreviation":"DocDB Elastic",
    "serviceFullName":"Amazon DocumentDB Elastic Clusters",
    "serviceId":"DocDB Elastic",
    "signatureVersion":"v4",
    "signingName":"docdb-elastic",
    "uid":"docdb-elastic-2022-11-28",
    "auth":["aws.auth#sigv4"]
  },
  "operations":{
    "ApplyPendingMaintenanceAction":{
      "name":"ApplyPendingMaintenanceAction",
      "http":{
        "method":"POST",
        "requestUri":"/pending-action",
        "responseCode":200
      },
      "input":{"shape":"ApplyPendingMaintenanceActionInput"},
      "output":{"shape":"ApplyPendingMaintenanceActionOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>The type of pending maintenance action to be applied to the resource.</p>",
      "idempotent":true
    },
    "CopyClusterSnapshot":{
      "name":"CopyClusterSnapshot",
      "http":{
        "method":"POST",
        "requestUri":"/cluster-snapshot/{snapshotArn}/copy",
        "responseCode":200
      },
      "input":{"shape":"CopyClusterSnapshotInput"},
      "output":{"shape":"CopyClusterSnapshotOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Copies a snapshot of an elastic cluster.</p>",
      "idempotent":true
    },
    "CreateCluster":{
      "name":"CreateCluster",
      "http":{
        "method":"POST",
        "requestUri":"/cluster",
        "responseCode":200
      },
      "input":{"shape":"CreateClusterInput"},
      "output":{"shape":"CreateClusterOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Creates a new Amazon DocumentDB elastic cluster and returns its cluster structure.</p>",
      "idempotent":true
    },
    "CreateClusterSnapshot":{
      "name":"CreateClusterSnapshot",
      "http":{
        "method":"POST",
        "requestUri":"/cluster-snapshot",
        "responseCode":200
      },
      "input":{"shape":"CreateClusterSnapshotInput"},
      "output":{"shape":"CreateClusterSnapshotOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Creates a snapshot of an elastic cluster.</p>",
      "idempotent":true
    },
    "DeleteCluster":{
      "name":"DeleteCluster",
      "http":{
        "method":"DELETE",
        "requestUri":"/cluster/{clusterArn}",
        "responseCode":200
      },
      "input":{"shape":"DeleteClusterInput"},
      "output":{"shape":"DeleteClusterOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Delete an elastic cluster.</p>",
      "idempotent":true
    },
    "DeleteClusterSnapshot":{
      "name":"DeleteClusterSnapshot",
      "http":{
        "method":"DELETE",
        "requestUri":"/cluster-snapshot/{snapshotArn}",
        "responseCode":200
      },
      "input":{"shape":"DeleteClusterSnapshotInput"},
      "output":{"shape":"DeleteClusterSnapshotOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Delete an elastic cluster snapshot.</p>",
      "idempotent":true
    },
    "GetCluster":{
      "name":"GetCluster",
      "http":{
        "method":"GET",
        "requestUri":"/cluster/{clusterArn}",
        "responseCode":200
      },
      "input":{"shape":"GetClusterInput"},
      "output":{"shape":"GetClusterOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Returns information about a specific elastic cluster.</p>"
    },
    "GetClusterSnapshot":{
      "name":"GetClusterSnapshot",
      "http":{
        "method":"GET",
        "requestUri":"/cluster-snapshot/{snapshotArn}",
        "responseCode":200
      },
      "input":{"shape":"GetClusterSnapshotInput"},
      "output":{"shape":"GetClusterSnapshotOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Returns information about a specific elastic cluster snapshot</p>"
    },
    "GetPendingMaintenanceAction":{
      "name":"GetPendingMaintenanceAction",
      "http":{
        "method":"GET",
        "requestUri":"/pending-action/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"GetPendingMaintenanceActionInput"},
      "output":{"shape":"GetPendingMaintenanceActionOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Retrieves all maintenance actions that are pending.</p>"
    },
    "ListClusterSnapshots":{
      "name":"ListClusterSnapshots",
      "http":{
        "method":"GET",
        "requestUri":"/cluster-snapshots",
        "responseCode":200
      },
      "input":{"shape":"ListClusterSnapshotsInput"},
      "output":{"shape":"ListClusterSnapshotsOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Returns information about snapshots for a specified elastic cluster.</p>"
    },
    "ListClusters":{
      "name":"ListClusters",
      "http":{
        "method":"GET",
        "requestUri":"/clusters",
        "responseCode":200
      },
      "input":{"shape":"ListClustersInput"},
      "output":{"shape":"ListClustersOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Returns information about provisioned Amazon DocumentDB elastic clusters.</p>"
    },
    "ListPendingMaintenanceActions":{
      "name":"ListPendingMaintenanceActions",
      "http":{
        "method":"GET",
        "requestUri":"/pending-actions",
        "responseCode":200
      },
      "input":{"shape":"ListPendingMaintenanceActionsInput"},
      "output":{"shape":"ListPendingMaintenanceActionsOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Retrieves a list of all maintenance actions that are pending.</p>"
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"GET",
        "requestUri":"/tags/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"ListTagsForResourceRequest"},
      "output":{"shape":"ListTagsForResourceResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Lists all tags on a elastic cluster resource</p>"
    },
    "RestoreClusterFromSnapshot":{
      "name":"RestoreClusterFromSnapshot",
      "http":{
        "method":"POST",
        "requestUri":"/cluster-snapshot/{snapshotArn}/restore",
        "responseCode":200
      },
      "input":{"shape":"RestoreClusterFromSnapshotInput"},
      "output":{"shape":"RestoreClusterFromSnapshotOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Restores an elastic cluster from a snapshot.</p>",
      "idempotent":true
    },
    "StartCluster":{
      "name":"StartCluster",
      "http":{
        "method":"POST",
        "requestUri":"/cluster/{clusterArn}/start",
        "responseCode":200
      },
      "input":{"shape":"StartClusterInput"},
      "output":{"shape":"StartClusterOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Restarts the stopped elastic cluster that is specified by <code>clusterARN</code>.</p>",
      "idempotent":true
    },
    "StopCluster":{
      "name":"StopCluster",
      "http":{
        "method":"POST",
        "requestUri":"/cluster/{clusterArn}/stop",
        "responseCode":200
      },
      "input":{"shape":"StopClusterInput"},
      "output":{"shape":"StopClusterOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Stops the running elastic cluster that is specified by <code>clusterArn</code>. The elastic cluster must be in the <i>available</i> state. </p>",
      "idempotent":true
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/tags/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"TagResourceRequest"},
      "output":{"shape":"TagResourceResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Adds metadata tags to an elastic cluster resource</p>"
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"DELETE",
        "requestUri":"/tags/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"UntagResourceRequest"},
      "output":{"shape":"UntagResourceResponse"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Removes metadata tags from an elastic cluster resource</p>",
      "idempotent":true
    },
    "UpdateCluster":{
      "name":"UpdateCluster",
      "http":{
        "method":"PUT",
        "requestUri":"/cluster/{clusterArn}",
        "responseCode":200
      },
      "input":{"shape":"UpdateClusterInput"},
      "output":{"shape":"UpdateClusterOutput"},
      "errors":[
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"AccessDeniedException"}
      ],
      "documentation":"<p>Modifies an elastic cluster. This includes updating admin-username/password, upgrading the API version, and setting up a backup window and maintenance window</p>",
      "idempotent":true
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{
          "shape":"String",
          "documentation":"<p>An error message explaining why access was denied.</p>"
        }
      },
      "documentation":"<p>An exception that occurs when there are not sufficient permissions to perform an action.</p>",
      "error":{
        "httpStatusCode":403,
        "senderFault":true
      },
      "exception":true
    },
    "ApplyPendingMaintenanceActionInput":{
      "type":"structure",
      "required":[
        "applyAction",
        "optInType",
        "resourceArn"
      ],
      "members":{
        "applyAction":{
          "shape":"InputString",
          "documentation":"<p>The pending maintenance action to apply to the resource.</p> <p>Valid actions are:</p> <ul> <li> <p> <code>ENGINE_UPDATE<i/> </code> </p> </li> <li> <p> <code>ENGINE_UPGRADE</code> </p> </li> <li> <p> <code>SECURITY_UPDATE</code> </p> </li> <li> <p> <code>OS_UPDATE</code> </p> </li> <li> <p> <code>MASTER_USER_PASSWORD_UPDATE</code> </p> </li> </ul>"
        },
        "applyOn":{
          "shape":"InputString",
          "documentation":"<p>A specific date to apply the pending maintenance action. Required if opt-in-type is <code>APPLY_ON</code>. Format: <code>yyyy/MM/dd HH:mm-yyyy/MM/dd HH:mm</code> </p>"
        },
        "optInType":{
          "shape":"OptInType",
          "documentation":"<p>A value that specifies the type of opt-in request, or undoes an opt-in request. An opt-in request of type <code>IMMEDIATE</code> can't be undone.</p>"
        },
        "resourceArn":{
          "shape":"InputString",
          "documentation":"<p>The Amazon DocumentDB Amazon Resource Name (ARN) of the resource to which the pending maintenance action applies.</p>"
        }
      }
    },
    "ApplyPendingMaintenanceActionOutput":{
      "type":"structure",
      "required":["resourcePendingMaintenanceAction"],
      "members":{
        "resourcePendingMaintenanceAction":{
          "shape":"ResourcePendingMaintenanceAction",
          "documentation":"<p>The output of the pending maintenance action being applied.</p>"
        }
      }
    },
    "Arn":{
      "type":"string",
      "max":1011,
      "min":1
    },
    "Auth":{
      "type":"string",
      "enum":[
        "PLAIN_TEXT",
        "SECRET_ARN"
      ]
    },
    "Boolean":{
      "type":"boolean",
      "box":true
    },
    "Cluster":{
      "type":"structure",
      "required":[
        "adminUserName",
        "authType",
        "clusterArn",
        "clusterEndpoint",
        "clusterName",
        "createTime",
        "kmsKeyId",
        "preferredMaintenanceWindow",
        "shardCapacity",
        "shardCount",
        "status",
        "subnetIds",
        "vpcSecurityGroupIds"
      ],
      "members":{
        "adminUserName":{
          "shape":"String",
          "documentation":"<p>The name of the elastic cluster administrator.</p>"
        },
        "authType":{
          "shape":"Auth",
          "documentation":"<p>The authentication type for the elastic cluster.</p>"
        },
        "backupRetentionPeriod":{
          "shape":"Integer",
          "documentation":"<p>The number of days for which automatic snapshots are retained.</p>"
        },
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster.</p>"
        },
        "clusterEndpoint":{
          "shape":"String",
          "documentation":"<p>The URL used to connect to the elastic cluster.</p>"
        },
        "clusterName":{
          "shape":"String",
          "documentation":"<p>The name of the elastic cluster.</p>"
        },
        "createTime":{
          "shape":"String",
          "documentation":"<p>The time when the elastic cluster was created in Universal Coordinated Time (UTC).</p>"
        },
        "kmsKeyId":{
          "shape":"String",
          "documentation":"<p>The KMS key identifier to use to encrypt the elastic cluster.</p>"
        },
        "preferredBackupWindow":{
          "shape":"String",
          "documentation":"<p>The daily time range during which automated backups are created if automated backups are enabled, as determined by <code>backupRetentionPeriod</code>.</p>"
        },
        "preferredMaintenanceWindow":{
          "shape":"String",
          "documentation":"<p>The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).</p> <p> <i>Format</i>: <code>ddd:hh24:mi-ddd:hh24:mi</code> </p>"
        },
        "shardCapacity":{
          "shape":"Integer",
          "documentation":"<p>The number of vCPUs assigned to each elastic cluster shard. Maximum is 64. Allowed values are 2, 4, 8, 16, 32, 64.</p>"
        },
        "shardCount":{
          "shape":"Integer",
          "documentation":"<p>The number of shards assigned to the elastic cluster. Maximum is 32.</p>"
        },
        "shardInstanceCount":{
          "shape":"Integer",
          "documentation":"<p>The number of replica instances applying to all shards in the cluster. A <code>shardInstanceCount</code> value of 1 means there is one writer instance, and any additional instances are replicas that can be used for reads and to improve availability.</p>"
        },
        "shards":{
          "shape":"ShardList",
          "documentation":"<p>The total number of shards in the cluster.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The status of the elastic cluster.</p>"
        },
        "subnetIds":{
          "shape":"StringList",
          "documentation":"<p>The Amazon EC2 subnet IDs for the elastic cluster.</p>"
        },
        "vpcSecurityGroupIds":{
          "shape":"StringList",
          "documentation":"<p>A list of EC2 VPC security groups associated with thie elastic cluster.</p>"
        }
      },
      "documentation":"<p>Returns information about a specific elastic cluster.</p>"
    },
    "ClusterInList":{
      "type":"structure",
      "required":[
        "clusterArn",
        "clusterName",
        "status"
      ],
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster.</p>"
        },
        "clusterName":{
          "shape":"String",
          "documentation":"<p>The name of the elastic cluster.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The status of the elastic cluster.</p>"
        }
      },
      "documentation":"<p>A list of Amazon DocumentDB elastic clusters.</p>"
    },
    "ClusterList":{
      "type":"list",
      "member":{"shape":"ClusterInList"}
    },
    "ClusterSnapshot":{
      "type":"structure",
      "required":[
        "adminUserName",
        "clusterArn",
        "clusterCreationTime",
        "kmsKeyId",
        "snapshotArn",
        "snapshotCreationTime",
        "snapshotName",
        "status",
        "subnetIds",
        "vpcSecurityGroupIds"
      ],
      "members":{
        "adminUserName":{
          "shape":"String",
          "documentation":"<p>The name of the elastic cluster administrator.</p>"
        },
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster.</p>"
        },
        "clusterCreationTime":{
          "shape":"String",
          "documentation":"<p>The time when the elastic cluster was created in Universal Coordinated Time (UTC).</p>"
        },
        "kmsKeyId":{
          "shape":"String",
          "documentation":"<p>The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are creating a cluster using the same Amazon account that owns this KMS encryption key, you can use the KMS key alias instead of the ARN as the KMS encryption key. If an encryption key is not specified here, Amazon DocumentDB uses the default encryption key that KMS creates for your account. Your account has a different default encryption key for each Amazon Region. </p>"
        },
        "snapshotArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster snapshot.</p>"
        },
        "snapshotCreationTime":{
          "shape":"String",
          "documentation":"<p>The time when the elastic cluster snapshot was created in Universal Coordinated Time (UTC).</p>"
        },
        "snapshotName":{
          "shape":"String",
          "documentation":"<p>The name of the elastic cluster snapshot.</p>"
        },
        "snapshotType":{
          "shape":"SnapshotType",
          "documentation":"<p>The type of cluster snapshots to be returned. You can specify one of the following values:</p> <ul> <li> <p> <code>automated</code> - Return all cluster snapshots that Amazon DocumentDB has automatically created for your Amazon Web Services account.</p> </li> <li> <p> <code>manual</code> - Return all cluster snapshots that you have manually created for your Amazon Web Services account.</p> </li> </ul>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The status of the elastic cluster snapshot.</p>"
        },
        "subnetIds":{
          "shape":"StringList",
          "documentation":"<p>The Amazon EC2 subnet IDs for the elastic cluster.</p>"
        },
        "vpcSecurityGroupIds":{
          "shape":"StringList",
          "documentation":"<p>A list of EC2 VPC security groups to associate with the elastic cluster.</p>"
        }
      },
      "documentation":"<p>Returns information about a specific elastic cluster snapshot.</p>"
    },
    "ClusterSnapshotInList":{
      "type":"structure",
      "required":[
        "clusterArn",
        "snapshotArn",
        "snapshotCreationTime",
        "snapshotName",
        "status"
      ],
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster.</p>"
        },
        "snapshotArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster snapshot.</p>"
        },
        "snapshotCreationTime":{
          "shape":"String",
          "documentation":"<p>The time when the elastic cluster snapshot was created in Universal Coordinated Time (UTC).</p>"
        },
        "snapshotName":{
          "shape":"String",
          "documentation":"<p>The name of the elastic cluster snapshot.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The status of the elastic cluster snapshot.</p>"
        }
      },
      "documentation":"<p>A list of elastic cluster snapshots.</p>"
    },
    "ClusterSnapshotList":{
      "type":"list",
      "member":{"shape":"ClusterSnapshotInList"}
    },
    "ConflictException":{
      "type":"structure",
      "required":[
        "message",
        "resourceId",
        "resourceType"
      ],
      "members":{
        "message":{"shape":"String"},
        "resourceId":{
          "shape":"String",
          "documentation":"<p>The ID of the resource where there was an access conflict.</p>"
        },
        "resourceType":{
          "shape":"String",
          "documentation":"<p>The type of the resource where there was an access conflict.</p>"
        }
      },
      "documentation":"<p>There was an access conflict.</p>",
      "error":{
        "httpStatusCode":409,
        "senderFault":true
      },
      "exception":true
    },
    "CopyClusterSnapshotInput":{
      "type":"structure",
      "required":[
        "snapshotArn",
        "targetSnapshotName"
      ],
      "members":{
        "copyTags":{
          "shape":"Boolean",
          "documentation":"<p>Set to <code>true</code> to copy all tags from the source cluster snapshot to the target elastic cluster snapshot. The default is <code>false</code>.</p>"
        },
        "kmsKeyId":{
          "shape":"String",
          "documentation":"<p>The Amazon Web Services KMS key ID for an encrypted elastic cluster snapshot. The Amazon Web Services KMS key ID is the Amazon Resource Name (ARN), Amazon Web Services KMS key identifier, or the Amazon Web Services KMS key alias for the Amazon Web Services KMS encryption key.</p> <p>If you copy an encrypted elastic cluster snapshot from your Amazon Web Services account, you can specify a value for <code>KmsKeyId</code> to encrypt the copy with a new Amazon Web ServicesS KMS encryption key. If you don't specify a value for <code>KmsKeyId</code>, then the copy of the elastic cluster snapshot is encrypted with the same <code>AWS</code> KMS key as the source elastic cluster snapshot.</p> <p>To copy an encrypted elastic cluster snapshot to another Amazon Web Services region, set <code>KmsKeyId</code> to the Amazon Web Services KMS key ID that you want to use to encrypt the copy of the elastic cluster snapshot in the destination region. Amazon Web Services KMS encryption keys are specific to the Amazon Web Services region that they are created in, and you can't use encryption keys from one Amazon Web Services region in another Amazon Web Services region.</p> <p>If you copy an unencrypted elastic cluster snapshot and specify a value for the <code>KmsKeyId</code> parameter, an error is returned.</p>"
        },
        "snapshotArn":{
          "shape":"String",
          "documentation":"<p>The Amazon Resource Name (ARN) identifier of the elastic cluster snapshot.</p>",
          "location":"uri",
          "locationName":"snapshotArn"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags to be assigned to the elastic cluster snapshot.</p>"
        },
        "targetSnapshotName":{
          "shape":"CopyClusterSnapshotInputTargetSnapshotNameString",
          "documentation":"<p>The identifier of the new elastic cluster snapshot to create from the source cluster snapshot. This parameter is not case sensitive.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 letters, numbers, or hyphens.</p> </li> <li> <p>The first character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul> <p>Example: <code>elastic-cluster-snapshot-5</code> </p>"
        }
      }
    },
    "CopyClusterSnapshotInputTargetSnapshotNameString":{
      "type":"string",
      "max":63,
      "min":1
    },
    "CopyClusterSnapshotOutput":{
      "type":"structure",
      "required":["snapshot"],
      "members":{
        "snapshot":{"shape":"ClusterSnapshot"}
      }
    },
    "CreateClusterInput":{
      "type":"structure",
      "required":[
        "adminUserName",
        "adminUserPassword",
        "authType",
        "clusterName",
        "shardCapacity",
        "shardCount"
      ],
      "members":{
        "adminUserName":{
          "shape":"String",
          "documentation":"<p>The name of the Amazon DocumentDB elastic clusters administrator.</p> <p> <i>Constraints</i>:</p> <ul> <li> <p>Must be from 1 to 63 letters or numbers.</p> </li> <li> <p>The first character must be a letter.</p> </li> <li> <p>Cannot be a reserved word.</p> </li> </ul>"
        },
        "adminUserPassword":{
          "shape":"Password",
          "documentation":"<p>The password for the Amazon DocumentDB elastic clusters administrator. The password can contain any printable ASCII characters.</p> <p> <i>Constraints</i>:</p> <ul> <li> <p>Must contain from 8 to 100 characters.</p> </li> <li> <p>Cannot contain a forward slash (/), double quote (\"), or the \"at\" symbol (@).</p> </li> </ul>"
        },
        "authType":{
          "shape":"Auth",
          "documentation":"<p>The authentication type used to determine where to fetch the password used for accessing the elastic cluster. Valid types are <code>PLAIN_TEXT</code> or <code>SECRET_ARN</code>.</p>"
        },
        "backupRetentionPeriod":{
          "shape":"Integer",
          "documentation":"<p>The number of days for which automatic snapshots are retained.</p>"
        },
        "clientToken":{
          "shape":"String",
          "documentation":"<p>The client token for the elastic cluster.</p>",
          "idempotencyToken":true
        },
        "clusterName":{
          "shape":"String",
          "documentation":"<p>The name of the new elastic cluster. This parameter is stored as a lowercase string.</p> <p> <i>Constraints</i>:</p> <ul> <li> <p>Must contain from 1 to 63 letters, numbers, or hyphens.</p> </li> <li> <p>The first character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul> <p> <i>Example</i>: <code>my-cluster</code> </p>"
        },
        "kmsKeyId":{
          "shape":"String",
          "documentation":"<p>The KMS key identifier to use to encrypt the new elastic cluster.</p> <p>The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are creating a cluster using the same Amazon account that owns this KMS encryption key, you can use the KMS key alias instead of the ARN as the KMS encryption key.</p> <p>If an encryption key is not specified, Amazon DocumentDB uses the default encryption key that KMS creates for your account. Your account has a different default encryption key for each Amazon Region.</p>"
        },
        "preferredBackupWindow":{
          "shape":"String",
          "documentation":"<p>The daily time range during which automated backups are created if automated backups are enabled, as determined by the <code>backupRetentionPeriod</code>.</p>"
        },
        "preferredMaintenanceWindow":{
          "shape":"String",
          "documentation":"<p>The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).</p> <p> <i>Format</i>: <code>ddd:hh24:mi-ddd:hh24:mi</code> </p> <p> <i>Default</i>: a 30-minute window selected at random from an 8-hour block of time for each Amazon Web Services Region, occurring on a random day of the week.</p> <p> <i>Valid days</i>: Mon, Tue, Wed, Thu, Fri, Sat, Sun</p> <p> <i>Constraints</i>: Minimum 30-minute window.</p>"
        },
        "shardCapacity":{
          "shape":"Integer",
          "documentation":"<p>The number of vCPUs assigned to each elastic cluster shard. Maximum is 64. Allowed values are 2, 4, 8, 16, 32, 64.</p>"
        },
        "shardCount":{
          "shape":"Integer",
          "documentation":"<p>The number of shards assigned to the elastic cluster. Maximum is 32.</p>"
        },
        "shardInstanceCount":{
          "shape":"Integer",
          "documentation":"<p>The number of replica instances applying to all shards in the elastic cluster. A <code>shardInstanceCount</code> value of 1 means there is one writer instance, and any additional instances are replicas that can be used for reads and to improve availability.</p>"
        },
        "subnetIds":{
          "shape":"StringList",
          "documentation":"<p>The Amazon EC2 subnet IDs for the new elastic cluster.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags to be assigned to the new elastic cluster.</p>"
        },
        "vpcSecurityGroupIds":{
          "shape":"StringList",
          "documentation":"<p>A list of EC2 VPC security groups to associate with the new elastic cluster.</p>"
        }
      }
    },
    "CreateClusterOutput":{
      "type":"structure",
      "required":["cluster"],
      "members":{
        "cluster":{
          "shape":"Cluster",
          "documentation":"<p>The new elastic cluster that has been created.</p>"
        }
      }
    },
    "CreateClusterSnapshotInput":{
      "type":"structure",
      "required":[
        "clusterArn",
        "snapshotName"
      ],
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster of which you want to create a snapshot.</p>"
        },
        "snapshotName":{
          "shape":"CreateClusterSnapshotInputSnapshotNameString",
          "documentation":"<p>The name of the new elastic cluster snapshot.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags to be assigned to the new elastic cluster snapshot.</p>"
        }
      }
    },
    "CreateClusterSnapshotInputSnapshotNameString":{
      "type":"string",
      "max":63,
      "min":1
    },
    "CreateClusterSnapshotOutput":{
      "type":"structure",
      "required":["snapshot"],
      "members":{
        "snapshot":{
          "shape":"ClusterSnapshot",
          "documentation":"<p>Returns information about the new elastic cluster snapshot.</p>"
        }
      }
    },
    "DeleteClusterInput":{
      "type":"structure",
      "required":["clusterArn"],
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster that is to be deleted.</p>",
          "location":"uri",
          "locationName":"clusterArn"
        }
      }
    },
    "DeleteClusterOutput":{
      "type":"structure",
      "required":["cluster"],
      "members":{
        "cluster":{
          "shape":"Cluster",
          "documentation":"<p>Returns information about the newly deleted elastic cluster.</p>"
        }
      }
    },
    "DeleteClusterSnapshotInput":{
      "type":"structure",
      "required":["snapshotArn"],
      "members":{
        "snapshotArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster snapshot that is to be deleted.</p>",
          "location":"uri",
          "locationName":"snapshotArn"
        }
      }
    },
    "DeleteClusterSnapshotOutput":{
      "type":"structure",
      "required":["snapshot"],
      "members":{
        "snapshot":{
          "shape":"ClusterSnapshot",
          "documentation":"<p>Returns information about the newly deleted elastic cluster snapshot.</p>"
        }
      }
    },
    "GetClusterInput":{
      "type":"structure",
      "required":["clusterArn"],
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster.</p>",
          "location":"uri",
          "locationName":"clusterArn"
        }
      }
    },
    "GetClusterOutput":{
      "type":"structure",
      "required":["cluster"],
      "members":{
        "cluster":{
          "shape":"Cluster",
          "documentation":"<p>Returns information about a specific elastic cluster.</p>"
        }
      }
    },
    "GetClusterSnapshotInput":{
      "type":"structure",
      "required":["snapshotArn"],
      "members":{
        "snapshotArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster snapshot.</p>",
          "location":"uri",
          "locationName":"snapshotArn"
        }
      }
    },
    "GetClusterSnapshotOutput":{
      "type":"structure",
      "required":["snapshot"],
      "members":{
        "snapshot":{
          "shape":"ClusterSnapshot",
          "documentation":"<p>Returns information about a specific elastic cluster snapshot.</p>"
        }
      }
    },
    "GetPendingMaintenanceActionInput":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{
          "shape":"InputString",
          "documentation":"<p>Retrieves pending maintenance actions for a specific Amazon Resource Name (ARN).</p>",
          "location":"uri",
          "locationName":"resourceArn"
        }
      }
    },
    "GetPendingMaintenanceActionOutput":{
      "type":"structure",
      "required":["resourcePendingMaintenanceAction"],
      "members":{
        "resourcePendingMaintenanceAction":{
          "shape":"ResourcePendingMaintenanceAction",
          "documentation":"<p>Provides information about a pending maintenance action for a resource.</p>"
        }
      }
    },
    "InputString":{
      "type":"string",
      "max":256,
      "min":1
    },
    "Integer":{
      "type":"integer",
      "box":true
    },
    "InternalServerException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>There was an internal server error.</p>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true,
      "retryable":{"throttling":false}
    },
    "ListClusterSnapshotsInput":{
      "type":"structure",
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster.</p>",
          "location":"querystring",
          "locationName":"clusterArn"
        },
        "maxResults":{
          "shape":"ListClusterSnapshotsInputMaxResultsInteger",
          "documentation":"<p>The maximum number of elastic cluster snapshot results to receive in the response.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond this token, up to the value specified by <code>max-results</code>.</p> <p>If there is no more data in the responce, the <code>nextToken</code> will not be returned.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "snapshotType":{
          "shape":"String",
          "documentation":"<p>The type of cluster snapshots to be returned. You can specify one of the following values:</p> <ul> <li> <p> <code>automated</code> - Return all cluster snapshots that Amazon DocumentDB has automatically created for your Amazon Web Services account.</p> </li> <li> <p> <code>manual</code> - Return all cluster snapshots that you have manually created for your Amazon Web Services account.</p> </li> </ul>",
          "location":"querystring",
          "locationName":"snapshotType"
        }
      }
    },
    "ListClusterSnapshotsInputMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":100,
      "min":20
    },
    "ListClusterSnapshotsOutput":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond this token, up to the value specified by <code>max-results</code>.</p> <p>If there is no more data in the responce, the <code>nextToken</code> will not be returned.</p>"
        },
        "snapshots":{
          "shape":"ClusterSnapshotList",
          "documentation":"<p>A list of snapshots for a specified elastic cluster.</p>"
        }
      }
    },
    "ListClustersInput":{
      "type":"structure",
      "members":{
        "maxResults":{
          "shape":"ListClustersInputMaxResultsInteger",
          "documentation":"<p>The maximum number of elastic cluster snapshot results to receive in the response.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond this token, up to the value specified by <code>max-results</code>.</p> <p>If there is no more data in the responce, the <code>nextToken</code> will not be returned.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListClustersInputMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":100,
      "min":1
    },
    "ListClustersOutput":{
      "type":"structure",
      "members":{
        "clusters":{
          "shape":"ClusterList",
          "documentation":"<p>A list of Amazon DocumentDB elastic clusters.</p>"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>A pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond this token, up to the value specified by <code>max-results</code>.</p> <p>If there is no more data in the responce, the <code>nextToken</code> will not be returned.</p>"
        }
      }
    },
    "ListPendingMaintenanceActionsInput":{
      "type":"structure",
      "members":{
        "maxResults":{
          "shape":"ListPendingMaintenanceActionsInputMaxResultsInteger",
          "documentation":"<p>The maximum number of results to include in the response. If more records exist than the specified <code>maxResults</code> value, a pagination token (marker) is included in the response so that the remaining results can be retrieved.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by <code>maxResults</code>.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListPendingMaintenanceActionsInputMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":100,
      "min":1
    },
    "ListPendingMaintenanceActionsOutput":{
      "type":"structure",
      "required":["resourcePendingMaintenanceActions"],
      "members":{
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>An optional pagination token provided by a previous request. If this parameter is displayed, the responses will include only records beyond the marker, up to the value specified by <code>maxResults</code>.</p>"
        },
        "resourcePendingMaintenanceActions":{
          "shape":"ResourcePendingMaintenanceActionList",
          "documentation":"<p>Provides information about a pending maintenance action for a resource.</p>"
        }
      }
    },
    "ListTagsForResourceRequest":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The ARN identifier of the elastic cluster resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        }
      }
    },
    "ListTagsForResourceResponse":{
      "type":"structure",
      "members":{
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The list of tags for the specified elastic cluster resource.</p>"
        }
      }
    },
    "OptInType":{
      "type":"string",
      "enum":[
        "IMMEDIATE",
        "NEXT_MAINTENANCE",
        "APPLY_ON",
        "UNDO_OPT_IN"
      ]
    },
    "PaginationToken":{
      "type":"string",
      "documentation":"<pre><code>Token or cursor used in paginated operations. When this value is provided as operation input, the service returns results from where the previous response left off. When this value is present in operation output, it indicates that there are more results to retrieve. This should be opaque to not expose implementation details and potentially versioned to allow evolution of pagination strategy. </code></pre>"
    },
    "Password":{
      "type":"string",
      "sensitive":true
    },
    "PendingMaintenanceActionDetails":{
      "type":"structure",
      "required":["action"],
      "members":{
        "action":{
          "shape":"String",
          "documentation":"<p>Displays the specific action of a pending maintenance action.</p>"
        },
        "autoAppliedAfterDate":{
          "shape":"String",
          "documentation":"<p>Displays the date of the maintenance window when the action is applied. The maintenance action is applied to the resource during its first maintenance window after this date. If this date is specified, any <code>NEXT_MAINTENANCE</code> <code>optInType</code> requests are ignored.</p>"
        },
        "currentApplyDate":{
          "shape":"String",
          "documentation":"<p>Displays the effective date when the pending maintenance action is applied to the resource.</p>"
        },
        "description":{
          "shape":"String",
          "documentation":"<p>Displays a description providing more detail about the maintenance action.</p>"
        },
        "forcedApplyDate":{
          "shape":"String",
          "documentation":"<p>Displays the date when the maintenance action is automatically applied. The maintenance action is applied to the resource on this date regardless of the maintenance window for the resource. If this date is specified, any <code>IMMEDIATE</code> <code>optInType</code> requests are ignored.</p>"
        },
        "optInStatus":{
          "shape":"String",
          "documentation":"<p>Displays the type of <code>optInType</code> request that has been received for the resource.</p>"
        }
      },
      "documentation":"<p>Retrieves the details of maintenance actions that are pending.</p>"
    },
    "PendingMaintenanceActionDetailsList":{
      "type":"list",
      "member":{"shape":"PendingMaintenanceActionDetails"}
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "required":[
        "message",
        "resourceId",
        "resourceType"
      ],
      "members":{
        "message":{
          "shape":"String",
          "documentation":"<p>An error message describing the failure.</p>"
        },
        "resourceId":{
          "shape":"String",
          "documentation":"<p>The ID of the resource that could not be located.</p>"
        },
        "resourceType":{
          "shape":"String",
          "documentation":"<p>The type of the resource that could not be found.</p>"
        }
      },
      "documentation":"<p>The specified resource could not be located.</p>",
      "error":{
        "httpStatusCode":404,
        "senderFault":true
      },
      "exception":true
    },
    "ResourcePendingMaintenanceAction":{
      "type":"structure",
      "members":{
        "pendingMaintenanceActionDetails":{
          "shape":"PendingMaintenanceActionDetailsList",
          "documentation":"<p>Provides information about a pending maintenance action for a resource.</p>"
        },
        "resourceArn":{
          "shape":"String",
          "documentation":"<p>The Amazon DocumentDB Amazon Resource Name (ARN) of the resource to which the pending maintenance action applies.</p>"
        }
      },
      "documentation":"<p>Provides information about a pending maintenance action for a resource.</p>"
    },
    "ResourcePendingMaintenanceActionList":{
      "type":"list",
      "member":{"shape":"ResourcePendingMaintenanceAction"}
    },
    "RestoreClusterFromSnapshotInput":{
      "type":"structure",
      "required":[
        "clusterName",
        "snapshotArn"
      ],
      "members":{
        "clusterName":{
          "shape":"String",
          "documentation":"<p>The name of the elastic cluster.</p>"
        },
        "kmsKeyId":{
          "shape":"String",
          "documentation":"<p>The KMS key identifier to use to encrypt the new Amazon DocumentDB elastic clusters cluster.</p> <p>The KMS key identifier is the Amazon Resource Name (ARN) for the KMS encryption key. If you are creating a cluster using the same Amazon account that owns this KMS encryption key, you can use the KMS key alias instead of the ARN as the KMS encryption key.</p> <p>If an encryption key is not specified here, Amazon DocumentDB uses the default encryption key that KMS creates for your account. Your account has a different default encryption key for each Amazon Region.</p>"
        },
        "shardCapacity":{
          "shape":"Integer",
          "documentation":"<p>The capacity of each shard in the new restored elastic cluster.</p>"
        },
        "shardInstanceCount":{
          "shape":"Integer",
          "documentation":"<p>The number of replica instances applying to all shards in the elastic cluster. A <code>shardInstanceCount</code> value of 1 means there is one writer instance, and any additional instances are replicas that can be used for reads and to improve availability.</p>"
        },
        "snapshotArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster snapshot.</p>",
          "location":"uri",
          "locationName":"snapshotArn"
        },
        "subnetIds":{
          "shape":"StringList",
          "documentation":"<p>The Amazon EC2 subnet IDs for the elastic cluster.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of the tag names to be assigned to the restored elastic cluster, in the form of an array of key-value pairs in which the key is the tag name and the value is the key value.</p>"
        },
        "vpcSecurityGroupIds":{
          "shape":"StringList",
          "documentation":"<p>A list of EC2 VPC security groups to associate with the elastic cluster.</p>"
        }
      }
    },
    "RestoreClusterFromSnapshotOutput":{
      "type":"structure",
      "required":["cluster"],
      "members":{
        "cluster":{
          "shape":"Cluster",
          "documentation":"<p>Returns information about a the restored elastic cluster.</p>"
        }
      }
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>The service quota for the action was exceeded.</p>",
      "error":{
        "httpStatusCode":402,
        "senderFault":true
      },
      "exception":true
    },
    "Shard":{
      "type":"structure",
      "required":[
        "createTime",
        "shardId",
        "status"
      ],
      "members":{
        "createTime":{
          "shape":"String",
          "documentation":"<p>The time when the shard was created in Universal Coordinated Time (UTC).</p>"
        },
        "shardId":{
          "shape":"String",
          "documentation":"<p>The ID of the shard.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The current status of the shard.</p>"
        }
      },
      "documentation":"<p>The name of the shard.</p>"
    },
    "ShardList":{
      "type":"list",
      "member":{"shape":"Shard"}
    },
    "SnapshotType":{
      "type":"string",
      "enum":[
        "MANUAL",
        "AUTOMATED"
      ]
    },
    "StartClusterInput":{
      "type":"structure",
      "required":["clusterArn"],
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster.</p>",
          "location":"uri",
          "locationName":"clusterArn"
        }
      }
    },
    "StartClusterOutput":{
      "type":"structure",
      "required":["cluster"],
      "members":{
        "cluster":{"shape":"Cluster"}
      }
    },
    "Status":{
      "type":"string",
      "enum":[
        "CREATING",
        "ACTIVE",
        "DELETING",
        "UPDATING",
        "VPC_ENDPOINT_LIMIT_EXCEEDED",
        "IP_ADDRESS_LIMIT_EXCEEDED",
        "INVALID_SECURITY_GROUP_ID",
        "INVALID_SUBNET_ID",
        "INACCESSIBLE_ENCRYPTION_CREDS",
        "INACCESSIBLE_SECRET_ARN",
        "INACCESSIBLE_VPC_ENDPOINT",
        "INCOMPATIBLE_NETWORK",
        "MERGING",
        "MODIFYING",
        "SPLITTING",
        "COPYING",
        "STARTING",
        "STOPPING",
        "STOPPED",
        "MAINTENANCE",
        "INACCESSIBLE_ENCRYPTION_CREDENTIALS_RECOVERABLE"
      ]
    },
    "StopClusterInput":{
      "type":"structure",
      "required":["clusterArn"],
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster.</p>",
          "location":"uri",
          "locationName":"clusterArn"
        }
      }
    },
    "StopClusterOutput":{
      "type":"structure",
      "required":["cluster"],
      "members":{
        "cluster":{"shape":"Cluster"}
      }
    },
    "String":{"type":"string"},
    "StringList":{
      "type":"list",
      "member":{"shape":"String"}
    },
    "TagKey":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"^(?!aws:)[a-zA-Z+-=._:/]+$"
    },
    "TagKeyList":{
      "type":"list",
      "member":{"shape":"TagKey"},
      "max":50,
      "min":0
    },
    "TagMap":{
      "type":"map",
      "key":{"shape":"TagKey"},
      "value":{"shape":"TagValue"}
    },
    "TagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tags"
      ],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The ARN identifier of the elastic cluster resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags that are assigned to the elastic cluster resource.</p>"
        }
      }
    },
    "TagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "TagValue":{
      "type":"string",
      "max":256,
      "min":0
    },
    "ThrottlingException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"},
        "retryAfterSeconds":{
          "shape":"Integer",
          "documentation":"<p>The number of seconds to wait before retrying the operation.</p>",
          "location":"header",
          "locationName":"Retry-After"
        }
      },
      "documentation":"<p>ThrottlingException will be thrown when request was denied due to request throttling.</p>",
      "error":{
        "httpStatusCode":429,
        "senderFault":true
      },
      "exception":true,
      "retryable":{"throttling":false}
    },
    "UntagResourceRequest":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tagKeys"
      ],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The ARN identifier of the elastic cluster resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tagKeys":{
          "shape":"TagKeyList",
          "documentation":"<p>The tag keys to be removed from the elastic cluster resource.</p>",
          "location":"querystring",
          "locationName":"tagKeys"
        }
      }
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateClusterInput":{
      "type":"structure",
      "required":["clusterArn"],
      "members":{
        "adminUserPassword":{
          "shape":"Password",
          "documentation":"<p>The password associated with the elastic cluster administrator. This password can contain any printable ASCII character except forward slash (/), double quote (\"), or the \"at\" symbol (@).</p> <p> <i>Constraints</i>: Must contain from 8 to 100 characters.</p>"
        },
        "authType":{
          "shape":"Auth",
          "documentation":"<p>The authentication type used to determine where to fetch the password used for accessing the elastic cluster. Valid types are <code>PLAIN_TEXT</code> or <code>SECRET_ARN</code>.</p>"
        },
        "backupRetentionPeriod":{
          "shape":"Integer",
          "documentation":"<p>The number of days for which automatic snapshots are retained.</p>"
        },
        "clientToken":{
          "shape":"String",
          "documentation":"<p>The client token for the elastic cluster.</p>",
          "idempotencyToken":true
        },
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The ARN identifier of the elastic cluster.</p>",
          "location":"uri",
          "locationName":"clusterArn"
        },
        "preferredBackupWindow":{
          "shape":"String",
          "documentation":"<p>The daily time range during which automated backups are created if automated backups are enabled, as determined by the <code>backupRetentionPeriod</code>.</p>"
        },
        "preferredMaintenanceWindow":{
          "shape":"String",
          "documentation":"<p>The weekly time range during which system maintenance can occur, in Universal Coordinated Time (UTC).</p> <p> <i>Format</i>: <code>ddd:hh24:mi-ddd:hh24:mi</code> </p> <p> <i>Default</i>: a 30-minute window selected at random from an 8-hour block of time for each Amazon Web Services Region, occurring on a random day of the week.</p> <p> <i>Valid days</i>: Mon, Tue, Wed, Thu, Fri, Sat, Sun</p> <p> <i>Constraints</i>: Minimum 30-minute window.</p>"
        },
        "shardCapacity":{
          "shape":"Integer",
          "documentation":"<p>The number of vCPUs assigned to each elastic cluster shard. Maximum is 64. Allowed values are 2, 4, 8, 16, 32, 64.</p>"
        },
        "shardCount":{
          "shape":"Integer",
          "documentation":"<p>The number of shards assigned to the elastic cluster. Maximum is 32.</p>"
        },
        "shardInstanceCount":{
          "shape":"Integer",
          "documentation":"<p>The number of replica instances applying to all shards in the elastic cluster. A <code>shardInstanceCount</code> value of 1 means there is one writer instance, and any additional instances are replicas that can be used for reads and to improve availability.</p>"
        },
        "subnetIds":{
          "shape":"StringList",
          "documentation":"<p>The Amazon EC2 subnet IDs for the elastic cluster.</p>"
        },
        "vpcSecurityGroupIds":{
          "shape":"StringList",
          "documentation":"<p>A list of EC2 VPC security groups to associate with the elastic cluster.</p>"
        }
      }
    },
    "UpdateClusterOutput":{
      "type":"structure",
      "required":["cluster"],
      "members":{
        "cluster":{
          "shape":"Cluster",
          "documentation":"<p>Returns information about the updated elastic cluster.</p>"
        }
      }
    },
    "ValidationException":{
      "type":"structure",
      "required":[
        "message",
        "reason"
      ],
      "members":{
        "fieldList":{
          "shape":"ValidationExceptionFieldList",
          "documentation":"<p>A list of the fields in which the validation exception occurred.</p>"
        },
        "message":{
          "shape":"String",
          "documentation":"<p>An error message describing the validation exception.</p>"
        },
        "reason":{
          "shape":"ValidationExceptionReason",
          "documentation":"<p>The reason why the validation exception occurred (one of <code>unknownOperation</code>, <code>cannotParse</code>, <code>fieldValidationFailed</code>, or <code>other</code>).</p>"
        }
      },
      "documentation":"<p>A structure defining a validation exception.</p>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "ValidationExceptionField":{
      "type":"structure",
      "required":[
        "message",
        "name"
      ],
      "members":{
        "message":{
          "shape":"String",
          "documentation":"<p>An error message describing the validation exception in this field.</p>"
        },
        "name":{
          "shape":"String",
          "documentation":"<p>The name of the field where the validation exception occurred.</p>"
        }
      },
      "documentation":"<p>A specific field in which a given validation exception occurred.</p>"
    },
    "ValidationExceptionFieldList":{
      "type":"list",
      "member":{"shape":"ValidationExceptionField"}
    },
    "ValidationExceptionReason":{
      "type":"string",
      "enum":[
        "unknownOperation",
        "cannotParse",
        "fieldValidationFailed",
        "other"
      ]
    }
  },
  "documentation":"<p><fullname>Amazon DocumentDB elastic clusters</fullname> <p>Amazon DocumentDB elastic-clusters support workloads with millions of reads/writes per second and petabytes of storage capacity. Amazon DocumentDB elastic clusters also simplify how developers interact with Amazon DocumentDB elastic-clusters by eliminating the need to choose, manage or upgrade instances.</p> <p>Amazon DocumentDB elastic-clusters were created to:</p> <ul> <li> <p>provide a solution for customers looking for a database that provides virtually limitless scale with rich query capabilities and MongoDB API compatibility.</p> </li> <li> <p>give customers higher connection limits, and to reduce downtime from patching.</p> </li> <li> <p>continue investing in a cloud-native, elastic, and class leading architecture for JSON workloads.</p> </li> </ul></p>"
}
