Create Website Acceleration Domain - POST /api/domain

Parent Previous Next

POST /api/domain

Obtain QUANTIL's Website Acceleration service for a new domain.  This service accelerates both static and dynamic content.


Note: The syntax is the same as for Create Web Acceleration - Static only domain, but the value of <service-type> is "wsa".


Request Details


Request Headers


Header

Description

Required

Authorization

Authorization string for the request

Yes

Host

URI for the QUANTIL SDK (i.e., api.quantil.com)

Yes

Date

The date and time of the request.

Yes

Accept

Indicates the accepted format (i.e., application/xml)

Yes


Request Body Elements

QUANTIL supports many options allowing you to configure how your domain caching works and to override the default cache rules.  Please refer to the list of standard elements.



Request Structure:


Here is the structure of a request using the curl utility. Since most of the XML elements are optional, your request to create a domain can be much simpler. The minimum required elements are:



A brief summary of elements is listed in the sample below. Please refer to the Request Body Elements section for more information about each element.


curl -i --url https://api.quantil.com/api/domain

-X POST

-u {user}: {password}

-H 'Date: Thu, 17 May 2012 19:37:58 GMT'

-H 'Accept: application/xml'

-H 'Content-Type: application/xml'

-d '<?xml version = "1.0" encoding = "UTF-8"?>

<domain>

<version> 1.0.0 </version>

<domain-name> {domain-name} </domain-name>

<service-type> wsa </service-type>

<service-areas> {cn; euna; apac; nc; all} </service-areas>

<ssl>

<use-ssl> {true or false} </use-ssl>

<use-for-sni> {true or false} </use-for-sni>

<ssl-certificate-id> {the id of the certificate you provided before} </ssl-certificate-id>

<ssl-cipher-suite> {semicolon separated list of cipher suites} </ssl-cipher-suite>

</ssl>

<comment> {comment information} </comment>

<cname> { request a CNAME }</cname>

<non-acc-area-back2origin> {true or false} </non-acc-area-back2origin>

<origin-config>

<origin-ips> {multiple ip addresses split by semicolon OR one domain name} </origin-ips>

<!-- Complex policy settings for accessing the origin -->

<adv-origin-configs>

<detect-url> {the url to determine if the server is available} </detect-url>

<detect-period> {how often we check the status} </detect-period>

<adv-origin-config>

<origin-protocol> {http or https} </origin-protocol>

<default-origin-port> {port number to use when connecting to origin} </default-origin-port>

<master-ips> {master ip list, split by semicolon} </master-ips>

<backup-ips> {master ip list, split by semicolon} </backup-ips>

</adv-origin-config>

</adv-origin-configs>

<origin-rules>

<origin-rule>

<path> {a uri} </path>

<ignore-case> {true or false} </ignore-case>

<file-extensions> {file extensions to match} </file-extensions>

<origin-ips> {ips or a domain} </origin-ips>

<origin-port> {the port used to fetch content from origin server} </origin-port>

<origin-host-header> {the http header value which will be set to HOST header when fetching content from origin server} </origin-host-header>

<modified-option> {0, 1, or 2} </modified-option>

<modified-path> {the uri to update to} </modified-path>

<header-name> {HTTP header to match against} </header-name>

<header-value> {value of HTTP header to match against } </header-value>

</origin-rule>

<origin-rule>

...

</origin-rule>

</origin-rules>

</origin-config>

<!-- Caching rules -->

<cache-behaviors>

<cache-behavior>

<path-pattern> {path pattern} </path-pattern>

<ignore-cache-control> {true or false} </ignore-cache-control>

<cache-ttl> { number of seconds} </cache-ttl>

</cache-behavior>

</cache-behaviors>

<!-- Query string settings -->

<query-string-settings>

<query-string-setting>

<path-pattern> {path pattern} </path-pattern>

<ignore-query-string> {true or false} </ignore-query-string>

<source-with-query> {true or false} </source-with-query>

</query-string-setting>

</query-string-settings>

<!-- Access control for anti-hotlinking Settings -->

<visit-control-rules>

<visit-control-rule>

<path-pattern> {path pattern} </path-pattern>

<allownullreferer> {true or false} </allownullreferer>

<valid-referers>

<referer> {domain name for http referrer protection} </referer>

<referer> ... </referer>

</valid-referers>

<invalid-referers>

<referer> {domain name for http referrer protection} </referer>

<referer> ... </referer>

</invalid-referers>

<forbidden-ips> {forbidden ip section, address [/mask]} </forbidden-ips>

</visit-control-rule>

</visit-control-rules>

<log-option>

<log-storage-day> { number of days} </log-storage-day>

<timezone> {the time zone, from -12 to 12} </timezone>

</log-option>

<attack-detection-rule>

   <path-pattern> {path pattern} </path-pattern>

   <except-path-pattern> {exception path pattern} </except-path-pattern>

   <ignore-case>{true or false}</ignore-case>

   <single-ip-requests></single-ip-requests>

   <single-ip-origin-requests></single-ip-origin-requests>

   <statistics-period> {number of seconds} </statistics-period>

   <allowed-ips></allowed-ips>

   <action> {log or deny or disconnect} </action>

   <limit-time> {number of minutes} </limit-time>

</attack-detection-rule>

<download-notify-rules>

