.. 
.. Copyright 2015 Comcast Cable Communications Management, LLC
.. 
.. Licensed under the Apache License, Version 2.0 (the "License");
.. you may not use this file except in compliance with the License.
.. You may obtain a copy of the License at
.. 
..     http://www.apache.org/licenses/LICENSE-2.0
.. 
.. Unless required by applicable law or agreed to in writing, software
.. distributed under the License is distributed on an "AS IS" BASIS,
.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
.. See the License for the specific language governing permissions and
.. limitations under the License.
.. 


.. _to-api-v12-ds:

Delivery Service
================

.. _to-api-v12-ds-route:

/api/1.2/deliveryservices
+++++++++++++++++++++++++

**GET /api/1.2/deliveryservices.json**

  Retrieves all delivery services. See also `Using Traffic Ops - Delivery Service <http://traffic-control-cdn.net/docs/latest/admin/traffic_ops_using.html#delivery-service>`_.

  Authentication Required: Yes

  Role(s) Required: None

  **Response Properties**

  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  |        Parameter         |  Type  |                                                             Description                                                              |                                                                                                     |
  +==========================+========+======================================================================================================================================+=====================================================================================================+
  | ``xmlId``                | string | Unique string that describes this deliveryservice.                                                                                   |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``active``               |  bool  | true if active, false if inactive.                                                                                                   |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``cacheurl``             | string | Cache URL rule to apply to this delivery service.                                                                                    |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``protocol``             | string | - 0: serve with http:// at EDGE                                                                                                      |                                                                                                     |
  |                          |        | - 1: serve with https:// at EDGE                                                                                                     |                                                                                                     |
  |                          |        | - 2: serve with both http:// and https:// at EDGE                                                                                    |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``ccrDnsTtl``            | string | The TTL of the DNS response for A or AAAA queries requesting the IP address of the tr. host.                                         |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``checkPath``            | string | The path portion of the URL to check this deliveryservice for health.                                                                |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``dnsBypassIp``          | string | The IPv4 IP to use for bypass on a DNS deliveryservice  - bypass starts when serving more than the                                   |                                                                                                     |
  |                          |        | globalMaxMbps traffic on this deliveryservice.                                                                                       |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``dnsBypassIp6``         | string | The IPv6 IP to use for bypass on a DNS deliveryservice - bypass starts when serving more than the                                    |                                                                                                     |
  |                          |        | globalMaxMbps traffic on this deliveryservice.                                                                                       |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``dnsBypassTtl``         | string | The TTL of the DNS bypass response.                                                                                                  |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``dscp``                 | string | The Differentiated Services Code Point (DSCP) with which to mark downstream (EDGE ->  customer) traffic.                             |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``edgeHeaderRewrite``    | string | The EDGE header rewrite actions to perform.                                                                                          |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``geoLimit``             | string | - 0: None - no limitations                                                                                                           |                                                                                                     |
  |                          |        | - 1: Only route on CZF file hit                                                                                                      |                                                                                                     |
  |                          |        | - 2: Only route on CZF hit or when from USA                                                                                          |                                                                                                     |
  |                          |        |                                                                                                                                      |                                                                                                     |
  |                          |        | Note that this does not prevent access to content or makes content secure; it just prevents                                          |                                                                                                     |
  |                          |        | routing to the content by Traffic Router.                                                                                            |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``geoLimitRedirectURL``  | string | This is the URL Traffic Router will redirect to when Geo Limit Failure.                                                              |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``globalMaxMbps``        | string | The maximum global bandwidth allowed on this deliveryservice. If exceeded, the traffic routes to the                                 |                                                                                                     |
  |                          |        | dnsByPassIp* for DNS deliveryservices and to the httpBypassFqdn for HTTP deliveryservices.                                           |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``globalMaxTps``         | string | The maximum global transactions per second allowed on this deliveryservice. When this is exceeded                                    |                                                                                                     |
  |                          |        | traffic will be sent to the dnsByPassIp* for DNS deliveryservices and to the httpBypassFqdn for                                      |                                                                                                     |
  |                          |        | HTTP deliveryservices                                                                                                                |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``headerRewrite``        | string | The EDGE header rewrite actions to perform.                                                                                          |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``httpBypassFqdn``       | string | The HTTP destination to use for bypass on an HTTP deliveryservice - bypass starts when serving more than the                         |                                                                                                     |
  |                          |        | globalMaxMbps traffic on this deliveryservice.                                                                                       |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``id``                   | string | The deliveryservice id (database row number).                                                                                        |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``infoUrl``              | string | Use this to add a URL that points to more information about that deliveryservice.                                                    |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``ipv6RoutingEnabled``   |  bool  | false: send IPv4 address of Traffic Router to client on HTTP type del.                                                               |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``longDesc``             | string | Description field 1.                                                                                                                 |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``longDesc1``            | string | Description field 2.                                                                                                                 |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``longDesc2``            | string | Description field 2.                                                                                                                 |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``matchList``            | array  | Array of matchList hashes.                                                                                                           |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``>>type``               | string | The type of MatchList (one of :ref:to-api-v12-types use_in_table='regex').                                                           |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``>>setNumber``          | string | The set Number of the matchList.                                                                                                     |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``>>pattern``            | string | The regexp for the matchList.                                                                                                        |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``maxDnsAnswers``        | string | The maximum number of IPs to put in a A/AAAA response for a DNS deliveryservice (0 means all                                         |                                                                                                     |
  |                          |        | available).                                                                                                                          |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``missLat``              | string | The latitude to use when the client cannot be found in the CZF or the Geo lookup.                                                    |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``missLong``             | string | The longitude to use when the client cannot be found in the CZF or the Geo lookup.                                                   |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``midHeaderRewrite``     | string | The MID header rewrite actions to perform.                                                                                           |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``multiSiteOrigin``      | string |                                                                                                                                      | Is the Multi Site Origin feature enabled for this delivery service. See :ref:`rl-multi-site-origin` |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``orgServerFqdn``        | string | The origin server base URL (FQDN when used in this instance, includes the                                                            |                                                                                                     |
  |                          |        | protocol (http:// or https://) for use in retrieving content from the origin server.                                                 |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``profileDescription``   | string | The description of the Traffic Router Profile with which this deliveryservice is associated.                                         |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``profileName``          | string | The name of the Traffic Router Profile with which this deliveryservice is associated.                                                |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``qstringIgnore``        | string | - 0: no special query string handling; it is for use in the cache-key and pass up to origin.                                         |                                                                                                     |
  |                          |        | - 1: ignore query string in cache-key, but pass it up to parent and or origin.                                                       |                                                                                                     |
  |                          |        | - 2: drop query string at edge, and do not use it in the cache-key.                                                                  |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``regexRemap``           | string | Regex Remap rule to apply to this delivery service at the Edge tier.                                                                 |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``remapText``            | string | Additional raw remap line text.                                                                                                      |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``signed``               |  bool  | - false: token based auth (see :ref:token-based-auth) is not enabled for this deliveryservice.                                       |                                                                                                     |
  |                          |        | - true: token based auth is enabled for this deliveryservice.                                                                        |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``rangeRequestHandling`` | string | How to treat range requests:                                                                                                         |                                                                                                     |
  |                          |        |                                                                                                                                      |                                                                                                     |
  |                          |        | - 0 Do not cache (ranges requested from files taht are already cached due to a non range request will be a HIT)                      |                                                                                                     |
  |                          |        | - 1 Use the `background_fetch <https://docs.trafficserver.apache.org/en/latest/reference/plugins/background_fetch.en.html>`_ plugin. |                                                                                                     |
  |                          |        | - 2 Use the cache_range_requests plugin.                                                                                             |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``type``                 | string | The type of this deliveryservice (one of :ref:to-api-v12-types use_in_table='deliveryservice').                                      |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
  | ``exampleURLs``          | array  | Entry points into the CDN for this deliveryservice.                                                                                  |                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+

  **Response Example** ::

    {
      "response": [
        {
          "active": true,
          "cacheurl": null,
          "protocol": "0",
          "ccrDnsTtl": "3600",
          "checkPath": "/crossdomain.xml",
          "dnsBypassIp": "",
          "dnsBypassIp6": null,
          "dnsBypassTtl": null,
          "dscp": "40",
          "geoLimit": "0",
          "geoLimitRedirectURL": "",
          "globalMaxMbps": "0",
          "globalMaxTps": "0",
          "headerRewrite": "add-header X-Powered-By: KABLETOWN [L]",
          "edgeHeaderRewrite": "add-header X-Powered-By: KABLETOWN [L]",
          "midHeaderRewrite": null,
          "httpBypassFqdn": "",
          "rangeRequestHandling": "0",
          "id": "12",
          "infoUrl": "",
          "ipv6RoutingEnabled": false,
          "longDesc": "long_desc",
          "longDesc1": "long_desc_1",
          "longDesc2": "long_desc_2",
          "matchList": [
            {
              "type": "HOST_REGEXP",
              "setNumber": "0",
              "pattern": ".*\\.images\\..*"
            }
          ],
          "maxDnsAnswers": "0",
          "missLat": "41.881944",
          "missLong": "-87.627778",
          "orgServerFqdn": "http://cdl.origin.kabletown.net",
          "profileDescription": "Content Router for cdn2.comcast.net",
          "profileName": "EDGE_CDN2",
          "qstringIgnore": "0",
          "remapText": null,
          "regexRemap": null,
          "signed": true,
          "type": "HTTP",
          "xmlId": "cdl-c2",
          "exampleURLs": []
        },
        { .. },
        { .. }
      ],
    }

|

**GET /api/1.2/deliveryservices/:id.json**

  Retrieves a specific delivery service. See also `Using Traffic Ops - Delivery Service <http://traffic-control-cdn.net/docs/latest/admin/traffic_ops_using.html#delivery-service>`_.

  Authentication Required: Yes

  Role(s) Required: None

  **Response Properties**

  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  |        Parameter         |  Type  |                                                             Description                                                              |
  +==========================+========+======================================================================================================================================+
  | ``xmlId``                | string | Unique string that describes this deliveryservice.                                                                                   |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``active``               |  bool  | true if active, false if inactive.                                                                                                   |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``cacheurl``             | string | Cache URL rule to apply to this delivery service.                                                                                    |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``protocol``             | string | - 0: serve with http:// at EDGE                                                                                                      |
  |                          |        | - 1: serve with https:// at EDGE                                                                                                     |
  |                          |        | - 2: serve with both http:// and https:// at EDGE                                                                                    |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``ccrDnsTtl``            | string | The TTL of the DNS response for A or AAAA queries requesting the IP address of the tr. host.                                         |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``checkPath``            | string | The path portion of the URL to check this deliveryservice for health.                                                                |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``dnsBypassIp``          | string | The IPv4 IP to use for bypass on a DNS deliveryservice  - bypass starts when serving more than the                                   |
  |                          |        | globalMaxMbps traffic on this deliveryservice.                                                                                       |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``dnsBypassIp6``         | string | The IPv6 IP to use for bypass on a DNS deliveryservice - bypass starts when serving more than the                                    |
  |                          |        | globalMaxMbps traffic on this deliveryservice.                                                                                       |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``dnsBypassTtl``         | string | The TTL of the DNS bypass response.                                                                                                  |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``dscp``                 | string | The Differentiated Services Code Point (DSCP) with which to mark downstream (EDGE ->  customer) traffic.                             |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``edgeHeaderRewrite``    | string | The EDGE header rewrite actions to perform.                                                                                          |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``geoLimit``             | string | - 0: None - no limitations                                                                                                           |
  |                          |        | - 1: Only route on CZF file hit                                                                                                      |
  |                          |        | - 2: Only route on CZF hit or when from USA                                                                                          |
  |                          |        |                                                                                                                                      |
  |                          |        | Note that this does not prevent access to content or makes content secure; it just prevents                                          |
  |                          |        | routing to the content by Traffic Router.                                                                                            |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``geoLimitRedirectURL``  | string | This is the URL Traffic Router will redirect to when Geo Limit Failure.                                                              |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``globalMaxMbps``        | string | The maximum global bandwidth allowed on this deliveryservice. If exceeded, the traffic routes to the                                 |
  |                          |        | dnsByPassIp* for DNS deliveryservices and to the httpBypassFqdn for HTTP deliveryservices.                                           |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``globalMaxTps``         | string | The maximum global transactions per second allowed on this deliveryservice. When this is exceeded                                    |
  |                          |        | traffic will be sent to the dnsByPassIp* for DNS deliveryservices and to the httpBypassFqdn for                                      |
  |                          |        | HTTP deliveryservices                                                                                                                |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``headerRewrite``        | string | The EDGE header rewrite actions to perform.                                                                                          |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``httpBypassFqdn``       | string | The HTTP destination to use for bypass on an HTTP deliveryservice - bypass starts when serving more than the                         |
  |                          |        | globalMaxMbps traffic on this deliveryservice.                                                                                       |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``id``                   | string | The deliveryservice id (database row number).                                                                                        |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``infoUrl``              | string | Use this to add a URL that points to more information about that deliveryservice.                                                    |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``ipv6RoutingEnabled``   |  bool  | false: send IPv4 address of Traffic Router to client on HTTP type del.                                                               |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``longDesc``             | string | Description field 1.                                                                                                                 |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``longDesc1``            | string | Description field 2.                                                                                                                 |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``longDesc2``            | string | Description field 2.                                                                                                                 |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``matchList``            | array  | Array of matchList hashes.                                                                                                           |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``>>type``               | string | The type of MatchList (one of :ref:to-api-v12-types use_in_table='regex').                                                           |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``>>setNumber``          | string | The set Number of the matchList.                                                                                                     |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``>>pattern``            | string | The regexp for the matchList.                                                                                                        |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``maxDnsAnswers``        | string | The maximum number of IPs to put in a A/AAAA response for a DNS deliveryservice (0 means all                                         |
  |                          |        | available).                                                                                                                          |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``missLat``              | string | The latitude to use when the client cannot be found in the CZF or the Geo lookup.                                                    |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``missLong``             | string | The longitude to use when the client cannot be found in the CZF or the Geo lookup.                                                   |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``midHeaderRewrite``     | string | The MID header rewrite actions to perform.                                                                                           |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``orgServerFqdn``        | string | The origin server base URL (FQDN when used in this instance, includes the                                                            |
  |                          |        | protocol (http:// or https://) for use in retrieving content from the origin server.                                                 |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``profileDescription``   | string | The description of the Traffic Router Profile with which this deliveryservice is associated.                                         |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``profileName``          | string | The name of the Traffic Router Profile with which this deliveryservice is associated.                                                |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``qstringIgnore``        | string | - 0: no special query string handling; it is for use in the cache-key and pass up to origin.                                         |
  |                          |        | - 1: ignore query string in cache-key, but pass it up to parent and or origin.                                                       |
  |                          |        | - 2: drop query string at edge, and do not use it in the cache-key.                                                                  |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``regexRemap``           | string | Regex Remap rule to apply to this delivery service at the Edge tier.                                                                 |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``remapText``            | string | Additional raw remap line text.                                                                                                      |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``signed``               |  bool  | - false: token based auth (see :ref:token-based-auth) is not enabled for this deliveryservice.                                       |
  |                          |        | - true: token based auth is enabled for this deliveryservice.                                                                        |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``rangeRequestHandling`` | string | How to treat range requests:                                                                                                         |
  |                          |        |                                                                                                                                      |
  |                          |        | - 0 Do not cache (ranges requested from files taht are already cached due to a non range request will be a HIT)                      |
  |                          |        | - 1 Use the `background_fetch <https://docs.trafficserver.apache.org/en/latest/reference/plugins/background_fetch.en.html>`_ plugin. |
  |                          |        | - 2 Use the cache_range_requests plugin.                                                                                             |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``type``                 | string | The type of this deliveryservice (one of :ref:to-api-v12-types use_in_table='deliveryservice').                                      |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+
  | ``exampleURLs``          | string | Entry points in to the CDN for this deliveryservice.                                                                                 |
  +--------------------------+--------+--------------------------------------------------------------------------------------------------------------------------------------+

  **Response Example** ::

    {
      "response": [
        {
          "active": true,
          "cacheurl": null,
          "protocol": "0",
          "ccrDnsTtl": "3600",
          "checkPath": "/crossdomain.xml",
          "dnsBypassIp": "",
          "dnsBypassIp6": null,
          "dnsBypassTtl": null,
          "dscp": "40",
          "geoLimit": "0",
          "geoLimitRedirectURL":"",
          "globalMaxMbps": "0",
          "globalMaxTps": "0",
          "headerRewrite": "add-header X-Powered-By: KABLETOWN [L]",
          "edgeHeaderRewrite": "add-header X-Powered-By: KABLETOWN [L]",
          "midHeaderRewrite": null,
          "httpBypassFqdn": "",
          "rangeRequestHandling": "0",
          "id": "12",
          "infoUrl": "",
          "ipv6RoutingEnabled": false,
          "longDesc": "long_desc",
          "longDesc1": "long_desc_1",
          "longDesc2": "long_desc_2",
          "matchList": [
            {
              "type": "HOST_REGEXP",
              "setNumber": "0",
              "pattern": ".*\\.images\\..*"
            }
          ],
          "maxDnsAnswers": "0",
          "missLat": "41.881944",
          "missLong": "-87.627778",
          "orgServerFqdn": "http://cdl.origin.kabletown.net",
          "profileDescription": "Content Router for cdn2.comcast.net",
          "profileName": "EDGE_CDN2",
          "qstringIgnore": "0",
          "remapText": null,
          "regexRemap": null,
          "signed": true,
          "type": "HTTP",
          "xmlId": "cdl-c2",
          "exampleURLs": []
        }
      ],
    }

.. _to-api-v12-ds-health:

Health
++++++

**GET /api/1.2/deliveryservices/:id/state.json**

  Retrieves the failover state for a delivery service.

  Authentication Required: Yes

  Role(s) Required: None

  **Response Properties**

  +------------------+---------+-------------------------------------------------+
  |    Parameter     |  Type   |                   Description                   |
  +==================+=========+=================================================+
  | ``failover``     |  hash   |                                                 |
  +------------------+---------+-------------------------------------------------+
  | ``>locations``   |  array  |                                                 |
  +------------------+---------+-------------------------------------------------+
  | ``>destination`` |  string |                                                 |
  +------------------+---------+-------------------------------------------------+
  | ``>configured``  | boolean |                                                 |
  +------------------+---------+-------------------------------------------------+
  | ``>enabled``     | boolean |                                                 |
  +------------------+---------+-------------------------------------------------+
  | ``enabled``      | boolean |                                                 |
  +------------------+---------+-------------------------------------------------+

  **Response Example** ::

    {
        "response": {
            "failover": {
                "locations": [ ],
                "destination": null,
                "configured": false,
                "enabled": false
            },
            "enabled": true
        }
    }

|

**GET /api/1.2/deliveryservices/:id/health.json**

  Retrieves the health of all locations (cache groups) for a delivery service.

  Authentication Required: Yes

  Role(s) Required: None

  **Response Properties**

  +------------------+--------+-------------------------------------------------+
  |    Parameter     |  Type  |                   Description                   |
  +==================+========+=================================================+
  | ``totalOnline``  | int    | Total number of online caches across all CDNs.  |
  +------------------+--------+-------------------------------------------------+
  | ``totalOffline`` | int    | Total number of offline caches across all CDNs. |
  +------------------+--------+-------------------------------------------------+
  | ``cachegroups``  | array  | A collection of cache groups.                   |
  +------------------+--------+-------------------------------------------------+
  | ``>online``      | int    | The number of online caches for the cache group |
  +------------------+--------+-------------------------------------------------+
  | ``>offline``     | int    | The number of offline caches for the cache      |
  |                  |        | group.                                          |
  +------------------+--------+-------------------------------------------------+
  | ``>name``        | string | Cache group name.                               |
  +------------------+--------+-------------------------------------------------+

  **Response Example** ::

    {
     "response": {
        "totalOnline": 148,
        "totalOffline": 0,
        "cachegroups": [
           {
              "online": 8,
              "offline": 0,
              "name": "us-co-denver"
           },
           {
              "online": 7,
              "offline": 0,
              "name": "us-de-newcastle"
           }
        ]
     }
    }

|

**GET /api/1.2/deliveryservices/:id/capacity.json**

  Retrieves the capacity percentages of a delivery service.

  Authentication Required: Yes

  Role(s) Required: None

  **Request Route Parameters**

  +-----------------+----------+---------------------------------------------------+
  | Name            | Required | Description                                       |
  +=================+==========+===================================================+
  |id               | yes      | delivery service id.                              |
  +-----------------+----------+---------------------------------------------------+

  **Response Properties**

  +------------------------+--------+---------------------------------------------------+
  |       Parameter        |  Type  |                    Description                    |
  +========================+========+===================================================+
  | ``availablePercent``   | number | The percentage of server capacity assigned to     |
  |                        |        | the delivery service that is available.           |
  +------------------------+--------+---------------------------------------------------+
  | ``unavailablePercent`` | number | The percentage of server capacity assigned to the |
  |                        |        | delivery service that is unavailable.             |
  +------------------------+--------+---------------------------------------------------+
  | ``utilizedPercent``    | number | The percentage of server capacity assigned to the |
  |                        |        | delivery service being used.                      |
  +------------------------+--------+---------------------------------------------------+
  | ``maintenancePercent`` | number | The percentage of server capacity assigned to the |
  |                        |        | delivery service that is down for maintenance.    |
  +------------------------+--------+---------------------------------------------------+

  **Response Example** ::

    {
     "response": {
        "availablePercent": 89.0939840205533,
        "unavailablePercent": 0,
        "utilizedPercent": 10.9060020300395,
        "maintenancePercent": 0.0000139494071146245
     },
    }


|

**GET /api/1.2/deliveryservices/:id/routing.json**

  Retrieves the routing method percentages of a delivery service.

  Authentication Required: Yes

  Role(s) Required: None

  **Request Route Parameters**

  +-----------------+----------+---------------------------------------------------+
  | Name            | Required | Description                                       |
  +=================+==========+===================================================+
  |id               | yes      | delivery service id.                              |
  +-----------------+----------+---------------------------------------------------+

  **Response Properties**

  +-----------------+--------+-----------------------------------------------------------------------------------------------------------------------------+
  |    Parameter    |  Type  |                                                         Description                                                         |
  +=================+========+=============================================================================================================================+
  | ``staticRoute`` | number | The percentage of Traffic Router responses for this deliveryservice satisfied with pre-configured DNS entries.              |
  +-----------------+--------+-----------------------------------------------------------------------------------------------------------------------------+
  | ``miss``        | number | The percentage of Traffic Router responses for this deliveryservice that were a miss (no location available for client IP). |
  +-----------------+--------+-----------------------------------------------------------------------------------------------------------------------------+
  | ``geo``         | number | The percentage of Traffic Router responses for this deliveryservice satisfied using 3rd party geo-IP mapping.               |
  +-----------------+--------+-----------------------------------------------------------------------------------------------------------------------------+
  | ``err``         | number | The percentage of Traffic Router requests for this deliveryservice resulting in an error.                                   |
  +-----------------+--------+-----------------------------------------------------------------------------------------------------------------------------+
  | ``cz``          | number | The percentage of Traffic Router requests for this deliveryservice satisfied by a CZF hit.                                  |
  +-----------------+--------+-----------------------------------------------------------------------------------------------------------------------------+
  | ``dsr``         | number | The percentage of Traffic Router requests for this deliveryservice satisfied by sending the                                 |
  |                 |        | client to the overflow CDN.                                                                                                 |
  +-----------------+--------+-----------------------------------------------------------------------------------------------------------------------------+

  **Response Example** ::

    {
     "response": {
        "staticRoute": 0,
        "miss": 0,
        "geo": 37.8855391018869,
        "err": 0,
        "cz": 62.1144608981131,
        "dsr": 0
     },
    }


.. _to-api-v12-ds-server:

Server
++++++

**GET /api/1.2/deliveryserviceserver.json**

  Authentication Required: Yes

  Role(s) Required: None

  **Request Query Parameters**

  +-----------+----------+----------------------------------------+
  |    Name   | Required |              Description               |
  +===========+==========+========================================+
  | ``page``  | no       | The page number for use in pagination. |
  +-----------+----------+----------------------------------------+
  | ``limit`` | no       | For use in limiting the result set.    |
  +-----------+----------+----------------------------------------+

  **Response Properties**

  +----------------------+--------+------------------------------------------------+
  | Parameter            | Type   | Description                                    |
  +======================+========+================================================+
  |``lastUpdated``       | array  |                                                |
  +----------------------+--------+------------------------------------------------+
  |``server``            | string |                                                |
  +----------------------+--------+------------------------------------------------+
  |``deliveryService``   | string |                                                |
  +----------------------+--------+------------------------------------------------+


  **Response Example** ::

    {
     "page": 2,
     "orderby": "deliveryservice",
     "response": [
        {
           "lastUpdated": "2014-09-26 17:53:43",
           "server": "20",
           "deliveryService": "1"
        },
        {
           "lastUpdated": "2014-09-26 17:53:44",
           "server": "21",
           "deliveryService": "1"
        },
     ],
     "limit": 2
    }



.. _to-api-v12-ds-sslkeys:

SSL Keys
+++++++++

**GET /api/1.2/deliveryservices/xmlId/:xmlid/sslkeys.json**

  Authentication Required: Yes

  Role(s) Required: Admin

  **Request Route Parameters**

  +-----------+----------+----------------------------------------+
  |    Name   | Required |              Description               |
  +===========+==========+========================================+
  | ``xmlId`` | yes      | xml_id of the desired delivery service |
  +-----------+----------+----------------------------------------+


  **Request Query Parameters**

  +-------------+----------+--------------------------------+
  |     Name    | Required |          Description           |
  +=============+==========+================================+
  | ``version`` | no       | The version number to retrieve |
  +-------------+----------+--------------------------------+

  **Response Properties**

  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  |    Parameter     |  Type  |                                                               Description                                                               |
  +==================+========+=========================================================================================================================================+
  | ``crt``          | string | base64 encoded crt file for delivery service                                                                                            |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``csr``          | string | base64 encoded csr file for delivery service                                                                                            |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``key``          | string | base64 encoded private key file for delivery service                                                                                    |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``businessUnit`` | string | The business unit entered by the user when generating certs.  Field is optional and if not provided by the user will not be in response |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``city``         | string | The city entered by the user when generating certs.  Field is optional and if not provided by the user will not be in response          |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``organization`` | string | The organization entered by the user when generating certs.  Field is optional and if not provided by the user will not be in response  |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``hostname``     | string | The hostname entered by the user when generating certs.  Field is optional and if not provided by the user will not be in response      |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``country``      | string | The country entered by the user when generating certs.  Field is optional and if not provided by the user will not be in response       |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``state``        | string | The state entered by the user when generating certs.  Field is optional and if not provided by the user will not be in response         |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``version``      | string | The version of the certificate record in Riak                                                                                           |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+

  **Response Example** ::

    {  
      "response": {
        "certificate": {
          "crt": "crt",
          "key": "key",
          "csr": "csr"
        },
        "businessUnit": "CDN_Eng",
        "city": "Denver",
        "organization": "KableTown",
        "hostname": "foober.com",
        "country": "US",
        "state": "Colorado",
        "version": "1"
      }
    }

|

**GET /api/1.2/deliveryservices/hostname/:hostname/sslkeys.json**

  Authentication Required: Yes

  Role(s) Required: Admin

  **Request Route Parameters**

  +--------------+----------+---------------------------------------------------+
  |     Name     | Required |                    Description                    |
  +==============+==========+===================================================+
  | ``hostname`` | yes      | pristine hostname of the desired delivery service |
  +--------------+----------+---------------------------------------------------+


  **Request Query Parameters**

  +-------------+----------+--------------------------------+
  |     Name    | Required |          Description           |
  +=============+==========+================================+
  | ``version`` | no       | The version number to retrieve |
  +-------------+----------+--------------------------------+

  **Response Properties**

  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  |    Parameter     |  Type  |                                                               Description                                                               |
  +==================+========+=========================================================================================================================================+
  | ``crt``          | string | base64 encoded crt file for delivery service                                                                                            |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``csr``          | string | base64 encoded csr file for delivery service                                                                                            |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``key``          | string | base64 encoded private key file for delivery service                                                                                    |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``businessUnit`` | string | The business unit entered by the user when generating certs.  Field is optional and if not provided by the user will not be in response |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``city``         | string | The city entered by the user when generating certs.  Field is optional and if not provided by the user will not be in response          |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``organization`` | string | The organization entered by the user when generating certs.  Field is optional and if not provided by the user will not be in response  |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``hostname``     | string | The hostname entered by the user when generating certs.  Field is optional and if not provided by the user will not be in response      |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``country``      | string | The country entered by the user when generating certs.  Field is optional and if not provided by the user will not be in response       |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``state``        | string | The state entered by the user when generating certs.  Field is optional and if not provided by the user will not be in response         |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+
  | ``version``      | string | The version of the certificate record in Riak                                                                                           |
  +------------------+--------+-----------------------------------------------------------------------------------------------------------------------------------------+

  **Response Example** ::

    {  
      "response": {
        "certificate": {
          "crt": "crt",
          "key": "key",
          "csr": "csr"
        },
        "businessUnit": "CDN_Eng",
        "city": "Denver",
        "organization": "KableTown",
        "hostname": "foober.com",
        "country": "US",
        "state": "Colorado",
        "version": "1"
      }
    }

|

**GET /api/1.2/deliveryservices/xmlId/:xmlid/sslkeys/delete.json**

  Authentication Required: Yes

  Role Required: Admin

  **Request Route Parameters**

  +-----------+----------+----------------------------------------+
  |    Name   | Required |              Description               |
  +===========+==========+========================================+
  | ``xmlId`` | yes      | xml_id of the desired delivery service |
  +-----------+----------+----------------------------------------+

  **Request Query Parameters**

  +-------------+----------+--------------------------------+
  |     Name    | Required |          Description           |
  +=============+==========+================================+
  | ``version`` | no       | The version number to retrieve |
  +-------------+----------+--------------------------------+

  **Response Properties**

  +--------------+--------+------------------+
  |  Parameter   |  Type  |   Description    |
  +==============+========+==================+
  | ``response`` | string | success response |
  +--------------+--------+------------------+

  **Response Example** ::

    {  
      "response": "Successfully deleted ssl keys for <xml_id>"
    }

|
  
**POST /api/1.2/deliveryservices/sslkeys/generate**

  Generates SSL crt, csr, and private key for a delivery service

  Authentication Required: Yes

  Role(s) Required: Admin

  **Request Properties**

  +--------------+---------+-------------------------------------------------+
  |  Parameter   |   Type  |                   Description                   |
  +==============+=========+=================================================+
  | ``key``      | string  | xml_id of the delivery service                  |
  +--------------+---------+-------------------------------------------------+
  | ``version``  | string  | version of the keys being generated             |
  +--------------+---------+-------------------------------------------------+
  | ``hostname`` | string  | the *pristine hostname* of the delivery service |
  +--------------+---------+-------------------------------------------------+
  | ``country``  | string  |                                                 |
  +--------------+---------+-------------------------------------------------+
  | ``state``    | string  |                                                 |
  +--------------+---------+-------------------------------------------------+
  | ``city``     | string  |                                                 |
  +--------------+---------+-------------------------------------------------+
  | ``org``      | string  |                                                 |
  +--------------+---------+-------------------------------------------------+
  | ``unit``     | boolean |                                                 |
  +--------------+---------+-------------------------------------------------+

  **Request Example** ::

    {
      "key": "ds-01",
      "businessUnit": "CDN Engineering",
      "version": "3",
      "hostname": "tr.ds-01.ott.kabletown.com",
      "certificate": {
        "key": "some_key",
        "csr": "some_csr",
        "crt": "some_crt"
      },
      "country": "US",
      "organization": "Kabletown",
      "city": "Denver",
      "state": "Colorado"
    }

|

  **Response Properties**

  +--------------+--------+-----------------+
  |  Parameter   |  Type  |   Description   |
  +==============+========+=================+
  | ``response`` | string | response string |
  +--------------+--------+-----------------+
  | ``version``  | string | API version     |
  +--------------+--------+-----------------+

  **Response Example** ::

    {  
      "response": "Successfully created ssl keys for ds-01"
    }

|
  
**POST /api/1.2/deliveryservices/sslkeys/add**

  Allows user to add SSL crt, csr, and private key for a delivery service.

  Authentication Required: Yes

  Role(s) Required:  Admin

  **Request Properties**

  +-------------+--------+-------------------------------------+
  |  Parameter  |  Type  |             Description             |
  +=============+========+=====================================+
  | ``key``     | string | xml_id of the delivery service      |
  +-------------+--------+-------------------------------------+
  | ``version`` | string | version of the keys being generated |
  +-------------+--------+-------------------------------------+
  | ``csr``     | string |                                     |
  +-------------+--------+-------------------------------------+
  | ``crt``     | string |                                     |
  +-------------+--------+-------------------------------------+
  | ``key``     | string |                                     |
  +-------------+--------+-------------------------------------+

  **Request Example** ::

    {
      "key": "ds-01",
      "version": "1",
      "certificate": {
        "key": "some_key",
        "csr": "some_csr",
        "crt": "some_crt"
      }
    }

|

  **Response Properties**

  +--------------+--------+-----------------+
  |  Parameter   |  Type  |   Description   |
  +==============+========+=================+
  | ``response`` | string | response string |
  +--------------+--------+-----------------+
  | ``version``  | string | API version     |
  +--------------+--------+-----------------+

  **Response Example** ::

    {  
      "response": "Successfully added ssl keys for ds-01"
    }

**POST /api/1.1/deliveryservices/request**

  Allows a user to send delivery service request details to a specified email address.

  Authentication Required: Yes

  Role(s) Required: None

  **Request Properties**

  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  |  Parameter                             |  Type  | Required |           Description                                                                       |
  +========================================+========+==========+=============================================================================================+
  | ``emailTo``                            | string | yes      | The email to which the delivery service request will be sent.                               |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``details``                            | hash   | yes      | Parameters for the delivery service request.                                                |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>customer``                          | string | yes      | Name of the customer to associated with the delivery service.                               |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>deliveryProtocol``                  | string | yes      | Eg. http or http/https                                                                      |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>routingType``                       | string | yes      | Eg. DNS or HTTP Redirect                                                                    |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>serviceDesc``                       | string | yes      | A description of the delivery service.                                                      |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>peakBPSEstimate``                   | string | yes      | Used to manage cache efficiency and plan for capacity.                                      |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>peakTPSEstimate``                   | string | yes      | Used to manage cache efficiency and plan for capacity.                                      |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>maxLibrarySizeEstimate``            | string | yes      | Used to manage cache efficiency and plan for capacity.                                      |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>originURL``                         | string | yes      | The URL path to the origin server.                                                          |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>hasOriginDynamicRemap``             | bool   | yes      | This is a feature which allows services to use multiple origin URLs for the same service.   |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>originTestFile``                    | string | yes      | A URL path to a test file available on the origin server.                                   |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>hasOriginACLWhitelist``             | bool   | yes      | Is access to your origin restricted using an access control list (ACL or whitelist) of Ips? |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>originHeaders``                     | string | no       | Header values that must be passed to requests to your origin.                               |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>otherOriginSecurity``               | string | no       | Other origin security measures that need to be considered for access.                       |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>queryStringHandling``               | string | yes      | How to handle query strings that come with the request.                                     |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>rangeRequestHandling``              | string | yes      | How to handle range requests.                                                               |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>hasSignedURLs``                     | bool   | yes      | Are Urls signed?                                                                            |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>hasNegativeCachingCustomization``   | bool   | yes      | Any customization required for negative caching?                                            |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>negativeCachingCustomizationNote``  | string | yes      | Negative caching customization instructions.                                                |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>serviceAliases``                    | array  | no       | Service aliases which will be used for this service.                                        |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>rateLimitingGBPS``                  | int    | no       | Rate Limiting - Bandwidth (Gbps)                                                            |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>rateLimitingTPS``                   | int    | no       | Rate Limiting - Transactions/Second                                                         |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>overflowService``                   | string | no       | An overflow point (URL or IP address) used if rate limits are met.                          |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>headerRewriteEdge``                 | string | no       | Headers can be added or altered at each layer of the CDN.                                   |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>headerRewriteMid``                  | string | no       | Headers can be added or altered at each layer of the CDN.                                   |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>headerRewriteRedirectRouter``       | string | no       | Headers can be added or altered at each layer of the CDN.                                   |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+
  | ``>notes``                             | string | no       | Additional instructions to provide the delivery service provisioning team.                  |
  +----------------------------------------+--------+----------+---------------------------------------------------------------------------------------------+

  **Request Example** ::

    {
       "emailTo": "foo@bar.com",
       "details": {
          "customer": "XYZ Corporation",
          "contentType": "video-on-demand",
          "deliveryProtocol": "http",
          "routingType": "dns",
          "serviceDesc": "service description goes here",
          "peakBPSEstimate": "less-than-5-Gbps",
          "peakTPSEstimate": "less-than-1000-TPS",
          "maxLibrarySizeEstimate": "less-than-200-GB",
          "originURL": "http://myorigin.com",
          "hasOriginDynamicRemap": false,
          "originTestFile": "http://myorigin.com/crossdomain.xml",
          "hasOriginACLWhitelist": true,
          "originHeaders": "",
          "otherOriginSecurity": "",
          "queryStringHandling": "ignore-in-cache-key-and-pass-up",
          "rangeRequestHandling": "range-requests-not-used",
          "hasSignedURLs": true,
          "hasNegativeCachingCustomization": true,
          "negativeCachingCustomizationNote": "negative caching instructions",
          "serviceAliases": [
             "http://alias1.com",
             "http://alias2.com"
          ],
          "rateLimitingGBPS": 50,
          "rateLimitingTPS": 5000,
          "overflowService": "http://overflowcdn.com",
          "headerRewriteEdge": "",
          "headerRewriteMid": "",
          "headerRewriteRedirectRouter": "",
          "notes": ""
       }
    }

|

  **Response Properties**

  +-------------+--------+----------------------------------+
  |  Parameter  |  Type  |           Description            |
  +=============+========+==================================+
  | ``alerts``  | array  | A collection of alert messages.  |
  +-------------+--------+----------------------------------+
  | ``>level``  | string | Success, info, warning or error. |
  +-------------+--------+----------------------------------+
  | ``>text``   | string | Alert message.                   |
  +-------------+--------+----------------------------------+
  | ``version`` | string |                                  |
  +-------------+--------+----------------------------------+

  **Response Example** ::

    {
      "alerts": [
            {
                "level": "success",
                "text": "Delivery Service request sent to foo@bar.com."
            }
        ]
    }

|

**POST /api/1.2/deliveryservices**

  Allows user to create a delivery service.

  Authentication Required: Yes

  Role(s) Required:  admin or oper

  **Request Properties**

  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | Parameter              | Required | Description                                                                                             |
  +========================+==========+=========================================================================================================+
  | xmlId                  | yes      | Unique string that describes this deliveryservice.                                                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | active                 | yes      | true if active, false if inactive.                                                                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | cacheurl               | no       | Cache URL rule to apply to this delivery service.                                                       |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | protocol               | yes      | - 0: serve with http:// at EDGE                                                                         |
  |                        |          | - 1: serve with https:// at EDGE                                                                        |
  |                        |          | - 2: serve with both http:// and https:// at EDGE                                                       |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | ccrDnsTtl              | no       | The TTL of the DNS response for A or AAAA queries requesting the IP address of the tr.host.             |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | checkPath              | no       | The path portion of the URL to check this deliveryservice for health.                                   |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | dnsBypassIp            | no       | The IPv4 IP to use for bypass on a DNS deliveryservice - bypass starts when serving more than the       |
  |                        |          | globalMaxMbps traffic on this deliveryservice.                                                          |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | dnsBypassIp6           | no       | The IPv6 IP to use for bypass on a DNS deliveryservice - bypass starts when serving more than the       |
  |                        |          | globalMaxMbps traffic on this deliveryservice.                                                          |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | dnsBypassTtl           | no       | The TTL of the DNS bypass response.                                                                     |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | dscp                   | no       | The Differentiated Services Code Point (DSCP) with which to mark downstream (EDGE -> customer) traffic. |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | edgeHeaderRewrite      | no       | The EDGE header rewrite actions to perform.                                                             |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | geoLimit               | no       | - 0: None - no limitations                                                                              |
  |                        |          | - 1: Only route on CZF file hit                                                                         |
  |                        |          | - 2: Only route on CZF hit or when from geo limit countries                                             |
  |                        |          |                                                                                                         |
  |                        |          | Note that this does not prevent access to content or makes content secure; it just prevents             |
  |                        |          | routing to the content by Traffic Router.                                                               |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | geoLimitCountries      | no       | The geo limit countries.                                                                                |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | geoLimitRedirectURL    | no       | This is the URL Traffic Router will redirect to when Geo Limit Failure.                                 |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | geoProvider            | no       | - 0: Maxmind(default)                                                                                   |
  |                        |          | - 1: Neustar                                                                                            |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | globalMaxMbps          | no       | The maximum global bandwidth allowed on this deliveryservice. If exceeded, the traffic routes to the    |
  |                        |          | dnsByPassIp* for DNS deliveryservices and to the httpBypassFqdn for HTTP deliveryservices.              |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | globalMaxTps           | no       | The maximum global transactions per second allowed on this deliveryservice. When this is exceeded       |
  |                        |          | traffic will be sent to the dnsByPassIp* for DNS deliveryservices and to the httpBypassFqdn for         |
  |                        |          | HTTP deliveryservices                                                                                   |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | httpBypassFqdn         | no       | The HTTP destination to use for bypass on an HTTP deliveryservice - bypass starts when serving more     |
  |                        |          | than the globalMaxMbps traffic on this deliveryservice.                                                 |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | infoUrl                | no       | Use this to add a URL that points to more information about that deliveryservice.                       |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | ipv6RoutingEnabled     | no       | false: send IPv4 address of Traffic Router to client on HTTP type del.                                  |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | longDesc               | no       | Description field.                                                                                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | longDesc1              | no       | Description field 1.                                                                                    |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | longDesc2              | no       | Description field 2.                                                                                    |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | matchList              | yes      | Array of matchList hashes.                                                                              |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | >type                  | yes      | The type of MatchList (one of :ref:to-api-v12-types use_in_table='regex').                              |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | >setNumber             | yes      | The set Number of the matchList.                                                                        |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | >pattern               | yes      | The regexp for the matchList.                                                                           |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | maxDnsAnswers          | no       | The maximum number of IPs to put in a A/AAAA response for a DNS deliveryservice (0 means all            |
  |                        |          | available).                                                                                             |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | missLat                | no       | The latitude to use when the client cannot be found in the CZF or the Geo lookup.                       |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | missLong               | no       | The longitude to use when the client cannot be found in the CZF or the Geo lookup.                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | midHeaderRewrite       | no       | The MID header rewrite actions to perform.                                                              |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | multiSiteOrigin        | yes      | 1 if enabled, 0 if disabled.                                                                            |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | orgServerFqdn          | yes      | The origin server base URL (FQDN when used in this instance, includes the                               |
  |                        |          | protocol (http:// or https://) for use in retrieving content from the origin server.                    |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | profileName            | yes      | Traffic router profile name, for example "CCR_CDN"                                                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | qstringIgnore          | no       | - 0: no special query string handling; it is for use in the cache-key and pass up to origin.            |
  |                        |          | - 1: ignore query string in cache-key, but pass it up to parent and or origin.                          |
  |                        |          | - 2: drop query string at edge, and do not use it in the cache-key.                                     |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | regexRemap             | no       | Regex Remap rule to apply to this delivery service at the Edge tier.                                    |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | remapText              | no       | Additional raw remap line text.                                                                         |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | signed                 | no       | - false: token based auth (see :ref:token-based-auth) is not enabled for this deliveryservice.          |
  |                        |          | - true: token based auth is enabled for this deliveryservice.                                           |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | rangeRequestHandling   | no       | How to treat range requests:                                                                            |
  |                        |          |                                                                                                         |
  |                        |          | - 0 Do not cache (ranges requested from files taht are already cached due to a non range request will   |
  |                        |          |   be a HIT)                                                                                             |
  |                        |          | - 1 Use the background_fetch plugin.                                                                    |
  |                        |          | - 2 Use the cache_range_requests plugin.                                                                |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | type                   | yes      | The type of this deliveryservice (one of :ref:to-api-v12-types use_in_table='deliveryservice').         |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | displayName            | yes      | Display name                                                                                            |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | cdnName                | yes      | cdn name                                                                                                |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | dnsBypassCname         | no       | Bypass CNAME                                                                                            |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | trResponseHeaders      | no       | Traffic router additional response headers                                                              |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | initialDispersion      | no       | Initial dispersion                                                                                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | regionalGeoBlocking    | no       | Is the Regional Geo Blocking feature enabled for this delivery service.                                 |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | sslKeyVersion          | no       | SSL key version                                                                                         |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | originShield           | no       | Origin shield                                                                                           |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | trRequestHeaders       | no       | Traffic router log request headers                                                                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | logsEnabled            | no       | - false: No                                                                                             |
  |                        |          | - true: Yes                                                                                             |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+


  **Request Example** ::

    {
        "xmlId": "my_ds_1",
        "displayName": "my_ds_displayname_1",
        "protocol": "1",
        "orgServerFqdn": "http://10.75.168.91",
        "cdnName": "cdn_number_1",
        "profileName": "CCR_CDN1",
        "type": "HTTP",
        "multiSiteOrigin": "0",
        "active": "false",
        "matchList": [
            {
                "type":  "HOST_REGEXP",
                "pattern": ".*\\.ds_1\\..*"
                "setNumber": "0"
            },
            {
                "type":  "HOST_REGEXP",
                "pattern": ".*\\.my_vod1\\..*"
                "setNumber": "1"
            }
        ]
    }


  **Response Example** ::

    {
        "response":{
            "xmlId":"my_ds_1",
            "active":"false",
            "protocol":"0",
            "missLong":null,
            "maxDnsAnswers":"0",
            "profileName": "CCR_CDN1",
            "multiSiteOrigin":"0",
            "dnsBypassIp6":null,
            "globalMaxTps":"0",
            "orgServerFqdn":"http:\/\/10.75.168.91",
            "infoUrl":null,
            "rangeRequestHandling":null,
            "id":"311",
            "trResponseHeaders":null,
            "ipv6RoutingEnabled":null,
            "midHeaderRewrite":null,
            "longDesc":null,
            "httpBypassFqdn":null,
            "cdnName":"cdn_number_1",
            "protocol":"1",
            "missLat":null,
            "globalMaxMbps":"0",
            "initialDispersion":null,
            "type":"HTTP",
            "geoLimit":null,
            "dnsBypassTtl":null,
            "dnsBypassCname":null,
            "ccrDnsTtl":null,
            "longDesc2":null,
            "remapText":null,
            "dnsBypassIp":null,
            "longDesc1":null,
            "checkPath":null,
            "qstringIgnore":null,
            "dscp":"1",
            "regexRemap":null,
            "edgeHeaderRewrite":null,
            "sslKeyVersion":"0",
            "displayName":"my_ds_displayname_1",
            "cacheurl":null,
            "signed":"0",
            "matchList":[
                {
                    "type":"HOST_REGEXP",
                    "setNumber":"0",
                    "pattern":".*\\.ds_1\\..*"
                },
                {
                    "type":"HOST_REGEXP",
                    "setNumber":"1",
                    "pattern":".*\\.my_vod1\\..*"
                }
            ],
            "regionalGeoBlocking":0,
            "originShield":null,
            "trRequestHeaders":null,
            "geoProvider":"0",
            "logsEnabled":"false",
        }
        "alerts":[
            {
                "level": "success",
                "text": "Delivery service was created: 312"
            }
        ]
    }

|

**PUT /api/1.2/deliveryservices/{:id}**

  Allows user to edit a delivery service.

  Authentication Required: Yes

  Role(s) Required:  admin or oper

  **Request Route Parameters**

  +-----------------+----------+---------------------------------------------------+
  | Name            | Required | Description                                       |
  +=================+==========+===================================================+
  |id               | yes      | delivery service id.                              |
  +-----------------+----------+---------------------------------------------------+

  **Request Properties**

  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | Parameter              | Required | Description                                                                                             |
  +========================+==========+=========================================================================================================+
  | xmlId                  | yes      | Unique string that describes this deliveryservice.                                                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | active                 | yes      | true if active, false if inactive.                                                                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | cacheurl               | no       | Cache URL rule to apply to this delivery service.                                                       |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | protocol               | yes      | - 0: serve with http:// at EDGE                                                                         |
  |                        |          | - 1: serve with https:// at EDGE                                                                        |
  |                        |          | - 2: serve with both http:// and https:// at EDGE                                                       |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | ccrDnsTtl              | no       | The TTL of the DNS response for A or AAAA queries requesting the IP address of the tr.host.             |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | checkPath              | no       | The path portion of the URL to check this deliveryservice for health.                                   |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | dnsBypassIp            | no       | The IPv4 IP to use for bypass on a DNS deliveryservice - bypass starts when serving more than the       |
  |                        |          | globalMaxMbps traffic on this deliveryservice.                                                          |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | dnsBypassIp6           | no       | The IPv6 IP to use for bypass on a DNS deliveryservice - bypass starts when serving more than the       |
  |                        |          | globalMaxMbps traffic on this deliveryservice.                                                          |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | dnsBypassTtl           | no       | The TTL of the DNS bypass response.                                                                     |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | dscp                   | no       | The Differentiated Services Code Point (DSCP) with which to mark downstream (EDGE -> customer) traffic. |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | edgeHeaderRewrite      | no       | The EDGE header rewrite actions to perform.                                                             |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | geoLimit               | no       | - 0: None - no limitations                                                                              |
  |                        |          | - 1: Only route on CZF file hit                                                                         |
  |                        |          | - 2: Only route on CZF hit or when from geo limit countries                                             |
  |                        |          |                                                                                                         |
  |                        |          | Note that this does not prevent access to content or makes content secure; it just prevents             |
  |                        |          | routing to the content by Traffic Router.                                                               |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | geoLimitCountries      | no       | The geo limit countries.                                                                                |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | geoLimitRedirectURL    | no       | This is the URL Traffic Router will redirect to when Geo Limit Failure.                                 |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | geoProvider            | no       | - 0: Maxmind(default)                                                                                   |
  |                        |          | - 1: Neustar                                                                                            |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | globalMaxMbps          | no       | The maximum global bandwidth allowed on this deliveryservice. If exceeded, the traffic routes to the    |
  |                        |          | dnsByPassIp* for DNS deliveryservices and to the httpBypassFqdn for HTTP deliveryservices.              |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | globalMaxTps           | no       | The maximum global transactions per second allowed on this deliveryservice. When this is exceeded       |
  |                        |          | traffic will be sent to the dnsByPassIp* for DNS deliveryservices and to the httpBypassFqdn for         |
  |                        |          | HTTP deliveryservices                                                                                   |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | httpBypassFqdn         | no       | The HTTP destination to use for bypass on an HTTP deliveryservice - bypass starts when serving more     |
  |                        |          | than the globalMaxMbps traffic on this deliveryservice.                                                 |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | infoUrl                | no       | Use this to add a URL that points to more information about that deliveryservice.                       |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | ipv6RoutingEnabled     | no       | false: send IPv4 address of Traffic Router to client on HTTP type del.                                  |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | longDesc               | no       | Description field.                                                                                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | longDesc1              | no       | Description field 1.                                                                                    |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | longDesc2              | no       | Description field 2.                                                                                    |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | matchList              | yes      | Array of matchList hashes.                                                                              |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | >type                  | yes      | The type of MatchList (one of :ref:to-api-v12-types use_in_table='regex').                              |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | >setNumber             | yes      | The set Number of the matchList.                                                                        |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | >pattern               | yes      | The regexp for the matchList.                                                                           |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | maxDnsAnswers          | no       | The maximum number of IPs to put in a A/AAAA response for a DNS deliveryservice (0 means all            |
  |                        |          | available).                                                                                             |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | missLat                | no       | The latitude to use when the client cannot be found in the CZF or the Geo lookup.                       |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | missLong               | no       | The longitude to use when the client cannot be found in the CZF or the Geo lookup.                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | midHeaderRewrite       | no       | The MID header rewrite actions to perform.                                                              |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | multiSiteOrigin        | yes      | 1 if enabled, 0 if disabled.                                                                            |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | orgServerFqdn          | yes      | The origin server base URL (FQDN when used in this instance, includes the                               |
  |                        |          | protocol (http:// or https://) for use in retrieving content from the origin server.                    |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | profileName            | yes      | Traffic router profile name, for example "CCR_CDN"                                                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | qstringIgnore          | no       | - 0: no special query string handling; it is for use in the cache-key and pass up to origin.            |
  |                        |          | - 1: ignore query string in cache-key, but pass it up to parent and or origin.                          |
  |                        |          | - 2: drop query string at edge, and do not use it in the cache-key.                                     |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | regexRemap             | no       | Regex Remap rule to apply to this delivery service at the Edge tier.                                    |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | remapText              | no       | Additional raw remap line text.                                                                         |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | signed                 | no       | - false: token based auth (see :ref:token-based-auth) is not enabled for this deliveryservice.          |
  |                        |          | - true: token based auth is enabled for this deliveryservice.                                           |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | rangeRequestHandling   | no       | How to treat range requests:                                                                            |
  |                        |          |                                                                                                         |
  |                        |          | - 0 Do not cache (ranges requested from files taht are already cached due to a non range request will   |
  |                        |          |   be a HIT)                                                                                             |
  |                        |          | - 1 Use the background_fetch plugin.                                                                    |
  |                        |          | - 2 Use the cache_range_requests plugin.                                                                |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | type                   | yes      | The type of this deliveryservice (one of :ref:to-api-v12-types use_in_table='deliveryservice').         |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | displayName            | yes      | Display name                                                                                            |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | cdnName                | yes      | cdn name                                                                                                |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | dnsBypassCname         | no       | Bypass CNAME                                                                                            |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | trResponseHeaders      | no       | Traffic router additional response headers                                                              |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | initialDispersion      | no       | Initial dispersion                                                                                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | regionalGeoBlocking    | no       | Is the Regional Geo Blocking feature enabled for this delivery service.                                 |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | sslKeyVersion          | no       | SSL key version                                                                                         |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | originShield           | no       | Origin shield                                                                                           |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | trRequestHeaders       | no       | Traffic router log request headers                                                                      |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+
  | logsEnabled            | no       | - false: No                                                                                             |
  |                        |          | - true: Yes                                                                                             |
  +------------------------+----------+---------------------------------------------------------------------------------------------------------+


  **Request Example** ::

    {
        "xmlId": "my_ds_2",
        "displayName": "my_ds_displayname_2",
        "protocol": "1",
        "orgServerFqdn": "http://10.75.168.91",
        "cdnName": "cdn_number_1",
        "profileName": "CCR_CDN1",
        "type": "HTTP",
        "multiSiteOrigin": "0",
        "active": "true",
        "matchList": [
            {
                "type":  "HOST_REGEXP",
                "pattern": ".*\\.ds_1\\..*"
                "setNumber": "0"
            },
            {
                "type":  "HOST_REGEXP",
                "pattern": ".*\\.my_vod1\\..*"
                "setNumber": "1"
            }
        ]
    }


  **Response Example** ::

    {
        "response":{
            "xmlId":"my_ds_2",
            "active":"true",
            "protocol":"0",
            "missLong":null,
            "maxDnsAnswers":"0",
            "profileName": "CCR_CDN1",
            "multiSiteOrigin":"0",
            "dnsBypassIp6":null,
            "globalMaxTps":"0",
            "orgServerFqdn":"http:\/\/10.75.168.91",
            "infoUrl":null,
            "rangeRequestHandling":null,
            "id":"311",
            "trResponseHeaders":null,
            "ipv6RoutingEnabled":null,
            "midHeaderRewrite":null,
            "longDesc":null,
            "httpBypassFqdn":null,
            "cdnName":"cdn_number_1",
            "protocol":"1",
            "missLat":null,
            "globalMaxMbps":"0",
            "initialDispersion":null,
            "type":"HTTP",
            "geoLimit":null,
            "dnsBypassTtl":null,
            "dnsBypassCname":null,
            "ccrDnsTtl":null,
            "longDesc2":null,
            "remapText":null,
            "dnsBypassIp":null,
            "longDesc1":null,
            "checkPath":null,
            "qstringIgnore":null,
            "dscp":"1",
            "regexRemap":null,
            "edgeHeaderRewrite":null,
            "sslKeyVersion":"0",
            "displayName":"my_ds_displayname_2",
            "cacheurl":null,
            "signed":"0",
            "matchList":[
                {
                    "type":"HOST_REGEXP",
                    "setNumber":"0",
                    "pattern":".*\\.ds_1\\..*"
                },
                {
                    "type":"HOST_REGEXP",
                    "setNumber":"1",
                    "pattern":".*\\.my_vod1\\..*"
                }
            ],
            "regionalGeoBlocking":0,
            "originShield":null,
            "trRequestHeaders":null,
            "geoProvider":"0",
            "logsEnabled":"false",
        }
        "alerts":[
            {
                "level": "success",
                "text": "Delivery service was updated: 312"
            }
        ]
    }

|

**DELETE /api/1.2/deliveryservices/{:id}**

  Allows user to delete a delivery service.

  Authentication Required: Yes

  Role(s) Required:  admin or oper

  **Request Route Parameters**

  +-----------------+----------+---------------------------------------------------+
  | Name            | Required | Description                                       |
  +=================+==========+===================================================+
  | id              | yes      | delivery service id.                              |
  +-----------------+----------+---------------------------------------------------+

   **Response Example** ::

    {
           "alerts": [
                     {
                             "level": "success",
                             "text": "Delivery service was deleted."
                     }
             ],
    }

|

**POST /api/1.2/deliveryservices/:xml_id/servers**

  Assign caches to a delivery service.

  Authentication Required: Yes

  Role(s) Required:  admin or oper

  **Request Route Parameters**

  +--------+----------+-----------------------------------+
  | Name   | Required | Description                       |
  +========+==========+===================================+
  | xml_id | yes      | the xml_id of the deliveryservice |
  +--------+----------+-----------------------------------+

  **Request Properties**

  +--------------+----------+-------------------------------------------------------------------------------------------------------------+
  | Parameter    | Required | Description                                                                                                 |
  +==============+==========+=============================================================================================================+
  | serverNames  | yes      | array of hostname of cache servers to assign to this deliveryservice, for example: [ "server1", "server2" ] |
  +--------------+----------+-------------------------------------------------------------------------------------------------------------+

  **Request Example** ::

    {
        "serverNames": [
            "tc1_ats1"
        ]
    }

  **Response Properties**

  +--------------+--------+-------------------------------------------------------------------------------------------------------------+
  | Parameter    | Type   | Description                                                                                                 |
  +==============+========+=============================================================================================================+
  | xml_id       | string | Unique string that describes this delivery service.                                                         |
  +--------------+--------+-------------------------------------------------------------------------------------------------------------+
  | serverNames  | string | array of hostname of cache servers to assign to this deliveryservice, for example: [ "server1", "server2" ] |
  +--------------+--------+-------------------------------------------------------------------------------------------------------------+


   **Response Example** ::

    {
        "response":{
            "serverNames":[
                "tc1_ats1"
            ],
            "xmlId":"my_ds_1"
        }
    }

|

