Évaluation technique

Repull pour les plateformes SaaS : 20 questions, avec les réponses

Les questions d’intégration que les plateformes SaaS nous envoient avant un premier appel, chacune avec une réponse fondée sur ce qui existe aujourd’hui et un lien vers la documentation. Commence par le Quickstart et la référence de l’API si tu veux d’abord tester l’API. Le volet commercial est dans Repull pour les plateformes.

Q1 – Q7

Modèle de plateforme et connexions

Q1.Repull prend-il en charge un modèle de plateforme SaaS, où un client Repull connecte de nombreux comptes indépendants d’utilisateurs finaux ?

Oui. C’est exactement ce pour quoi le parcours Connect hébergé est fait : chacun de tes utilisateurs finaux autorise son propre compte de canal (par exemple son propre compte hôte Airbnb) dans ton workspace Repull. Chaque compte connecté a son propre suivi, ses propres jetons et sa propre surveillance d’état.

Docs : Connect (multicanal), OAuth Connect, Connect Widget.

Q2.Quel est le nombre maximum de comptes connectés pour une organisation Repull ?

Il n’y a pas de plafond technique sur les comptes connectés. Les offres sont facturées à l’annonce : Free couvre jusqu’à 3 annonces, Starter coûte 99 $/mois avec 10 annonces incluses et 5 $ par annonce à partir de la 11e jusqu’à 100, et au-delà de 100 annonces (là où arrive une plateforme qui sert beaucoup d’hôtes), c’est une offre Custom avec un tarif au volume et un seul workspace partenaire pour tous tes clients.

Docs : Tarifs, Repull pour les plateformes.

Q3.Chaque utilisateur connecté peut-il avoir des identifiants et jetons isolés ?

Oui. Les jetons d’accès et de rafraîchissement sont stockés par compte connecté, totalement isolés. Si un utilisateur révoque l’accès, seul son compte est concerné : tu reçois un webhook account.disconnected pour ce compte avec un motif lisible par machine, et tous les autres continuent de se synchroniser.

Q4.Peut-on associer notre propre identifiant interne lors de la création d’une connexion, pour le retrouver dans chaque webhook lié ?

Oui. Passe ton identifiant utilisateur interne en state quand tu crées la session Connect. Quand l’utilisateur a terminé, le webhook connect.session.completed te renvoie ce state avec le compte connecté, donc tu fais le lien une seule fois. Ensuite, chaque livraison de webhook contient un bloc account (provider et externalAccountId, l’identifiant propre au fournisseur) ainsi que les en-têtes X-Repull-Account et X-Repull-Account-Id, et les réservations, conversations et avis portent le même compte sur chaque enregistrement.

Docs : OAuth Connect, Webhooks.

Q5.Peut-on récupérer toutes les connexions de notre organisation, par exemple via un endpoint du type GET /connections ?

Oui. GET /v1/connect liste toutes les connexions de ton workspace (id, fournisseur, statut, id de compte externe). Il existe aussi un endpoint d’état dédié par canal, par exemple GET /v1/channels/airbnb/connection, qui renvoie chaque compte Airbnb connecté avec son statut et le motif de la dernière déconnexion, conçu pour être interrogé depuis un écran d’état.

Docs : Référence de l’API, Connect.

Q6.Le parcours créer une session → rediriger → autoriser → revenir → webhook → actif → API est-il pris en charge ?

Oui, tel quel :

  1. 1POST /v1/connect renvoie l’URL d’une session hébergée (valable 30 minutes)
  2. 2Tu y rediriges ton utilisateur
  3. 3L’utilisateur autorise Airbnb (ou choisit un autre canal dans le sélecteur)
  4. 4L’utilisateur revient sur ton redirectUrl avec status=connected&accountId=… et ton state
  5. 5Les webhooks account.created et connect.session.completed partent
  6. 6La connexion est active ; la synchronisation initiale démarre toute seule en arrière-plan
  7. 7Tu lis les données via l’API et reçois les webhooks au fil de l’eau

Docs : Connect, Quickstart.

Q7.Repull gère-t-il entièrement l’authentification Airbnb : connexion, permissions, échange de jetons, rafraîchissement, expiration, réauthentification ?

Oui, de bout en bout : la connexion Airbnb, la gestion des permissions et des scopes (lecture seule, messagerie ou accès complet), l’échange de jetons, les jetons de rafraîchissement et l’expiration sont gérés par Repull. Quand un rafraîchissement est refusé ou que l’accès est révoqué en amont, le compte est signalé et tu reçois account.disconnected avec un motif (refresh_token_rejected, auth_expired, revoked_upstream, manual_disconnect) pour renvoyer l’utilisateur dans le même parcours hébergé et qu’il se réauthentifie.