<non-notify-status-code> {response codes that don't need notification} </non-notify-status-code>

<download-notify-rule>

<path-pattern> {path pattern} </path-pattern>

<except-path-pattern> { exception path pattern} </except-path-pattern>

<ignore-case> {true or false} </ignore-case>

<notify-http-method> {GET or POST} </notify-http-method>

<notify-url> {notify url} </notify-url>

<notify-param> <!-- [CDATA [key value pairs, looks like c = c & d = d]] --> </notify-param>

</download-notify-rule>

<download-notify-rule>

...

</download-notify-rule>

</download-notify-rules>

<http-header-rule>

<date-update> {true or false} </date-update>

</http-header-rule>

<!-- customization of the cache key used as index into QUANTIL's cache -->

<cache-host>{alternate host name to use in internal cache key} </cache-host>

<cache-key-rules>

<cache-key-rule>

<path-pattern></path-pattern>

<ignore-case> {true or false}</ignore-case>

<header-name> {HTTP header name whose value should be used} </header-name>

</cache-key-rule>

<cache-key-rule>

...

</cache-key-rule>

<authorize-request-to-origin-rules>

   <authorize-request-to-origin-rule>

     <path-pattern> {path pattern } </path-pattern>

     <ignore-letter-case> {true or false} </ignore-letter-case>

   </authorize-request-to-origin-rule>

<authorize-request-to-origin-rule>

...

</authorize-request-to-origin-rule>

 </authorize-request-to-origin-rules>

<rewrite-rule-settings>

<rewrite-rule-setting>

<path-pattern> {path pattern} </path-pattern>

<rewrite-type> {protocol or url} </rewrite-type>

<before-value> </before-value>

<after-value> </after-value>

<ignore-query-string> {true or false} </ignore-query-string>

<rewrite-uas> {list of user agents }</rewrite-uas>

<rewrite-area> {list of country codes } </rewrite-area>

<rewrite-method> {HTTP status code} </rewrite-method>

</rewrite-rule-setting>

<rewrite-rule-setting>

...

</rewrite-rule-setting>

</rewrite-rule-settings>

<compression-settings>

       <compression-enabled> {true or false} </compression-enabled>

       <path-pattern> {path pattern} </path-pattern>

       <ignore-case> {true or false} </ignore-case>

       <file-types> {list of MIME file types} </file-types>

</compression-settings>

<back2origin-read-timeout> {number of seconds} </back2origin-read-timeout>

<back2origin-connect-timeout> {number of seconds} </back2origin-connect-timeout>

</domain>'




Sample Request:


The following example using the curl command-line tool demonstrates the minimum XML needed to create a domain using QUANTIL's Website Acceleration product.


curl -i --url 'https://api.quantil.com/api/domain' -X POST -u testaccount:iJGeubaDaIJOEAEIVlLlFaiS62M= -H 'Date: Wed, 06 Aug 2014 10:03:49 PDT' -H 'Accept: application/xml' -d '<?xml version="1.0" encoding="UTF-8"?> <domain> <version>1.0.0</version> <service-type>wsa</service-type> <domain-name>mywsadomain.com</domain-name> <origin-config> <origin-ips>9.8.7.6</origin-ips> </origin-config> <service-areas>cn</service-areas> <log-option><log-storage-day>7</log-storage-day><timezone>7</timezone></log-option> </domain>'



Response Details:


Response Headers:

HTTP/1.1 202 OK

Date: <date>

Content-Type: application/xml; charset = utf-8

x-cnc-request-id: {id string auto generated by the QUANTIL server}

Location: https://api.quantil.com/api/domain/ {domain-id}

cname: {cdn domain name, you need to cname your domain name to this name}


<?xml version = "1.0" encoding = "UTF-8"?>

<response>

<message> {the message returned by the cloud server} </message>

</response>


The Location header is a url allowing you to access the domain information. The domain-id is generated by the QUANTIL system and uniquely identifies the domain.

The cname header contains an automatically generated domain name.  Important: You will need to modify your domain's DNS to refer to this value to get the benefit of QUANTIL's acceleration.


Response Body Elements

Element

Description

response

container for additional information from the QUANTIL server.

message

a message returned by the QUANTIL server.  If the domain was successfully created, the text will be 'success'.

code

This element appears if an error occurs. The body will be an error message such as "DomainAlreadyExists".  Refer to the error list below.



Sample Response:


HTTP/1.1 202 Accepted

Date: Wed, 06 Aug 2014 17:03:51 GMT

Accept-Ranges: bytes

Location: https://api.quantil.com/api/domain/5444>

Server: WS-web-server

x-cnc-request-id: 1112457

ContentType: application/xml;charset=UTF-8

cname: kupxli6bqru7hi.wscloudcdn.com

Content-Type: application/xml;charset=UTF-8

Content-Length: 86


<?xml version="1.0" encoding="UTF-8"?>

<response><message>success</message></response>



Error List

Error

Description

HTTP status code

DomainAlreadyExists

The domain name you specified is already in our system.

409

ICPNotFound

We are unable to find the ICP number for the domain you specified. An ICP license is required for service in China.

400

InvalidCNAME

The CNAME must match an existing CNAME or be in the format 'Random.cdn20.com', 'Random.whecloud.com', 'DomainName.cdn20.com', or 'DomainName.whecloud.com'. Cdn20.com should be used if your domain has an ICP license for service in China while whecloud.com should be used if your domain does not have an ICP license.

400

InvalidFields

Incorrect values were used for a field.  The response's message will provide more details about the specific problem

400

InvalidOrigin

The origin configuration is not valid

400

MissingBody

This operation requires a body. Ensure that the body is present and the Content-Type header is set.

400

NoSuchCertificate

The certificate id was not found.

404

SSLCertNotSupportDomain

The SSL certificate does not support the domain.  The domain is not listed in the certificate's Common Name or Subject Alternative Name field.

400