Documentation développeurs
Recevez et répondez aux demandes de privatisation directement depuis votre CRM via notre API REST authentifiée par token.
URL de base
Toutes les requêtes utilisent HTTPS et acceptent / retournent du JSON.
Authentification
L'API utilise des tokens Bearer personnels (Laravel Sanctum). Chaque token est rattaché à un compte propriétaire de lieu et lui donne accès uniquement aux ressources de ses lieux.
Pour obtenir un token API pour votre lieu, contactez infos@mesprojets.org en précisant le nom de votre lieu. Le token vous sera transmis par canal sécurisé. Une UI de self-service sera disponible prochainement.
Utilisation
Ajoutez le header Authorization: Bearer <token> à chaque requête.
Exemple — vérifier votre identité
Endpoints
Tous les endpoints sont scopés à vos lieux : vous ne voyez que les demandes envoyées à un lieu dont vous êtes propriétaire.
/api/v1/solicitations
Lister les demandes reçues
Retourne une liste paginée des sollicitations envoyées à vos lieux. Triées par sent_at décroissant.
Query parameters
| Param | Type | Description |
|---|---|---|
status | string | Filtre : sent · viewed · replied · declined |
page | int | Numéro de page (50 résultats par page) |
Exemple
/api/v1/solicitations/{id}
Détail d'une demande
Récupère toutes les infos d'une demande : événement, contact, entreprise, proposition envoyée (s'il y en a). Marque automatiquement la demande comme « vue » au premier appel.
Exemple de réponse
/api/v1/solicitations/{id}/proposal
Envoyer un devis
Crée une proposition pour une demande. Le client est automatiquement notifié par email avec un lien magique vers son espace.
Body parameters
| Field | Type | Requis | Description |
|---|---|---|---|
message | string | oui | Corps du devis (10 à 5000 caractères) |
total_price | integer | non | Montant total en euros (entier) |
attachments[] | file[] | non | Jusqu'à 5 PDF, 10 MB par fichier (multipart/form-data) |
Exemple JSON simple
Exemple avec PDF
Codes d'erreur spécifiques
- •
403— Cette sollicitation n'est pas accessible avec votre token - •
409— Une proposition existe déjà OU la demande a été déclinée - •
422— Erreur de validation (message trop court, etc.)
/api/v1/solicitations/{id}/decline
Décliner une demande
Marque la demande comme déclinée. Aucun body requis.
Webhooks entrants
Configurez une URL pour recevoir en temps réel les nouvelles demandes de devis dans votre CRM, sans avoir à polling l'API.
Configuration
- Connectez-vous à votre espace lieu
- Menu Webhooks API → Créer un webhook
- Renseignez l'URL HTTPS qui recevra les notifications
- Notez le signing secret généré aléatoirement (vous en aurez besoin pour vérifier les signatures)
Format des requêtes
Chaque event est envoyé en POST sur votre URL avec :
- •
Content-Type: application/json - •
User-Agent: PrivateEvent-Webhooks/1.0 - •
X-PrivateEvent-Event: solicitation.created - •
X-PrivateEvent-Signature: sha256=<hmac> - •
X-PrivateEvent-Delivery-Id: <uuid>
Payload exemple
Vérification de la signature
La signature est un HMAC-SHA256 du body raw avec votre signing secret. Vérifiez-la systématiquement pour vous protéger contre les requêtes falsifiées.
PHP
Node.js (Express)
Python (Flask)
Retry policy
En cas de non-réponse 2xx, on retente jusqu'à 5 fois avec un backoff exponentiel : 10s, 60s, 5min, 15min, 1h. Votre endpoint doit répondre 200 OK rapidement (sous 10 secondes) — délégez le traitement asynchrone si nécessaire.
Rate limits & bonnes pratiques
- • 60 requêtes par minute et par token. Au-delà : réponse
429 Too Many Requests. - • Préférez les webhooks au polling pour être notifié en temps réel.
- • Pas de batch endpoint pour l'instant : une proposition par appel.
- • Idempotence : un même
solicitation_idne peut recevoir qu'une seule proposition. Retentez si vous obtenez 409.
Support
Question d'intégration ou bug API ?