Dokumentacja REST API
Publiczne API znajduje się pod adresem:
https://api.requiply.com/api/public/v1
Każde żądanie uwierzytelnia się nagłówkiem Authorization: Bearer <api-key>. Zobacz Uwierzytelnianie i klucze API. Treści żądań i odpowiedzi są w formacie JSON. SDK TypeScript obsługuje każdy z poniższych punktów końcowych, a jego przewodniki po zasobach szczegółowo opisują pola.
Punkty końcowe
Punkty końcowe oznaczone jako Publiczny przyjmują oba typy kluczy. Punkty końcowe oznaczone jako Tajny odrzucają klucz publiczny z kodem 403.
Organizacja i katalog
| Metoda i ścieżka | Klucze | Metoda SDK |
|---|---|---|
GET /org/info | Publiczny | org.info() |
GET /org/summary | Tajny | org.summary() |
GET /categories/list | Publiczny | categories.list() |
GET /services/list | Publiczny | services.list() |
GET /inventory/list | Publiczny | inventory.list() |
GET /inventory/groups/{id} | Publiczny | inventory.getGroup() |
GET /inventory/status | Tajny | inventory.status() |
GET /bundles/list | Publiczny | bundles.list() |
GET /bundles/{id} | Publiczny | bundles.get() |
Zestawy to stałe komplety pozycji z jednym rabatem. Oba punkty końcowe zestawów przyjmują opcjonalne parametry zapytania startDate i endDate. Gdy podasz oba, każdy zestaw zwraca availableQuantity, czyli liczbę całych kompletów wolnych w tym okresie. Wymieniane są tylko kompletne, aktywne zestawy. Klucz tajny widzi zestawy zawsze, gdy funkcja Zestawy jest włączona, a klucz publiczny tylko wtedy, gdy włączone są też rekomendacje Zewnętrzne. W przeciwnym razie lista jest pusta, a bundles/{id} zwraca 404. GET /inventory/groups/{id} zwraca też bundles, które zawierają tę grupę.
Dostępność, ceny i rezerwacje
| Metoda i ścieżka | Klucze | Metoda SDK |
|---|---|---|
POST /availability/calendar | Publiczny | availability.calendar() |
POST /availability/items | Publiczny | availability.items() |
POST /pricing/quote | Publiczny | pricing.quote() |
POST /bookings/create | Publiczny, tylko zapytania o rezerwację | bookings.create() |
GET /bookings/list | Tajny | bookings.list() |
GET /bookings/{id} | Tajny | bookings.get() |
POST /bookings/{id}/notes | Tajny | bookings.addNote() |
Klucz publiczny musi wysyłać "asRequest": true do POST /bookings/create. Każde inne żądanie dostaje 403 z data.reason: "request_only".
POST /pricing/quote i POST /bookings/create przyjmują bundles: [{ bundleId, quantity }] obok items. items może być wtedy puste. Wyceny zwracają bundleDiscountAmount (już uwzględnione w total) i lineBundles, po jednym wpisie na zestaw wyceniony dla danego okresu. Wysłanie zestawów, gdy funkcja Zestawy jest wyłączona, zwraca 403.
Klienci
| Metoda i ścieżka | Klucze | Metoda SDK |
|---|---|---|
POST /clients/lookup | Tajny | clients.lookup() |
POST /clients/create | Tajny | clients.create() |
Towary na sprzedaż i sprzedaż
| Metoda i ścieżka | Klucze | Metoda SDK |
|---|---|---|
GET /sale-items/list | Tajny; publiczny, gdy organizacja sprzedaje klientom | saleItems.list() |
GET /sale-items/{id} | Tajny; publiczny, gdy organizacja sprzedaje klientom | saleItems.get() |
GET /sales/list | Tajny | sales.list() |
GET /sales/{id} | Tajny | sales.get() |
POST /sales/create | Tajny | sales.create() |
Te punkty końcowe zwracają 403 z data.reason: "feature_disabled", gdy Włącz sprzedaż jest wyłączone w Funkcje albo organizacja nie ma planu Advanced. To, co widzi klucz publiczny i kiedy zamiast tego dostaje selling_disabled, opisuje strona Sprzedaż i towary na sprzedaż.
Raporty
Wszystkie raporty wymagają klucza tajnego i przyjmują parametry w ciągu zapytania.
| Metoda i ścieżka | Metoda SDK |
|---|---|
GET /reports/revenue | reports.revenue() |
GET /reports/bookings-summary | reports.bookingsSummary() |
GET /reports/utilization | reports.utilization() |
GET /reports/top-items | reports.topItems() |
GET /reports/top-clients | reports.topClients() |
GET /reports/outstanding | reports.outstanding() |
GET /reports/overdue | reports.overdue() |
GET /reports/pipeline | reports.pipeline() |
Konwencje
| Temat | Zasada |
|---|---|
| Parametry | Punkty końcowe GET przyjmują parametry w ciągu zapytania. Punkty końcowe POST przyjmują treść w formacie JSON. |
| Stronicowanie | Punkty końcowe list zwracają nextCursor. Przekaż go z powrotem jako cursor, aby pobrać następną stronę. null oznacza, że nie ma więcej stron. limit wynosi od 1 do 100 (domyślnie 25) w listach katalogu, dostępności i sprzedaży, od 1 do 200 (domyślnie 50) w bookings/list oraz od 1 do 500 (domyślnie 100) w inventory/status. |
| Daty i godziny | ISO 8601. W wycenach, tworzeniu rezerwacji i availability/items data z godziną bez przesunięcia (2026-07-01T10:00:00) jest odczytywana w strefie czasowej organizacji, z uwzględnieniem czasu letniego. Wartość z Z lub przesunięciem jest używana bez zmian. Data bez godziny oznacza północ. |
| Identyfikatory | Pozycje, kategorie, usługi, towary na sprzedaż i sprzedaże używają UUID. Rezerwacje i klienci używają liczb. Rezerwacje i sprzedaże mają też numer, który pracownicy widzą w aplikacji: przekaż go z ?idKind=org. |
| Kwoty | Kwoty są podawane w głównej jednostce waluty organizacji (na przykład 1250.5), obok kodu currency. |
| Podnajem | Pozycje pochodzące od dostawców nigdy nie są zwracane kluczowi publicznemu ani od niego przyjmowane. Klucz tajny widzi je, gdy włączony jest podnajem. |
Błędy
Nieudane żądanie zwraca kod błędu HTTP i treść w formacie JSON:
{
"statusCode": 409,
"message": "Only 2 × Memory card 128 GB left",
"data": { "reason": "out_of_stock", "saleItemId": "3f6c…", "availableQuantity": 2 }
}
message jest przeznaczony dla ludzi. Gdy API podaje przyczynę w formie czytelnej dla programu, znajduje się ona w data.reason, czasem z dodatkowymi polami w data. Rozgałęziaj kod według data.reason, nigdy według treści komunikatu. Przyczyny wymienia strona Obsługa błędów.
| Status | Typowa przyczyna |
|---|---|
400 | Brakujące lub nieprawidłowe pole, na przykład błędna data albo pusta lista items. |
401 | Brak nagłówka Authorization albo klucz jest nieznany lub unieważniony. |
403 | Ten typ klucza nie może korzystać z punktu końcowego albo funkcja lub uprawnienie jest wyłączone. |
404 | Rezerwacja, pozycja, klient lub sprzedaż nie istnieje w tej organizacji. |
409 | Żądanie jest sprzeczne z bieżącym stanem, na przykład pozycja jest zarchiwizowana lub jej brak na stanie. |
429 | Klucz przekroczył limit żądań. Odczekaj liczbę sekund podaną w Retry-After. |
Rezerwacja, której organizacja nie może przyjąć, na przykład dlatego, że pozycje są zajęte albo wydanie wypada poza godzinami pracy, nie jest błędem: POST /bookings/create zwraca 200 z success: false. Zobacz Rezerwacje.
Rejestrowanie sprzedaży przez REST
POST /sales/create przyjmuje:
{
"lines": [{ "saleItemId": "3f6c…", "quantity": 2 }],
"clientId": 23,
"paymentMethod": "payOnPickup",
"soldAt": "2026-09-29T14:00:00Z",
"note": "Counter sale"
}
Odpowiada kodem 201 ze sprzedażą sale, stockWarnings (towary, których stan spada poniżej zera, a sprzedaż i tak zostaje zarejestrowana) i płatnością payment z linkiem dla metody online. Zasady dotyczące pól opisuje sales.create().
Raporty
Pobieraj raporty przychodu, rezerwacji, wykorzystania sprzętu, klientów, sald, zwrotów po terminie i nadchodzących rezerwacji.
Przykłady
Gotowe do skopiowania wzorce SDK dla sklepu internetowego wypożyczalni i integracji serwerowej, takie jak katalog na wybrane daty, formularz zapytania o rezerwację, towary na sprzedaż, synchronizacja nowych rezerwacji i obsługa limitów żądań.