Téléverser une photo de villa
POST /api/v1/properties/{propertyId}/photo
Téléverse une photo et la rattache à la villa. Le corps est en multipart/form-data.
L’image est compressée côté serveur, aux mêmes paliers que ceux que l’application applique dans le navigateur. Un appel venu d’un script n’est passé par aucun navigateur : sans ce passage, l’API stockerait un original en pleine résolution là où l’écran aurait stocké une version légère.
Autorisation
| Rôle dans l’organisation | Cet endpoint |
|---|---|
owner | Autorisé |
admin | Autorisé |
member | Refusé — 403 |
Champs du formulaire
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
file | fichier | oui | image/jpeg, image/png ou image/webp |
level | enum | non | light (1600px, q82), balanced (1200px, q72, par défaut), strong (900px, q60) |
Exemple
bash
curl -X POST -H "x-api-key: $VILLASLOT_API_KEY" \
-F "file=@villa-suar.jpg" -F "level=balanced" \
"https://villaslot.app/api/v1/properties/1f0a…/photo"Réponse
200 OK— la villa, avec sa nouvellephotoUrl.
Ce qu’il refuse
403 Forbidden— le porteur de la clé est unmember.422 Unprocessable Entity— pas de champfile, un fichier vide, ou unlevelinconnu.401 Unauthorized— clé absente ou invalide, ou clé dont le porteur a quitté l’organisation.404 Not Found— identifiant inconnu, ou identifiant appartenant à une autre organisation. Les deux sont volontairement indiscernables.429 Too Many Requests— plus de 120 requêtes en une minute pour cette clé.
Notes
- Un fichier qui ne peut pas être réencodé, ou dont le réencodage serait plus lourd que l’original, est stocké tel que reçu. Le téléversement n’échoue jamais à cause de la compression.
- Un PNG ou un WebP avec transparence garde son format ; tout le reste est réencodé en JPEG.