rest-user REST API: лимиты, состояние аккаунта и тарифы
Методы аккаунта, вошедшего через user/auth: остаток лимитов, какие задачи и проверки сейчас идут, список тарифов с ценами и покупка тарифа с баланса. Все методы синхронные.
- Адрес
/api-rest/…- Авторизация
- JWT в заголовке
token - Списания
user/tariff/buyсписывает деньги с баланса
Остаток лимитов
/api-rest/user/get-limits
Месячный лимит пользователя: сколько всего, сколько потрачено и сколько осталось. Если тариф не даёт лимитов (базовые ограничения), все три числа — 0.
Параметры query и тело формы
-
tokenstring обязательный заголовокAccess token из user/auth.
Ответ
-
data.totalintЛимитов на месяц. -
data.usedintПотрачено в этом месяце. -
data.availablestringОсталось:total − used. Приходит строкой. -
data.month_total, data.month_limitsintТо же «всего» и «потрачено» за месяц; есть, только если месячный лимит больше нуля.
Состояние аккаунта и идущие задачи
/api-rest/user/state/get
Снимок для экрана приложения: задачи инструментов, которые ждут очереди или выполняются, прогресс фоновых процессов по каждому проекту, баланс и тариф. Удобно опрашивать, чтобы показать ход проверки позиций, запущенной через positions/schedule.
Параметры query и тело формы
-
tokenstring обязательный заголовокAccess token из user/auth.
Ответ
-
data.tools[]arrayЗадачи инструментов в очереди или в работе.Вложенные поля
-
hidintID задачи в истории инструментов. -
progressintПрогресс, %. -
tools_idintID инструмента.
-
-
data.projectsobjectКлюч — ID проекта (свои и с выданным доступом). Значение — прогресс процессов: число в процентах илиfalse, если процесс не идёт.Вложенные поля
-
positions_yandexint|falseПроверка позиций. -
qdataint|falseСбор данных по запросам (частоты). -
pfint|falseПоведенческие факторы. -
intopt, extoptint|falseВнутренняя оптимизация и ссылочная масса. -
distribution_import, queries_import, queries_import_spreadsheetint|falseИмпорт распределения и запросов. -
url_group_generationint|falseГенерация групп URL. -
todo[]arrayПересчёт задач TODO:{task_id, progress}. Ключа нет, если пересчёта нет.
-
-
data.noticesarrayЗарезервировано, сейчас всегда пустой. -
data.userobjectid,email,name,balance(рубли) иtariff:id,name,date_end,price.
Тарифы и цены по периодам
/api-rest/tariff/list/get
Публичные тарифы и цены на 10, 30, 90 и 365 дней с учётом скидки за период и личных промо-скидок пользователя — из двух скидок берётся бо́льшая. Отсюда берут tariff_id и period для user/tariff/buy.
Параметры query и тело формы
-
tokenstring обязательный заголовокAccess token из user/auth.
Ответ
-
data.tariffs[]arrayСтроки справочника тарифов, все значения — строки.Вложенные поля
-
id, namestringID и название тарифа. -
pricestringЦена за 30 дней, рубли. -
limits_pricestringБазовая цена докупки лимитов по тарифу, рубли — из неё калькулятор считает стоимость пакета. -
api_access, api_limitstringДоступ к API и его лимит. -
hourly_limits, monthly_limitsstringЛимиты тарифа в час и в месяц. -
role, support, base, datestringСлужебные поля справочника.
-
-
data.pricesobjectКлюч — период в днях (10,30,90,365).Вложенные поля
-
percentintСкидка за период, %. -
period, labelint|stringПериод в днях и подпись: «30 дней». -
tariffs_dataobjectКлюч — ID тарифа:full_priceбез скидки,end_priceк оплате,end_price_word— склонение «рубль»,benefit— выгода:value,word,percent.
-
Покупка или продление тарифа
/api-rest/user/tariff/buy
Покупает тариф на выбранный период, при желании вместе с пакетом лимитов, и сразу списывает стоимость с баланса — так же, как кнопка «Купить» в калькуляторе тарифов. Тот же тариф продлевается, более высокий — подключается. Перейти на тариф ниже текущего нельзя.
Метод списывает реальные деньги с баланса. Если денег не хватает, ничего не списывается — придёт ошибка 450; пополнить баланс можно через balance/add.
Параметры query и JSON-тело
-
tokenstring обязательный заголовокAccess token из user/auth. -
tariff_idint обязательныйID тарифа из tariff/list/get. Должен быть публичным и не ниже текущего. -
periodintПериод в днях. Любое другое значение молча заменяется на 30. -
limitsintСколько лимитов докупить вместе с тарифом. Без него — только тариф.
Ответ
В data — сообщения для пользователя о том, что произошло: смена или продление тарифа, списание с баланса.
Ошибки
| Код | Сообщение | Когда |
|---|---|---|
450 |
not enough balance |
tariff/buy: на балансе меньше стоимости покупки. |
440 |
unable to lower tariff |
tariff/buy: тариф ниже текущего, не публичный, или tariff_id не передан. |
404 |
User not found! |
get-limits: пользователь токена не найден. |
401 |
Token is not authorized |
Нет заголовка token или токен недействителен — см. rest-auth. |
Для user/tariff/buy «ниже» определяется сравнением ID тарифов: тариф с меньшим ID, чем текущий, купить нельзя, даже если он дороже. Администраторам доступны и непубличные тарифы.
Остаток лимитов по ключу API без входа по паролю отдаёт getlimits.