← CRM

ВБутоне API

REST API для подключения внешнего сайта к вашему магазину цветов. Получайте каталог, остатки и оформляйте заказы.

Авторизация

API-ключ передаётся в заголовке X-API-Key или GET-параметром ?api_key=.... Ключ находится в Настройки → API.

Base URL: https://vbutone.ru/api/
curl -H "X-API-Key: YOUR_KEY" \
  https://vbutone.ru/api/shop

Информация о магазине

GET/api/shop
Название, телефон, адрес, часы работы магазина

Ответ

{
  "success": true,
  "data": {
    "name": "Цветочный Дом",
    "title": "Цветочный Дом — доставка цветов",
    "phone": "+7 (999) 123-45-67",
    "email": "info@example.com",
    "address": "ул. Пушкина, д. 10",
    "work_hours": "Ежедневно 9:00–21:00"
  }
}

Весь каталог

GET/api/catalog
Все товары (цветы + букеты) одним запросом

Параметры

ПараметрТипОписание
pageintСтраница (по умолчанию 1)
per_pageintКол-во на странице (1–100, по умолчанию 50)
searchstringПоиск по названию
curl -H "X-API-Key: YOUR_KEY" \
  "https://vbutone.ru/api/catalog?page=1&per_page=20"

Ответ

{
  "success": true,
  "data": [
    {
      "type": "flower",
      "sku": "FL-001",
      "name": "Роза красная (Эквадор)",
      "color": "красный",
      "sell_price": 350,
      "quantity": 24,
      "photos": ["https://vbutone.ru/uploads/..."]
    },
    {
      "type": "bouquet",
      "sku": "BQ-005",
      "name": "Нежность утра",
      "sell_price": 4500,
      "quantity": 3,
      "composition": [...],
      "photos": ["https://vbutone.ru/uploads/..."]
    }
  ],
  "pagination": { "page": 1, "per_page": 20, "total": 47, "pages": 3 }
}

Цветы

GET/api/flowers
Список цветов с фильтрами

Параметры

ПараметрТипОписание
searchstringПоиск по названию/сорту
colorstringФильтр по цвету (красный, белый...)
sortstringСортировка: name, sell_price, color, created_at
dirstringasc или desc
pageintСтраница
per_pageintКол-во (1–100)
curl -H "X-API-Key: YOUR_KEY" \
  "https://vbutone.ru/api/flowers?color=красный&sort=sell_price&dir=asc"

Букеты

GET/api/bouquets
Список букетов с составом и фото
Каждый букет включает поле composition — массив цветов с количеством
curl -H "X-API-Key: YOUR_KEY" \
  "https://vbutone.ru/api/bouquets?search=нежность"

Товар по артикулу

GET/api/product/{sku}
Детальная информация по SKU (артикул)
curl -H "X-API-Key: YOUR_KEY" \
  https://vbutone.ru/api/product/FL-001

Проверка остатков

POST/api/stock/check
Проверить наличие нескольких товаров перед оформлением
curl -X POST -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"sku":"FL-001","type":"flower"},{"sku":"BQ-005","type":"bouquet"}]}' \
  https://vbutone.ru/api/stock/check

Ответ

{
  "success": true,
  "items": [
    { "sku": "FL-001", "type": "flower", "name": "Роза красная", "available": 24, "in_stock": true },
    { "sku": "BQ-005", "type": "bouquet", "name": "Нежность утра", "available": 3, "in_stock": true }
  ]
}

Оформление заказа

POST/api/order
Создать заказ. Остатки списываются автоматически (в транзакции).
Если товара нет в наличии, заказ вернёт ошибку 422 со списком проблем

Тело запроса

ПолеТипОписание
name *stringИмя покупателя
phone *stringТелефон
address *stringАдрес доставки
emailstringEmail
delivery_timestringЖелаемое время доставки
commentstringКомментарий
items *arrayМассив: [{"sku","type","qty"}]
curl -X POST -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Иван Петров",
    "phone": "+7 (999) 123-45-67",
    "address": "ул. Пушкина, д. 10, кв. 5",
    "email": "ivan@example.com",
    "delivery_time": "завтра к 14:00",
    "items": [
      {"sku": "FL-001", "type": "flower", "qty": 5},
      {"sku": "BQ-005", "type": "bouquet", "qty": 1}
    ]
  }' \
  https://vbutone.ru/api/order

Успешный ответ

{
  "success": true,
  "order_id": 42,
  "total": 6250,
  "message": "Order placed successfully"
}

Ошибка остатков (422)

{
  "success": false,
  "errors": [
    "'Роза красная' — only 3 available"
  ]
}