Перейти к содержанию

API для HTTP-ресурса

Описание

В этом разделе описаны методы API для создания, удаления и изменения конфигурации ваших ресурсов. Также здесь вы найдёте информацию по управлению кэшом и получению статистической информации.

Все ответы (включая ошибки) возвращаются в формате JSON.

Внимание!

Установлено ограничение на количество обращений к API в размере не больше 5 обращений в минуту.

Ниже приведены примеры для управления и конфигурации сервисов, связанных с услугой HTTP-кэширование.

Общий конфиг

Ниже приведён пример общего конфига, а в последующих разделах раскрываются примеры конфигурации каждого из разделов.

        http resource json object (HRJO) - data from request/response
        HRJO structure and keys:
        { 
            id <string> - uid of resource (used in api url)
            name <string> - identificator for web UI (required)
            origin <json> - section for traffic origin description (required)
            certificate <integer> - id of created certificate
            names <json> - section for names description
            robots <json> - section for robots file description
            headers <json> - section for specific headers description
            cache <json> - section for cache options description
            client_cache <json> section for extra cache options description
            auth <json> section for auth options description
            locations <json> section for locations description
        }  

origin section

        {
            https: <boolean> use or not https during requests to origin
            hostname <string> set host header during requests to origin
            servers <json> client nodes description
        }

servers section

        {
            <client_domain/ip_address> - <json> client node address
        }

client node section

        {
            port <integer> client node port (default 80 and 443)
            weight <integer> - load balancing parameters
            read_timeout <integer> - load balancing parameters
            send_timeout <integer> - load balancing parameters
            connect_timeout <integer> - load balancing parameters
            max_fails <integer> - load balancing parameters
            backup <boolean> - use node only in backup mode
        }

names section

        list of string cnames, f.e. [‘alias1.client.cdn.ru’]

robots section

        {
            type <string> ‘deny’, ‘custom’ or ‘cached’
            content <string> client’s robots.txt text (only for ‘custom’ type)
        }

headers section

        {
            request <json> headers for requests to origin
            response <json> header for customer responses
        }

request headers section

        {
            <header_name>:<header_value>
        }

response headers section

        {
            <header_name>:<header_value>
        }

cache section

        {
            disable: <boolean> - do not cache content
            consider_args: <boolean> - use querystring while cache process
            valid: <json> - time of caching
        }

valid section

        {
            2xx <string> cache ttl for 2xx response codes
            3xx <string> cache ttl for 3xx response codes
            4xx <string> cache ttl for 4xx response codes
            5xx <string> cache ttl for 5xx response codes
            force <boolean> force cache update on clientside
        }

client cache section

        {
            expires <integer> expire cache time
        }

locations section

        {
            key <string> path to content 
            headers like global section
            cache like global section
            client cache like global section
            auth like global section
        }

Минимальная конфигурация

Пример минимального конфига с ориджином example.com

{
  "name": "example",
  "origin": {
    "servers": {
      "example.com": {}
    }
  },
}

В этом примере сеть CDNvideo закэширует весь статический контент example.com , используя настройки по умолчанию.

Конфигурация для HTTP-ресурса

Получить все ресурсы

URL: https://api.cdnvideo.ru/cdn/api/v1/<your_account_name>/resource/http/

  • Тип запроса: GET
  • Заголовки: CDN-AUTH-TOKEN
  • Тип данных ответа: JSON Array или JSON Object в случае ошибки
Код ответа Данные ответа Формат ответа Описание
200 Все HTTP-ресурсы для аккаунта или описание ошибки JSON Получен список ресурсов или ошибка
403 None None Запрещено
404 None None Не найдено
500 None None Внутренняя ошибка сервера
503 None None Сервис недоступен

Пример запроса

curl -H 'cdn-auth-token:cdn2_OSKVHEJCGDOPEQJJXQN284ZTQUEPJ2' https://api.cdnvideo.ru/cdn/api/v1/<account_name>/resource/http/

Пример успешного ответа

[{"origin": {"https": false, "servers": {"test.test.te": {"backup": false, "port": 80, "weight": 1}}}, "cdn_domain": "krvdpfc0t0.a.trbcdn.net", "name": "default2", "active": true, "cache": {"consider_args": false}, "robots": {"type": "deny"}, "names": [], "id": "krvdpfc0t0"}, {"origin": {"https": false, "servers": {"test.test.tet": {"backup": false, "port": 80, "weight": 1}}}, "cdn_domain": "zm4rrn4mkt.a.trbcdn.net", "name": "default", "active": true, "cache": {"consider_args": false}, "robots": {"type": "custom", "robotsContent": "1\n"}, "names": [], "id": "zm4rrn4mkt"}]

