Ocena techniczna

Repull dla platform SaaS: 20 pytań i odpowiedzi

Pytania o integrację, które platformy SaaS wysyłają nam przed pierwszą rozmową, każde z odpowiedzią opartą na tym, co istnieje dziś, i z linkiem do odpowiedniej dokumentacji. Zacznij od Quickstartu i referencji API, jeśli chcesz najpierw pobawić się API. Część komercyjna jest w Repull dla platform.

P1 – P7

Model platformy i połączenia

P1.Czy Repull obsługuje model platformy SaaS, w którym jeden klient Repull łączy wiele niezależnych kont użytkowników końcowych?

Tak. Dokładnie do tego zbudowano hostowany proces Connect: każdy z Twoich użytkowników końcowych autoryzuje własne konto kanału (na przykład własne konto gospodarza Airbnb) w Twoim workspace’ie Repull. Każde połączone konto ma własne śledzenie, własne tokeny i własne monitorowanie stanu.

Dokumentacja: Connect (wiele kanałów), OAuth Connect, Connect Widget.

P2.Jaka jest maksymalna liczba połączonych kont w jednej organizacji Repull?

Nie ma technicznego limitu połączonych kont. Plany są rozliczane za ofertę: Free obejmuje do 3 ofert, Starter kosztuje 99 $/mies. z 10 ofertami w cenie i 5 $ za każdą ofertę od 11. do 100, a powyżej 100 ofert (gdzie ląduje platforma obsługująca wielu gospodarzy) jest plan Custom z ceną wolumenową i jednym workspace’em partnerskim dla wszystkich Twoich klientów.

Dokumentacja: Cennik, Repull dla platform.

P3.Czy każdy połączony użytkownik może mieć odizolowane poświadczenia i tokeny?

Tak. Tokeny dostępu i odświeżania są przechowywane osobno dla każdego połączonego konta, w pełni odizolowane. Cofnięcie dostępu przez jednego użytkownika dotyczy tylko jego konta: dostajesz webhook account.disconnected dla tego konta z powodem czytelnym dla maszyny, a wszystkie pozostałe synchronizują się dalej.

P4.Czy przy tworzeniu połączenia możemy dołączyć własny wewnętrzny identyfikator, żeby trafiał do każdego powiązanego webhooka?

Tak. Przekaż swoje wewnętrzne id użytkownika jako state przy tworzeniu sesji Connect. Gdy użytkownik skończy, webhook connect.session.completed zwraca Ci ten state razem z połączonym kontem, więc wiążesz je raz. Od tej chwili każde dostarczenie webhooka zawiera blok account (provider i externalAccountId, własne id dostawcy) oraz nagłówki X-Repull-Account i X-Repull-Account-Id, a rezerwacje, rozmowy i opinie mają to samo konto w każdym rekordzie.

Dokumentacja: OAuth Connect, Webhooki.

P5.Czy możemy pobrać wszystkie połączenia naszej organizacji, na przykład endpointem w rodzaju GET /connections?

Tak. GET /v1/connect wymienia wszystkie połączenia w Twoim workspace’ie (id, dostawca, status, id konta zewnętrznego). Jest też osobny endpoint stanu dla kanału, np. GET /v1/channels/airbnb/connection, który zwraca każde połączone konto Airbnb ze statusem i powodem ostatniego rozłączenia, zaprojektowany do odpytywania z ekranu statusu.

Dokumentacja: Referencja API, Connect.

P6.Czy obsługiwany jest przepływ: utwórz sesję → przekieruj → autoryzuj → powrót → webhook → aktywne → API?

Tak, dokładnie taki:

  1. 1POST /v1/connect zwraca URL hostowanej sesji (ważnej 30 minut)
  2. 2Przekierowujesz tam swojego użytkownika
  3. 3Użytkownik autoryzuje Airbnb (albo wybiera inny kanał z listy)
  4. 4Użytkownik wraca na Twój redirectUrl z status=connected&accountId=… i Twoim state
  5. 5Wysyłane są webhooki account.created i connect.session.completed
  6. 6Połączenie jest aktywne; pierwsza synchronizacja startuje sama w tle
  7. 7Czytasz dane przez API i dostajesz kolejne webhooki

Dokumentacja: Connect, Quickstart.

P7.Czy Repull w pełni obsługuje uwierzytelnianie Airbnb: logowanie, uprawnienia, wymianę tokenów, odświeżanie, wygasanie, ponowne uwierzytelnienie?

Tak, od początku do końca: logowanie do Airbnb, uprawnienia i zakresy (tylko odczyt, wiadomości albo pełny dostęp), wymianę tokenów, tokeny odświeżania i wygasanie obsługuje Repull. Gdy odświeżenie zostanie odrzucone albo dostęp cofnięty po stronie kanału, konto jest oznaczane, a Ty dostajesz account.disconnected z powodem (refresh_token_rejected, auth_expired, revoked_upstream, manual_disconnect), żeby odesłać użytkownika przez ten sam hostowany proces do ponownego uwierzytelnienia.

