..
.. 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-server:

Server
======

.. _to-api-v12-servers-route:

/api/1.2/servers
++++++++++++++++

**GET /api/1.2/servers**

  Retrieves properties of CDN servers.

  Authentication Required: Yes

  Role(s) Required: None

  **Request Query Parameters**

  +--------------------+----------+---------------------------------------------+
  |   Name             | Required |                Description                  |
  +====================+==========+=============================================+
  | ``dsId``           | no       | Used to filter servers by delivery service. |
  +--------------------+----------+---------------------------------------------+
  | ``status``         | no       | Used to filter servers by status.           |
  +--------------------+----------+---------------------------------------------+
  | ``type``           | no       | Used to filter servers by type.             |
  +--------------------+----------+---------------------------------------------+
  | ``profileId``      | no       | Used to filter servers by profile.          |
  +--------------------+----------+---------------------------------------------+

  **Response Properties**

  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  |     Parameter      |  Type  |                                                Description                                                 |
  +====================+========+============================================================================================================+
  | ``cachegroup``     | string | The cache group name (see :ref:`to-api-v11-cachegroup`).                                                   |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``cachegroupId``   | string | The cache group id.                                                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``cdnId``          | string | Id of the CDN to which the server belongs to.                                                              |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``cdnName``        | string | Name of the CDN to which the server belongs to.                                                            |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``domainName``     | string | The domain name part of the FQDN of the cache.                                                             |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``guid``           | string | An identifier used to uniquely identify the server.                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``hostName``       | string | The host name part of the cache.                                                                           |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``httpsPort``      | string | The HTTPS port on which the main application listens (443 in most cases).                                  |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``id``             | string | The server id (database row number).                                                                       |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``iloIpAddress``   | string | The IPv4 address of the lights-out-management port.                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``iloIpGateway``   | string | The IPv4 gateway address of the lights-out-management port.                                                |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``iloIpNetmask``   | string | The IPv4 netmask of the lights-out-management port.                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``iloPassword``    | string | The password of the of the lights-out-management user (displays as ****** unless you are an 'admin' user). |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``iloUsername``    | string | The user name for lights-out-management.                                                                   |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``interfaceMtu``   | string | The Maximum Transmission Unit (MTU) to configure for ``interfaceName``.                                    |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``interfaceName``  | string | The network interface name used for serving traffic.                                                       |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``ip6Address``     | string | The IPv6 address/netmask for ``interfaceName``.                                                            |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``ip6Gateway``     | string | The IPv6 gateway for ``interfaceName``.                                                                    |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``ipAddress``      | string | The IPv4 address for ``interfaceName``.                                                                    |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``ipGateway``      | string | The IPv4 gateway for ``interfaceName``.                                                                    |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``ipNetmask``      | string | The IPv4 netmask for ``interfaceName``.                                                                    |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``lastUpdated``    | string | The Time and Date for the last update for this server.                                                     |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``mgmtIpAddress``  | string | The IPv4 address of the management port (optional).                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``mgmtIpGateway``  | string | The IPv4 gateway of the management port (optional).                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``mgmtIpNetmask``  | string | The IPv4 netmask of the management port (optional).                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``offlineReason``  | string | A user-entered reason why the server is in ADMIN_DOWN or OFFLINE status.                                   |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``physLocation``   | string | The physical location name (see :ref:`to-api-v11-phys-loc`).                                               |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``physLocationId`` | string | The physical location id (see :ref:`to-api-v11-phys-loc`).                                                 |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``profile``        | string | The assigned profile name (see :ref:`to-api-v11-profile`).                                                 |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``profileDesc``    | string | The assigned profile description (see :ref:`to-api-v11-profile`).                                          |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``profileId``      | string | The assigned profile Id (see :ref:`to-api-v11-profile`).                                                   |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``rack``           | string | A string indicating rack location.                                                                         |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``routerHostName`` | string | The human readable name of the router.                                                                     |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``routerPortName`` | string | The human readable name of the router port.                                                                |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``status``         | string | The Status string (See :ref:`to-api-v11-status`).                                                          |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``statusId``       | string | The Status id (See :ref:`to-api-v11-status`).                                                              |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``tcpPort``        | string | The default TCP port on which the main application listens (80 for a cache in most cases).                 |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``type``           | string | The name of the type of this server (see :ref:`to-api-v11-type`).                                          |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``typeId``         | string | The id of the type of this server (see :ref:`to-api-v11-type`).                                            |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``updPending``     |  bool  |                                                                                                            |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+

  **Response Example** ::

   {
      "response": [
          {
              "cachegroup": "us-il-chicago",
              "cachegroupId": "3",
              "cdnId": "3",
              "cdnName": "CDN-1",
              "domainName": "chi.kabletown.net",
              "guid": null,
              "hostName": "atsec-chi-00",
              "id": "19",
              "iloIpAddress": "172.16.2.6",
              "iloIpGateway": "172.16.2.1",
              "iloIpNetmask": "255.255.255.0",
              "iloPassword": "********",
              "iloUsername": "",
              "interfaceMtu": "9000",
              "interfaceName": "bond0",
              "ip6Address": "2033:D0D0:3300::2:2/64",
              "ip6Gateway": "2033:D0D0:3300::2:1",
              "ipAddress": "10.10.2.2",
              "ipGateway": "10.10.2.1",
              "ipNetmask": "255.255.255.0",
              "lastUpdated": "2015-03-08 15:57:32",
              "mgmtIpAddress": "",
              "mgmtIpGateway": "",
              "mgmtIpNetmask": "",
              "offlineReason": "N/A",
              "physLocation": "plocation-chi-1",
              "physLocationId": "9",
              "profile": "EDGE1_CDN1_421_SSL",
              "profileDesc": "EDGE1_CDN1_421_SSL profile",
              "profileId": "12",
              "rack": "RR 119.02",
              "routerHostName": "rtr-chi.kabletown.net",
              "routerPortName": "2",
              "status": "ONLINE",
              "statusId": "6",
              "tcpPort": "80",
              "httpsPort": "443",
              "type": "EDGE",
              "typeId": "3",
              "updPending": false
          },
          {
          ... more server data
          }
        ]
    }

