Obtenir une URL PUT présignée pour upload direct vers MinIO (photos HK/incidents)
const url = 'https://example.com/v1/storage/presigned-upload';const options = { method: 'POST', headers: {'X-API-Key': '<X-API-Key>', 'Content-Type': 'application/json'}, body: '{"docType":"hk_photo","contentType":"image/jpeg","establishmentId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/v1/storage/presigned-upload \ --header 'Content-Type: application/json' \ --header 'X-API-Key: <X-API-Key>' \ --data '{ "docType": "hk_photo", "contentType": "image/jpeg", "establishmentId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'Le binaire ne transite PAS par l’API. Le client PUT directement vers uploadUrl.
Authorizations
Section intitulée « Authorizations »Request Body required
Section intitulée « Request Body required »object
Catégorie du document — détermine le préfixe du chemin objet
MIME type — validé côté serveur (image/* seulement)
Example
image/jpegResponses
Section intitulée « Responses »URL présignée générée
object
object
URL MinIO signée — PUT direct du binaire depuis le mobile
Clé objet à référencer dans work-order/photos après upload
Expiration de l’URL signée (TTL = 15 min)
Example generated
{ "data": { "uploadUrl": "https://example.com", "objectKey": "example", "expiresAt": "2026-04-15T12:00:00Z" }}Corps invalide (contentType non image/*)
object
Code machine de l’erreur
Message lisible
Origine domaine de l’erreur (optionnel)
object
Identifiant de corrélation pour le support
Example
{ "code": "RESERVATION_NOT_FOUND", "message": "Réservation introuvable", "status": 404}Non authentifié
object
Code machine de l’erreur
Message lisible
Origine domaine de l’erreur (optionnel)
object
Identifiant de corrélation pour le support
Example
{ "code": "RESERVATION_NOT_FOUND", "message": "Réservation introuvable", "status": 404}Permission refusée ou établissement hors périmètre
object
Code machine de l’erreur
Message lisible
Origine domaine de l’erreur (optionnel)
object
Identifiant de corrélation pour le support
Example
{ "code": "RESERVATION_NOT_FOUND", "message": "Réservation introuvable", "status": 404}