Développeurs

API REST LegalHost

Intégrez LegalHost dans vos outils et automatisez la gestion de vos propriétés, réservations et documents.

Authentification

Authentifiez vos requêtes en incluant votre clé API dans l'en-tête X-API-Key.

curl -H "X-API-Key: lh_your_api_key_here" \
     https://app.legalhost.ma/api/v1/properties

Créez vos clés API dans Paramètres > Clés API. La clé n'est affichée qu'une seule fois lors de sa création.

Limites de débit

L'API est limitée à 100 requêtes par minute par clé API.

Les en-têtes de réponse incluent X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset. En cas de dépassement, vous recevrez une réponse 429 Too Many Requests.

Endpoints

GET
/api/v1/properties

Liste les propriétés de votre organisation.

Paramètres : page, limit

GET
/api/v1/reservations

Liste les réservations avec filtres optionnels.

Paramètres : page, limit, propertyId, status

GET
/api/v1/guests

Liste les voyageurs.

Paramètres : page, limit, reservationId

GET
/api/v1/documents

Liste les documents générés (fiches de police et contrats).

Paramètres : page, limit, type (police | contract)

Pagination

Tous les endpoints de liste supportent la pagination avec les paramètres page et limit (max 100).

{
  "data": [...],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 45,
    "totalPages": 3
  }
}

Webhooks

Enregistrez une URL de webhook dans Paramètres > Webhooks pour recevoir des notifications en temps réel. Chaque livraison inclut une signature HMAC-SHA256 dans l'en-tête X-Webhook-Signature.

Événements disponibles

reservation.createdUne nouvelle réservation a été créée.
reservation.updatedUne réservation a été modifiée.
reservation.cancelledUne réservation a été annulée.
guest.createdUn voyageur a été ajouté.
guest.updatedLes informations d'un voyageur ont été modifiées.
document.generatedUn document (fiche de police ou contrat) a été généré.
property.createdUne propriété a été ajoutée.
property.updatedUne propriété a été modifiée.

Vérification de signature

const crypto = require('crypto');

function verifyWebhook(body, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex');
  return signature === `sha256=${expected}`;
}