|

**GET /api/1.2/servers/:id**

  Retrieves properties of a CDN server by server ID.

  Authentication Required: Yes

  Role(s) Required: None

  **Request Route Parameters**

  +-----------+----------+---------------------------------------------+
  |   Name    | Required |                Description                  |
  +===========+==========+=============================================+
  |   ``id``  |   yes    | Server id.                                  |
  +-----------+----------+---------------------------------------------+

  **Response Properties**

  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  |     Parameter      |  Type  |                                                Description                                                 |
  +====================+========+============================================================================================================+
  | ``cachegroup``     | string | The cache group name (see :ref:`to-api-v11-cachegroup`).                                                   |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``cachegroupId``   | string | The cache group id.                                                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``cdnId``          | string | Id of the CDN to which the server belongs to.                                                              |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``cdnName``        | string | Name of the CDN to which the server belongs to.                                                            |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``domainName``     | string | The domain name part of the FQDN of the cache.                                                             |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``guid``           | string | An identifier used to uniquely identify the server.                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``hostName``       | string | The host name part of the cache.                                                                           |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``httpsPort``      | string | The HTTPS port on which the main application listens (443 in most cases).                                  |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``id``             | string | The server id (database row number).                                                                       |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``iloIpAddress``   | string | The IPv4 address of the lights-out-management port.                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``iloIpGateway``   | string | The IPv4 gateway address of the lights-out-management port.                                                |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``iloIpNetmask``   | string | The IPv4 netmask of the lights-out-management port.                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``iloPassword``    | string | The password of the of the lights-out-management user (displays as ****** unless you are an 'admin' user). |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``iloUsername``    | string | The user name for lights-out-management.                                                                   |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``interfaceMtu``   | string | The Maximum Transmission Unit (MTU) to configure for ``interfaceName``.                                    |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``interfaceName``  | string | The network interface name used for serving traffic.                                                       |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``ip6Address``     | string | The IPv6 address/netmask for ``interfaceName``.                                                            |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``ip6Gateway``     | string | The IPv6 gateway for ``interfaceName``.                                                                    |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``ipAddress``      | string | The IPv4 address for ``interfaceName``.                                                                    |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``ipGateway``      | string | The IPv4 gateway for ``interfaceName``.                                                                    |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``ipNetmask``      | string | The IPv4 netmask for ``interfaceName``.                                                                    |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``lastUpdated``    | string | The Time and Date for the last update for this server.                                                     |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``mgmtIpAddress``  | string | The IPv4 address of the management port (optional).                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``mgmtIpGateway``  | string | The IPv4 gateway of the management port (optional).                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``mgmtIpNetmask``  | string | The IPv4 netmask of the management port (optional).                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``offlineReason``  | string | A user-entered reason why the server is in ADMIN_DOWN or OFFLINE status.                                   |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``physLocation``   | string | The physical location name (see :ref:`to-api-v11-phys-loc`).                                               |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``physLocationId`` | string | The physical location id (see :ref:`to-api-v11-phys-loc`).                                                 |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``profile``        | string | The assigned profile name (see :ref:`to-api-v11-profile`).                                                 |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``profileDesc``    | string | The assigned profile description (see :ref:`to-api-v11-profile`).                                          |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``profileId``      | string | The assigned profile Id (see :ref:`to-api-v11-profile`).                                                   |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``rack``           | string | A string indicating rack location.                                                                         |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``routerHostName`` | string | The human readable name of the router.                                                                     |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``routerPortName`` | string | The human readable name of the router port.                                                                |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``status``         | string | The Status string (See :ref:`to-api-v11-status`).                                                          |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``statusId``       | string | The Status id (See :ref:`to-api-v11-status`).                                                              |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``tcpPort``        | string | The default TCP port on which the main application listens (80 for a cache in most cases).                 |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``type``           | string | The name of the type of this server (see :ref:`to-api-v11-type`).                                          |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``typeId``         | string | The id of the type of this server (see :ref:`to-api-v11-type`).                                            |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``updPending``     |  bool  |                                                                                                            |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+

  **Response Example** ::

   {
      "response": [
          {
              "cachegroup": "us-il-chicago",
              "cachegroupId": "3",
              "cdnId": "3",
              "cdnName": "CDN-1",
              "domainName": "chi.kabletown.net",
              "guid": null,
              "hostName": "atsec-chi-00",
              "id": "19",
              "iloIpAddress": "172.16.2.6",
              "iloIpGateway": "172.16.2.1",
              "iloIpNetmask": "255.255.255.0",
              "iloPassword": "********",
              "iloUsername": "",
              "interfaceMtu": "9000",
              "interfaceName": "bond0",
              "ip6Address": "2033:D0D0:3300::2:2/64",
              "ip6Gateway": "2033:D0D0:3300::2:1",
              "ipAddress": "10.10.2.2",
              "ipGateway": "10.10.2.1",
              "ipNetmask": "255.255.255.0",
              "lastUpdated": "2015-03-08 15:57:32",
              "mgmtIpAddress": "",
              "mgmtIpGateway": "",
              "mgmtIpNetmask": "",
              "offlineReason": "N/A",
              "physLocation": "plocation-chi-1",
              "physLocationId": "9",
              "profile": "EDGE1_CDN1_421_SSL",
              "profileDesc": "EDGE1_CDN1_421_SSL profile",
              "profileId": "12",
              "rack": "RR 119.02",
              "routerHostName": "rtr-chi.kabletown.net",
              "routerPortName": "2",
              "status": "ONLINE",
              "statusId": "6",
              "tcpPort": "80",
              "httpsPort": "443",
              "type": "EDGE",
              "typeId": "3",
              "updPending": false
          }
        ]
    }

