API Эндпоинты
Полная справка по всем доступным эндпоинтам API. Параметры запросов, структура ответов и примеры использования.
Навигация по сервисам
Календарь для психологов
Архитектура и мультитенантность
API построено по модели мультитенантности. Каждый психолог (тенант) имеет:
- Tenant — основная сущность психолога
- •
domainSlug— уникальный идентификатор (например, "ivan-petrov") - •
apiKey— ключ доступа к API - •
config— настройки расписания (рабочие часы, таймзона, Telegram ID) - •
planLimit— лимит записей в месяц
- •
- Appointment — запись клиента на приём
- •
clientData— данные клиента (имя, телефон, email) - •
startTime / endTime— время начала и конца приёма - •
status— статус записи (CONFIRMED, CANCELLED)
- •
- MediaFile — аудио/видео записи для AI-транскрипции
- •
s3Key— ключ файла в облачном хранилище - •
transcription— текст расшифровки - •
summary— краткое резюме сессии
- •
/api/v1/slotsПолучение списка свободных слотов для записи на указанную дату.
Query Parameters
| Параметр | Тип | Описание |
|---|---|---|
date | string | Дата в формате YYYY-MM-DD (обязательно) |
tenantId | string | ID психолога (опционально, берётся из API-ключа) |
Пример запроса
curl -X GET "https://api.vialine.ru/api/v1/slots?date=2024-10-20" \
-H "x-api-key: vl_live_1a2b3c4d5e6f7g8h9i0j"Пример ответа (200 OK)
{
"success": true,
"data": {
"date": "2024-10-20",
"slots": [
{
"startTime": "2024-10-20T09:00:00Z",
"endTime": "2024-10-20T10:00:00Z",
"available": true
},
{
"startTime": "2024-10-20T10:00:00Z",
"endTime": "2024-10-20T11:00:00Z",
"available": true
},
{
"startTime": "2024-10-20T11:00:00Z",
"endTime": "2024-10-20T12:00:00Z",
"available": false
}
]
},
"meta": {
"timezone": "Europe/Moscow",
"totalSlots": 3,
"availableSlots": 2
}
}/api/v1/appointmentsСоздание новой записи клиента на приём. Автоматически проверяет пересечения с существующими записями и отправляет уведомления.
Request Body
{
"clientData": {
"name": "Иван Иванов",
"phone": "+79991234567",
"email": "ivan@example.com"
},
"startTime": "2024-10-20T09:00:00Z",
"endTime": "2024-10-20T10:00:00Z"
}Пример запроса
curl -X POST "https://api.vialine.ru/api/v1/appointments" \
-H "x-api-key: vl_live_1a2b3c4d5e6f7g8h9i0j" \
-H "Content-Type: application/json" \
-d '{
"clientData": {
"name": "Иван Иванов",
"phone": "+79991234567"
},
"startTime": "2024-10-20T09:00:00Z",
"endTime": "2024-10-20T10:00:00Z"
}'Пример ответа (201 Created)
{
"success": true,
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "CONFIRMED",
"clientData": {
"name": "Иван Иванов",
"phone": "+79991234567"
},
"startTime": "2024-10-20T09:00:00Z",
"endTime": "2024-10-20T10:00:00Z",
"createdAt": "2024-10-19T15:30:00Z"
},
"message": "Запись успешно создана. Уведомление отправлено."
}Возможные ошибки
409 Conflict — Слот уже занят
{
"success": false,
"error": {
"code": "SLOT_ALREADY_BOOKED",
"message": "Выбранное время уже занято"
}
}400 Bad Request — Неверные данные
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Неверный формат данных клиента"
}
}Лазерная резка DXF
Внимание: API находится в стадии активной разработки. Эндпоинты могут измениться. Следите за обновлениями документации.
/api/v1/laser-dxf/ordersСоздание заказа на лазерную резку по DXF-файлу. Загрузка чертежа, указание параметров материала и расчёт стоимости.
Request Body (multipart/form-data)
| Поле | Тип | Описание |
|---|---|---|
dxfFile | file | DXF-файл чертежа (обязательно) |
material | string | Материал (steel, aluminum, brass) |
thickness | number | Толщина материала (мм) |
quantity | number | Количество деталей |
clientEmail | string | Email для уведомлений |
Пример ответа (201 Created)
{
"success": true,
"data": {
"orderId": "dxf_550e8400e29b41d4",
"status": "PENDING",
"material": "steel",
"thickness": 3.0,
"quantity": 5,
"estimatedCost": 4500.00,
"estimatedTime": 180,
"createdAt": "2024-10-19T15:30:00Z"
},
"message": "Заказ создан. Расчёт стоимости в процессе."
}/api/v1/laser-dxf/orders/:idПолучение информации о заказе и его текущем статусе.
Пример запроса
curl -X GET "https://api.vialine.ru/api/v1/laser-dxf/orders/dxf_550e8400e29b41d4" \
-H "x-api-key: vl_live_1a2b3c4d5e6f7g8h9i0j"Пример ответа (200 OK)
{
"success": true,
"data": {
"orderId": "dxf_550e8400e29b41d4",
"status": "READY",
"material": "steel",
"thickness": 3.0,
"quantity": 5,
"estimatedCost": 4500.00,
"estimatedTime": 180,
"createdAt": "2024-10-19T15:30:00Z",
"updatedAt": "2024-10-20T10:15:00Z",
"statusHistory": [
{
"status": "PENDING",
"timestamp": "2024-10-19T15:30:00Z"
},
{
"status": "PROCESSING",
"timestamp": "2024-10-19T16:00:00Z"
},
{
"status": "READY",
"timestamp": "2024-10-20T10:15:00Z"
}
]
}
}Общие коды ошибок
400 Bad Request
Неверные параметры запроса или невалидные данные
401 Unauthorized
Отсутствует или недействителен API-ключ
403 Forbidden
Недостаточно прав или превышен лимит
404 Not Found
Запрашиваемый ресурс не найден
409 Conflict
Конфликт данных (например, слот уже занят)
429 Too Many Requests
Превышен rate limit
500 Internal Server Error
Внутренняя ошибка сервера
503 Service Unavailable
Сервис временно недоступен