Aller au contenu

API Partenaires

L'API Front Desk permet aux partenaires hôteliers (intégrateurs PMS, prestataires de ménage, outils de reporting, connecteurs tiers) d'accéder aux données de votre établissement de façon sécurisée et contrôlée.


Documentation interactive (Swagger)

Testez l'API directement dans votre navigateur

L'interface Swagger est le point d'entrée recommandé pour explorer et tester l'API. Elle affiche tous les endpoints disponibles, les paramètres acceptés, les réponses attendues, et permet d'envoyer des requêtes en direct depuis votre navigateur.

Interface Swagger UI :

https://front-desk.app/api/v2/docs/

Schéma OpenAPI (JSON) — à importer dans Postman, Insomnia, etc. :

https://front-desk.app/api/v2/schema/

Pour s'authentifier dans Swagger :

  1. Ouvrez https://front-desk.app/api/v2/docs/
  2. Cliquez sur Authorize (en haut à droite).
  3. Saisissez votre clé dans le champ X-API-Key.
  4. Cliquez sur Authorize, puis Close.
  5. Tous les endpoints que vous appelez depuis l'interface utiliseront automatiquement cette clé.

Vue haut niveau

Flux d'intégration

Système partenaire
       │
       │  X-API-Key (header)
       ▼
Front Desk API v2  ──▶  Authentification & vérification du scope
       │
       ├──▶  /api/v2/tickets/        (logbook:read / logbook:write)
       ├──▶  /api/v2/items/          (lost_found:read / lost_found:write)
       ├──▶  /api/v2/notebooks/      (notebooks:read / notebooks:write)
       ├──▶  /api/v2/users/          (users:read)
       ├──▶  /api/v2/notifications/  (notifications:read)
       └──▶  /api/v2/activities/     (activities:read)

Carte des ressources

Ressource Endpoint Lecture Écriture Cas d'usage typique
Tickets (logbook) /api/v2/tickets/ logbook:read logbook:write PMS envoyant des incidents chambre
Objets trouvés /api/v2/items/ lost_found:read lost_found:write Outil de suivi objets trouvés
Consignes /api/v2/notebooks/ notebooks:read notebooks:write Synchronisation avec outil de briefing
Utilisateurs /api/v2/users/ users:read Annuaire équipe (lecture seule)
Notifications /api/v2/notifications/ notifications:read Tableau de bord alertes
Journal d'activité /api/v2/activities/ activities:read Reporting / audit

Modèle de sécurité

  • Clé par établissement : chaque clé est scopée à un seul établissement. Impossible d'accéder aux données d'un autre établissement.
  • Scope minimal : une clé n'a accès qu'aux ressources explicitement autorisées lors de sa création.
  • Révocable à tout moment : une clé compromise peut être invalidée en un clic depuis l'interface.

Vue bas niveau

Pagination

Tous les endpoints de liste retournent une réponse paginée :

{
  "count": 150,
  "next": "https://front-desk.app/api/v2/tickets/?page=2",
  "previous": null,
  "results": [ ... ]
}

Paramètre de pagination : ?page=<n> (taille de page : 25 par défaut).

Filtrage

Chaque endpoint expose ses propres paramètres de filtrage (voir la section Endpoints disponibles ci-dessous ou le Swagger pour la liste exhaustive).

Format des dates : ISO 8601 (2026-04-24T09:15:00Z).

Headers de réponse utiles

Header Description
Content-Type: application/json Format de réponse
Retry-After: <secondes> Présent en cas de 429 Too Many Requests

Codes d'erreur

Code HTTP Signification
200 OK Requête réussie
201 Created Ressource créée
400 Bad Request Données de la requête invalides
401 Unauthorized Header X-API-Key absent ou malformé
403 Forbidden Clé valide mais scope insuffisant
404 Not Found Ressource introuvable dans votre établissement
429 Too Many Requests Limite de débit dépassée

Exemple d'erreur 403 :

{
  "detail": "You do not have permission to perform this action."
}

Limites de débit

  • 120 requêtes par minute par clé API.

Le compteur est isolé par clé : deux clés du même établissement ont chacune leur propre quota de 120 req/min, indépendamment l'une de l'autre.

Au-delà du quota, l'API retourne 429 Too Many Requests. Le header Retry-After indique le nombre de secondes à attendre avant de réessayer.


Authentification

Obtenir une clé API

Les clés API se gèrent directement depuis l'interface Front Desk.

  1. Connectez-vous à Front Desk en tant qu'administrateur ou propriétaire.
  2. Dans le menu latéral, cliquez sur Clés API.
  3. Cliquez sur Générer une clé.
  4. Saisissez un nom descriptif (ex : Intégration PMS Fidelio) et sélectionnez les permissions.
  5. Copiez immédiatement la clé affichée. Elle n'est visible qu'une seule fois.

Sécurité