|


**GET /api/1.2/servers/summary**

  Retrieves a count of CDN servers by type.

  Authentication Required: Yes

  Role(s) Required: None

  **Response Properties**

  +-----------+--------+------------------------------------------------------------------------+
  | Parameter |  Type  |                             Description                                |
  +===========+========+========================================================================+
  | ``count`` | int    | The number of servers of this type in this instance of Traffic Ops.    |
  +-----------+--------+------------------------------------------------------------------------+
  | ``type``  | string | The name of the type of the server count (see :ref:`to-api-v12-type`). |
  +-----------+--------+------------------------------------------------------------------------+

  **Response Example** ::

    {
      "response": [
        {
          "count": 4,
          "type": "CCR"
        },
        {
          "count": 55,
          "type": "EDGE"
        },
        {
          "type": "MID",
          "count": 18
        },
        {
          "count": 0,
          "type": "INFLUXDB"
        },
        {
          "count": 4,
          "type": "RASCAL"
        }
    }

|

**GET /api/1.2/servers/hostname/:name/details**

  Retrieves the details of a server.

  Authentication Required: Yes

  Role(s) Required: None

  **Request Route Parameters**

  +----------+----------+----------------------------------+
  |   Name   | Required |           Description            |
  +==========+==========+==================================+
  | ``name`` | yes      | The host name part of the cache. |
  +----------+----------+----------------------------------+

  **Response Properties**

  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  |      Parameter       |  Type  |                                                 Description                                                 |
  +======================+========+=============================================================================================================+
  | ``cachegroup``       | string | The cache group name (see :ref:`to-api-v12-cachegroup`).                                                    |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``deliveryservices`` | array  | Array of strings with the delivery service ids assigned (see :ref:`to-api-v12-ds`).                         |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``domainName``       | string | The domain name part of the FQDN of the cache.                                                              |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``hardwareInfo``     | hash   | Hwinfo struct (see :ref:`to-api-v12-hwinfo`).                                                               |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``hostName``         | string | The host name part of the cache.                                                                            |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``id``               | string | The server id (database row number).                                                                        |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``iloIpAddress``     | string | The IPv4 address of the lights-out-management port.                                                         |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``iloIpGateway``     | string | The IPv4 gateway address of the lights-out-management port.                                                 |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``iloIpNetmask``     | string | The IPv4 netmask of the lights-out-management port.                                                         |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``iloPassword``      | string | The password of the of the lights-out-management user  (displays as ****** unless you are an 'admin' user). |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``iloUsername``      | string | The user name for lights-out-management.                                                                    |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``interfaceMtu``     | string | The Maximum Transmission Unit (MTU) to configure for ``interfaceName``.                                     |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``interfaceName``    | string | The network interface name used for serving traffic.                                                        |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``ip6Address``       | string | The IPv6 address/netmask for ``interfaceName``.                                                             |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``ip6Gateway``       | string | The IPv6 gateway for ``interfaceName``.                                                                     |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``ipAddress``        | string | The IPv4 address for ``interfaceName``.                                                                     |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``ipGateway``        | string | The IPv4 gateway for ``interfaceName``.                                                                     |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``ipNetmask``        | string | The IPv4 netmask for ``interfaceName``.                                                                     |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``lastUpdated``      | string | The Time/Date of the last update for this server.                                                           |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``mgmtIpAddress``    | string | The IPv4 address of the management port (optional).                                                         |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``mgmtIpGateway``    | string | The IPv4 gateway of the management port (optional).                                                         |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``mgmtIpNetmask``    | string | The IPv4 netmask of the management port (optional).                                                         |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``physLocation``     | string | The physical location name (see :ref:`to-api-v12-phys-loc`).                                                |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``profile``          | string | The assigned profile name (see :ref:`to-api-v12-profile`).                                                  |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``rack``             | string | A string indicating rack location.                                                                          |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``routerHostName``   | string | The human readable name of the router.                                                                      |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``routerPortName``   | string | The human readable name of the router port.                                                                 |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``status``           | string | The Status string (See :ref:`to-api-v12-status`).                                                           |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``tcpPort``          | string | The default TCP port on which the main application listens (80 for a cache in most cases).                  |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``httpsPort``        | string | The default HTTPS port on which the main application listens (443 for a cache in most cases).               |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``type``             | string | The name of the type of this server (see :ref:`to-api-v12-type`).                                           |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``xmppId``           | string | Deprecated.                                                                                                 |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``xmppPasswd``       | string | Deprecated.                                                                                                 |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+

  **Response Example** ::

    {
      "response": {
        "cachegroup": "us-il-chicago",
        "deliveryservices": [
          "1",
          "2",
          "3",
          "4"
        ],
        "domainName": "chi.kabletown.net",
        "hardwareInfo": {
          "Physical Disk 0:1:3": "D1S2",
          "Physical Disk 0:1:2": "D1S2",
          "Physical Disk 0:1:15": "D1S2",
          "Power Supply.Slot.2": "04.07.15",
          "Physical Disk 0:1:24": "YS08",
          "Physical Disk 0:1:1": "D1S2",
          "Model": "PowerEdge R720xd",
          "Physical Disk 0:1:22": "D1S2",
          "Physical Disk 0:1:18": "D1S2",
          "Enterprise UEFI Diagnostics": "4217A5",
          "Lifecycle Controller": "1.0.8.42",
          "Physical Disk 0:1:8": "D1S2",
          "Manufacturer": "Dell Inc.",
          "Physical Disk 0:1:6": "D1S2",
          "SysMemTotalSize": "196608",
          "PopulatedDIMMSlots": "24",
          "Physical Disk 0:1:20": "D1S2",
          "Intel(R) Ethernet 10G 2P X520 Adapter": "13.5.7",
          "Physical Disk 0:1:14": "D1S2",
          "BACKPLANE FIRMWARE": "1.00",
          "Dell OS Drivers Pack, 7.0.0.29, A00": "7.0.0.29",
          "Integrated Dell Remote Access Controller": "1.57.57",
          "Physical Disk 0:1:5": "D1S2",
          "ServiceTag": "D6XPDV1",
          "PowerState": "2",
          "Physical Disk 0:1:23": "D1S2",
          "Physical Disk 0:1:25": "D903",
          "BIOS": "1.3.6",
          "Physical Disk 0:1:12": "D1S2",
          "System CPLD": "1.0.3",
          "Physical Disk 0:1:4": "D1S2",
          "Physical Disk 0:1:0": "D1S2",
          "Power Supply.Slot.1": "04.07.15",
          "PERC H710P Mini": "21.0.2-0001",
          "PowerCap": "689",
          "Physical Disk 0:1:16": "D1S2",
          "Physical Disk 0:1:10": "D1S2",
          "Physical Disk 0:1:11": "D1S2",
          "Lifecycle Controller 2": "1.0.8.42",
          "BP12G+EXP 0:1": "1.07",
          "Physical Disk 0:1:9": "D1S2",
          "Physical Disk 0:1:17": "D1S2",
          "Broadcom Gigabit Ethernet BCM5720": "7.2.20",
          "Physical Disk 0:1:21": "D1S2",
          "Physical Disk 0:1:13": "D1S2",
          "Physical Disk 0:1:7": "D1S2",
          "Physical Disk 0:1:19": "D1S2"
        },
        "hostName": "atsec-chi-00",
        "id": "19",
        "iloIpAddress": "172.16.2.6",
        "iloIpGateway": "172.16.2.1",
        "iloIpNetmask": "255.255.255.0",
        "iloPassword": "********",
        "iloUsername": "",
        "interfaceMtu": "9000",
        "interfaceName": "bond0",
        "ip6Address": "2033:D0D0:3300::2:2/64",
        "ip6Gateway": "2033:D0D0:3300::2:1",
        "ipAddress": "10.10.2.2",
        "ipGateway": "10.10.2.1",
        "ipNetmask": "255.255.255.0",
        "mgmtIpAddress": "",
        "mgmtIpGateway": "",
        "mgmtIpNetmask": "",
        "physLocation": "plocation-chi-1",
        "profile": "EDGE1_CDN1_421_SSL",
        "rack": "RR 119.02",
        "routerHostName": "rtr-chi.kabletown.net",
        "routerPortName": "2",
        "status": "ONLINE",
        "tcpPort": "80",
        "httpsPort": "443",
        "type": "EDGE",
        "xmppId": "atsec-chi-00-dummyxmpp",
        "xmppPasswd": "X"

      }
    }

|

**POST /api/1.2/servercheck**

  Post a server check result to the serverchecks table.

  Authentication Required: Yes

  Role(s) Required: None

  **Request Route Parameters**

  +----------------------------+----------+-------------+
  |            Name            | Required | Description |
  +============================+==========+=============+
  | ``id``                     | yes      |             |
  +----------------------------+----------+-------------+
  | ``host_name``              | yes      |             |
  +----------------------------+----------+-------------+
  | ``servercheck_short_name`` | yes      |             |
  +----------------------------+----------+-------------+
  | ``value``                  | yes      |             |
  +----------------------------+----------+-------------+

  **Request Example** ::

    {
     "id": "",
     "host_name": "",
     "servercheck_short_name": "",
     "value": ""
    }

|

  **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** ::

    Response Example:

    {
      "alerts":
        [
          {
            "level": "success",
            "text": "Server Check was successfully updated."
          }
        ],
    }

|

**POST /api/1.2/servers**

  Allow user to create a server.

  Authentication Required: Yes

  Role(s) Required: admin or oper

  **Request Properties**

  +----------------+----------+------------------------------------------------+
  |      Name      | Required |                  Description                   |
  +================+==========+================================================+
  | hostName       | yes      | The host name part of the server.              |
  +----------------+----------+------------------------------------------------+
  | domainName     | yes      | The domain name part of the FQDN of the cache. |
  +----------------+----------+------------------------------------------------+
  | cachegroup     | yes      | cache group name                               |
  +----------------+----------+------------------------------------------------+
  | interfaceName  | yes      |                                                |
  +----------------+----------+------------------------------------------------+
  | ipAddress      | yes      |                                                |
  +----------------+----------+------------------------------------------------+
  | ipNetmask      | yes      |                                                |
  +----------------+----------+------------------------------------------------+
  | ipGateway      | yes      |                                                |
  +----------------+----------+------------------------------------------------+
  | interfaceMtu   | no       | 1500 or 9000                                   |
  +----------------+----------+------------------------------------------------+
  | physLocation   | yes      |                                                |
  +----------------+----------+------------------------------------------------+
  | type           | yes      | server type                                    |
  +----------------+----------+------------------------------------------------+
  | profile        | yes      |                                                |
  +----------------+----------+------------------------------------------------+
  | cdnName        | yes      | cdn name the server belongs to                 |
  +----------------+----------+------------------------------------------------+
  | tcpPort        | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | httpsPort      | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | xmppId         | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | xmppPasswd     | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | ip6Address     | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | ip6Gateway     | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | rack           | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | mgmtIpAddress  | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | mgmtIpNetmask  | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | mgmtIpGateway  | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | iloIpAddress   | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | iloIpNetmask   | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | iloIpGateway   | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | iloUsername    | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | iloPassword    | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | routerHostName | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | routerPortName | no       |                                                |
  +----------------+----------+------------------------------------------------+

  **Request Example** ::

    {
        "hostName": "tc1_ats1",
        "domainName": "my.test.com",
        "cachegroup": "cache_group_edge",
        "cdnName": "cdn_number_1",
        "interfaceName": "eth0",
        "ipAddress": "10.74.27.188",
        "ipNetmask": "255.255.255.0",
        "ipGateway": "10.74.27.1",
        "interfaceMtu": "1500",
        "physLocation": "plocation-chi-1",
        "type": "EDGE",
        "profile": "EDGE1_CDN1_421"
    }

|

  **Response Properties**

  +----------------+--------+------------------------------------------------+
  |      Name      |  Type  |                  Description                   |
  +================+========+================================================+
  | hostName       | string | The host name part of the server.              |
  +----------------+--------+------------------------------------------------+
  | Name           | string | Description                                    |
  +----------------+--------+------------------------------------------------+
  | domainName     | string | The domain name part of the FQDN of the cache. |
  +----------------+--------+------------------------------------------------+
  | cachegroup     | string | cache group name                               |
  +----------------+--------+------------------------------------------------+
  | interfaceName  | string |                                                |
  +----------------+--------+------------------------------------------------+
  | ipAddress      | string |                                                |
  +----------------+--------+------------------------------------------------+
  | ipNetmask      | string |                                                |
  +----------------+--------+------------------------------------------------+
  | ipGateway      | string |                                                |
  +----------------+--------+------------------------------------------------+
  | interfaceMtu   | string | 1500 or 9000                                   |
  +----------------+--------+------------------------------------------------+
  | physLocation   | string |                                                |
  +----------------+--------+------------------------------------------------+
  | type           | string | server type                                    |
  +----------------+--------+------------------------------------------------+
  | profile        | string |                                                |
  +----------------+--------+------------------------------------------------+
  | cdnName        | string | cdn name the server belongs to                 |
  +----------------+--------+------------------------------------------------+
  | tcpPort        | string |                                                |
  +----------------+--------+------------------------------------------------+
  | httpsPort      | string |                                                |
  +----------------+--------+------------------------------------------------+
  | xmppId         | string |                                                |
  +----------------+--------+------------------------------------------------+
  | xmppPasswd     | string |                                                |
  +----------------+--------+------------------------------------------------+
  | ip6Address     | string |                                                |
  +----------------+--------+------------------------------------------------+
  | ip6Gateway     | string |                                                |
  +----------------+--------+------------------------------------------------+
  | rack           | string |                                                |
  +----------------+--------+------------------------------------------------+
  | mgmtIpAddress  | string |                                                |
  +----------------+--------+------------------------------------------------+
  | mgmtIpNetmask  | string |                                                |
  +----------------+--------+------------------------------------------------+
  | mgmtIpGateway  | string |                                                |
  +----------------+--------+------------------------------------------------+
  | iloIpAddress   | string |                                                |
  +----------------+--------+------------------------------------------------+
  | iloIpNetmask   | string |                                                |
  +----------------+--------+------------------------------------------------+
  | iloIpGateway   | string |                                                |
  +----------------+--------+------------------------------------------------+
  | iloUsername    | string |                                                |
  +----------------+--------+------------------------------------------------+
  | iloPassword    | string |                                                |
  +----------------+--------+------------------------------------------------+
  | routerHostName | string |                                                |
  +----------------+--------+------------------------------------------------+
  | routerPortName | string |                                                |
  +----------------+--------+------------------------------------------------+

  **Response Example** ::

    {
        'response' : {
            'xmppPasswd' : '**********',
            'profile' : 'EDGE1_CDN1_421',
            'iloUsername' : null,
            'status' : 'REPORTED',
            'ipAddress' : '10.74.27.188',
            'cdnId' : '1',
            'physLocation' : 'plocation-chi-1',
            'cachegroup' : 'cache_group_edge',
            'interfaceName' : 'eth0',
            'ip6Gateway' : null,
            'iloPassword' : null,
            'id' : '1003',
            'routerPortName' : null,
            'lastUpdated' : '2016-01-25 14:16:16',
            'ipNetmask' : '255.255.255.0',
            'ipGateway' : '10.74.27.1',
            'tcpPort' : '80',
            'httpsPort' : '443',
            'mgmtIpAddress' : null,
            'ip6Address' : null,
            'interfaceMtu' : '1500',
            'iloIpGateway' : null,
            'hostName' : 'tc1_ats1',
            'xmppId' : 'tc1_ats1',
            'rack' : null,
            'mgmtIpNetmask' : null,
            'iloIpAddress' : null,
            'mgmtIpGateway' : null,
            'type' : 'EDGE',
            'domainName' : 'my.test.com',
            'iloIpNetmask' : null,
            'routerHostName' : null
        }
    }

|

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

  Allow user to edit server through api.

  Authentication Required: Yes

  Role(s) Required: admin or oper

  **Request Route Parameters**

  +------+----------+-------------------------------+
  | Name | Required | Description                   |
  +======+==========+===============================+
  | id   | yes      | The id of the server to edit. |
  +------+----------+-------------------------------+

  **Request Properties**

  +----------------+----------+------------------------------------------------+
  |      Name      | Required |                  Description                   |
  +================+==========+================================================+
  | hostName       | yes      | The host name part of the server.              |
  +----------------+----------+------------------------------------------------+
  | domainName     | yes      | The domain name part of the FQDN of the cache. |
  +----------------+----------+------------------------------------------------+
  | cachegroup     | yes      | cache group name                               |
  +----------------+----------+------------------------------------------------+
  | interfaceName  | yes      |                                                |
  +----------------+----------+------------------------------------------------+
  | ipAddress      | yes      |                                                |
  +----------------+----------+------------------------------------------------+
  | ipNetmask      | yes      |                                                |
  +----------------+----------+------------------------------------------------+
  | ipGateway      | yes      |                                                |
  +----------------+----------+------------------------------------------------+
  | interfaceMtu   | no       | 1500 or 9000                                   |
  +----------------+----------+------------------------------------------------+
  | physLocation   | yes      |                                                |
  +----------------+----------+------------------------------------------------+
  | type           | yes      | server type                                    |
  +----------------+----------+------------------------------------------------+
  | profile        | yes      |                                                |
  +----------------+----------+------------------------------------------------+
  | cdnName        | yes      | cdn name the server belongs to                 |
  +----------------+----------+------------------------------------------------+
  | tcpPort        | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | httpsPort      | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | xmppId         | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | xmppPasswd     | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | ip6Address     | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | ip6Gateway     | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | rack           | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | mgmtIpAddress  | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | mgmtIpNetmask  | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | mgmtIpGateway  | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | iloIpAddress   | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | iloIpNetmask   | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | iloIpGateway   | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | iloUsername    | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | iloPassword    | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | routerHostName | no       |                                                |
  +----------------+----------+------------------------------------------------+
  | routerPortName | no       |                                                |
  +----------------+----------+------------------------------------------------+

  **Request Example** ::

    {
        "hostName": "tc1_ats2",
        "domainName": "my.test.com",
        "cachegroup": "cache_group_edge",
        "cdnName": "cdn_number_1",
        "interfaceName": "eth0",
        "ipAddress": "10.74.27.188",
        "ipNetmask": "255.255.255.0",
        "ipGateway": "10.74.27.1",
        "interfaceMtu": "1500",
        "physLocation": "plocation-chi-1",
        "type": "EDGE",
        "profile": "EDGE1_CDN1_421"
    }

|

  **Response Properties**

  +----------------+--------+------------------------------------------------+
  |      Name      |  Type  |                  Description                   |
  +================+========+================================================+
  | hostName       | string | The host name part of the server.              |
  +----------------+--------+------------------------------------------------+
  | Name           | string | Description                                    |
  +----------------+--------+------------------------------------------------+
  | domainName     | string | The domain name part of the FQDN of the cache. |
  +----------------+--------+------------------------------------------------+
  | cachegroup     | string | cache group name                               |
  +----------------+--------+------------------------------------------------+
  | interfaceName  | string |                                                |
  +----------------+--------+------------------------------------------------+
  | ipAddress      | string |                                                |
  +----------------+--------+------------------------------------------------+
  | ipNetmask      | string |                                                |
  +----------------+--------+------------------------------------------------+
  | ipGateway      | string |                                                |
  +----------------+--------+------------------------------------------------+
  | interfaceMtu   | string | 1500 or 9000                                   |
  +----------------+--------+------------------------------------------------+
  | physLocation   | string |                                                |
  +----------------+--------+------------------------------------------------+
  | type           | string | server type                                    |
  +----------------+--------+------------------------------------------------+
  | profile        | string |                                                |
  +----------------+--------+------------------------------------------------+
  | cdnName        | string | cdn name the server belongs to                 |
  +----------------+--------+------------------------------------------------+
  | tcpPort        | string |                                                |
  +----------------+--------+------------------------------------------------+
  | httpsPort      | string |                                                |
  +----------------+--------+------------------------------------------------+
  | xmppId         | string |                                                |
  +----------------+--------+------------------------------------------------+
  | xmppPasswd     | string |                                                |
  +----------------+--------+------------------------------------------------+
  | ip6Address     | string |                                                |
  +----------------+--------+------------------------------------------------+
  | ip6Gateway     | string |                                                |
  +----------------+--------+------------------------------------------------+
  | rack           | string |                                                |
  +----------------+--------+------------------------------------------------+
  | mgmtIpAddress  | string |                                                |
  +----------------+--------+------------------------------------------------+
  | mgmtIpNetmask  | string |                                                |
  +----------------+--------+------------------------------------------------+
  | mgmtIpGateway  | string |                                                |
  +----------------+--------+------------------------------------------------+
  | iloIpAddress   | string |                                                |
  +----------------+--------+------------------------------------------------+
  | iloIpNetmask   | string |                                                |
  +----------------+--------+------------------------------------------------+
  | iloIpGateway   | string |                                                |
  +----------------+--------+------------------------------------------------+
  | iloUsername    | string |                                                |
  +----------------+--------+------------------------------------------------+
  | iloPassword    | string |                                                |
  +----------------+--------+------------------------------------------------+
  | routerHostName | string |                                                |
  +----------------+--------+------------------------------------------------+
  | routerPortName | string |                                                |
  +----------------+--------+------------------------------------------------+

  **Response Example** ::

    {
        'response' : {
            'xmppPasswd' : '**********',
            'profile' : 'EDGE1_CDN1_421',
            'iloUsername' : null,
            'status' : 'REPORTED',
            'ipAddress' : '10.74.27.188',
            'cdnId' : '1',
            'physLocation' : 'plocation-chi-1',
            'cachegroup' : 'cache_group_edge',
            'interfaceName' : 'eth0',
            'ip6Gateway' : null,
            'iloPassword' : null,
            'id' : '1003',
            'routerPortName' : null,
            'lastUpdated' : '2016-01-25 14:16:16',
            'ipNetmask' : '255.255.255.0',
            'ipGateway' : '10.74.27.1',
            'tcpPort' : '80',
            'httpsPort' : '443',
            'mgmtIpAddress' : null,
            'ip6Address' : null,
            'interfaceMtu' : '1500',
            'iloIpGateway' : null,
            'hostName' : 'tc1_ats2',
            'xmppId' : 'tc1_ats1',
            'rack' : null,
            'mgmtIpNetmask' : null,
            'iloIpAddress' : null,
            'mgmtIpGateway' : null,
            'type' : 'EDGE',
            'domainName' : 'my.test.com',
            'iloIpNetmask' : null,
            'routerHostName' : null
        }
    }

|

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

  Allow user to delete server through api.

  Authentication Required: Yes

  Role(s) Required: admin or oper

  **Request Route Parameters**

  +------+----------+---------------------------------+
  | Name | Required | Description                     |
  +======+==========+=================================+
  | id   | yes      | The id of the server to delete. |
  +------+----------+---------------------------------+

  **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": "Server was deleted."
                    }
            ],
    }

|

**POST /api/1.2/servers/{:id}/queue_update**

  Queue or dequeue updates for a specific server.

  Authentication Required: Yes

  Role(s) Required: admin or oper

  **Request Route Parameters**

  +-----------+----------+------------------+
  | Name      | Required | Description      |
  +===========+==========+==================+
  | id        | yes      | the server id.   |
  +-----------+----------+------------------+

  **Request Properties**

  +--------------+---------+-----------------------------------------------+
  | Name         | Type    | Description                                   |
  +==============+=========+===============================================+
  | action       | string  | queue or dequeue                              |
  +--------------+---------+-----------------------------------------------+

  **Response Properties**

  +--------------+---------+-----------------------------------------------+
  | Name         | Type    | Description                                   |
  +==============+=========+===============================================+
  | action       | string  | The action processed, queue or dequeue.       |
  +--------------+---------+-----------------------------------------------+
  | serverId     | integer | server id                                     |
  +--------------+---------+-----------------------------------------------+

  **Response Example** ::

    {
      "response": {
          "serverId": "1",
          "action": "queue"
      }
    }

|

