Методы API для виртуального хостинга
Общая информация о работе с API
Доступ к API предоставляется по запросу в службу поддержки. При этом вам будет выдан ключ API, необходимый для авторизации в сервисе.
Обращение к API выполняется GET-, POST-, DELETE-запросами к URL https://api.timeweb.ru
.
Синтаксис запросов для доступных действий — в инструкции ниже.
Обратите внимание! Для работы с API двухфакторная аутентификация в панель управления (опция «Подтверждение входа через SMS» в разделе «Настройки доступа») должна быть отключена.
Авторизация
Для авторизации в системе необходимы следующие данные:
- Логин аккаунта.
- Пароль аккаунта.
- Ключ API (appkey) — предоставляется по запросу в Службу поддержки.
В ответ на запрос авторизации будет предоставлен токен для последующей аутентификации при работе с API.
AppKey и токен действуют без ограничений до блокировки или удаления аккаунта.
Шаблон запроса
curl -X POST "https://api.timeweb.ru/v1.2/access" \
-H "accept: application/json" \
-H "x-app-key: {appkey}" \
-u {login}:{password}
#Например:
curl -X POST "https://api.timeweb.ru/v1.2/access" \
-H "accept: application/json" \
-H "x-app-key: 9d999b163fdc572524028201a02c9999" \
-u cn90632:dhasfaGdss8F
В ответ будут возвращены данные, содержащие, в том числе, поле token:
"token": "639Х89ee-259d-4dd5-9fХ0-8e7ХХ6d893ХХХ"
Пример запроса с использованием токена:
curl -X GET "https://api.timeweb.ru/v1.1/accounts/cn9632/status" \
-H "accept: */*" \
-H "x-app-key: 9d999b163fdc572524028201a02c9999" \
-H "Authorization: Bearer 639Х89ee-259d-4dd5-9fХ0-8e7ХХ6d893ХХХ"
Используемые параметры
- {appkey} — ключ API, полученный в поддержке.
- {login} — логин аккаунта, с которым производятся действия.
- {token} — токен, полученный при авторизации.
- {domain} — домен, с которым выполняются действия; всегда вида domain.ru.
- {subdomain} — поддомен, с которым выполняются действия; всегда вида subdomain.
- {idrecords} — ID ресурсной записи (берется из метода получения ресурсных записей для домена).
Доступные операции
Статус аккаунта
GET /v1.1/accounts/{login}/status
Шаблон запроса:
curl -X GET "https://api.timeweb.ru/v1.1/accounts/{login}/status" \
-H "accept: */*" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}"
Пример ответа:
"autopay_cardinfo": "",
"autopay_cardowner": "",
"autopay_last": "0000-00-00 00:00:00+03:00",
"balance": 54.45901489,
"blocked": false,
"country": "ru",
"cp_login_date": "2018-02-20T16:16:32Z",
"cp_theme": "default",
"cron_mailto": "",
"customer_id": "cn9632",
"days_left": 16.609999541449998,
"dedic_order_stage": null,
"invoice_auto_creation": false,
"last_password_changed": "2020-02-04T13:43:03Z",
"mail_auto_limit": false,
"mysql_password": "8Lxx75335awK",
"mysql_super_access": true,
"new_panel": true,
"next_plan_id": null,
"order_plan_id": 917,
"password_expired": false,
"permanent_block": false,
"personal_manager": "",
"plan_expires_date": "2020-05-31T15:28:33Z",
"plan_id": 20,
"recv_invoice_copy": true,
"sms_auth": false,
"ssh": true,
"want_bill_letters": "U",
"ym_client_id": null
Сведения о финансах и оплате
GET /v1.1/finances/accounts/{login}
Шаблон запроса
curl -X GET "https://api.timeweb.ru/v1.1/finances/accounts/{login}" \
-H "accept: application/json" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}"
Пример ответа
"available_balance": 54.45901489,
"balance": 54.45901489,
"currency": "RUB",
"discount_end_date": "",
"discount_percent": 0,
"hourly_cost": 0.1366120218579235,
"hourly_fee": 0.1366120218579235,
"monthly_cost": 100,
"monthly_fee": 100,
"total_paid": 160
Информация о сайтах на аккаунте
GET /v1.1/sites/{login}
Шаблон запроса
curl -X GET "https://api.timeweb.ru/v1.1/sites/{login}" \
-H "accept: application/json" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}"
Пример ответа
"customer_id": "cn9632",
"db_created": false,
"directory": "oip",
"domains": [
"cn9632.tmweb.ru"
],
"encoding": "UTF-8",
"http2": false,
"id": 2807457,
"infected": false,
"php_version": "5.6",
"python_version": "2.7",
"redirect": null,
"site_caption": ""
Информация о базах данных
GET /v1.2/databases/{login}/mysql/
Шаблон запроса
curl -X GET "https://api.timeweb.ru/v1.2/databases/{login}/mysql/" \
-H "accept: */*" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}"
Создание нового сайта
POST /v1.1/sites/{login}
Шаблон запроса
curl -X POST "https://api.timeweb.ru/v1.1/sites/{login}" \
-H "accept: application/json" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d "{\"site_caption\":\"имя_директории_сайта\", \
\"directory\":\"имя_директории_сайта\"}"
Параметры site_caption и directory совпадают и указывают на имя директории, в которой будут размещены файлы сайта.
Добавление домена в панель
POST /v1/accounts/{login}/domains/{domain}/nameserver
Шаблон запроса
curl -X POST "https://api.timeweb.ru/v1/accounts/{login}/domains/{domain}/nameserver" \
-H "accept: application/json" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}"
Добавление поддомена в панель
POST /v1.1/accounts/{login}/domains/{domain}/subdomains/{subdomain}
Шаблон запроса
curl -X POST "https://api.timeweb.ru/v1.1/accounts/{login}/domains/{domain}/subdomains/{subdomain}" \
-H "accept: */*" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}"
Получение ID персоны администратора домена
GET /v3/accounts/{login}/persons
Шаблон запроса
curl -X GET "https://api.timeweb.ru/v3/accounts/{login}/persons" \
-H "accept: application/json" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}"
Пример ответа
"address": "Россия, Санкт-Петербург, ул.Заставская дом 22 А",
"birthdate": "1990-01-01",
"country_code": "",
"document_id": "1234",
"email": "mail@example.ru",
"fax": "",
"id": 123456,
"is_closed": false,
"name_eng": "Ivanov Ivan Ivanovich",
"name_rus": "Иванов Иван Иванович",
"passport_date": "2010-01-01",
"passport_number": "567890",
"passport_place": "ТП N123 ОУФМС России по СПб и Лен. обл",
"passport_series": "1234",
"phone": "+7 (999) 123-45-67",
"postcode": "196006",
"resident": "Y",
"type": "person"
Создание заявки на регистрацию домена
POST /v1.1/domains/request
Шаблон запроса
curl -v -X POST "https://api.timeweb.ru/v1.1/domains/request" \
-H "accept: */*" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d "{\"action\":\"register\", \
\"autoprolong\":false, \
\"fqdn\":\"{domain}\", \
\"person_id\":1, \
\"whois_privacy\":false}"
Параметры:
- autoprolong — включение опции автопродления, true / false.
- fqdn — домен, который вы хотите зарегистрировать.
- person_id — ID администратора домена, на чьи данные будет зарегистрирован домен (ID можно получить из запроса выше).
- whois_privacy — включение опции скрытия данных администратора домена, true / false.
В ответе на запрос будет указан ID заявки на регистрацию в заголовке Location, например:
location: https://api.timeweb.ru/v1.1/domains/request/123456
В данном случае ID — 123456. ID заявки необходим для запроса на оплату регистрации (метод ниже).
Оплата регистрации с баланса аккаунта
PUT /v1.1/domains/request/{id}
Шаблон запроса
curl -X PUT "https://api.timeweb.ru/v1.1/domains/request/{id}" \
-H "accept: */*" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d "{\"person_id\":1, \
\"auth_code\":\"abcdefghij\", \
\"money_source\":\"use\"}"
Параметры:
- id — ID заявки на регистрацию, берется из запроса выше.
- person_id — ID администратора домена, на чьи данные будет зарегистрирован домен.
Параметр money_source определяет способ оплаты: при указании use заявка будет оплачена с баланса аккаунта.
Добавление ресурсной записи для домена
POST /v1.2/accounts/{login}/domains/{domain}/user-records/
Шаблон запроса
curl -X POST "https://api.timeweb.ru/v1.2/accounts/{login}/domains/{domain}/user-records/" \
-H "accept: */*" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d "{\"data\": \
{\"host\":\"mail.server.com\", \
\"port\":443, \
\"priority\":10, \
\"protocol\":\"_TCP\", \
\"service\":\"_sip\"}, \
\"type\":\"SRV\"}"
Параметры port, priority, protocol, service могут быть удалены из запроса, если не требуются.
Получение ресурсных записей домена
GET /v1.2/accounts/{login}/domains/{domain}/user-records
Шаблон запроса
# Запрос по умолчанию, выдаст 10 ресурсных записей:
curl -X GET "https://api.timeweb.ru/v1.2/accounts/{login}/domains/{domain}/user-records" \
-H "accept: */*" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}"
# Для выдачи большего количества используется параметр limit:
curl -X GET "https://api.timeweb.ru/v1.2/accounts/{login}/domains/{domain}/user-records?limit=100" \
-H "accept: */*" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}"
# Для удобства дополнительно можно использовать offset:
curl -X GET "https://api.timeweb.ru/v1.2/accounts/{login}/domains/{domain}/user-records?limit=100&offset=20" \
-H "accept: */*" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}"
Пример ответа
{
"data": {
"subdomain": "test",
"value": "v=spf1 ip4:176.57.223.0/24 ip4:92.53.116.0/22 ip6:2a03:6f00::/32 ~all"
},
"id": 29044587,
"type": "TXT"
},
{
"data": {
"value": "193.164.150.42"
},
"id": 29044532,
"type": "A"
},
{
"data": {
"priority": 20,
"value": "mx2.timeweb.ru"
},
"id": 29044498,
"type": "MX"
},
{
"data": {
"priority": 10,
"value": "mx1.timeweb.ru"
},
"id": 29044497,
"type": "MX"
},
{
"data": {
"subdomain": null,
"value": "v=spf1 ip4:176.57.223.0/24 ip4:92.53.116.0/22 ip6:2a03:6f00::/32 ~all"
},
"id": 29044494,
"type": "TXT"
}
ID ресурсной записи, полученный в данном запросе (например: "id": 29044494), используется для удаления записей.
Удаление ресурсной записи
DELETE /v1.2/accounts/{login}/domains/{domain}/user-records/{idrecords}/
Шаблон запроса
curl -X DELETE "https://api.timeweb.ru/v1.2/accounts/{login}/domains/{domain}/user-records/{idrecords}/" \
-H "accept: */*" \
-H "x-app-key: {appkey}" \
-H "Authorization: Bearer {token}"
ID записи (параметр idrecords) можно получить из метода выше.