Пример неуспешного ответа

{"status": "error", "message": "Not allowed method", "description": "Request is forbidden"}

Обратите внимание

Для получения неактивных ресурсов используйте query-параметр "active" с значением "false"

Получить конкретный ресурс

URL: https://api.cdnvideo.ru/cdn/api/v1/<your_account_name>/resource/http/<resource_id>

  • Тип запроса: GET
  • Заголовки: CDN-AUTH-TOKEN
  • Тип данных ответа: JSON Object
Код ответа Данные ответа Формат ответа Описание
200 Конкретный HTTP-ресурс для аккаунта или описание ошибки JSON Получен ресурс или ошибка
403 None None Запрещено
404 None None Не найдено
500 None None Внутренняя ошибка сервера
503 None None Сервис недоступен

Пример запроса

curl -H 'cdn-auth-token:cdn2_OSKVHEJCGDOPEQJJXQN284ZTQUEPJ2' https://api.cdnvideo.ru/cdn/api/v1/<account_name>/resource/http/<resource_id>

Пример успешного ответа

{"origin": {"https": false, "servers": {"test.test.te": {"backup": false, "port": 80, "weight": 1}}}, "cdn_domain": "krvdpfc0t0.a.trbcdn.net", "name": "default2", "active": true, "cache": {"consider_args": false}, "robots": {"type": "deny"}, "names": [], "id": "krvdpfc0t0"}

Пример неуспешного ответа

{"status": "error", "message": "Invalid Token", "description": "Invalid or expired token"}

Обратите внимание

Для получения неактивного ресурса используйте query-параметр "active" с значением "false"

Создать ресурс

URL: https://api.cdnvideo.ru/cdn/api/v1/<your_account_name>/resource/http/

  • Тип запроса: POST
  • Заголовки: CDN-AUTH-TOKEN
  • Тело запроса: JSON с данными создаваемого ресурса
  • Тип данных ответа: JSON Object
Код ответа Данные ответа Формат ответа Описание
200 task_id, resource_id или описание ошибки JSON Создан, id задачи в общей очереди задач или ошибка
400 None None Неверный запрос
404 None None Не найдено
500 None None Внутренняя ошибка сервера
503 None None Сервис недоступен

Пример запроса

curl -H 'cdn-auth-token:cdn2_2YXPIWIYRT15SZGQ2Q0JN362PUDXIE' 
  -X POST 
  -d '{"origin": {"servers": {"<origin_host>": {"port": 80}}},  "name": "<resource_name>"}'
  https://api.cdnvideo.ru/cdn/api/v1/<account_name>/resource/http/

Пример успешного ответа

