.. 
.. 
.. 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-configfiles-ats:

Config Files and Config File Metadata
===

.. _to-api-v12-configfiles-ats-route:

/api/1.2/servers/:hostname/configfiles/ats
/api/1.2/servers/:host_id/configfiles/ats
+++++++++++++

**GET /api/1.2/servers/:hostname/configfiles/ats**
**GET /api/1.2/servers/:host_id/configfiles/ats**


  Authentication Required: Yes

  Role(s) Required: Operator

  **Request Query Parameters**

  **Response Properties**

  +======================================================================================================+
  |                                        Info Section                                                  |
  +-------------------+--------+-------------------------------------------------------------------------+
  |    Parameter      |  Type  |                               Description                               |
  +===================+========+=========================================================================+
  | ``profileId``     | string | The ID of the profile assigned to the cache.                            |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``profileName``   | string | The name of the profile assigned to the cache.                          |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``toRevProxyUrl`` | string | The configured reverse proxy cache for configfile requests.             |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``toURL``         | string | The configured URL for Traffic Ops.                                     |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``serverIpv4``    | string | The configured IP address of the cache.                                 |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``serverName``    | string | The cache's short form hostname.                                        |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``serverId``      | string | The cache's Traffic Ops ID.                                             |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``cdnId``         | string | The ID of the cache's assigned CDN.                                     |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``cdnName``       | string | The name of the cache's assigned CDN.                                   |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``serverTcpPort`` | string | The configured port of the server's used by ATS.                        |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``serverTcpPort`` | string | The configured port of the server's used by ATS.                        |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``serverTcpPort`` | string | The configured port of the server's used by ATS.                        |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``serverTcpPort`` | string | The configured port of the server's used by ATS.                        |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``serverTcpPort`` | string | The configured port of the server's used by ATS.                        |
  +======================================================================================================+
  |                                    configFiles Section                                               |
  +-------------------+--------+-------------------------------------------------------------------------+
  |    Parameter      |  Type  |                               Description                               |
  +===================+========+=========================================================================+
  | ``fnameOnDisk``   | string | The filename of the configuration file as stored on the cache.          |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``location``      | string | The directory location of the configuration file as stored on the cache.|
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``apiUri``        | string | The path to generate the configuration file from Traffic Ops.           |
  +-------------------+--------+-------------------------------------------------------------------------+
  | ``scope``         | string | The scope of the configuration file.                                    |
  +-------------------+--------+-------------------------------------------------------------------------+
  

  **Response Example** ::

  {
    "info": {
      "profileId": 278,
      "toRevProxyUrl": "https://to.example.com:81",
      "toUrl": "https://to.example.com/",
      "serverIpv4": "192.168.1.5",
      "serverTcpPort": 80,
      "serverName": "cache-ats-01",
      "cdnId": 1,
      "cdnName": "CDN_1",
      "serverId": 21,
      "profileName": "EDGE_CDN_1_EXAMPLE"
    },
    "configFiles": [
      {
        "fnameOnDisk": "remap.config",
        "location": "/opt/trafficserver/etc/trafficserver",
        "apiUri": "/api/1.2/profiles/EDGE_CDN_1_EXAMPLE/configfiles/ats/remap.config",
        "scope": "profiles"
      },
      {
        "fnameOnDisk": "ssl_multicert.config",
        "location": "/opt/trafficserver/etc/trafficserver",
        "apiUri": "/api/1.2/cdns/CDN_1/configfiles/ats/ssl_multicert.config",
        "scope": "cdns"
      },
      {
        "fnameOnDisk": "parent.config",
        "location": "/opt/trafficserver/etc/trafficserver",
        "apiUri": "/api/1.2/servers/cache-ats-01/configfiles/ats/parent.config"
      }
    ]
  }


/api/1.2/servers/:hostname/configfiles/ats/:configfile
/api/1.2/servers/:host_id/configfiles/ats/:configfile
+++++++++++++

**GET /api/1.2/servers/:hostname/configfiles/ats/:configfile**
**GET /api/1.2/servers/:host_id/configfiles/ats/:configfile**


  Authentication Required: Yes

  Role(s) Required: Operator

  **Request Query Parameters**

  **Response Properties**

  Returns the requested configuration file for download.  If scope used is incorrect for the config file requested, returns a 404 with the correct scope.

  **Response Example** ::

  {
    "alerts": [
      {
        "level": "error",
        "text": "Error - incorrect file scope for route used.  Please use the profiles route."
      }
    ]
  }


/api/1.2/profiles/:profile_name/configfiles/ats/:configfile
/api/1.2/profiles/:profile_id/configfiles/ats/:configfile
+++++++++++++

**GET /api/1.2/profiles/:profile_name/configfiles/ats/:configfile**
**GET /api/1.2/profiles/:profile_id/configfiles/ats/:configfile**


  Authentication Required: Yes

  Role(s) Required: Operator

  **Request Query Parameters**

  **Response Properties**

  Returns the requested configuration file for download.  If scope used is incorrect for the config file requested, returns a 404 with the correct scope.

  **Response Example** ::

  {
    "alerts": [
      {
        "level": "error",
        "text": "Error - incorrect file scope for route used.  Please use the cdns route."
      }
    ]
  }


/api/1.2/cdns/:cdn_name/configfiles/ats/:configfile
/api/1.2/cdns/:cdn_id/configfiles/ats/:configfile
+++++++++++++

**GET /api/1.2/cdns/:cdn_name/configfiles/ats/:configfile**
**GET /api/1.2/cdns/:cdn_id/configfiles/ats/:configfile**


  Authentication Required: Yes

  Role(s) Required: Operator

  **Request Query Parameters**

  **Response Properties**

  Returns the requested configuration file for download.  If scope used is incorrect for the config file requested, returns a 404 with the correct scope.

  **Response Example** ::

  {
    "alerts": [
      {
        "level": "error",
        "text": "Error - incorrect file scope for route used.  Please use the servers route."
      }
    ]
  }

