Connectez votre CRM ou ERP à Iwana en quelques heures. Authentification par clé API, scopes granulaires et webhooks signés — sans OAuth complexe ni jeton à rafraîchir.
REST JSON Clés API org Webhooks HMAC Scopes fins
Démarrage rapide
Trois étapes pour votre première requête réussie. Tout se configure depuis le tableau de bord pro.
Créez une clé APIParamètres → Développeurs → Nouvelle clé. Copiez le secret immédiatement — il n’est affiché qu’une fois.
Testez l’authentificationAppelez GET /integrations/me pour vérifier l’organisation et les permissions actives.
Synchronisez vos donnéesLisez le catalogue et l’équipe, créez ou mettez à jour clients et rendez-vous, puis abonnez un webhook pour les mises à jour temps réel.
Chaque requête doit inclure une clé API organisationnelle dans l’en-tête Authorization. Pas de flux OAuth, pas de refresh token : révoquez une clé compromise en un clic depuis le tableau de bord.
Authorization: Bearer iw_live_<prefix>_<secret>
Clés production
Préfixe iw_live_* — accès aux données réelles de l’organisation.
Clés sandbox
Préfixe iw_test_* — environnements de test et intégration continue.
L’organisation est embarquée dans la clé : vous n’avez pas besoin d’envoyer x-workspace-id ni d’autres en-têtes de contexte.
Scopes
Chaque clé porte un ensemble de scopes au moment de la création. Un endpoint refusé renvoie 403 si le scope requis est absent.
Scope
Ce que ça autorise
appointments:read
Lire les rendez-vous
appointments:write
Créer et modifier les rendez-vous
appointments:delete
Annuler les rendez-vous
clients:read
Lire les clients
clients:write
Créer et modifier les clients
clients:delete
Supprimer les clients
equipment:read
Lire les équipements
equipment:write
Créer et modifier les équipements
services:read
Prestations, catégories et lieux
members:read
Membres de l’équipe
availability:read
Plannings et fermetures
config:read
Règles métier (snapshot)
Bundle par défaut à la création : lecture/écriture RDV et clients, lecture catalogue et équipe.
URL de base
Tous les endpoints vivent sous le préfixe PRO :
https://www.iwana.site/api/v1/pro
Les exemples ci-dessous omettent ce préfixe pour la lisibilité.
Vérifier votre clé
GET/integrations/me
Retourne orgId, acteur, permissions, locale et fuseau horaire. Idéal comme health-check d’intégration.
CRUD sur les rendez-vous de type APPOINTMENT uniquement (pas les blocs d’indisponibilité). La source est automatiquement marquée API lors d’un appel par clé.
GET/appointments
Liste paginée. Filtres : from, to (ISO date), status (PENDING, CONFIRMED, CANCELLED…).
Scope requis : appointments:read
GET/appointments/{id}
Détail d’un rendez-vous avec client, prestation et membres assignés.
Scope requis : appointments:read
POST/appointments
Crée un rendez-vous. serviceId et clientId sont requis ; startAt / endAt en ISO 8601 UTC.
Scope requis : appointments:write
PATCH/appointments/{id}/status
Change le statut (ex. CONFIRMED, CANCELLED) sans réécrire tout l’objet.
Un site est une adresse où le travail a lieu : un contact en a généralement plusieurs, et c’est le site — pas le contact — qui porte le code de portail, les coordonnées GPS et les personnes à joindre sur place. Un équipement est ce qui y est installé.
GET/sites
Adresses d’un espace de travail. Filtrez par ?clientId= pour celles d’un contact.
Scope requis : clients:read
GET/sites/{id}
Un site avec ses contacts (propriétaire, agence, locataire…).
Scope requis : clients:read
POST/sites
Créer un site. clientId et line1 sont requis ; lat/lng si vous les avez déjà.
Scope requis : clients:write
GET/equipments
Équipements installés. Filtrez par ?siteId= ou ?clientId=.
Scope requis : equipment:read
Les sites suivent les scopes clients:* : un site appartient à un contact, et qui peut lire l’un peut lire l’autre. Les équipements ont leur propre paire de scopes — ajouter une ressource à un scope existant élargirait en silence les clés déjà en circulation.
Catalogue & équipe
Données de référence en lecture seule — utiles pour mapper vos IDs avant de créer des rendez-vous.
GET/catalog/services
Prestations proposées : durée, prix, catégorie.
Scope requis : services:read
GET/catalog/locations
Lieux d’exercice (salles, adresses).
Scope requis : services:read
GET/catalog/categories
Arborescence des catégories de prestations.
Scope requis : services:read
GET/team
Membres assignables aux rendez-vous.
Scope requis : members:read
GET/availability
Créneaux et fermetures exceptionnelles.
Scope requis : availability:read
GET/business-rules
Snapshot des règles métier (délais, annulation, etc.).
Scope requis : config:read
Mapping IDs externes
Pour une synchronisation CRM idempotente, stockez la correspondance entre vos IDs et ceux d’Iwana. Évite les doublons quand le même contact est reçu plusieurs fois.
Abonnez une URL HTTPS depuis Paramètres → Développeurs. Iwana envoie un POST JSON à chaque événement métier, signé pour que vous puissiez vérifier l’authenticité.
Vérification HMAC — calculez SHA-256 HMAC du corps brut (JSON tel qu’envoyé) avec le secret affiché une seule fois à la création de l’abonnement. Comparez avec Iwana-Signature. Répondez 2xx rapidement ; les échecs sont réessayés avec backoff exponentiel.
Erreurs
Toute erreur a la même forme, et porte l’identifiant de la requête qui l’a produite. Citez requestId quand vous nous écrivez au sujet d’un appel : il est aussi renvoyé en en-tête X-Request-Id sur toutes les réponses, succès compris.
code est stable et destiné au code appelant ; message est pour un humain et peut changer sans préavis. Ne faites pas de logique sur le message.
HTTP
Signification
Exemples
401
Clé absente, mal formée ou révoquée
unauthorized
403
Scope insuffisant pour cette action
forbidden
404
Ressource introuvable dans l’organisation
—
400
Validation ou règle métier
service_required, invalid_range
Versioning
Version actuelle : v1 (/api/v1/pro/…). Les changements incompatibles seront publiés sous /v2/ avec une période de chevauchement d’au moins 12 mois sur v1.
Les ajouts rétro-compatibles (nouveaux champs optionnels, nouveaux endpoints) peuvent arriver sans bump de version majeure. Traitez les champs inconnus comme normaux : votre client ne doit pas échouer parce que nous en avons ajouté un.
OpenAPI
Toute cette page existe aussi sous forme lisible par une machine. Collez cette URL dans Postman, Insomnia, Swagger UI ou un générateur de SDK — vous n’avez pas à recopier les schémas à la main.
Le document est servi sans authentification : une spécification qu’il faut une clé pour lire est une spécification que personne n’évalue avant de s’inscrire. Il ne décrit que des formes — aucune donnée d’espace de travail n’y transite.
Prêt à intégrer ?
Créez votre première clé dans le tableau de bord ou contactez-nous pour un accès sandbox dédié.
Nous utilisons des cookies strictement nécessaires au fonctionnement du service. Avec votre accord, nous activons aussi des cookies de supervision (Sentry) pour diagnostiquer les incidents. En savoir plus dans notre politique cookies.