Dokumentacja: Kanał Airbnb.

P8 – P9

Testy i personalizacja

P8.Jakie środowiska testowe lub sandboxy są dostępne: testowe połączenia, konta, oferty, dane przykładowe, odpowiedzi sandboxowe?

Tak. Nie ma osobnego sandboxa: każde konto dostaje przy rejestracji klucz sk_live_* (darmowy plan, bez karty), więc testujesz bezpośrednio na prawdziwym API: tworzysz prawdziwe obiekty, rezerwacje i subskrypcje webhooków, a po skończeniu je usuwasz. System webhooków ma własne narzędzia testowe: POST /v1/webhooks/{id}/test/{event_type} wysyła realistyczne przykładowe payloady dla dowolnego typu zdarzenia, do tego endpointy ping i ponownej wysyłki oraz pełne dzienniki dostarczeń.

Uczciwe zastrzeżenie: Airbnb nie oferuje sandboxowych kont gospodarza, więc pełny test OAuth wymaga prawdziwego logowania do Airbnb niezależnie od środowiska. Wszystko, co dzieje się dalej (webhooki, kształt danych, obsługa błędów), przetestujesz w całości na przykładowych zdarzeniach, bez prawdziwego połączenia z Airbnb.

Dokumentacja: Zarządzanie webhookami.

P9.Czy interfejs łączenia można dostosować: marka, logo, kolory, teksty, przekierowanie?

Tak.Hostowane strony Connect są white-label dla każdego workspace’u: nazwa aplikacji, logo (wersja jasna i ciemna), kolor główny i akcentowy dla obu motywów, e-mail wsparcia w stopce, Twoje własne adresy regulaminu i polityki prywatności, domyślny URL przekierowania i domyślny język. Adres pozostaje na connect.repull.dev, a strona ma link „Powered by Repull”.

Dokumentacja: Connect Widget.

P10 – P14

Kanały, obiekty i opinie

P10.Czy jeden użytkownik może połączyć przez Repull kilka kanałów?

Tak. Użytkownik może mieć kilka połączeń naraz (Airbnb, Booking.com, Vrbo i PMS), a workspace może mieć wiele kont na kanał: wielu gospodarzy Airbnb, wiele obiektów Booking.com, wiele kont Vrbo. Jedyny limit dziś to jedno połączenie z danym systemem zarządzania obiektami na workspace. Hostowana sesja może pokazać wybór wielu kanałów albo zostać ograniczona do konkretnych dostawców przez allowedProviders.

Dokumentacja: Connect (wiele kanałów), Pokrycie PMS.

P11.Czy jest proces w API do odłączenia konta od kanału?

Tak. DELETE /v1/connect/{provider} unieważnia token OAuth, jeśli kanał na to pozwala, usuwa zapisane poświadczenia i zatrzymuje wszystkie zadania synchronizacji tego połączenia. Przekaż accountId, żeby odłączyć jedno konto bez ruszania pozostałych na tym samym kanale.

P12.Czy możemy pobierać obiekty i oferty z połączonych kanałów, filtrowane po kanale, z oryginalnym id obiektu w kanale i przypisaniem do kanału?

Tak. GET /v1/listings jest stronicowany kursorem i filtrowany przez ?channel=airbnb|booking|vrbo. Każda oferta ma tablicę channels[] z platformą, oryginalnym id obiektu w kanale (externalId) i statusem aktywności oraz synchronizacji, więc zawsze wiesz, do którego kanału należy dany obiekt i jakie ma natywne id. Opcjonalne rozszerzenia przez ?include=content,details,amenities.

Dokumentacja: Lista obiektów, Szczegóły obiektu, Treść i szczegóły oferty.

P13.Czy możemy publikować odpowiedzi na opinie w obsługiwanych kanałach (np. Airbnb, Vrbo, Booking.com)?

Airbnb: tak, przez POST /v1/reviews/{id}/reply, jeśli gospodarz połączył się z pełnym dostępem. Airbnb pozwala na zapis opinii tylko z uprawnieniem do zarządzania obiektami, więc połączenia tylko do odczytu i do wiadomości mogą czytać opinie, ale nie mogą na nie odpowiadać. Booking.com i Vrbo: w fazie testów. Odpowiedzi idą przez ten sam endpoint, ale nie zostały jeszcze potwierdzone na prawdziwej opinii.

Dokumentacja: Opinie, OAuth Connect.

P14.Czy możemy odbierać opinie przez API? Czy dostępne są nowe opinie i ich aktualizacje?

Tak. GET /v1/reviews to ujednolicony strumień opinii ze wszystkich kanałów (Airbnb, Booking.com, Vrbo) z filtrami po platformie, ofercie, zakresie ocen, z odpowiedzią lub bez, oraz opiniach gości lub gospodarzy. Aktualizacje, w tym odpowiedzi gospodarza, trafiają do tych samych rekordów.