Docs : Canal Airbnb.

Q8 – Q9

Tests et personnalisation

Q8.Quels environnements de test ou sandbox sont disponibles : connexions, comptes ou annonces de test, données fictives, réponses sandbox ?

Oui. Il n’y a pas de sandbox séparée : chaque compte reçoit une clé sk_live_* à l’inscription (offre gratuite, sans carte), donc tu testes directement sur la vraie API : tu crées de vrais logements, réservations et abonnements webhook, puis tu les supprimes quand tu as fini. Le système de webhooks a ses propres outils de test : POST /v1/webhooks/{id}/test/{event_type} envoie des payloads d’exemple réalistes pour n’importe quel type d’événement, plus des endpoints de ping et de rejeu et des journaux de livraison complets.

Une réserve honnête : Airbnb ne propose pas de comptes hôtes de sandbox, donc un test OAuth de bout en bout demande une vraie connexion Airbnb, quel que soit l’environnement. Tout ce qui suit (webhooks, formats de données, gestion des erreurs) se teste entièrement avec des événements d’exemple, sans connexion Airbnb réelle.

Docs : Gérer les webhooks.

Q9.Peut-on personnaliser l’interface de connexion : marque, logo, couleurs, textes, expérience de redirection ?

Oui.Les pages Connect hébergées sont en marque blanche par workspace : nom de l’app, logo (versions claire et sombre), couleurs principale et d’accent pour les deux thèmes, e-mail de support en pied de page, tes propres URL de conditions et de confidentialité, une URL de redirection par défaut et une langue par défaut. L’URL reste sur connect.repull.dev et la page affiche un lien « Powered by Repull ».

Docs : Connect Widget.

Q10 – Q14

Canaux, logements et avis

Q10.Un même utilisateur peut-il connecter plusieurs canaux via Repull ?

Oui. Un utilisateur peut avoir plusieurs connexions à la fois (Airbnb, Booking.com, Vrbo et un PMS), et un workspace peut avoir de nombreux comptes par canal : de nombreux hôtes Airbnb, de nombreux établissements Booking.com, de nombreux comptes Vrbo. La seule limite aujourd’hui : une connexion par logiciel de gestion locative (PMS) par workspace. La session hébergée peut afficher un sélecteur multicanal ou être limitée à certains fournisseurs avec allowedProviders.

Docs : Connect (multicanal), Couverture PMS.

Q11.Existe-t-il un parcours API pour déconnecter un compte d’un canal ?

Oui. DELETE /v1/connect/{provider} révoque le jeton OAuth quand le canal le permet, supprime les identifiants stockés et arrête toutes les tâches de synchronisation de cette connexion. Passe un accountId pour déconnecter un compte sans toucher aux autres sur le même canal.

Q12.Peut-on récupérer les logements et annonces des canaux connectés, filtrés par canal, avec l’identifiant d’origine du logement sur le canal et son attribution ?

Oui. GET /v1/listings est paginé par curseur et filtrable avec ?channel=airbnb|booking|vrbo. Chaque annonce porte un tableau channels[] avec la plateforme, l’identifiant d’origine du logement sur le canal (externalId) et le statut d’activation et de synchronisation, donc tu sais toujours à quel canal appartient chaque logement et quel est son identifiant natif. Extensions optionnelles avec ?include=content,details,amenities.

Docs : Lister les logements, Détails d’un logement, Contenu et détails d’une annonce.

Q13.Peut-on publier des réponses aux avis sur les canaux pris en charge (par exemple Airbnb, Vrbo, Booking.com) ?

Airbnb : oui, via POST /v1/reviews/{id}/reply, quand l’hôte s’est connecté avec un accès complet. Airbnb n’autorise l’écriture sur les avis qu’avec sa permission de gestion des logements, donc les connexions en lecture seule et messagerie lisent les avis mais ne peuvent pas y répondre. Booking.com et Vrbo : en test. Les réponses passent par le même endpoint, mais elles n’ont pas encore été prouvées sur un vrai avis.

Docs : Avis, OAuth Connect.

Q14.Peut-on recevoir les avis via l’API ? Les nouveaux avis et leurs mises à jour sont-ils disponibles ?

Oui. GET /v1/reviews est un flux d’avis unifié sur tous les canaux (Airbnb, Booking.com, Vrbo) avec des filtres par plateforme, annonce, plage de notes, avec ou sans réponse, et avis du voyageur ou de l’hôte. Les mises à jour, réponses de l’hôte comprises, arrivent sur les mêmes enregistrements.

Les webhooks review.created et review.responded te préviennent quand un avis arrive ou reçoit une réponse. L’endpoint est servi depuis notre base de données, jamais par un appel en direct au canal, donc l’interroger ne coûte presque rien.

