Requiply
Dla programistów

Dokumentacja REST API

Wszystkie punkty końcowe publicznego REST API Requiply v1 z metodą HTTP, akceptowanymi typami kluczy i odpowiadającą im metodą SDK oraz konwencje żądań, stronicowanie, daty i błędy.

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.

Dokument OpenAPI nie został jeszcze opublikowany. Najdokładniejszym opisem każdego żądania i odpowiedzi są typy TypeScript w SDK.

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żkaKluczeMetoda SDK
GET /org/infoPublicznyorg.info()
GET /org/summaryTajnyorg.summary()
GET /categories/listPublicznycategories.list()
GET /services/listPublicznyservices.list()
GET /inventory/listPublicznyinventory.list()
GET /inventory/groups/{id}Publicznyinventory.getGroup()
GET /inventory/statusTajnyinventory.status()
GET /bundles/listPublicznybundles.list()
GET /bundles/{id}Publicznybundles.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żkaKluczeMetoda SDK
POST /availability/calendarPublicznyavailability.calendar()
POST /availability/itemsPublicznyavailability.items()
POST /pricing/quotePublicznypricing.quote()
POST /bookings/createPubliczny, tylko zapytania o rezerwacjębookings.create()
GET /bookings/listTajnybookings.list()
GET /bookings/{id}Tajnybookings.get()
POST /bookings/{id}/notesTajnybookings.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żkaKluczeMetoda SDK
POST /clients/lookupTajnyclients.lookup()
POST /clients/createTajnyclients.create()

Towary na sprzedaż i sprzedaż

Metoda i ścieżkaKluczeMetoda SDK
GET /sale-items/listTajny; publiczny, gdy organizacja sprzedaje klientomsaleItems.list()
GET /sale-items/{id}Tajny; publiczny, gdy organizacja sprzedaje klientomsaleItems.get()
GET /sales/listTajnysales.list()
GET /sales/{id}Tajnysales.get()
POST /sales/createTajnysales.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żkaMetoda 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()

Konwencje

TematZasada
ParametryPunkty końcowe GET przyjmują parametry w ciągu zapytania. Punkty końcowe POST przyjmują treść w formacie JSON.
StronicowaniePunkty 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 godzinyISO 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.
IdentyfikatoryPozycje, 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.
KwotyKwoty są podawane w głównej jednostce waluty organizacji (na przykład 1250.5), obok kodu currency.
PodnajemPozycje 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.

StatusTypowa przyczyna
400Brakujące lub nieprawidłowe pole, na przykład błędna data albo pusta lista items.
401Brak nagłówka Authorization albo klucz jest nieznany lub unieważniony.
403Ten typ klucza nie może korzystać z punktu końcowego albo funkcja lub uprawnienie jest wyłączone.
404Rezerwacja, 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.
429Klucz 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().

Copyright © 2026