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

Config Files and Config File Metadata
===

.. _to-api-v12-configfiles-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."
      }
    ]
  }