Docs : Lister les avis.

Q15

Webhooks

Q15.Pouvez-vous fournir la liste complète des événements webhook disponibles ?

Le catalogue à jour est sur Types d’événements webhook et en format lisible par machine sur GET /v1/webhooks/event-types (avec des payloads d’exemple). Événements actuels :

Réservations
reservation.createdreservation.updatedreservation.cancelledreservation.message.receivedreservation.message.sentreservation.message.updatedreservation.alteration.createdreservation.alteration.respondedreservation.request.createdreservation.request.updated
Demandes
inquiry.createdinquiry.updated
Annonces
listing.createdlisting.updatedlisting.deletedlisting.suspendedlisting.reactivated
Calendrier
calendar.updated
Comptes
account.createdconnect.session.completedaccount.disconnected
Avis
review.createdreview.responded
IA
ai.operation.completedai.operation.failed
Paiements
payment.completedpayment.refundedpayout.completed
Migrations
migration.completedmigration.failed
Système
repull.pingusage.quota.warning

Les livraisons sont signées en HMAC-SHA256 (façon Stripe), avec nouvelles tentatives, rejeu et journaux complets : Vérifier les signatures, Nouvelles tentatives, Gérer les webhooks.

Q16 – Q17

Échelle et architecture

Q16.Comment Repull gère-t-il les grosses synchronisations, par exemple 800 logements et 100 000 avis ? API en masse, tâches en arrière-plan, limites de pagination, durée d’une synchronisation complète ?

Les synchronisations sont des tâches en arrière-plan. Connecter un compte lance en parallèle plusieurs pipelines (annonces, calendrier et prix, messages, avis, transactions) sur notre infrastructure de files d’attente ; tu n’as rien à gérer. La durée de la synchronisation initiale dépend surtout des limites du canal lui-même, donc elle augmente avec la taille du compte : les gros portefeuilles se terminent en arrière-plan pendant que la connexion est déjà utilisable.

Les lectures sont paginées par curseur jusqu’à 100 éléments par page (stable à n’importe quelle profondeur), donc 100 000 avis représentent environ 1 000 appels, presque rien face à la limite par défaut de 600 requêtes par minute. Les changements arrivent par webhooks, donc tu n’as jamais à tout re-parcourir.

Docs : Limites de requêtes, Idempotence.

Q17.Les données sont-elles lues en direct sur les API d’Airbnb et des canaux, ou mises en cache et synchronisées par Repull ?

Synchronisées. Repull synchronise les données des canaux dans notre propre base de données et sert l’API à partir de là. C’est un choix de conception central : des lectures rapides et cohérentes qui ne bloquent jamais sur l’API d’Airbnb et ne subissent pas ses limites, et ton app continue de fonctionner même quand la source a des soucis. Les réponses incluent un bloc data_freshness (last_synced_at, indicateur de données périmées) pour que tu saches toujours à quel point les données sont fraîches.

Q18 – Q20

Tarifs et support

Q18.Le tarif est-il basé sur les appels API, les comptes connectés, les logements, les réservations ou les avis ?

À l’annonce, avec un quota d’appels API par offre, pas à la réservation, à l’avis, au webhook ou au compte connecté. Free : 0 $, jusqu’à 3 annonces, 1 000 appels/mois. Starter : 99 $/mois, 10 annonces incluses, 5 $ par annonce à partir de la 11e jusqu’à 100, 100 000 appels/mois, webhooks inclus. Custom : plus de 100 annonces avec un tarif au volume et des limites d’API adaptées à ton intégration.

Docs : Tarifs, Crédits et consommation.

Q19.Combien cela coûterait-il pour 1 000 utilisateurs gestionnaires de logements connectés ?

C’est le terrain de l’offre Custom. À cette échelle, le prix dépend du nombre d’annonces par utilisateur et du volume d’API, et on le construit comme un partenariat de plateforme, pas comme un tarif par siège. Envoie-nous tes chiffres et tu recevras une proposition concrète : comment fonctionnent les tarifs plateforme.

Q20.Existe-t-il un canal de support technique dédié pour les problèmes d’intégration ?

Starter inclut le support par e-mail ; Custom inclut le support prioritaire par e-mail et, pour une grosse intégration de plateforme, on peut ouvrir un canal partagé avec notre équipe d’ingénierie.

Au quotidien, l’API est conçue pour que tu te débrouilles seul : chaque réponse d’erreur contient un request_id, un code lisible par machine, un champ fix avec l’étape suivante exacte et un lien direct vers la documentation des erreurs.

RepullQuestions des plateformes SaaS

Des questions ? hello@repull.dev