La valeur brute d'une clé n'est jamais stockée dans nos serveurs. Conservez-la dans un gestionnaire de secrets sécurisé (Vault, AWS Secrets Manager, variable d'environnement chiffrée). Toute clé compromise doit être révoquée immédiatement.

Utiliser la clé

Transmettez la clé dans chaque requête via le header X-API-Key :

GET /api/v2/tickets/ HTTP/1.1
Host: front-desk.app
X-API-Key: votre_cle_api
Accept: application/json

Exemple avec curl :

curl https://front-desk.app/api/v2/tickets/ \
  -H "X-API-Key: votre_cle_api" \
  -H "Accept: application/json"

Exemple avec Python :

import httpx

client = httpx.Client(
    base_url="https://front-desk.app/api/v2/",
    headers={"X-API-Key": "votre_cle_api"},
)

response = client.get("tickets/")
tickets = response.json()

Permissions (scopes)

Chaque clé est configurée avec un ou plusieurs scopes qui définissent les ressources accessibles. Une clé sans le scope requis reçoit une erreur 403 Forbidden.

Scope Description
logbook:read Lecture des tickets du registre de maintenance
logbook:write Création et mise à jour de tickets
lost_found:read Lecture des objets trouvés
lost_found:write Création et mise à jour des objets trouvés
notebooks:read Lecture des consignes
notebooks:write Création et mise à jour des consignes
users:read Lecture de la liste des utilisateurs (lecture seule)
notifications:read Lecture des notifications
activities:read Lecture du journal d'activité

Principe du moindre privilège : accordez uniquement les scopes nécessaires. Un connecteur PMS qui envoie des tickets de panne n'a besoin que de logbook:write.


Base URL

Toutes les requêtes API V2 utilisent la base URL suivante :

https://front-desk.app/api/v2/

Endpoints disponibles

Registre de maintenance — Tickets

GET /api/v2/tickets/

Retourne la liste des tickets de l'établissement.

Scope requis : logbook:read

Paramètres de filtrage

Paramètre Type Description
is_done boolean Filtrer les tickets terminés
state string État du ticket (open, in_progress, done)
created__gte datetime Créé après cette date (ISO 8601)
created__lte datetime Créé avant cette date (ISO 8601)
search string Recherche dans la description et l'emplacement

Exemple de réponse

{
  "count": 42,
  "next": "https://front-desk.app/api/v2/tickets/?page=2",
  "previous": null,
  "results": [
    {
      "id": 123,
      "description": "Fuite robinet chambre 204",
      "location": "Chambre 204",
      "state": "open",
      "is_done": false,
      "priority": "high",
      "created": "2026-04-24T09:15:00Z",
      "modified": "2026-04-24T10:30:00Z"
    }
  ]
}
POST /api/v2/tickets/
Content-Type: application/json

Scope requis : logbook:write

Corps de la requête

{
  "description": "Fuite robinet chambre 204",
  "location": "Chambre 204",
  "priority": "high"
}
GET /api/v2/tickets/{id}/

Scope requis : logbook:read


Objets trouvés

GET /api/v2/items/

Scope requis : lost_found:read

POST /api/v2/items/
Content-Type: application/json

Scope requis : lost_found:write


Cahier de consignes

GET /api/v2/notebooks/

Scope requis : notebooks:read

POST /api/v2/notebooks/
Content-Type: application/json

Scope requis : notebooks:write


Utilisateurs

GET /api/v2/users/

Scope requis : users:read

Retourne les membres de l'établissement (sans données sensibles). La création et la modification d'utilisateurs ne sont pas disponibles via l'API partenaire.


Notifications

GET /api/v2/notifications/

Scope requis : notifications:read


Journal d'activité

GET /api/v2/activities/

Scope requis : activities:read


Gestion des clés

Modifier les permissions

Pour modifier les scopes d'une clé existante sans la révoquer :

  1. Rendez-vous sur Clés API dans le menu latéral.
  2. Cliquez sur l'icône de configuration (roue dentée) en face de la clé.
  3. Cochez ou décochez les scopes souhaités.
  4. Cliquez sur Enregistrer.

Régénérer une clé

Si une clé est compromise mais que vous souhaitez conserver le même nom et les mêmes scopes :

  1. Cliquez sur l'icône de régénération (flèches circulaires) en face de la clé.
  2. Confirmez. La clé actuelle est immédiatement révoquée.
  3. Copiez la nouvelle clé affichée. Elle n'est visible qu'une seule fois.

Révoquer une clé

Pour révoquer une clé compromise ou obsolète :

  1. Connectez-vous en tant qu'administrateur.
  2. Rendez-vous sur Clés API dans le menu latéral.
  3. Cliquez sur l'icône de révocation (croix) en face de la clé concernée.
  4. Confirmez la révocation.

La clé est immédiatement invalidée. Toute requête ultérieure avec cette clé reçoit 401 Unauthorized.


Isolation des données

Chaque clé API est strictement scopée à l'établissement qui l'a générée. Il est impossible d'accéder aux données d'un autre établissement, même en possession d'une clé valide. Cette isolation est appliquée au niveau de la base de données.


Support

Pour toute question sur l'API partenaires, contactez-nous via la page support en précisant votre établissement et le cas d'usage.