API
Обновлено: 17.08.2026📑 Содержание
title: "API" category: "developers" order: 3
API CRM "Леотехно"
Обзор
API построено на REST-принципах и работает через JSON. Доступно для авторизованных пользователей и менеджеров.
Базовый URL
Формат данных
Все запросы и ответы — в формате JSON.
Успешный ответ:
{
"status": "success",
"data": { ... }
} {
"status": "error",
"message": "Описание ошибки"
}
🔐
API использует API-ключ или сессию (если пользователь уже авторизован в системе).
Заголовки
Ключ Значение Обязательность
X-API-Key Ваш API-ключ ❌ (если есть сессия)
Content-Type application/json ✅
📋
Получить список клиентов
http
GET /api/clients.php
Параметры (опционально):
| Параметр | Тип | Описание |
|---|---|---|
limit |
int | Количество записей (по умолчанию 20) |
offset |
int | Смещение для пагинации |
search |
string | Поиск по названию или email |
Пример ответа:
json
{
"status": "success",
"data": [
{
"id": 2,
"company_name": "ООО \"Тестовая компания\"",
"email": "[email protected]",
"contact_person": "Шлёма",
"discount_percent": 10.00,
"payment_delay": 10
}
],
"total": 42
}
Получить одного клиента
http
GET /api/clients.php?id={id}
Пример ответа:
json
{
"status": "success",
"data": {
"id": 2,
"company_name": "ООО \"Тестовая компания\"",
"tax_id": "12345678977",
"legal_address": "г. Минск, ул. Тестовая, 1",
"email": "[email protected]",
"contact_person": "Шлёма",
"contact_phone": "33222222222",
"discount_percent": 10.00,
"payment_delay": 10,
"phones": [
{"phone": "+375291234567", "type": "work", "is_primary": false}
],
"addresses": [
{"address": "Северная улица, 22", "contact_person": "Валерий", "is_primary": false}
]
}
}
Создать клиента
http
POST /api/clients.php
Тело запроса:
json
{
"company_name": "Новая компания",
"email": "[email protected]",
"contact_person": "Иван Петров",
"contact_phone": "+375291234567",
"tax_id": "123456789",
"legal_address": "г. Минск, ул. Новая, 1",
"discount_percent": 0.00,
"payment_delay": 30
}
Пример ответа:
json
{
"status": "success",
"message": "Клиент создан",
"data": {
"id": 11
}
}
Обновить клиента
http
PUT /api/clients.php?id={id}
Тело запроса: (все поля опциональны)
json
{
"company_name": "Обновленное название",
"contact_person": "Петр Сидоров",
"discount_percent": 15.00
}
Удалить клиента
http
DELETE /api/clients.php?id={id}
Получить список заказов
http
GET /api/orders.php
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
client_id |
int | Фильтр по клиенту |
status |
string | sent, accepted, planned, shipped, cancelled |
date_from |
date | С какой даты (YYYY-MM-DD) |
date_to |
date | По какую дату (YYYY-MM-DD) |
limit |
int | Количество записей |
offset |
int | Смещение |
Пример ответа:
json
{
"status": "success",
"data": [
{
"id": 1,
"invoice_number": "ORD-202608-0001",
"client": {
"id": 2,
"company_name": "ООО \"Тестовая компания\""
},
"order_date": "2026-08-08",
"status": "sent",
"total_amount": "28.86",
"discount_percent": 10.00
}
],
"total": 5
}
Получить один заказ
http
GET /api/orders.php?id={id}
Пример ответа:
json
{
"status": "success",
"data": {
"id": 1,
"invoice_number": "ORD-202608-0001",
"client_id": 2,
"order_date": "2026-08-08",
"status": "sent",
"subtotal": "24.05",
"total_amount": "28.86",
"discount_percent": 10.00,
"discount_amount": "2.67",
"comment": "",
"items": [
{
"product_id": 9,
"name": "ALBOSIL N, Клей-герметик",
"quantity": 4,
"price_at_time": "7.42",
"total": "29.68"
}
]
}
}
Создать заказ
http
POST /api/orders.php
Тело запроса:
json
{
"client_id": 2,
"delivery_address_id": 5,
"order_date": "2026-08-12",
"desired_delivery_date": "2026-08-20",
"payment_delay": 10,
"comment": "Срочный заказ",
"items": [
{
"product_id": 9,
"quantity": 10
},
{
"product_id": 7,
"quantity": 5
}
]
}
Пример ответа:
json
{
"status": "success",
"message": "Заказ создан",
"data": {
"id": 2,
"invoice_number": "ORD-202608-0002",
"total_amount": "156.40"
}
}
Обновить статус заказа
http
PUT /api/orders.php?id={id}/status
Тело запроса:
json
{
"status": "accepted",
"comment": "Счет принят клиентом"
}
Доступные статусы: sent, accepted, planned, shipped, cancelled
Удалить заказ
http
DELETE /api/orders.php?id={id}
(Только для администраторов)
Получить список товаров
http
GET /api/products.php
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
group |
string | Группа товара |
search |
string | Поиск по названию или GTIN |
in_stock |
boolean | Только товары в наличии |
limit |
int | Количество записей |
offset |
int | Смещение |
Пример ответа:
json
{
"status": "success",
"data": [
{
"id": 1,
"name": "Solaflex NGPU Клей-герметик полиуретановый",
"product_group": "1. Полиуретаны",
"price": "11.30",
"stock_quantity": 35,
"volume": 280,
"unit": "мл"
}
],
"total": 29
}
Получить один товар
http
GET /api/products.php?id={id}
Создать товар
http
POST /api/products.php
Тело запроса:
json
{
"product_group": "1. Полиуретаны",
"name": "Новый герметик",
"gtin": "4816381600999",
"volume": 280,
"unit": "мл",
"per_box": 25,
"color": "#FFFFFF",
"price": 12.50,
"stock_quantity": 100
}
Обновить товар
http
PUT /api/products.php?id={id}
Удалить товар
http
DELETE /api/products.php?id={id}
Получить список пользователей
http
GET /api/users.php
Параметры:
| Параметр | Тип | Описание |
|---|---|---|
role |
string | admin, manager, viewer |
is_active |
boolean | Активен/неактивен |
Пример ответа:
json
{
"status": "success",
"data": [
{
"id": 3,
"username": "admin",
"email": "[email protected]",
"full_name": "Администратор",
"role": "admin",
"is_active": 1
}
]
}
Создать пользователя
http
POST /api/users.php
Тело запроса:
json
{
"username": "new_manager",
"email": "[email protected]",
"password": "SecurePass123!",
"full_name": "Новый Менеджер",
"role": "manager"
}
| Код | Описание |
|---|---|
| 200 | Успешный запрос |
| 201 | Успешно создано |
| 400 | Ошибка валидации |
| 401 | Не авторизован |
| 403 | Доступ запрещён |
| 404 | Ресурс не найден |
| 500 | Внутренняя ошибка сервера |
Пример ошибки валидации:
json
{
"status": "error",
"message": "Ошибка валидации",
"errors": {
"email": "Email уже занят",
"company_name": "Поле обязательно для заполнения"
}
}