{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2015-01-01",
    "endpointPrefix":"es",
    "serviceFullName":"Amazon Elasticsearch Service",
    "signatureVersion":"v4",
    "protocol":"rest-json"
  },
  "documentation":"<fullname>Amazon Elasticsearch Configuration Service</fullname> <p>Use the Amazon Elasticsearch configuration API to create, configure, and manage Elasticsearch domains.</p> <p>The endpoint for configuration service requests is region-specific: es.<i>region</i>.amazonaws.com. For example, es.us-east-1.amazonaws.com. For a current list of supported regions and endpoints, see <a href=\"http://docs.aws.amazon.com/general/latest/gr/rande.html#cloudsearch_region\" target=\"_blank\">Regions and Endpoints</a>.</p>",
  "operations":{
    "AddTags":{
      "name":"AddTags",
      "http":{
        "method":"POST",
        "requestUri":"/2015-01-01/tags"
      },
      "input":{
        "shape":"AddTagsRequest",
        "documentation":"<p>Container for the parameters to the <code><a>AddTags</a></code> operation. Specify the tags that you want to attach to the Elasticsearch domain.</p>"
      },
      "errors":[
        {
          "shape":"BaseException",
          "exception":true,
          "documentation":"<p>An error occurred while processing the request.</p>"
        },
        {
          "shape":"LimitExceededException",
          "error":{"httpStatusCode":409},
          "exception":true,
          "documentation":"<p>An exception for trying to create more than allowed resources or sub-resources. Gives http status code of 409.</p>"
        },
        {
          "shape":"ValidationException",
          "error":{"httpStatusCode":400},
          "exception":true,
          "documentation":"<p>An exception for missing / invalid input fields. Gives http status code of 400.</p>"
        },
        {
          "shape":"InternalException",
          "error":{"httpStatusCode":500},
          "exception":true,
          "documentation":"<p>The request processing has failed because of an unknown error, exception or failure (the failure is internal to the service) . Gives http status code of 500.</p>"
        }
      ],
      "documentation":"<p>Attaches tags to an existing Elasticsearch domain. Tags are a set of case-sensitive key value pairs. An Elasticsearch domain may have up to 10 tags. See <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html#es-managedomains-awsresorcetagging\" target=\"_blank\"> Tagging Amazon Elasticsearch Service Domains for more information.</a></p>"
    },
    "CreateElasticsearchDomain":{
      "name":"CreateElasticsearchDomain",
      "http":{
        "method":"POST",
        "requestUri":"/2015-01-01/es/domain"
      },
      "input":{"shape":"CreateElasticsearchDomainRequest"},
      "output":{
        "shape":"CreateElasticsearchDomainResponse",
        "documentation":"<p>The result of a <code>CreateElasticsearchDomain</code> operation. Contains the status of the newly created Elasticsearch domain.</p>"
      },
      "errors":[
        {
          "shape":"BaseException",
          "exception":true,
          "documentation":"<p>An error occurred while processing the request.</p>"
        },
        {
          "shape":"DisabledOperationException",
          "error":{"httpStatusCode":409},
          "exception":true,
          "documentation":"<p>An error occured because the client wanted to access a not supported operation. Gives http status code of 409.</p>"
        },
        {
          "shape":"InternalException",
          "error":{"httpStatusCode":500},
          "exception":true,
          "documentation":"<p>The request processing has failed because of an unknown error, exception or failure (the failure is internal to the service) . Gives http status code of 500.</p>"
        },
        {
          "shape":"InvalidTypeException",
          "error":{"httpStatusCode":409},
          "exception":true,
          "documentation":"<p>An exception for trying to create or access sub-resource that is either invalid or not supported. Gives http status code of 409.</p>"
        },
        {
          "shape":"LimitExceededException",
          "error":{"httpStatusCode":409},
          "exception":true,
          "documentation":"<p>An exception for trying to create more than allowed resources or sub-resources. Gives http status code of 409.</p>"
        },
        {
          "shape":"ResourceAlreadyExistsException",
          "error":{"httpStatusCode":409},
          "exception":true,
          "documentation":"<p>An exception for creating a resource that already exists. Gives http status code of 400.</p>"
        },
        {
          "shape":"ValidationException",
          "error":{"httpStatusCode":400},
          "exception":true,
          "documentation":"<p>An exception for missing / invalid input fields. Gives http status code of 400.</p>"
        }
      ],
      "documentation":"<p>Creates a new Elasticsearch domain. For more information, see <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomains\" target=\"_blank\">Creating Elasticsearch Domains</a> in the <i>Amazon Elasticsearch Service Developer Guide</i>.</p>"
    },
    "DeleteElasticsearchDomain":{
      "name":"DeleteElasticsearchDomain",
      "http":{
        "method":"DELETE",
        "requestUri":"/2015-01-01/es/domain/{DomainName}"
      },
      "input":{
        "shape":"DeleteElasticsearchDomainRequest",
        "documentation":"<p>Container for the parameters to the <code><a>DeleteElasticsearchDomain</a></code> operation. Specifies the name of the Elasticsearch domain that you want to delete.</p>"
      },
      "output":{
        "shape":"DeleteElasticsearchDomainResponse",
        "documentation":"<p>The result of a <code>DeleteElasticsearchDomain</code> request. Contains the status of the pending deletion, or no status if the domain and all of its resources have been deleted.</p>"
      },
      "errors":[
        {
          "shape":"BaseException",
          "exception":true,
          "documentation":"<p>An error occurred while processing the request.</p>"
        },
        {
          "shape":"InternalException",
          "error":{"httpStatusCode":500},
          "exception":true,
          "documentation":"<p>The request processing has failed because of an unknown error, exception or failure (the failure is internal to the service) . Gives http status code of 500.</p>"
        },
        {
          "shape":"ResourceNotFoundException",
          "error":{"httpStatusCode":409},
          "exception":true,
          "documentation":"<p>An exception for accessing or deleting a resource that does not exist. Gives http status code of 400.</p>"
        },
        {
          "shape":"ValidationException",
          "error":{"httpStatusCode":400},
          "exception":true,
          "documentation":"<p>An exception for missing / invalid input fields. Gives http status code of 400.</p>"
        }
      ],
      "documentation":"<p>Permanently deletes the specified Elasticsearch domain and all of its data. Once a domain is deleted, it cannot be recovered.</p>"
    },
    "DescribeElasticsearchDomain":{
      "name":"DescribeElasticsearchDomain",
      "http":{
        "method":"GET",
        "requestUri":"/2015-01-01/es/domain/{DomainName}"
      },
      "input":{
        "shape":"DescribeElasticsearchDomainRequest",
        "documentation":"<p>Container for the parameters to the <code><a>DescribeElasticsearchDomain</a></code> operation.</p>"
      },
      "output":{
        "shape":"DescribeElasticsearchDomainResponse",
        "documentation":"<p>The result of a <code>DescribeElasticsearchDomain</code> request. Contains the status of the domain specified in the request.</p>"
      },
      "errors":[
        {
          "shape":"BaseException",
          "exception":true,
          "documentation":"<p>An error occurred while processing the request.</p>"
        },
        {
          "shape":"InternalException",
          "error":{"httpStatusCode":500},
          "exception":true,
          "documentation":"<p>The request processing has failed because of an unknown error, exception or failure (the failure is internal to the service) . Gives http status code of 500.</p>"
        },
        {
          "shape":"ResourceNotFoundException",
          "error":{"httpStatusCode":409},
          "exception":true,
          "documentation":"<p>An exception for accessing or deleting a resource that does not exist. Gives http status code of 400.</p>"
        },
        {
          "shape":"ValidationException",
          "error":{"httpStatusCode":400},
          "exception":true,
          "documentation":"<p>An exception for missing / invalid input fields. Gives http status code of 400.</p>"
        }
      ],
      "documentation":"<p>Returns domain configuration information about the specified Elasticsearch domain, including the domain ID, domain endpoint, and domain ARN.</p>"
    },
    "DescribeElasticsearchDomainConfig":{
      "name":"DescribeElasticsearchDomainConfig",
      "http":{
        "method":"GET",
        "requestUri":"/2015-01-01/es/domain/{DomainName}/config"
      },
      "input":{
        "shape":"DescribeElasticsearchDomainConfigRequest",
        "documentation":"<p> Container for the parameters to the <code>DescribeElasticsearchDomainConfig</code> operation. Specifies the domain name for which you want configuration information.</p>"
      },
      "output":{
        "shape":"DescribeElasticsearchDomainConfigResponse",
        "documentation":"<p>The result of a <code>DescribeElasticsearchDomainConfig</code> request. Contains the configuration information of the requested domain.</p>"
      },
      "errors":[
        {
          "shape":"BaseException",
          "exception":true,
          "documentation":"<p>An error occurred while processing the request.</p>"
        },
        {
          "shape":"InternalException",
          "error":{"httpStatusCode":500},
          "exception":true,
          "documentation":"<p>The request processing has failed because of an unknown error, exception or failure (the failure is internal to the service) . Gives http status code of 500.</p>"
        },
        {
          "shape":"ResourceNotFoundException",
          "error":{"httpStatusCode":409},
          "exception":true,
          "documentation":"<p>An exception for accessing or deleting a resource that does not exist. Gives http status code of 400.</p>"
        },
        {
          "shape":"ValidationException",
          "error":{"httpStatusCode":400},
          "exception":true,
          "documentation":"<p>An exception for missing / invalid input fields. Gives http status code of 400.</p>"
        }
      ],
      "documentation":"<p>Provides cluster configuration information about the specified Elasticsearch domain, such as the state, creation date, update version, and update date for cluster options.</p>"
    },
    "DescribeElasticsearchDomains":{
      "name":"DescribeElasticsearchDomains",
      "http":{
        "method":"POST",
        "requestUri":"/2015-01-01/es/domain-info"
      },
      "input":{
        "shape":"DescribeElasticsearchDomainsRequest",
        "documentation":"<p>Container for the parameters to the <code><a>DescribeElasticsearchDomains</a></code> operation. By default, the API returns the status of all Elasticsearch domains.</p>"
      },
      "output":{
        "shape":"DescribeElasticsearchDomainsResponse",
        "documentation":"<p>The result of a <code>DescribeElasticsearchDomains</code> request. Contains the status of the specified domains or all domains owned by the account.</p>"
      },
      "errors":[
        {
          "shape":"BaseException",
          "exception":true,
          "documentation":"<p>An error occurred while processing the request.</p>"
        },
        {
          "shape":"InternalException",
          "error":{"httpStatusCode":500},
          "exception":true,
          "documentation":"<p>The request processing has failed because of an unknown error, exception or failure (the failure is internal to the service) . Gives http status code of 500.</p>"
        },
        {
          "shape":"ValidationException",
          "error":{"httpStatusCode":400},
          "exception":true,
          "documentation":"<p>An exception for missing / invalid input fields. Gives http status code of 400.</p>"
        }
      ],
      "documentation":"<p>Returns domain configuration information about the specified Elasticsearch domains, including the domain ID, domain endpoint, and domain ARN.</p>"
    },
    "ListDomainNames":{
      "name":"ListDomainNames",
      "http":{
        "method":"GET",
        "requestUri":"/2015-01-01/domain"
      },
      "output":{
        "shape":"ListDomainNamesResponse",
        "documentation":"<p>The result of a <code>ListDomainNames</code> operation. Contains the names of all Elasticsearch domains owned by this account.</p>"
      },
      "errors":[
        {
          "shape":"BaseException",
          "exception":true,
          "documentation":"<p>An error occurred while processing the request.</p>"
        },
        {
          "shape":"ValidationException",
          "error":{"httpStatusCode":400},
          "exception":true,
          "documentation":"<p>An exception for missing / invalid input fields. Gives http status code of 400.</p>"
        }
      ],
      "documentation":"<p>Returns the name of all Elasticsearch domains owned by the current user's account. </p>"
    },
    "ListTags":{
      "name":"ListTags",
      "http":{
        "method":"GET",
        "requestUri":"/2015-01-01/tags/"
      },
      "input":{
        "shape":"ListTagsRequest",
        "documentation":"<p>Container for the parameters to the <code><a>ListTags</a></code> operation. Specify the <code>ARN</code> for the Elasticsearch domain to which the tags are attached that you want to view are attached.</p>"
      },
      "output":{
        "shape":"ListTagsResponse",
        "documentation":"<p>The result of a <code>ListTags</code> operation. Contains tags for all requested Elasticsearch domains.</p>"
      },
      "errors":[
        {
          "shape":"BaseException",
          "exception":true,
          "documentation":"<p>An error occurred while processing the request.</p>"
        },
        {
          "shape":"ResourceNotFoundException",
          "error":{"httpStatusCode":409},
          "exception":true,
          "documentation":"<p>An exception for accessing or deleting a resource that does not exist. Gives http status code of 400.</p>"
        },
        {
          "shape":"ValidationException",
          "error":{"httpStatusCode":400},
          "exception":true,
          "documentation":"<p>An exception for missing / invalid input fields. Gives http status code of 400.</p>"
        },
        {
          "shape":"InternalException",
          "error":{"httpStatusCode":500},
          "exception":true,
          "documentation":"<p>The request processing has failed because of an unknown error, exception or failure (the failure is internal to the service) . Gives http status code of 500.</p>"
        }
      ],
      "documentation":"<p>Returns all tags for the given Elasticsearch domain.</p>"
    },
    "RemoveTags":{
      "name":"RemoveTags",
      "http":{
        "method":"POST",
        "requestUri":"/2015-01-01/tags-removal"
      },
      "input":{
        "shape":"RemoveTagsRequest",
        "documentation":"<p>Container for the parameters to the <code><a>RemoveTags</a></code> operation. Specify the <code>ARN</code> for the Elasticsearch domain from which you want to remove the specified <code>TagKey</code>.</p>"
      },
      "errors":[
        {
          "shape":"BaseException",
          "exception":true,
          "documentation":"<p>An error occurred while processing the request.</p>"
        },
        {
          "shape":"ValidationException",
          "error":{"httpStatusCode":400},
          "exception":true,
          "documentation":"<p>An exception for missing / invalid input fields. Gives http status code of 400.</p>"
        },
        {
          "shape":"InternalException",
          "error":{"httpStatusCode":500},
          "exception":true,
          "documentation":"<p>The request processing has failed because of an unknown error, exception or failure (the failure is internal to the service) . Gives http status code of 500.</p>"
        }
      ],
      "documentation":"<p>Removes the specified set of tags from the specified Elasticsearch domain.</p>"
    },
    "UpdateElasticsearchDomainConfig":{
      "name":"UpdateElasticsearchDomainConfig",
      "http":{
        "method":"POST",
        "requestUri":"/2015-01-01/es/domain/{DomainName}/config"
      },
      "input":{
        "shape":"UpdateElasticsearchDomainConfigRequest",
        "documentation":"<p>Container for the parameters to the <code><a>UpdateElasticsearchDomain</a></code> operation. Specifies the type and number of instances in the domain cluster.</p>"
      },
      "output":{
        "shape":"UpdateElasticsearchDomainConfigResponse",
        "documentation":"<p>The result of an <code>UpdateElasticsearchDomain</code> request. Contains the status of the Elasticsearch domain being updated.</p>"
      },
      "errors":[
        {
          "shape":"BaseException",
          "exception":true,
          "documentation":"<p>An error occurred while processing the request.</p>"
        },
        {
          "shape":"InternalException",
          "error":{"httpStatusCode":500},
          "exception":true,
          "documentation":"<p>The request processing has failed because of an unknown error, exception or failure (the failure is internal to the service) . Gives http status code of 500.</p>"
        },
        {
          "shape":"InvalidTypeException",
          "error":{"httpStatusCode":409},
          "exception":true,
          "documentation":"<p>An exception for trying to create or access sub-resource that is either invalid or not supported. Gives http status code of 409.</p>"
        },
        {
          "shape":"LimitExceededException",
          "error":{"httpStatusCode":409},
          "exception":true,
          "documentation":"<p>An exception for trying to create more than allowed resources or sub-resources. Gives http status code of 409.</p>"
        },
        {
          "shape":"ResourceNotFoundException",
          "error":{"httpStatusCode":409},
          "exception":true,
          "documentation":"<p>An exception for accessing or deleting a resource that does not exist. Gives http status code of 400.</p>"
        },
        {
          "shape":"ValidationException",
          "error":{"httpStatusCode":400},
          "exception":true,
          "documentation":"<p>An exception for missing / invalid input fields. Gives http status code of 400.</p>"
        }
      ],
      "documentation":"<p>Modifies the cluster configuration of the specified Elasticsearch domain, setting as setting the instance type and the number of instances. </p>"
    }
  },
  "shapes":{
    "ARN":{
      "type":"string",
      "documentation":"<p>The Amazon Resource Name (ARN) of the Elasticsearch domain. See <a href=\"http://docs.aws.amazon.com/IAM/latest/UserGuide/index.html?Using_Identifiers.html\" target=\"_blank\">Identifiers for IAM Entities</a> in <i>Using AWS Identity and Access Management</i> for more information.</p>"
    },
    "AccessPoliciesStatus":{
      "type":"structure",
      "required":[
        "Options",
        "Status"
      ],
      "members":{
        "Options":{
          "shape":"PolicyDocument",
          "documentation":"<p>The access policy configured for the Elasticsearch domain. Access policies may be resource-based, IP-based, or IAM-based. See <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-access-policies\" target=\"_blank\"> Configuring Access Policies</a>for more information.</p>"
        },
        "Status":{
          "shape":"OptionStatus",
          "documentation":"<p>The status of the access policy for the Elasticsearch domain. See <code>OptionStatus</code> for the status information that's included. </p>"
        }
      },
      "documentation":"<p>The configured access rules for the domain's document and search endpoints, and the current status of those rules.</p>"
    },
    "AddTagsRequest":{
      "type":"structure",
      "required":[
        "ARN",
        "TagList"
      ],
      "members":{
        "ARN":{
          "shape":"ARN",
          "documentation":"<p> Specify the <code>ARN</code> for which you want to add the tags.</p>"
        },
        "TagList":{
          "shape":"TagList",
          "documentation":"<p> List of <code>Tag</code> that need to be added for the Elasticsearch domain. </p>"
        }
      },
      "documentation":"<p>Container for the parameters to the <code><a>AddTags</a></code> operation. Specify the tags that you want to attach to the Elasticsearch domain.</p>"
    },
    "AdvancedOptions":{
      "type":"map",
      "key":{"shape":"String"},
      "value":{"shape":"String"},
      "documentation":"<p> Exposes select native Elasticsearch configuration values from <code>elasticsearch.yml</code>. Currently, the following advanced options are available:</p> <ul> <li>Option to allow references to indices in an HTTP request body. Must be <code>false</code> when configuring access to individual sub-resources. By default, the value is <code>true</code>. See <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options\" target=\"_blank\">Configuration Advanced Options</a> for more information.</li> <li>Option to specify the percentage of heap space that is allocated to field data. By default, this setting is unbounded.</li> </ul> <p>For more information, see <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options\">Configuring Advanced Options</a>.</p>"
    },
    "AdvancedOptionsStatus":{
      "type":"structure",
      "required":[
        "Options",
        "Status"
      ],
      "members":{
        "Options":{
          "shape":"AdvancedOptions",
          "documentation":"<p> Specifies the status of advanced options for the specified Elasticsearch domain.</p>"
        },
        "Status":{
          "shape":"OptionStatus",
          "documentation":"<p> Specifies the status of <code>OptionStatus</code> for advanced options for the specified Elasticsearch domain.</p>"
        }
      },
      "documentation":"<p> Status of the advanced options for the specified Elasticsearch domain. Currently, the following advanced options are available:</p> <ul> <li>Option to allow references to indices in an HTTP request body. Must be <code>false</code> when configuring access to individual sub-resources. By default, the value is <code>true</code>. See <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options\" target=\"_blank\">Configuration Advanced Options</a> for more information.</li> <li>Option to specify the percentage of heap space that is allocated to field data. By default, this setting is unbounded.</li> </ul> <p>For more information, see <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options\">Configuring Advanced Options</a>.</p>"
    },
    "BaseException":{
      "type":"structure",
      "members":{
        "message":{
          "shape":"ErrorMessage",
          "documentation":"<p>A description of the error.</p>"
        }
      },
      "exception":true,
      "documentation":"<p>An error occurred while processing the request.</p>"
    },
    "Boolean":{"type":"boolean"},
    "CreateElasticsearchDomainRequest":{
      "type":"structure",
      "required":["DomainName"],
      "members":{
        "DomainName":{
          "shape":"DomainName",
          "documentation":"<p>The name of the Elasticsearch domain that you are creating. Domain names are unique across the domains owned by an account within an AWS region. Domain names must start with a letter or number and can contain the following characters: a-z (lowercase), 0-9, and - (hyphen).</p>"
        },
        "ElasticsearchClusterConfig":{
          "shape":"ElasticsearchClusterConfig",
          "documentation":"<p>Configuration options for an Elasticsearch domain. Specifies the instance type and number of instances in the domain cluster. </p>"
        },
        "EBSOptions":{
          "shape":"EBSOptions",
          "documentation":"<p>Options to enable, disable and specify the type and size of EBS storage volumes. </p>"
        },
        "AccessPolicies":{
          "shape":"PolicyDocument",
          "documentation":"<p> IAM access policy as a JSON-formatted string.</p>"
        },
        "SnapshotOptions":{
          "shape":"SnapshotOptions",
          "documentation":"<p>Option to set time, in UTC format, of the daily automated snapshot. Default value is 0 hours. </p>"
        },
        "AdvancedOptions":{
          "shape":"AdvancedOptions",
          "documentation":"<p> Option to allow references to indices in an HTTP request body. Must be <code>false</code> when configuring access to individual sub-resources. By default, the value is <code>true</code>. See <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options\" target=\"_blank\">Configuration Advanced Options</a> for more information.</p>"
        }
      }
    },
    "CreateElasticsearchDomainResponse":{
      "type":"structure",
      "members":{
        "DomainStatus":{
          "shape":"ElasticsearchDomainStatus",
          "documentation":"<p>The status of the newly created Elasticsearch domain. </p>"
        }
      },
      "documentation":"<p>The result of a <code>CreateElasticsearchDomain</code> operation. Contains the status of the newly created Elasticsearch domain.</p>"
    },
    "DeleteElasticsearchDomainRequest":{
      "type":"structure",
      "required":["DomainName"],
      "members":{
        "DomainName":{
          "shape":"DomainName",
          "location":"uri",
          "locationName":"DomainName",
          "documentation":"<p>The name of the Elasticsearch domain that you want to permanently delete.</p>"
        }
      },
      "documentation":"<p>Container for the parameters to the <code><a>DeleteElasticsearchDomain</a></code> operation. Specifies the name of the Elasticsearch domain that you want to delete.</p>"
    },
    "DeleteElasticsearchDomainResponse":{
      "type":"structure",
      "members":{
        "DomainStatus":{
          "shape":"ElasticsearchDomainStatus",
          "documentation":"<p>The status of the Elasticsearch domain being deleted.</p>"
        }
      },
      "documentation":"<p>The result of a <code>DeleteElasticsearchDomain</code> request. Contains the status of the pending deletion, or no status if the domain and all of its resources have been deleted.</p>"
    },
    "DescribeElasticsearchDomainConfigRequest":{
      "type":"structure",
      "required":["DomainName"],
      "members":{
        "DomainName":{
          "shape":"DomainName",
          "location":"uri",
          "locationName":"DomainName",
          "documentation":"<p>The Elasticsearch domain that you want to get information about.</p>"
        }
      },
      "documentation":"<p> Container for the parameters to the <code>DescribeElasticsearchDomainConfig</code> operation. Specifies the domain name for which you want configuration information.</p>"
    },
    "DescribeElasticsearchDomainConfigResponse":{
      "type":"structure",
      "required":["DomainConfig"],
      "members":{
        "DomainConfig":{
          "shape":"ElasticsearchDomainConfig",
          "documentation":"<p>The configuration information of the domain requested in the <code>DescribeElasticsearchDomainConfig</code> request.</p>"
        }
      },
      "documentation":"<p>The result of a <code>DescribeElasticsearchDomainConfig</code> request. Contains the configuration information of the requested domain.</p>"
    },
    "DescribeElasticsearchDomainRequest":{
      "type":"structure",
      "required":["DomainName"],
      "members":{
        "DomainName":{
          "shape":"DomainName",
          "location":"uri",
          "locationName":"DomainName",
          "documentation":"<p>The name of the Elasticsearch domain for which you want information.</p>"
        }
      },
      "documentation":"<p>Container for the parameters to the <code><a>DescribeElasticsearchDomain</a></code> operation.</p>"
    },
    "DescribeElasticsearchDomainResponse":{
      "type":"structure",
      "required":["DomainStatus"],
      "members":{
        "DomainStatus":{
          "shape":"ElasticsearchDomainStatus",
          "documentation":"<p>The current status of the Elasticsearch domain.</p>"
        }
      },
      "documentation":"<p>The result of a <code>DescribeElasticsearchDomain</code> request. Contains the status of the domain specified in the request.</p>"
    },
    "DescribeElasticsearchDomainsRequest":{
      "type":"structure",
      "required":["DomainNames"],
      "members":{
        "DomainNames":{
          "shape":"DomainNameList",
          "documentation":"<p>The Elasticsearch domains for which you want information.</p>"
        }
      },
      "documentation":"<p>Container for the parameters to the <code><a>DescribeElasticsearchDomains</a></code> operation. By default, the API returns the status of all Elasticsearch domains.</p>"
    },
    "DescribeElasticsearchDomainsResponse":{
      "type":"structure",
      "required":["DomainStatusList"],
      "members":{
        "DomainStatusList":{
          "shape":"ElasticsearchDomainStatusList",
          "documentation":"<p>The status of the domains requested in the <code>DescribeElasticsearchDomains</code> request.</p>"
        }
      },
      "documentation":"<p>The result of a <code>DescribeElasticsearchDomains</code> request. Contains the status of the specified domains or all domains owned by the account.</p>"
    },
    "DisabledOperationException":{
      "type":"structure",
      "members":{
      },
      "error":{"httpStatusCode":409},
      "exception":true,
      "documentation":"<p>An error occured because the client wanted to access a not supported operation. Gives http status code of 409.</p>"
    },
    "DomainId":{
      "type":"string",
      "min":1,
      "max":64,
      "documentation":"<p>Unique identifier for an Elasticsearch domain.</p>"
    },
    "DomainInfo":{
      "type":"structure",
      "members":{
        "DomainName":{
          "shape":"DomainName",
          "documentation":"<p> Specifies the <code>DomainName</code>.</p>"
        }
      }
    },
    "DomainInfoList":{
      "type":"list",
      "member":{"shape":"DomainInfo"},
      "documentation":"<p> Contains the list of Elasticsearch domain information.</p>"
    },
    "DomainName":{
      "type":"string",
      "min":3,
      "max":28,
      "pattern":"[a-z][a-z0-9\\-]+",
      "documentation":"<p>The name of an Elasticsearch domain. Domain names are unique across the domains owned by an account within an AWS region. Domain names start with a letter or number and can contain the following characters: a-z (lowercase), 0-9, and - (hyphen).</p>"
    },
    "DomainNameList":{
      "type":"list",
      "member":{"shape":"DomainName"},
      "documentation":"<p>A list of Elasticsearch domain names.</p>"
    },
    "EBSOptions":{
      "type":"structure",
      "members":{
        "EBSEnabled":{
          "shape":"Boolean",
          "documentation":"<p>Specifies whether EBS-based storage is enabled.</p>"
        },
        "VolumeType":{
          "shape":"VolumeType",
          "documentation":"<p> Specifies the volume type for EBS-based storage.</p>"
        },
        "VolumeSize":{
          "shape":"IntegerClass",
          "documentation":"<p> Integer to specify the size of an EBS volume.</p>"
        },
        "Iops":{
          "shape":"IntegerClass",
          "documentation":"<p>Specifies the IOPD for a Provisioned IOPS EBS volume (SSD).</p>"
        }
      },
      "documentation":"<p>Options to enable, disable, and specify the properties of EBS storage volumes. For more information, see <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-ebs\" target=\"_blank\"> Configuring EBS-based Storage</a>.</p>"
    },
    "EBSOptionsStatus":{
      "type":"structure",
      "required":[
        "Options",
        "Status"
      ],
      "members":{
        "Options":{
          "shape":"EBSOptions",
          "documentation":"<p> Specifies the EBS options for the specified Elasticsearch domain.</p>"
        },
        "Status":{
          "shape":"OptionStatus",
          "documentation":"<p> Specifies the status of the EBS options for the specified Elasticsearch domain.</p>"
        }
      },
      "documentation":"<p> Status of the EBS options for the specified Elasticsearch domain.</p>"
    },
    "ESPartitionInstanceType":{
      "type":"string",
      "enum":[
        "m3.medium.elasticsearch",
        "m3.large.elasticsearch",
        "m3.xlarge.elasticsearch",
        "m3.2xlarge.elasticsearch",
        "t2.micro.elasticsearch",
        "t2.small.elasticsearch",
        "t2.medium.elasticsearch",
        "r3.large.elasticsearch",
        "r3.xlarge.elasticsearch",
        "r3.2xlarge.elasticsearch",
        "r3.4xlarge.elasticsearch",
        "r3.8xlarge.elasticsearch",
        "i2.xlarge.elasticsearch",
        "i2.2xlarge.elasticsearch"
      ]
    },
    "ElasticsearchClusterConfig":{
      "type":"structure",
      "members":{
        "InstanceType":{
          "shape":"ESPartitionInstanceType",
          "documentation":"<p>The instance type for an Elasticsearch cluster.</p>"
        },
        "InstanceCount":{
          "shape":"IntegerClass",
          "documentation":"<p>The number of instances in the specified domain cluster.</p>"
        },
        "DedicatedMasterEnabled":{
          "shape":"Boolean",
          "documentation":"<p>A boolean value to indicate whether a dedicated master node is enabled. See <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html#es-managedomains-dedicatedmasternodes\" target=\"_blank\">About Dedicated Master Nodes</a> for more information.</p>"
        },
        "ZoneAwarenessEnabled":{
          "shape":"Boolean",
          "documentation":"<p>A boolean value to indicate whether zone awareness is enabled. See <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html#es-managedomains-zoneawareness\" target=\"_blank\">About Zone Awareness</a> for more information.</p>"
        },
        "DedicatedMasterType":{
          "shape":"ESPartitionInstanceType",
          "documentation":"<p>The instance type for a dedicated master node.</p>"
        },
        "DedicatedMasterCount":{
          "shape":"IntegerClass",
          "documentation":"<p>Total number of dedicated master nodes, active and on standby, for the cluster.</p>"
        }
      },
      "documentation":"<p>Specifies the configuration for the domain cluster, such as the type and number of instances.</p>"
    },
    "ElasticsearchClusterConfigStatus":{
      "type":"structure",
      "required":[
        "Options",
        "Status"
      ],
      "members":{
        "Options":{
          "shape":"ElasticsearchClusterConfig",
          "documentation":"<p> Specifies the cluster configuration for the specified Elasticsearch domain.</p>"
        },
        "Status":{
          "shape":"OptionStatus",
          "documentation":"<p> Specifies the status of the configuration for the specified Elasticsearch domain.</p>"
        }
      },
      "documentation":"<p> Specifies the configuration status for the specified Elasticsearch domain.</p>"
    },
    "ElasticsearchDomainConfig":{
      "type":"structure",
      "members":{
        "ElasticsearchClusterConfig":{
          "shape":"ElasticsearchClusterConfigStatus",
          "documentation":"<p>Specifies the <code>ElasticsearchClusterConfig</code> for the Elasticsearch domain.</p>"
        },
        "EBSOptions":{
          "shape":"EBSOptionsStatus",
          "documentation":"<p>Specifies the <code>EBSOptions</code> for the Elasticsearch domain.</p>"
        },
        "AccessPolicies":{
          "shape":"AccessPoliciesStatus",
          "documentation":"<p>IAM access policy as a JSON-formatted string.</p>"
        },
        "SnapshotOptions":{
          "shape":"SnapshotOptionsStatus",
          "documentation":"<p>Specifies the <code>SnapshotOptions</code> for the Elasticsearch domain.</p>"
        },
        "AdvancedOptions":{
          "shape":"AdvancedOptionsStatus",
          "documentation":"<p>Specifies the <code>AdvancedOptions</code> for the domain. See <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options\" target=\"_blank\">Configuring Advanced Options</a> for more information.</p>"
        }
      },
      "documentation":"<p>The configuration of an Elasticsearch domain.</p>"
    },
    "ElasticsearchDomainStatus":{
      "type":"structure",
      "required":[
        "DomainId",
        "DomainName",
        "ARN",
        "ElasticsearchClusterConfig"
      ],
      "members":{
        "DomainId":{
          "shape":"DomainId",
          "documentation":"<p>The unique identifier for the specified Elasticsearch domain.</p>"
        },
        "DomainName":{
          "shape":"DomainName",
          "documentation":"<p>The name of an Elasticsearch domain. Domain names are unique across the domains owned by an account within an AWS region. Domain names start with a letter or number and can contain the following characters: a-z (lowercase), 0-9, and - (hyphen).</p>"
        },
        "ARN":{
          "shape":"ARN",
          "documentation":"<p>The Amazon resource name (ARN) of an Elasticsearch domain. See <a href=\"http://docs.aws.amazon.com/IAM/latest/UserGuide/index.html?Using_Identifiers.html\" target=\"_blank\">Identifiers for IAM Entities</a> in <i>Using AWS Identity and Access Management</i> for more information.</p>"
        },
        "Created":{
          "shape":"Boolean",
          "documentation":"<p>The domain creation status. <code>True</code> if the creation of an Elasticsearch domain is complete. <code>False</code> if domain creation is still in progress.</p>"
        },
        "Deleted":{
          "shape":"Boolean",
          "documentation":"<p>The domain deletion status. <code>True</code> if a delete request has been received for the domain but resource cleanup is still in progress. <code>False</code> if the domain has not been deleted. Once domain deletion is complete, the status of the domain is no longer returned.</p>"
        },
        "Endpoint":{
          "shape":"ServiceUrl",
          "documentation":"<p>The Elasticsearch domain endpoint that you use to submit index and search requests.</p>"
        },
        "Processing":{
          "shape":"Boolean",
          "documentation":"<p>The status of the Elasticsearch domain configuration. <code>True</code> if Amazon Elasticsearch Service is processing configuration changes. <code>False</code> if the configuration is active.</p>"
        },
        "ElasticsearchClusterConfig":{
          "shape":"ElasticsearchClusterConfig",
          "documentation":"<p>The type and number of instances in the domain cluster.</p>"
        },
        "EBSOptions":{
          "shape":"EBSOptions",
          "documentation":"<p>The <code>EBSOptions</code> for the specified domain. See <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-ebs\" target=\"_blank\">Configuring EBS-based Storage</a> for more information.</p>"
        },
        "AccessPolicies":{
          "shape":"PolicyDocument",
          "documentation":"<p> IAM access policy as a JSON-formatted string.</p>"
        },
        "SnapshotOptions":{
          "shape":"SnapshotOptions",
          "documentation":"<p>Specifies the status of the <code>SnapshotOptions</code></p>"
        },
        "AdvancedOptions":{
          "shape":"AdvancedOptions",
          "documentation":"<p>Specifies the status of the <code>AdvancedOptions</code></p>"
        }
      },
      "documentation":"<p>The current status of an Elasticsearch domain.</p>"
    },
    "ElasticsearchDomainStatusList":{
      "type":"list",
      "member":{"shape":"ElasticsearchDomainStatus"},
      "documentation":"<p>A list that contains the status of each requested Elasticsearch domain.</p>"
    },
    "ErrorMessage":{"type":"string"},
    "IntegerClass":{"type":"integer"},
    "InternalException":{
      "type":"structure",
      "members":{
      },
      "error":{"httpStatusCode":500},
      "exception":true,
      "documentation":"<p>The request processing has failed because of an unknown error, exception or failure (the failure is internal to the service) . Gives http status code of 500.</p>"
    },
    "InvalidTypeException":{
      "type":"structure",
      "members":{
      },
      "error":{"httpStatusCode":409},
      "exception":true,
      "documentation":"<p>An exception for trying to create or access sub-resource that is either invalid or not supported. Gives http status code of 409.</p>"
    },
    "LimitExceededException":{
      "type":"structure",
      "members":{
      },
      "error":{"httpStatusCode":409},
      "exception":true,
      "documentation":"<p>An exception for trying to create more than allowed resources or sub-resources. Gives http status code of 409.</p>"
    },
    "ListDomainNamesResponse":{
      "type":"structure",
      "members":{
        "DomainNames":{
          "shape":"DomainInfoList",
          "documentation":"<p>List of Elasticsearch domain names.</p>"
        }
      },
      "documentation":"<p>The result of a <code>ListDomainNames</code> operation. Contains the names of all Elasticsearch domains owned by this account.</p>"
    },
    "ListTagsRequest":{
      "type":"structure",
      "required":["ARN"],
      "members":{
        "ARN":{
          "shape":"ARN",
          "location":"querystring",
          "locationName":"arn",
          "documentation":"<p> Specify the <code>ARN</code> for the Elasticsearch domain to which the tags are attached that you want to view.</p>"
        }
      },
      "documentation":"<p>Container for the parameters to the <code><a>ListTags</a></code> operation. Specify the <code>ARN</code> for the Elasticsearch domain to which the tags are attached that you want to view are attached.</p>"
    },
    "ListTagsResponse":{
      "type":"structure",
      "members":{
        "TagList":{
          "shape":"TagList",
          "documentation":"<p> List of <code>Tag</code> for the requested Elasticsearch domain.</p>"
        }
      },
      "documentation":"<p>The result of a <code>ListTags</code> operation. Contains tags for all requested Elasticsearch domains.</p>"
    },
    "OptionState":{
      "type":"string",
      "enum":[
        "RequiresIndexDocuments",
        "Processing",
        "Active"
      ],
      "documentation":"<p>The state of a requested change. One of the following:</p> <ul> <li>Processing: The request change is still in-process.</li> <li>Active: The request change is processed and deployed to the Elasticsearch domain.</li> </ul>"
    },
    "OptionStatus":{
      "type":"structure",
      "required":[
        "CreationDate",
        "UpdateDate",
        "State"
      ],
      "members":{
        "CreationDate":{
          "shape":"UpdateTimestamp",
          "documentation":"<p>Timestamp which tells the creation date for the entity.</p>"
        },
        "UpdateDate":{
          "shape":"UpdateTimestamp",
          "documentation":"<p>Timestamp which tells the last updated time for the entity.</p>"
        },
        "UpdateVersion":{
          "shape":"UIntValue",
          "documentation":"<p>Specifies the latest version for the entity.</p>"
        },
        "State":{
          "shape":"OptionState",
          "documentation":"<p>Provides the <code>OptionState</code> for the Elasticsearch domain.</p>"
        },
        "PendingDeletion":{
          "shape":"Boolean",
          "documentation":"<p>Indicates whether the Elasticsearch domain is being deleted.</p>"
        }
      },
      "documentation":"<p>Provides the current status of the entity.</p>"
    },
    "PolicyDocument":{
      "type":"string",
      "documentation":"<p>Access policy rules for an Elasticsearch domain service endpoints. For more information, see <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-access-policies\" target=\"_blank\">Configuring Access Policies</a> in the <i>Amazon Elasticsearch Service Developer Guide</i>. The maximum size of a policy document is 100 KB.</p>"
    },
    "RemoveTagsRequest":{
      "type":"structure",
      "required":[
        "ARN",
        "TagKeys"
      ],
      "members":{
        "ARN":{
          "shape":"ARN",
          "documentation":"<p>Specifies the <code>ARN</code> for the Elasticsearch domain from which you want to delete the specified tags.</p>"
        },
        "TagKeys":{
          "shape":"StringList",
          "documentation":"<p>Specifies the <code>TagKey</code> list which you want to remove from the Elasticsearch domain.</p>"
        }
      },
      "documentation":"<p>Container for the parameters to the <code><a>RemoveTags</a></code> operation. Specify the <code>ARN</code> for the Elasticsearch domain from which you want to remove the specified <code>TagKey</code>.</p>"
    },
    "ResourceAlreadyExistsException":{
      "type":"structure",
      "members":{
      },
      "error":{"httpStatusCode":409},
      "exception":true,
      "documentation":"<p>An exception for creating a resource that already exists. Gives http status code of 400.</p>"
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "members":{
      },
      "error":{"httpStatusCode":409},
      "exception":true,
      "documentation":"<p>An exception for accessing or deleting a resource that does not exist. Gives http status code of 400.</p>"
    },
    "ServiceUrl":{
      "type":"string",
      "documentation":"<p>The endpoint to which service requests are submitted. For example, <code>search-imdb-movies-oopcnjfn6ugofer3zx5iadxxca.eu-west-1.es.amazonaws.com</code> or <code>doc-imdb-movies-oopcnjfn6ugofer3zx5iadxxca.eu-west-1.es.amazonaws.com</code>.</p>"
    },
    "SnapshotOptions":{
      "type":"structure",
      "members":{
        "AutomatedSnapshotStartHour":{
          "shape":"IntegerClass",
          "documentation":"<p>Specifies the time, in UTC format, when the service takes a daily automated snapshot of the specified Elasticsearch domain. Default value is <code>0</code> hours.</p>"
        }
      },
      "documentation":"<p>Specifies the time, in UTC format, when the service takes a daily automated snapshot of the specified Elasticsearch domain. Default value is <code>0</code> hours.</p>"
    },
    "SnapshotOptionsStatus":{
      "type":"structure",
      "required":[
        "Options",
        "Status"
      ],
      "members":{
        "Options":{
          "shape":"SnapshotOptions",
          "documentation":"<p>Specifies the daily snapshot options specified for the Elasticsearch domain.</p>"
        },
        "Status":{
          "shape":"OptionStatus",
          "documentation":"<p>Specifies the status of a daily automated snapshot.</p>"
        }
      },
      "documentation":"<p>Status of a daily automated snapshot.</p>"
    },
    "String":{"type":"string"},
    "StringList":{
      "type":"list",
      "member":{"shape":"String"}
    },
    "Tag":{
      "type":"structure",
      "required":[
        "Key",
        "Value"
      ],
      "members":{
        "Key":{
          "shape":"TagKey",
          "documentation":"<p>Specifies the <code>TagKey</code>, the name of the tag. Tag keys must be unique for the Elasticsearch domain to which they are attached.</p>"
        },
        "Value":{
          "shape":"TagValue",
          "documentation":"<p>Specifies the <code>TagValue</code>, the value assigned to the corresponding tag key. Tag values can be null and do not have to be unique in a tag set. For example, you can have a key value pair in a tag set of <code>project : Trinity</code> and <code>cost-center : Trinity</code></p>"
        }
      },
      "documentation":"<p>Specifies a key value pair for a resource tag.</p>"
    },
    "TagKey":{
      "type":"string",
      "min":1,
      "max":128,
      "documentation":"<p>A string of length from 1 to 128 characters that specifies the key for a Tag. Tag keys must be unique for the Elasticsearch domain to which they are attached.</p>"
    },
    "TagList":{
      "type":"list",
      "member":{"shape":"Tag"},
      "documentation":"<p>A list of <code>Tag</code> </p>"
    },
    "TagValue":{
      "type":"string",
      "min":0,
      "max":256,
      "documentation":"<p>A string of length from 0 to 256 characters that specifies the value for a Tag. Tag values can be null and do not have to be unique in a tag set.</p>"
    },
    "UIntValue":{
      "type":"integer",
      "min":0
    },
    "UpdateElasticsearchDomainConfigRequest":{
      "type":"structure",
      "required":["DomainName"],
      "members":{
        "DomainName":{
          "shape":"DomainName",
          "location":"uri",
          "locationName":"DomainName",
          "documentation":"<p>The name of the Elasticsearch domain that you are updating. </p>"
        },
        "ElasticsearchClusterConfig":{
          "shape":"ElasticsearchClusterConfig",
          "documentation":"<p>The type and number of instances to instantiate for the domain cluster.</p>"
        },
        "EBSOptions":{
          "shape":"EBSOptions",
          "documentation":"<p>Specify the type and size of the EBS volume that you want to use. </p>"
        },
        "SnapshotOptions":{
          "shape":"SnapshotOptions",
          "documentation":"<p>Option to set the time, in UTC format, for the daily automated snapshot. Default value is <code>0</code> hours. </p>"
        },
        "AdvancedOptions":{
          "shape":"AdvancedOptions",
          "documentation":"<p>Modifies the advanced option to allow references to indices in an HTTP request body. Must be <code>false</code> when configuring access to individual sub-resources. By default, the value is <code>true</code>. See <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options\" target=\"_blank\">Configuration Advanced Options</a> for more information.</p>"
        },
        "AccessPolicies":{
          "shape":"PolicyDocument",
          "documentation":"<p>IAM access policy as a JSON-formatted string.</p>"
        }
      },
      "documentation":"<p>Container for the parameters to the <code><a>UpdateElasticsearchDomain</a></code> operation. Specifies the type and number of instances in the domain cluster.</p>"
    },
    "UpdateElasticsearchDomainConfigResponse":{
      "type":"structure",
      "required":["DomainConfig"],
      "members":{
        "DomainConfig":{
          "shape":"ElasticsearchDomainConfig",
          "documentation":"<p>The status of the updated Elasticsearch domain. </p>"
        }
      },
      "documentation":"<p>The result of an <code>UpdateElasticsearchDomain</code> request. Contains the status of the Elasticsearch domain being updated.</p>"
    },
    "UpdateTimestamp":{"type":"timestamp"},
    "ValidationException":{
      "type":"structure",
      "members":{
      },
      "error":{"httpStatusCode":400},
      "exception":true,
      "documentation":"<p>An exception for missing / invalid input fields. Gives http status code of 400.</p>"
    },
    "VolumeType":{
      "type":"string",
      "enum":[
        "standard",
        "gp2",
        "io1"
      ],
      "documentation":"<p> The type of EBS volume, standard, gp2, or io1. See <a href=\"http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-ebs\" target=\"_blank\">Configuring EBS-based Storage</a>for more information.</p>"
    }
  },
  "examples":{
  }
}
