Методы API для виртуального хостинга

Общая информация о работе с API

Доступ к API предоставляется по запросу в службу поддержки. При этом вам будет выдан ключ API, необходимый для авторизации в сервисе. 

Обращение к API выполняется GET-, POST-, DELETE-запросами к URL https://api.timeweb.ru.

Синтаксис запросов для доступных действий — в инструкции ниже.

Обратите внимание! Для работы с API двухфакторная аутентификация в панель управления (опция «Подтверждение входа через SMS» в разделе «Настройки доступа») должна быть отключена.

Авторизация

Для авторизации в системе необходимы следующие данные:

  1. Логин аккаунта.
  2. Пароль аккаунта.
  3. Ключ 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) можно получить из метода выше.