Авторизация
Для мобильных и внешних приложений используется короткоживущий JWT access-токен и обновляемый refresh-токен. Во всех URL ниже рекомендуется сохранять завершающий символ /.
Access-токен передается в HTTP-заголовке:
Authorization: Bearer ACCESS_TOKEN
| Метод API | Описание |
|---|---|
| POST /api/v1/auth/login/ | Проверяет логин и пароль. Возвращает access-токен, refresh-токен, пользователя, компанию, права и подключенные продукты. |
| POST /api/v1/auth/refresh/ | Обновляет пару токенов. После успешного запроса старый refresh-токен использовать нельзя. |
| POST /api/v1/auth/logout/ | Отзывает текущую сессию по access-токену или переданному refresh-токену. |
| GET /api/v1/auth/me/ | Возвращает текущего пользователя и его актуальные права. |
Вход
POST https://salesenergy.ru/api/v1/auth/login/
Content-Type: application/json
{
"login": "user@example.com",
"password": "user-password",
"client_id": "mobile-app",
"device_name": "Android phone",
"platform": "android",
"app_version": "1.0.0"
}
Пример успешного ответа:
{
"success": true,
"data": {
"token_type": "Bearer",
"access_token": "eyJ...",
"expires_in": 900,
"refresh_token": "session-id.random-secret",
"refresh_expires_in": 2592000,
"user": { "user_id": 1, "login": "user@example.com" },
"corporation_id": 1,
"permissions": {},
"active_products": [],
"is_system_admin": false
},
"error": null
}
Обновление токенов
POST https://salesenergy.ru/api/v1/auth/refresh/
Content-Type: application/json
{
"refresh_token": "CURRENT_REFRESH_TOKEN"
}
При каждом обновлении сервер возвращает новый refresh-токен. Приложение должно атомарно заменить оба сохраненных токена. Повторное использование старого refresh-токена приводит к отзыву сессии.
Текущий пользователь
GET https://salesenergy.ru/api/v1/auth/me/
Authorization: Bearer ACCESS_TOKEN
Метод возвращает профиль пользователя, активную компанию, объект permissions, список active_products и признак системного администратора.
Выход
POST https://salesenergy.ru/api/v1/auth/logout/
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{}
Также можно выполнить выход без access-токена, передав в JSON поле refresh_token.
Основные объекты и методы
Доступ к обьектам осуществляется через API.
Пользователиv1
Методы Users API предназначены для административного просмотра пользователей. Они доступны только пользователю, чей ID присутствует в настройке users.admin_user_ids. Для обычного пользователя сервер возвращает HTTP 403.
| Метод API | Описание |
|---|---|
| GET /api/v1/users/ | Постраничный список пользователей. Параметры: page, limit (не более 100), q — строка поиска. |
| GET /api/v1/users/:id/ | Получение пользователя по числовому идентификатору. |
Получение списка
GET https://salesenergy.ru/api/v1/users/?page=1&limit=25&q=Иванов
Authorization: Bearer ACCESS_TOKEN
{
"success": true,
"data": [
{
"user_id": 15,
"login": "ivanov",
"email": "user@example.com",
"firstname": "Иван",
"lastname": "Иванов",
"active_flag": true
}
],
"meta": { "page": 1, "limit": 25 },
"error": null
}
Получение пользователя
GET https://salesenergy.ru/api/v1/users/15/
Authorization: Bearer ACCESS_TOKEN
Пароль, password hash и служебные данные авторизации в ответах не возвращаются. Адрес старого формата /api/v1/user/:id/ больше не используется.
Коды ответа
| 200 | Запрос успешно выполнен. |
| 401 | Токен отсутствует, недействителен, истек или сессия отозвана. |
| 403 | У пользователя недостаточно прав либо аккаунт не активирован. |
| 404 | Пользователь не найден. |
| 405 | HTTP-метод не поддерживается. |
| 422 | Не переданы обязательные поля. |
| Метод API | Описание |
|---|---|
| GET /api/public/currencylist/ | Метод для получения списка валют. |
| Метод API | Описание |
|---|---|
| GET /api/v1/leads/ | Получение активных заявок из CRM. |
| POST /api/v1/leads/
{ "title": "тестовый лид из-вне", "lead": "описание лида", "type": "Письмо", "channel": "Рассылки", "firstname": "Семен", "secondname": "", "lastname": "Г.", "phone": "+73452578942", "email": "s.grebenyuk@tcntr.ru", "firm": { "brandname": "\u042d\u041d\u0415\u0420\u0413\u041e\u0421\u041d\u0410\u0411", "title": "\u041e\u041e\u041e \u00ab\u042d\u041d\u0415\u0420\u0413\u041e\u0421\u041d\u0410\u0411\u00bb", "inn": "7203378552", "kpp": "720301001", "city": "\u0422\u044e\u043c\u0435\u043d\u044c" }, "manager_id": 83 } |
Создание заявки в CRM. |
| Метод API | Описание |
|---|---|
| GET /api/v1/nomenclature/ | Получение список позиций номенлатурного справочника. |
| POST /api/v1/nomenclature/
{ "title": "Новый склад", "identificator_1c": "asdf" } |
Создание новой единицы товара или услуги в номиенклатурном справочнике. |
| GET /api/v1/nomenclature/:id/
{ "title": "Новое название склада", "identificator_1c": "asdf" } |
Получение информации по конкретной позиции номенклатурного справочника |
| PUT /api/v1/nomenclature/:id/
{ "title": "Новое название склада", "identificator_1c": "asdf" } |
Обновление данных позиции номенклатурного справочника. |
| DELETE /api/v1/nomenclature/:id/ | Удаление позиции номенклатурного справочника. |
| Метод API | Описание |
|---|---|
| GET /api/v1/warehouses/ | Получение информации о складах компании. |
| POST /api/v1/warehouses/
{ "title": "Новый склад", "identificator_1c": "asdf" } |
Создание нового склада. |
| PUT /api/v1/warehouse/:id/
{ "title": "Новое название склада", "identificator_1c": "asdf" } |
Обновление данных склада. |
| DELETE /api/v1/warehouse/:id/ | Удаление склада, включая все го содержимое. |
Товары на складахv1
Через API можно получить информацию как о товарных остатках. Также можно их обновлять.
| Метод API | Описание |
|---|---|
| GET /api/v1/positions/:id/ | Получение информации о содержимом складе с id=1. |
| POST /api/v1/positions/:id/
[{ "quantity": 500, "measure_code": 21, // единицу измерения как-то надо получить ? "price_ppu": 0, // цена за ед без НДС, надо ли НДС отдельно передавать? "currency_code": 0, // код валюты для цены ? "title": "Sm-thing 1", // данные номенклатуры "title_full": "Sm-thing full title 1", ... // еще данные номенклатуры "identificator_1c": "asdfasfas" // идентификатор позиции }, { "quantity": 300, "measure_code": 21, "price_ppu": 300, "currency_id": 14, "title": "Sm-thing unusual", "title_full": "Sm-thing full unusual title", .... "identificator_1c": "sdhsfjrww" }] |
Создание позиций на выбранном складе. |
| DELETE /api/v1/positions/:id/ | Учистка содержимого склада. |