{"status": "accept", “task_id": "20180402162358692400", "resource_id": "v7sdnx3ytm"}

Пример неуспешного ответа

{"status": "error", "message": "value invalid name", "description": "Json invalid name is not uniq in account <account_name>"}

Изменить ресурс

URL: https://api.cdnvideo.ru/cdn/api/v1/<your_account_name>/resource/http/<resource_id>

  • Тип запроса: PATCH
  • Заголовки: CDN-AUTH-TOKEN
  • Тело запроса: JSON с новыми данными ресурса
  • Тип данных ответа: JSON Object
Код ответа Данные ответа Формат ответа Описание
200 task_id или описание ошибки None Изменен, id задачи в общей очереди задач или ошибка
400 None None Неверный запрос
404 None None Не найдено
500 None None Внутренняя ошибка сервера
503 None None Сервис недоступен

Пример запроса

curl -H 'cdn-auth-token:cdn2_2YXPIWIYRT15SZGQ2Q0JN362PUDXIE'
  -X PATCH
  -d '{"origin": {"servers": {"<new_origin_host>": {"port": 80}}},  "name": "<new_resource_name>"}'
  https://api.cdnvideo.ru/cdn/api/v1/<account_name>/resource/http/<resource_id>

Пример успешного ответа

{"status": "accept", “task_id": "20180402162358692401"}

Пример неуспешного ответа

{"status": "error", "message": "Json invalid", "description": "Key incorrect or not found ( origin )"}

Деактивация ресурса

URL: https://api.cdnvideo.ru/cdn/api/v1/<your_account_name>/resource/http/<resource_id>

  • Тип запроса: PATCH
  • Заголовки: CDN-AUTH-TOKEN
  • Тип данных ответа: JSON Object
Код ответа Данные ответа Формат ответа Описание
200 task_id или описание ошибки JSON Деактивирован, id задачи в общей очереди задач или ошибка
400 None None Неверный запрос
404 None None Не найдено
500 None None Внутренняя ошибка сервера
503 None None Сервис недоступен

Пример запроса

curl -H 'cdn-auth-token:cdn2_2YXPIWIYRT15SZGQ2Q0JN362PUDXIE'
  -X PATCH
  -d '{"active": false, "origin": {"servers": {"<origin_host>": {"port": 80}}},  "name": "<resource_name>"}'
  https://api.cdnvideo.ru/cdn/api/v1/<account_name>/resource/http/<resource_id>

Пример успешного ответа

{"status": "accept", "task_id": "20180402162358692413"}

Пример неуспешного ответа

{"status": "error", "message": "Not allowed method", "description": "Request is forbidden"}

Активация ресурса

URL: https://api.cdnvideo.ru/cdn/api/v1/<your_account_name>/resource/http/<resource_id>

  • Тип запроса: PATCH
  • Заголовки: CDN-AUTH-TOKEN
  • Тип данных ответа: JSON Object
Код ответа Данные ответа Формат ответа Описание
200 task_id или описание ошибки JSON Активирован, id задачи в общей очереди задач или ошибка
400 None None Неверный запрос
404 None None Не найдено
500 None None Внутренняя ошибка сервера
503 None None Сервис недоступен

Пример запроса

curl -H 'cdn-auth-token:cdn2_2YXPIWIYRT15SZGQ2Q0JN362PUDXIE'
  -X PATCH
  -d '{"active": true, "origin": {"servers": {"<origin_host>": {"port": 80}}},  "name": "<resource_name>"}'
  https://api.cdnvideo.ru/cdn/api/v1/<account_name>/resource/http/<resource_id>

Пример успешного ответа

{"status": "accept", "task_id": "20180402162358692413"}

Пример неуспешного ответа

{"status": "error", "message": "Not allowed method", "description": "Request is forbidden"}

Локальная авторизация

Создание ресурса с локальной авторизацией

URL: https://api.cdnvideo.ru/cdn/api/v1/<your_account_name>/resource/http/

  • Тип запроса: POST
  • Заголовки: CDN-AUTH-TOKEN
  • Тело запроса: JSON с данными создаваемого ресурса и параметрами локальной авторизации
  • Тип данных ответа: JSON Object
Код ответа Данные ответа Формат ответа Описание
200 task_id, resource_id или описание ошибки JSON Создан, id задачи в общей очереди задач или ошибка
400 None None Неверный запрос
404 None None Не найдено
500 None None Внутренняя ошибка сервера
503 None None Сервис недоступен

Пример запроса

curl -H 'cdn-auth-token:cdn2_2YXPIWIYRT15SZGQ2Q0JN362PUDXIE' 
  -X POST 
  -d '{"auth": {"md5": {"secret": "123", "forever": true, "anywhere": true}}, "origin": {"servers": {"<origin_host>": {"port": 80}}},  "name": "<resource_name>"}'
  https://api.cdnvideo.ru/cdn/api/v1/<account_name>/resource/http/

Пример успешного ответа

{"status": "accept", “task_id": "20180402162358692400", "resource_id": "v7sdnx3ytm"}

Пример неуспешного ответа

{"status": "error", "message": "value invalid name", "description": "Json invalid name is not uniq in account <account_name>"}

Изменение локальной авторизации ресурса

URL: https://api.cdnvideo.ru/cdn/api/v1/<your_account_name>/resource/http/<resource_id>

  • Тип запроса: PATCH
  • Заголовки: CDN-AUTH-TOKEN
  • Тело запроса: JSON с измененными параметрами локальной авторизации
  • Тип данных ответа: JSON Object
Код ответа Данные ответа Формат ответа Описание
200 task_id или описание ошибки None Изменен, id задачи в общей очереди задач или ошибка
400 None None Неверный запрос
404 None None Не найдено
500 None None Внутренняя ошибка сервера
503 None None Сервис недоступен

Пример запроса

curl -H 'cdn-auth-token:cdn2_2YXPIWIYRT15SZGQ2Q0JN362PUDXIE'
  -X PATCH
  -d '{"auth": {"md5": {"secret": "456", "forever": true}}, "origin": {"servers": {"<origin_host>": {"port": 80}}},  "name": "<resource_name>"}'
  https://api.cdnvideo.ru/cdn/api/v1/<account_name>/resource/http/<resource_id>

Пример успешного ответа

{"status": "accept", "task_id": "20180402162358692413"}

Пример неуспешного ответа

{"status": "error", "message": "Not allowed method", "description": "Request is forbidden"}

Расширение зон раздачи

Подключение дополнительных зон раздачи через сеть China Net Center (партнёр CDNvideo). Подробнее о покрытии партнёрской сети вы можете посмотреть на карте

Посмотреть текущую конфигурацию

URL: https://api.cdnvideo.ru/cdn/api/v1/<your_account_name>/cncconfiguration/<resource_id>

  • Тип запроса: GET
  • Заголовки: CDN-AUTH-TOKEN
  • Тип данных ответа: JSON Object
Код ответа Данные ответа Формат ответа Описание
200 code: тип integer, message: тип string, data: {areas: тип list, certificate: тип string или None, cnc_configured: тип bool, is_changes_apply: тип bool} JSON OK
401 None None Не авторизован
500 None None Внутренняя ошибка сервера

Возможные значения areas:

Значение Описание
am Америка
apac Азиатско-Тихоокеанский регион
emea Европа, Ближний Восток, Африка

Пример запроса

curl -H 'cdn-auth-token: cdn2_P5OGFSL0USFFEW2NWU2VCKK79FQJU2'
https://api.cdnvideo.ru/cdn/api/v1/cpfgdakp/cncconfiguration/lajjncnn6d

Пример успешного ответа

{
  "message": "Ok",
  "code": 200,
  "data": {
    "is_changes_apply": true,
    "cnc_configured": true,
    "certificate": null,
    "areas": ["apac", "emea"]
  }
}

Подключить/Изменить зоны раздачи

URL: https://api.cdnvideo.ru/cdn/api/v1/<your_account_name>/cncconfiguration/<resource_id>

  • Тип запроса: POST
  • Заголовки: CDN-AUTH-TOKEN
  • Тело запроса: JSON с данными конфигурации
  • Тип данных ответа: JSON Object

Описание параметров тела запроса:

Имя параметра Тип параметра Обязательный
{areas, certificate} JSON Object Да
areas Array, одно или несколько значений из ("apac", "am", "emea") Да
certificate String или None Нет

Возможные коды ответа:

Код ответа Данные ответа Формат ответа Описание
200 message: тип string, code: тип integer JSON ОК
400 None None Неверный запрос
401 None None Не авторизован
409 None None Конфликт (предыдущее изменение еще не применилось)

Пример запроса

curl -X POST -d '{"areas": ["apac", "emea"]}'
-H 'cdn-auth-token: cdn2_P5OGFSL0USFFEW2NWU2VCKK79FQJU2'
https://api.cdnvideo.ru/cdn/api/v1/cpfgdakp/cncconfiguration/lajjncnn6d

Пример успешного ответа

{
  "message": "Ok",
  "code": 200
}

Отключить дополнительные зоны раздачи

URL: https://api.cdnvideo.ru/cdn/api/v1/<your_account_name>/cncconfiguration/<resource_id>

  • Тип запроса: POST
  • Заголовки: CDN-AUTH-TOKEN
  • Тело запроса: JSON с данными конфигурации
  • Тип данных ответа: JSON Object

Описание параметров тела запроса:

Имя параметра Тип параметра Обязательный
{areas, certificate} JSON Object Да
areas Пустой Array [ ] Да
certificate String или None Нет

Возможные коды ответа:

Код ответа Данные ответа Формат ответа Описание
200 message: тип string, code: тип integer JSON ОК
400 None None Неверный запрос
401 None None Не авторизован
409 None None Конфликт (предыдущее изменение еще не применилось)

Пример запроса

curl -X POST -d '{"areas": []}'
-H 'cdn-auth-token: cdn2_P5OGFSL0USFFEW2NWU2VCKK79FQJU2'
https://api.cdnvideo.ru/cdn/api/v1/cpfgdakp/cncconfiguration/lajjncnn6d

Пример успешного ответа

{
  "message": "Ok",
  "code": 200
}

Управление кэшем

Предзагрузка или удаление файлов из cache, а также полный сброс cache.

Данные операции выполняются асинхронно и в ответе возвращается task_id - идентификатор задачи. При наличии task_id можно проверить статус задачи (описано ниже).

Удалить файл

URL: https://api.cdnvideo.ru/app/cache/v2/objects?cdn_url=http://<domain>/path/to/file

В качестве <domain> может использоваться либо выделенный CDN-домен <resource_id>.a.trbcdn.net, либо CNAME.

  • Тип запроса: DELETE
  • Заголовки: CDN-AUTH-TOKEN
  • Тип данных ответа: JSON Object

Параметры строки запроса:

Имя параметра Тип значения Обязательный
cdn_url Текст Да

Возможные коды ответа:

Код ответа Данные ответа Формат ответа Описание
202 task_id: тип string JSON ОК
401 None None Доступ запрещен
503 None None Сервис недоступен

Пример запроса

curl -X DELETE
-H 'cdn-auth-token:cdn2_G5LVU4LSC85AO2RAG4G1DL90I7CADR'
'https://api.cdnvideo.ru/app/cache/v2/objects?cdn_url=http://lajjncnn6d.a.trbcdn.net/aloha/cdn/sample_03.flv'

Пример успешного ответа

{
  "task_id": "f0f9601e75b2415db0e2219ea07d8fde"
}

Сбросить весь кэш

URL: https://api.cdnvideo.ru/app/cache/v2/objects?cdn_url=http://<domain>/path/to/file&all

В качестве <domain> может использоваться либо выделенный CDN-домен <resource_id>.a.trbcdn.net, либо CNAME.

  • Тип запроса: DELETE
  • Заголовки: CDN-AUTH-TOKEN
  • Тип данных ответа: JSON Object

Параметры строки запроса:

Имя параметра Тип значения Обязательный
cdn_url Текст Да
all Значение отсутствует Да

Возможные коды ответа:

Код ответа Данные ответа Формат ответа Описание
202 task_id: тип string JSON ОК
401 None None Доступ запрещен
503 None None Сервис недоступен

Пример запроса

curl -X DELETE
-H 'cdn-auth-token:cdn2_G5LVU4LSC85AO2RAG4G1DL90I7CADR'
'https://api.cdnvideo.ru/app/cache/v2/objects?cdn_url=http://lajjncnn6d.a.trbcdn.net/aloha/cdn/sample_03.flv&all'

Пример успешного ответа

{
  "task_id": "ccf82df380a34fe7a4992ca810ccfee4"
}

Предзагрузить файл

URL: https://api.cdnvideo.ru/app/cache/v2/objects?cdn_url=http://origin:port/path/to/file

  • Тип запроса: PUT
  • Заголовки: CDN-AUTH-TOKEN
  • Тип данных ответа: JSON Object

Параметры строки запроса:

Имя параметра Тип значения Обязательный
cdn_url Текст Да

Возможные коды ответа:

Код ответа Данные ответа Формат ответа Описание
202 task_id: тип string JSON ОК
401 None None Доступ запрещен
503 None None Сервис недоступен

Пример запроса

curl -X PUT
-H 'cdn-auth-token:cdn2_G5LVU4LSC85AO2RAG4G1DL90I7CADR'
'https://api.cdnvideo.ru/app/cache/v2/objects?cdn_url=http://cache-cdntest.cdnvideo.ru/aloha/cdn/sample_03.flv'

Пример успешного ответа

{
  "task_id": "7a14702e80ec4b99ba5792ca9d781b3d"
}

Проверить статус задачи

URL: https://api.cdnvideo.ru/app/cache/v2/tasks?id=<task_id>

  • Тип запроса: GET
  • Заголовки: CDN-AUTH-TOKEN
  • Тип данных ответа: JSON Object

Возможные коды ответа:

Код ответа Данные ответа Формат ответа Описание
200 task_description: тип string, status: тип string, date_started: тип string, message: тип string JSON ОК
400 None None Неверный запрос
401 None None Доступ запрещен
503 None None Сервис недоступен

Пример запроса

curl -X GET
-H 'cdn-auth-token:cdn2_G5LVU4LSC85AO2RAG4G1DL90I7CADR'
'https://api.cdnvideo.ru/app/cache/v2/tasks?id=7a14702e80ec4b99ba5792ca9d781b3d'

Пример успешного ответа

{
  "task_description": "PRELOAD http://cache-cdntest.cdnvideo.ru/aloha/cdn/sample_03.flv",
  "status": "completed",
  "date_started": "2018-11-27T09:55:11",
  "message": ""
}