Webhooki review.created i review.responded informują Cię, gdy przychodzi opinia albo dostaje odpowiedź. Endpoint jest serwowany z naszej bazy danych, nigdy przez wywołanie kanału na żywo, więc odpytywanie go też jest tanie.

Dokumentacja: Lista opinii.

P15

Webhooki

P15.Czy możecie podać pełną listę dostępnych zdarzeń webhook?

Aktualny katalog jest w Typach zdarzeń webhook, a w formie czytelnej dla maszyn pod GET /v1/webhooks/event-types (z przykładowymi payloadami). Obecne zdarzenia:

Rezerwacje
reservation.createdreservation.updatedreservation.cancelledreservation.message.receivedreservation.message.sentreservation.message.updatedreservation.alteration.createdreservation.alteration.respondedreservation.request.createdreservation.request.updated
Zapytania
inquiry.createdinquiry.updated
Oferty
listing.createdlisting.updatedlisting.deletedlisting.suspendedlisting.reactivated
Kalendarz
calendar.updated
Konta
account.createdconnect.session.completedaccount.disconnected
Opinie
review.createdreview.responded
AI
ai.operation.completedai.operation.failed
Płatności
payment.completedpayment.refundedpayout.completed
Migracje
migration.completedmigration.failed
System
repull.pingusage.quota.warning

Dostarczenia są podpisane HMAC-SHA256 (w stylu Stripe), z ponawianiem, ponowną wysyłką i pełnymi dziennikami: Weryfikacja podpisów, Ponawianie, Zarządzanie webhookami.

P16 – P17

Skala i architektura

P16.Jak Repull radzi sobie z dużymi synchronizacjami, np. 800 obiektów i 100 000 opinii? API wsadowe, zadania w tle, limity stronicowania, czas pełnej synchronizacji?

Synchronizacje to zadania w tle. Połączenie konta uruchamia równolegle kilka potoków (oferty, kalendarz i ceny, wiadomości, opinie, transakcje) na naszej infrastrukturze kolejek; niczym nie musisz zarządzać. Czas pierwszej synchronizacji zależy głównie od limitów samego kanału, więc rośnie z wielkością konta: duże portfele kończą się w tle, gdy połączenie jest już używalne.

Odczyty są stronicowane kursorem do 100 elementów na stronę (stabilnie na dowolnej głębokości), więc 100 000 opinii to około 1000 wywołań, drobiazg przy domyślnym limicie 600 zapytań na minutę. Zmiany przychodzą webhookami, więc nigdy nie musisz przechodzić wszystkiego od nowa.

Dokumentacja: Limity zapytań, Idempotencja.

P17.Czy dane są pobierane na żywo z API Airbnb i kanałów, czy Repull je przechowuje i synchronizuje?

Są synchronizowane. Repull synchronizuje dane kanałów do naszej własnej bazy danych i serwuje z niej API. To kluczowa decyzja projektowa: szybkie, spójne odczyty, które nigdy nie blokują się na API Airbnb ani nie wpadają w jego limity, a Twoja aplikacja działa dalej, nawet gdy źródło ma problemy. Odpowiedzi zawierają blok data_freshness (last_synced_at, flaga nieaktualnych danych), więc zawsze wiesz, jak świeże są dane.

P18 – P20

Ceny i wsparcie

P18.Czy cena zależy od wywołań API, połączonych kont, obiektów, rezerwacji czy opinii?

Od liczby ofert, z limitem wywołań API w ramach planu, a nie od rezerwacji, opinii, webhooków czy połączonych kont. Free: 0 $, do 3 ofert, 1000 wywołań/mies. Starter: 99 $/mies., 10 ofert w cenie, 5 $ za każdą ofertę od 11. do 100, 100 000 wywołań/mies., webhooki w cenie. Custom: ponad 100 ofert z ceną wolumenową i limitami API dopasowanymi do Twojej integracji.

Dokumentacja: Cennik, Kredyty i zużycie.

P19.Ile kosztowałoby to dla 1000 połączonych użytkowników zarządzających obiektami?

To przypadek dla planu Custom. Cena w tej skali zależy od liczby ofert na użytkownika i wolumenu API, i ustalamy ją jako partnerstwo platformowe, a nie stawkę za stanowisko. Wyślij nam swoje liczby, a dostaniesz konkretną propozycję: jak działają ceny dla platform.

P20.Czy jest dedykowany kanał wsparcia technicznego dla problemów z integracją?

Starter obejmuje wsparcie e-mailowe; Custom obejmuje priorytetowe wsparcie e-mailowe, a przy dużej integracji platformy możemy założyć wspólny kanał z naszym zespołem inżynierów.

Na co dzień API jest zaprojektowane tak, żeby wszystko dało się rozwiązać samodzielnie: każda odpowiedź z błędem zawiera request_id, kod czytelny dla maszyny, pole fix z dokładnym kolejnym krokiem i bezpośredni link do dokumentacji błędów.

RepullPytania platform SaaS

Pytania? hello@repull.dev