{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2022-11-28",
    "endpointPrefix":"docdb-elastic",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "serviceAbbreviation":"DocDB Elastic",
    "serviceFullName":"Amazon DocumentDB Elastic Clusters",
    "serviceId":"DocDB Elastic",
    "signatureVersion":"v4",
    "signingName":"docdb-elastic",
    "uid":"docdb-elastic-2022-11-28"
  },
  "operations":{
    "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 Elastic DocumentDB 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 a 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 a Elastic DocumentDB 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 a Elastic DocumentDB 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 DocumentDB 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 DocumentDB snapshot</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 Elastic DocumentDB snapshots for a specified 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 Elastic DocumentDB clusters.</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 DocumentDB 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 a Elastic DocumentDB cluster from a snapshot.</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 a Elastic DocumentDB 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 to a Elastic DocumentDB 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 a Elastic DocumentDB cluster. This includes updating admin-username/password, upgrading API version 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
    },
    "Arn":{
      "type":"string",
      "max":1011,
      "min":1
    },
    "Auth":{
      "type":"string",
      "enum":[
        "PLAIN_TEXT",
        "SECRET_ARN"
      ]
    },
    "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 DocumentDB cluster administrator.</p>"
        },
        "authType":{
          "shape":"Auth",
          "documentation":"<p>The authentication type for the Elastic DocumentDB cluster.</p>"
        },
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The arn of the Elastic DocumentDB cluster.</p>"
        },
        "clusterEndpoint":{
          "shape":"String",
          "documentation":"<p>The URL used to connect to the Elastic DocumentDB cluster.</p>"
        },
        "clusterName":{
          "shape":"String",
          "documentation":"<p>The name of the Elastic DocumentDB cluster.</p>"
        },
        "createTime":{
          "shape":"String",
          "documentation":"<p>The time when the Elastic DocumentDB cluster was created in Universal Coordinated Time (UTC).</p>"
        },
        "kmsKeyId":{
          "shape":"String",
          "documentation":"<p>The KMS key identifier to use to encrypt the Elastic DocumentDB cluster.</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 capacity of each shard in the Elastic DocumentDB cluster.</p>"
        },
        "shardCount":{
          "shape":"Integer",
          "documentation":"<p>The number of shards in the Elastic DocumentDB cluster.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The status of the Elastic DocumentDB cluster.</p>"
        },
        "subnetIds":{
          "shape":"StringList",
          "documentation":"<p>The Amazon EC2 subnet IDs for the Elastic DocumentDB cluster.</p>"
        },
        "vpcSecurityGroupIds":{
          "shape":"StringList",
          "documentation":"<p>A list of EC2 VPC security groups associated with this cluster.</p>"
        }
      },
      "documentation":"<p>Returns information about a specific Elastic DocumentDB cluster.</p>"
    },
    "ClusterInList":{
      "type":"structure",
      "required":[
        "clusterArn",
        "clusterName",
        "status"
      ],
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The arn of the Elastic DocumentDB cluster.</p>"
        },
        "clusterName":{
          "shape":"String",
          "documentation":"<p>The name of the Elastic DocumentDB cluster.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The status of the Elastic DocumentDB cluster.</p>"
        }
      },
      "documentation":"<p>A list of Elastic DocumentDB cluster.</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 DocumentDB cluster administrator.</p>"
        },
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The arn of the Elastic DocumentDB cluster.</p>"
        },
        "clusterCreationTime":{
          "shape":"String",
          "documentation":"<p>The time when the Elastic DocumentDB cluster was created in Universal Coordinated Time (UTC).</p>"
        },
        "kmsKeyId":{
          "shape":"String",
          "documentation":"<p>The KMS key identifier to use to encrypt the Elastic DocumentDB cluster.</p>"
        },
        "snapshotArn":{
          "shape":"String",
          "documentation":"<p>The arn of the Elastic DocumentDB snapshot</p>"
        },
        "snapshotCreationTime":{
          "shape":"String",
          "documentation":"<p>The time when the Elastic DocumentDB snapshot was created in Universal Coordinated Time (UTC).</p>"
        },
        "snapshotName":{
          "shape":"String",
          "documentation":"<p>The name of the Elastic DocumentDB snapshot.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The status of the Elastic DocumentDB snapshot.</p>"
        },
        "subnetIds":{
          "shape":"StringList",
          "documentation":"<p>A list of the IDs of subnets associated with the DB cluster snapshot.</p>"
        },
        "vpcSecurityGroupIds":{
          "shape":"StringList",
          "documentation":"<p>A list of the IDs of the VPC security groups associated with the cluster snapshot.</p>"
        }
      },
      "documentation":"<p>Returns information about a specific Elastic DocumentDB snapshot.</p>"
    },
    "ClusterSnapshotInList":{
      "type":"structure",
      "required":[
        "clusterArn",
        "snapshotArn",
        "snapshotCreationTime",
        "snapshotName",
        "status"
      ],
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The arn of the Elastic DocumentDB cluster.</p>"
        },
        "snapshotArn":{
          "shape":"String",
          "documentation":"<p>The arn of the Elastic DocumentDB snapshot</p>"
        },
        "snapshotCreationTime":{
          "shape":"String",
          "documentation":"<p>The time when the Elastic DocumentDB snapshot was created in Universal Coordinated Time (UTC).</p>"
        },
        "snapshotName":{
          "shape":"String",
          "documentation":"<p>The name of the Elastic DocumentDB snapshot.</p>"
        },
        "status":{
          "shape":"Status",
          "documentation":"<p>The status of the Elastic DocumentDB snapshot.</p>"
        }
      },
      "documentation":"<p>A list of Elastic DocumentDB 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
    },
    "CreateClusterInput":{
      "type":"structure",
      "required":[
        "adminUserName",
        "adminUserPassword",
        "authType",
        "clusterName",
        "shardCapacity",
        "shardCount"
      ],
      "members":{
        "adminUserName":{
          "shape":"String",
          "documentation":"<p>The name of the Elastic DocumentDB cluster 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 Elastic DocumentDB cluster administrator and 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 for the Elastic DocumentDB cluster.</p>"
        },
        "clientToken":{
          "shape":"String",
          "documentation":"<p>The client token for the Elastic DocumentDB cluster.</p>",
          "idempotencyToken":true
        },
        "clusterName":{
          "shape":"String",
          "documentation":"<p>The name of the new Elastic DocumentDB 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 DocumentDB 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, Elastic 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>"
        },
        "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 capacity of each shard in the new Elastic DocumentDB cluster.</p>"
        },
        "shardCount":{
          "shape":"Integer",
          "documentation":"<p>The number of shards to create in the new Elastic DocumentDB cluster.</p>"
        },
        "subnetIds":{
          "shape":"StringList",
          "documentation":"<p>The Amazon EC2 subnet IDs for the new Elastic DocumentDB cluster.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags to be assigned to the new Elastic DocumentDB cluster.</p>"
        },
        "vpcSecurityGroupIds":{
          "shape":"StringList",
          "documentation":"<p>A list of EC2 VPC security groups to associate with the new Elastic DocumentDB cluster.</p>"
        }
      }
    },
    "CreateClusterOutput":{
      "type":"structure",
      "required":["cluster"],
      "members":{
        "cluster":{
          "shape":"Cluster",
          "documentation":"<p>The new Elastic DocumentDB cluster that has been created.</p>"
        }
      }
    },
    "CreateClusterSnapshotInput":{
      "type":"structure",
      "required":[
        "clusterArn",
        "snapshotName"
      ],
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The arn of the Elastic DocumentDB cluster that the snapshot will be taken from.</p>"
        },
        "snapshotName":{
          "shape":"CreateClusterSnapshotInputSnapshotNameString",
          "documentation":"<p>The name of the Elastic DocumentDB snapshot.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags to be assigned to the new Elastic DocumentDB 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 DocumentDB snapshot.</p>"
        }
      }
    },
    "DeleteClusterInput":{
      "type":"structure",
      "required":["clusterArn"],
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The arn of the Elastic DocumentDB 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 DocumentDB cluster.</p>"
        }
      }
    },
    "DeleteClusterSnapshotInput":{
      "type":"structure",
      "required":["snapshotArn"],
      "members":{
        "snapshotArn":{
          "shape":"String",
          "documentation":"<p>The arn of the Elastic DocumentDB 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 DocumentDB snapshot.</p>"
        }
      }
    },
    "GetClusterInput":{
      "type":"structure",
      "required":["clusterArn"],
      "members":{
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The arn of the Elastic DocumentDB cluster.</p>",
          "location":"uri",
          "locationName":"clusterArn"
        }
      }
    },
    "GetClusterOutput":{
      "type":"structure",
      "required":["cluster"],
      "members":{
        "cluster":{
          "shape":"Cluster",
          "documentation":"<p>Returns information about a specific Elastic DocumentDB cluster.</p>"
        }
      }
    },
    "GetClusterSnapshotInput":{
      "type":"structure",
      "required":["snapshotArn"],
      "members":{
        "snapshotArn":{
          "shape":"String",
          "documentation":"<p>The arn of the Elastic DocumentDB snapshot.</p>",
          "location":"uri",
          "locationName":"snapshotArn"
        }
      }
    },
    "GetClusterSnapshotOutput":{
      "type":"structure",
      "required":["snapshot"],
      "members":{
        "snapshot":{
          "shape":"ClusterSnapshot",
          "documentation":"<p>Returns information about a specific Elastic DocumentDB snapshot.</p>"
        }
      }
    },
    "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 of the Elastic DocumentDB cluster.</p>",
          "location":"querystring",
          "locationName":"clusterArn"
        },
        "maxResults":{
          "shape":"ListClusterSnapshotsInputMaxResultsInteger",
          "documentation":"<p>The maximum number of entries to recieve in the response.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>The nextToken which is used the get the next page of data.</p>",
          "location":"querystring",
          "locationName":"nextToken"
        }
      }
    },
    "ListClusterSnapshotsInputMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":100,
      "min":20
    },
    "ListClusterSnapshotsOutput":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>The response will provide a nextToken if there is more data beyond the maxResults.</p> <p>If there is no more data in the responce, the nextToken will not be returned.</p>"
        },
        "snapshots":{
          "shape":"ClusterSnapshotList",
          "documentation":"<p>A list of Elastic DocumentDB snapshots for a specified cluster.</p>"
        }
      }
    },
    "ListClustersInput":{
      "type":"structure",
      "members":{
        "maxResults":{
          "shape":"ListClustersInputMaxResultsInteger",
          "documentation":"<p>The maximum number of entries to recieve in the response.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>The nextToken which is used the get the next page of data.</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 Elastic DocumentDB cluster.</p>"
        },
        "nextToken":{
          "shape":"PaginationToken",
          "documentation":"<p>The response will provide a nextToken if there is more data beyond the maxResults.</p> <p>If there is no more data in the responce, the nextToken will not be returned.</p>"
        }
      }
    },
    "ListTagsForResourceRequest":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>The arn of the Elastic DocumentDB resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        }
      }
    },
    "ListTagsForResourceResponse":{
      "type":"structure",
      "members":{
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The list of tags for the specified Elastic DocumentDB resource.</p>"
        }
      }
    },
    "PaginationToken":{
      "type":"string",
      "documentation":"<p>Token or cursor used in paginated operations.</p> <p>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.</p> <p>This should be opaque to not expose implementation details and potentially versioned to allow evolution of pagination strategy.</p>"
    },
    "Password":{
      "type":"string",
      "sensitive":true
    },
    "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
    },
    "RestoreClusterFromSnapshotInput":{
      "type":"structure",
      "required":[
        "clusterName",
        "snapshotArn"
      ],
      "members":{
        "clusterName":{
          "shape":"String",
          "documentation":"<p>The name of the Elastic DocumentDB cluster.</p>"
        },
        "kmsKeyId":{
          "shape":"String",
          "documentation":"<p>The KMS key identifier to use to encrypt the new Elastic DocumentDB 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, Elastic 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 of the Elastic DocumentDB snapshot.</p>",
          "location":"uri",
          "locationName":"snapshotArn"
        },
        "subnetIds":{
          "shape":"StringList",
          "documentation":"<p>The Amazon EC2 subnet IDs for the Elastic DocumentDB cluster.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>A list of the tag names to be assigned to the restored DB 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 DocumentDB cluster.</p>"
        }
      }
    },
    "RestoreClusterFromSnapshotOutput":{
      "type":"structure",
      "required":["cluster"],
      "members":{
        "cluster":{
          "shape":"Cluster",
          "documentation":"<p>Returns information about a the restored Elastic DocumentDB 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
    },
    "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"
      ]
    },
    "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 of the Elastic DocumentDB resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>The tags to be assigned to the Elastic DocumentDB 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 of the Elastic DocumentDB resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tagKeys":{
          "shape":"TagKeyList",
          "documentation":"<p>The tag keys to be removed from the Elastic DocumentDB resource.</p>",
          "location":"querystring",
          "locationName":"tagKeys"
        }
      }
    },
    "UntagResourceResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateClusterInput":{
      "type":"structure",
      "required":["clusterArn"],
      "members":{
        "adminUserPassword":{
          "shape":"Password",
          "documentation":"<p>The password for the Elastic DocumentDB 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 for the Elastic DocumentDB cluster.</p>"
        },
        "clientToken":{
          "shape":"String",
          "documentation":"<p>The client token for the Elastic DocumentDB cluster.</p>",
          "idempotencyToken":true
        },
        "clusterArn":{
          "shape":"String",
          "documentation":"<p>The arn of the Elastic DocumentDB cluster.</p>",
          "location":"uri",
          "locationName":"clusterArn"
        },
        "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 capacity of each shard in the Elastic DocumentDB cluster.</p>"
        },
        "shardCount":{
          "shape":"Integer",
          "documentation":"<p>The number of shards to create in the Elastic DocumentDB cluster.</p>"
        },
        "subnetIds":{
          "shape":"StringList",
          "documentation":"<p>The number of shards to create in the Elastic DocumentDB cluster.</p>"
        },
        "vpcSecurityGroupIds":{
          "shape":"StringList",
          "documentation":"<p>A list of EC2 VPC security groups to associate with the new Elastic DocumentDB cluster.</p>"
        }
      }
    },
    "UpdateClusterOutput":{
      "type":"structure",
      "required":["cluster"],
      "members":{
        "cluster":{
          "shape":"Cluster",
          "documentation":"<p>Returns information about the updated Elastic DocumentDB 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>The new Amazon Elastic DocumentDB service endpoint.</p>"
}
