Для разработчиков

HTTP API и вебхуки Alchem

Читайте и создавайте записи и клиентов, получайте свободное время мастеров и события бизнеса. Ключ выпускает сам салон — с нужными правами и лимитом.

Запрос: свободное время мастера
GET /availability
Базовый адрес
https://rest.business.eywa.uz/partner/v1
curl
curl "https://rest.business.eywa.uz/partner/v1/availability?staff_id=<staff_id>&service_ids=<service_id>&date=2026-10-01" \
  -H "Authorization: Bearer alk_…"

Как устроен доступ

Ключ, права и лимит задаёт салон — вы получаете ровно то, что вам выдали.

Ключ выпускает салон

В «Настройки → Интеграции → Ключи API»: имя, права, филиалы и срок. Ключ показывается один раз — в ответах и журналах его нет. Отозвать можно в любой момент.

Заголовок Authorization

Каждый запрос — с заголовком Authorization: Bearer и ключом. Без ключа или с отозванным ключом — ответ 401.

Лимит запросов

От 10 до 1200 запросов в минуту на ключ, по умолчанию 300. Сверх лимита — ответ 429 с заголовком Retry-After.

Права ключа

Ключ видит только разрешённое — и не больше, чем сейчас может сотрудник, который его выпустил. Контакты клиентов — отдельное право.

Ошибки по стандарту

Ошибки приходят как application/problem+json (RFC 9457): код, понятное сообщение и адрес запроса.

Время, деньги, списки

Время — RFC 3339 со смещением пояса филиала, деньги — в минимальных единицах. Списки постраничные: limit до 100, дальше — по next_cursor.

Права ключа

Право на изменение раздела включает его просмотр; контакты клиентов выдаются только явно.

  • Бизнес и филиалыbusiness:read
  • Услуги и категорииservices:read
  • Мастера и сотрудникиstaff:read
  • Свободное время мастеровavailability:read
  • Записи: просмотрappointments:read
  • Записи: создание, перенос, смена статуса, удалениеappointments:write
  • Клиенты: просмотр без контактовclients:read
  • Контакты клиентов: телефон и почтаclients:read_contact
  • Клиенты: созданиеclients:write
  • Журнал звонков Eywa Connectcalls:read

Методы

Все пути — от базового адреса https://rest.business.eywa.uz/partner/v1. Справа — право, которое нужно ключу.

  • GET/meКлюч: бизнес, права, филиалы и лимит
  • POST/revokeОтозвать ключ, которым сделан запрос
  • GET/businessБизнесbusiness:read
  • GET/locationsФилиалыbusiness:read
  • GET/servicesУслуги; фильтр по филиалу и категорииservices:read
  • GET/service-categoriesКатегории услугservices:read
  • GET/staffМастера; фильтр по филиалу и услугеstaff:read
  • GET/availabilityСвободное время мастера на деньavailability:read
  • GET/appointmentsЗаписи за период, изменённые после даты, по мастеру или клиентуappointments:read
  • GET/appointments/{id}Одна записьappointments:read
  • POST/appointmentsСоздать запись — с новым или существующим клиентомappointments:write
  • PATCH/appointments/{id}Перенести запись, сменить статус или комментарийappointments:write
  • DELETE/appointments/{id}Удалить записьappointments:write
  • GET/clientsКлиенты; поиск по телефонуclients:read
  • GET/clients/{id}Один клиентclients:read
  • POST/clientsДобавить клиентаclients:write
  • GET/callsЗвонки Eywa Connect за периодcalls:read
  • GET/references/countriesСправочник стран
  • GET/references/business-typesСправочник видов бизнеса
  • POST/app/callbackПриложение партнёра подтверждает установкуapp key
  • POST/app/redirectКуда вернуть пользователя после настройки приложенияapp key

Примеры запросов

Запрос: новая запись
POST /appointments
curl
curl -X POST "https://rest.business.eywa.uz/partner/v1/appointments" \
  -H "Authorization: Bearer alk_…" \
  -H "Content-Type: application/json" \
  -d '{
    "staff_id": "<staff_id>",
    "service_ids": ["<service_id>"],
    "starts_at": "2026-10-01T10:00:00+05:00",
    "client": { "name": "Dilnoza", "phone": "+998901234567" },
    "comment": "…",
    "api_id": "order-1042"
  }'
Ответ
GET /availability · 200
JSON
{
  "object": "availability",
  "date": "2026-10-01",
  "time_zone": "Asia/Tashkent",
  "staff_id": "<staff_id>",
  "location_id": "<location_id>",
  "is_working_day": true,
  "duration_minutes": 60,
  "step_minutes": 15,
  "slots": [
    { "starts_at": "2026-10-01T10:00:00+05:00", "ends_at": "2026-10-01T11:00:00+05:00" },
    { "starts_at": "2026-10-01T10:15:00+05:00", "ends_at": "2026-10-01T11:15:00+05:00" }
  ]
}

Вебхуки

Салон подписывает ваш адрес на события в «Настройки → Интеграции → Вебхуки» — для всего бизнеса или отдельных филиалов.

Что приходит

POST с JSON: event, delivered_at, business_id и data — сама сущность. Заголовки X-Eywa-Event и X-Eywa-Delivery-Id.

Подпись

Если у подписки задан секрет, в X-Eywa-Signature — HMAC-SHA256 тела запроса в шестнадцатеричном виде. Можно добавить свои заголовки.

Повторы

Ответ 2xx — доставлено. Иначе ещё попытки через 5, 15, 60 и 60 минут — всего до пяти; ответа ждём 15 секунд. Журнал доставок и ручной повтор — в настройках.

  • Записиappointment.createdappointment.updatedappointment.cancelledappointment.completedappointment.deleted
  • Клиентыclient.createdclient.updatedclient.deleted
  • Услугиservice.createdservice.updatedservice.deleted
  • Категории услугservice_category.createdservice_category.updatedservice_category.deleted
  • Сотрудникиstaff.createdstaff.updatedstaff.deleted
  • Графикschedule.updated
  • Филиалыlocation.createdlocation.updatedlocation.deleted
  • Товарыgood.createdgood.updatedgood.deleted
  • Складские операцииgoods_operation.salegoods_operation.receiptgoods_operation.consumablegoods_operation.stolengoods_operation.movegoods_operation.other
  • Финансовые операцииfinance_operation.createdfinance_operation.updatedfinance_operation.deleted

Делаете приложение для многих салонов?

Вместо ключа от каждого салона — приложение в каталоге Alchem: салон выдаёт доступ одним нажатием, вы управляете установками через API партнёра.

Попробуйте Alchem на своём салоне

7 дней бесплатно, все функции включены. Или сначала посмотрите демо салона — без регистрации.