

# CreateDomainConfiguration
<a name="API_CreateDomainConfiguration"></a>

Creates a domain configuration.

Requires permission to access the [CreateDomainConfiguration](https://docs.amazonaws.cn/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions) action.

## Request Syntax
<a name="API_CreateDomainConfiguration_RequestSyntax"></a>

```
POST /domainConfigurations/{{domainConfigurationName}} HTTP/1.1
Content-type: application/json

{
   "applicationProtocol": "{{string}}",
   "authenticationType": "{{string}}",
   "authorizerConfig": { 
      "allowAuthorizerOverride": {{boolean}},
      "defaultAuthorizerName": "{{string}}"
   },
   "clientCertificateConfig": { 
      "clientCertificateCallbackArn": "{{string}}"
   },
   "domainName": "{{string}}",
   "serverCertificateArns": [ "{{string}}" ],
   "serverCertificateConfig": { 
      "enableOCSPCheck": {{boolean}},
      "ocspAuthorizedResponderArn": "{{string}}",
      "ocspLambdaArn": "{{string}}"
   },
   "serviceType": "{{string}}",
   "tags": [ 
      { 
         "Key": "{{string}}",
         "Value": "{{string}}"
      }
   ],
   "tlsConfig": { 
      "securityPolicy": "{{string}}"
   },
   "validationCertificateArn": "{{string}}"
}
```

## URI Request Parameters
<a name="API_CreateDomainConfiguration_RequestParameters"></a>

The request uses the following URI parameters.

 ** [domainConfigurationName](#API_CreateDomainConfiguration_RequestSyntax) **   <a name="iot-CreateDomainConfiguration-request-uri-domainConfigurationName"></a>
The name of the domain configuration. This value must be unique to a region.  
Length Constraints: Minimum length of 1. Maximum length of 128.  
Pattern: `[\w.-]+`   
Required: Yes

## Request Body
<a name="API_CreateDomainConfiguration_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [applicationProtocol](#API_CreateDomainConfiguration_RequestSyntax) **   <a name="iot-CreateDomainConfiguration-request-applicationProtocol"></a>
An enumerated string that speciﬁes the application-layer protocol.  
+  `SECURE_MQTT` - MQTT over TLS.
+  `MQTT_WSS` - MQTT over WebSocket.
+  `HTTPS` - HTTP over TLS.
+  `DEFAULT` - Use a combination of port and Application Layer Protocol Negotiation (ALPN) to specify application\_layer protocol. For more information, see [Device communication protocols](https://docs.amazonaws.cn/iot/latest/developerguide/protocols.html).
Type: String  
Valid Values: `SECURE_MQTT | MQTT_WSS | HTTPS | DEFAULT`   
Required: No

 ** [authenticationType](#API_CreateDomainConfiguration_RequestSyntax) **   <a name="iot-CreateDomainConfiguration-request-authenticationType"></a>
An enumerated string that speciﬁes the authentication type.  
+  `CUSTOM_AUTH_X509` - Use custom authentication and authorization with additional details from the X.509 client certificate.
+  `CUSTOM_AUTH` - Use custom authentication and authorization. For more information, see [Custom authentication and authorization](https://docs.amazonaws.cn/iot/latest/developerguide/custom-authentication.html).
+  `AWS_X509` - Use X.509 client certificates without custom authentication and authorization. For more information, see [X.509 client certificates](https://docs.amazonaws.cn/iot/latest/developerguide/x509-client-certs.html).
+  `AWS_SIGV4` - Use Amazon Signature Version 4. For more information, see [IAM users, groups, and roles](https://docs.amazonaws.cn/iot/latest/developerguide/custom-authentication.html).
+  `DEFAULT` - Use a combination of port and Application Layer Protocol Negotiation (ALPN) to specify authentication type. For more information, see [Device communication protocols](https://docs.amazonaws.cn/iot/latest/developerguide/protocols.html).
Type: String  
Valid Values: `CUSTOM_AUTH_X509 | CUSTOM_AUTH | AWS_X509 | AWS_SIGV4 | DEFAULT`   
Required: No

 ** [authorizerConfig](#API_CreateDomainConfiguration_RequestSyntax) **   <a name="iot-CreateDomainConfiguration-request-authorizerConfig"></a>
An object that specifies the authorization service for a domain.  
Type: [AuthorizerConfig](API_AuthorizerConfig.md) object  
Required: No

 ** [clientCertificateConfig](#API_CreateDomainConfiguration_RequestSyntax) **   <a name="iot-CreateDomainConfiguration-request-clientCertificateConfig"></a>
An object that speciﬁes the client certificate conﬁguration for a domain.  
Type: [ClientCertificateConfig](API_ClientCertificateConfig.md) object  
Required: No

 ** [domainName](#API_CreateDomainConfiguration_RequestSyntax) **   <a name="iot-CreateDomainConfiguration-request-domainName"></a>
The name of the domain.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 253.  
Pattern: `[\s\S]*`   
Required: No

 ** [serverCertificateArns](#API_CreateDomainConfiguration_RequestSyntax) **   <a name="iot-CreateDomainConfiguration-request-serverCertificateArns"></a>
The ARNs of the certificates that Amazon IoT passes to the device during the TLS handshake. Currently you can specify only one certificate ARN. This value is not required for Amazon-managed domains.  
Type: Array of strings  
Array Members: Minimum number of 0 items. Maximum number of 1 item.  
Length Constraints: Minimum length of 1. Maximum length of 2048.  
Pattern: `arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\d{1}:\d{12}:certificate/[a-zA-Z0-9/-]+`   
Required: No

 ** [serverCertificateConfig](#API_CreateDomainConfiguration_RequestSyntax) **   <a name="iot-CreateDomainConfiguration-request-serverCertificateConfig"></a>
The server certificate configuration.  
Type: [ServerCertificateConfig](API_ServerCertificateConfig.md) object  
Required: No

 ** [serviceType](#API_CreateDomainConfiguration_RequestSyntax) **   <a name="iot-CreateDomainConfiguration-request-serviceType"></a>
The type of service delivered by the endpoint.  
 Amazon IoT Core currently supports only the `DATA` service type.
Type: String  
Valid Values: `DATA | CREDENTIAL_PROVIDER | JOBS`   
Required: No

 ** [tags](#API_CreateDomainConfiguration_RequestSyntax) **   <a name="iot-CreateDomainConfiguration-request-tags"></a>
Metadata which can be used to manage the domain configuration.  
For URI Request parameters use format: ...key1=value1&key2=value2...  
For the CLI command-line parameter use format: &&tags "key1=value1&key2=value2..."  
For the cli-input-json file use format: "tags": "key1=value1&key2=value2..."
Type: Array of [Tag](API_Tag.md) objects  
Required: No

 ** [tlsConfig](#API_CreateDomainConfiguration_RequestSyntax) **   <a name="iot-CreateDomainConfiguration-request-tlsConfig"></a>
An object that specifies the TLS configuration for a domain.  
Type: [TlsConfig](API_TlsConfig.md) object  
Required: No

 ** [validationCertificateArn](#API_CreateDomainConfiguration_RequestSyntax) **   <a name="iot-CreateDomainConfiguration-request-validationCertificateArn"></a>
The certificate used to validate the server certificate and prove domain name ownership. This certificate must be signed by a public certificate authority. This value is not required for Amazon-managed domains.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 2048.  
Pattern: `arn:aws(-cn|-us-gov|-iso-b|-iso)?:acm:[a-z]{2}-(gov-|iso-|isob-)?[a-z]{4,9}-\d{1}:\d{12}:certificate/[a-zA-Z0-9/-]+`   
Required: No

## Response Syntax
<a name="API_CreateDomainConfiguration_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-type: application/json

{
   "domainConfigurationArn": "string",
   "domainConfigurationName": "string"
}
```

## Response Elements
<a name="API_CreateDomainConfiguration_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

 ** [domainConfigurationArn](#API_CreateDomainConfiguration_ResponseSyntax) **   <a name="iot-CreateDomainConfiguration-response-domainConfigurationArn"></a>
The ARN of the domain configuration.  
Type: String

 ** [domainConfigurationName](#API_CreateDomainConfiguration_ResponseSyntax) **   <a name="iot-CreateDomainConfiguration-response-domainConfigurationName"></a>
The name of the domain configuration.  
Type: String  
Length Constraints: Minimum length of 1. Maximum length of 128.  
Pattern: `[\w.-]+` 

## Errors
<a name="API_CreateDomainConfiguration_Errors"></a>

 ** CertificateValidationException **   
The certificate is invalid.    
 ** message **   
Additional information about the exception.
HTTP Status Code: 400

 ** InternalFailureException **   
An unexpected error has occurred.    
 ** message **   
The message for the exception.
HTTP Status Code: 500

 ** InvalidRequestException **   
The request is not valid.    
 ** message **   
The message for the exception.
HTTP Status Code: 400

 ** LimitExceededException **   
A limit has been exceeded.    
 ** message **   
The message for the exception.
HTTP Status Code: 410

 ** ResourceAlreadyExistsException **   
The resource already exists.    
 ** message **   
The message for the exception.  
 ** resourceArn **   
The ARN of the resource that caused the exception.  
 ** resourceId **   
The ID of the resource that caused the exception.
HTTP Status Code: 409

 ** ServiceUnavailableException **   
The service is temporarily unavailable.    
 ** message **   
The message for the exception.
HTTP Status Code: 503

 ** ThrottlingException **   
The rate exceeds the limit.    
 ** message **   
The message for the exception.
HTTP Status Code: 400

 ** UnauthorizedException **   
You are not authorized to perform this operation.    
 ** message **   
The message for the exception.
HTTP Status Code: 401

## See Also
<a name="API_CreateDomainConfiguration_SeeAlso"></a>

For more information about using this API in one of the language-specific Amazon SDKs, see the following:
+  [Amazon Command Line Interface V2](https://docs.amazonaws.cn/goto/cli2/iot-2015-05-28/CreateDomainConfiguration) 
+  [Amazon SDK for .NET V4](https://docs.amazonaws.cn/goto/DotNetSDKV4/iot-2015-05-28/CreateDomainConfiguration) 
+  [Amazon SDK for C\+\+](https://docs.amazonaws.cn/goto/SdkForCpp/iot-2015-05-28/CreateDomainConfiguration) 
+  [Amazon SDK for Go v2](https://docs.amazonaws.cn/goto/SdkForGoV2/iot-2015-05-28/CreateDomainConfiguration) 
+  [Amazon SDK for Java V2](https://docs.amazonaws.cn/goto/SdkForJavaV2/iot-2015-05-28/CreateDomainConfiguration) 
+  [Amazon SDK for JavaScript V3](https://docs.amazonaws.cn/goto/SdkForJavaScriptV3/iot-2015-05-28/CreateDomainConfiguration) 
+  [Amazon SDK for Kotlin](https://docs.amazonaws.cn/goto/SdkForKotlin/iot-2015-05-28/CreateDomainConfiguration) 
+  [Amazon SDK for PHP V3](https://docs.amazonaws.cn/goto/SdkForPHPV3/iot-2015-05-28/CreateDomainConfiguration) 
+  [Amazon SDK for Python](https://docs.amazonaws.cn/goto/boto3/iot-2015-05-28/CreateDomainConfiguration) 
+  [Amazon SDK for Ruby V3](https://docs.amazonaws.cn/goto/SdkForRubyV3/iot-2015-05-28/CreateDomainConfiguration) 