Requiply
Для розробників

Довідник REST API

Кожен ендпоінт публічного REST API Requiply v1: HTTP-метод, типи ключів, які він приймає, метод SDK, що його обгортає. А також правила запитів, пагінація, дати та помилки.

Публічний API розташований за адресою:

https://api.requiply.com/api/public/v1

Кожен запит автентифікується через Authorization: Bearer <api-key>; див. Автентифікація та API ключі. Тіла запитів і відповідей передаються в JSON. TypeScript SDK обгортає кожен ендпоінт нижче, а його посібники з ресурсів докладно описують поля.

Документ OpenAPI поки не опубліковано. Найточніше кожен запит і відповідь описують типи TypeScript у SDK.

Ендпоінти

Ендпоінти Публічний приймають обидва типи ключів. Ендпоінти Секретний відхиляють публічний ключ із 403.

Організація та каталог

Метод і шляхКлючіМетод SDK
GET /org/infoПублічнийorg.info()
GET /org/summaryСекретнийorg.summary()
GET /categories/listПублічнийcategories.list()
GET /services/listПублічнийservices.list()
GET /inventory/listПублічнийinventory.list()
GET /inventory/groups/{id}Публічнийinventory.getGroup()
GET /inventory/statusСекретнийinventory.status()
GET /bundles/listПублічнийbundles.list()
GET /bundles/{id}Публічнийbundles.get()

Комплекти є фіксованими наборами товарів з однією знижкою. Обидва ендпоінти комплектів приймають необовʼязкові параметри запиту startDate і endDate. Якщо передати обидва, кожен комплект повідомляє availableQuantity, тобто кількість цілих наборів, вільних у цей період. Вони перелічують лише повні активні комплекти. Секретний ключ бачить комплекти щоразу, коли ввімкнено функцію «Комплекти». Публічний ключ бачить їх, лише коли також увімкнено рекомендації Зовнішні. Інакше список порожній, а bundles/{id} повертає 404. GET /inventory/groups/{id} також повертає bundles, що містять цю групу.

Доступність, ціни та бронювання

Метод і шляхКлючіМетод SDK
POST /availability/calendarПублічнийavailability.calendar()
POST /availability/itemsПублічнийavailability.items()
POST /pricing/quoteПублічнийpricing.quote()
POST /bookings/createПублічний, лише запити на бронюванняbookings.create()
GET /bookings/listСекретнийbookings.list()
GET /bookings/{id}Секретнийbookings.get()
POST /bookings/{id}/notesСекретнийbookings.addNote()

Публічний ключ має надсилати "asRequest": true у POST /bookings/create. Будь-що інше отримує 403 з data.reason: "request_only".

POST /pricing/quote і POST /bookings/create приймають bundles: [{ bundleId, quantity }] поруч з items; тоді items може бути порожнім. Розрахунки ціни повертають bundleDiscountAmount (уже враховано в total) і lineBundles, по одному запису на кожен комплект із ціною за період. Якщо надіслати комплекти, коли функцію «Комплекти» вимкнено, відповідь буде 403.

Клієнти

Метод і шляхКлючіМетод SDK
POST /clients/lookupСекретнийclients.lookup()
POST /clients/createСекретнийclients.create()

Товари на продаж і продажі

Метод і шляхКлючіМетод SDK
GET /sale-items/listСекретний; публічний, поки організація продає клієнтамsaleItems.list()
GET /sale-items/{id}Секретний; публічний, поки організація продає клієнтамsaleItems.get()
GET /sales/listСекретнийsales.list()
GET /sales/{id}Секретнийsales.get()
POST /sales/createСекретнийsales.create()

Ці ендпоінти повертають 403 з data.reason: "feature_disabled", поки Увімкнути продажі вимкнено у Функції або організація не на тарифі Advanced. Що бачить публічний ключ і коли він натомість отримує selling_disabled, описано в Продажі та товари на продаж.

Звіти

Усі звіти потребують секретного ключа і приймають параметри в рядку запиту.

Метод і шляхМетод SDK
GET /reports/revenuereports.revenue()
GET /reports/bookings-summaryreports.bookingsSummary()
GET /reports/utilizationreports.utilization()
GET /reports/top-itemsreports.topItems()
GET /reports/top-clientsreports.topClients()
GET /reports/outstandingreports.outstanding()
GET /reports/overduereports.overdue()
GET /reports/pipelinereports.pipeline()

Правила

ТемаПравило
ПараметриЕндпоінти GET приймають параметри в рядку запиту. Ендпоінти POST приймають тіло JSON.
ПагінаціяЕндпоінти списків повертають nextCursor. Передайте його назад як cursor, щоб отримати наступну сторінку; null означає, що сторінок більше немає. limit становить від 1 до 100 (за замовчуванням 25) для списків каталогу, доступності та продажів, від 1 до 200 (за замовчуванням 50) для bookings/list і від 1 до 500 (за замовчуванням 100) для inventory/status.
Дати й часISO 8601. У розрахунках ціни, створенні бронювання та availability/items дата й час без зсуву (2026-07-01T10:00:00) читаються в часовому поясі організації з урахуванням переходу на літній час. Значення із Z або зсувом використовується як є. Дата без часу означає північ.
ІдентифікаториТовари, категорії, послуги, товари на продаж і продажі використовують UUID. Бронювання й клієнти використовують числа. Бронювання й продажі також мають номер, який співробітники бачать у застосунку: передавайте його з ?idKind=org.
ГрошіСуми вказуються в основній одиниці валюти організації (наприклад, 1250.5) поруч із кодом currency.
СуборендаТовари від постачальників ніколи не повертаються публічному ключу й не приймаються від нього. Секретний ключ бачить їх, коли ввімкнено суборенду.

Помилки

Невдалий запит отримує HTTP-статус помилки та тіло JSON:

{
  "statusCode": 409,
  "message": "Only 2 × Memory card 128 GB left",
  "data": { "reason": "out_of_stock", "saleItemId": "3f6c…", "availableQuantity": 2 }
}

message призначене для людей. Коли API надає машиночитну причину, вона міститься в data.reason, іноді з додатковими полями в data. Будуйте логіку на data.reason, а не на тексті повідомлення. Причини перелічено в Обробка помилок.

СтатусТипова причина
400Відсутнє чи неправильно сформоване поле, наприклад недійсна дата чи порожній список items.
401Заголовок Authorization відсутній, або ключ невідомий чи відкликаний.
403Тип ключа не може використовувати ендпоінт, або функцію чи дозвіл вимкнено.
404Бронювання, товару, клієнта чи продажу не існує в цій організації.
409Запит конфліктує з поточним станом, наприклад товар архівовано або його немає в наявності.
429Ключ перевищив обмеження частоти запитів. Зачекайте стільки секунд, скільки вказано в Retry-After.

Бронювання, яке організація не може прийняти, наприклад тому що товари зайняті або видача припадає на неробочий час, не є помилкою: POST /bookings/create повертає 200 із success: false. Див. Бронювання.

Запис продажу через REST

POST /sales/create приймає:

{
  "lines": [{ "saleItemId": "3f6c…", "quantity": 2 }],
  "clientId": 23,
  "paymentMethod": "payOnPickup",
  "soldAt": "2026-09-29T14:00:00Z",
  "note": "Counter sale"
}

Він повертає 201 із sale, stockWarnings (товари, залишок яких опускається нижче нуля; продаж однаково записується) і payment з посиланням для онлайн-способу оплати. Правила полів описано в sales.create().

Copyright © 2026