.. 
.. 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.json**

  Retrieves properties of CDN servers.

  Authentication Required: Yes

  **Response Properties**

  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  |     Parameter      |  Type  |                                                Description                                                 |
  +====================+========+============================================================================================================+
  | ``cachegroup``     | string | The cache group name (see :ref:`to-api-v12-cachegroup`).                                                   |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``domainName``     | string | The domain name part of the FQDN of the cache.                                                             |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``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 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).                                                        |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``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).                 |
  +--------------------+--------+------------------------------------------------------------------------------------------------------------+
  | ``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",
              "domainName": "chi.kabletown.net",
              "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": "",
              "physLocation": "plocation-chi-1",
              "profile": "EDGE1_CDN1_421_SSL",
              "rack": "RR 119.02",
              "routerHostName": "rtr-chi.kabletown.net",
              "routerPortName": "2",
              "status": "ONLINE",
              "tcpPort": "80",
              "type": "EDGE",
              "xmppId": "atsec-chi-00-dummyxmpp",
              "xmppPasswd": "**********"
          },
          {
          ... more server data
          }
        ]
    }


|

**GET /api/1.2/servers/summary.json**

  Retrieves a count of CDN servers by type.

  Authentication Required: Yes

  **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": "REDIS"
        },
        {
          "count": 4,
          "type": "RASCAL"
        }
    }

|

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

  Retrieves the details of a server.

  Authentication Required: Yes

  **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).                  |
  +----------------------+--------+-------------------------------------------------------------------------------------------------------------+
  | ``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",
        "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

  **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 Content Type: application/json

  **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."
          }
        ],
    }

