Aller au contenu

Obtenir une URL PUT présignée pour upload direct vers MinIO (photos HK/incidents)

POST
/v1/storage/presigned-upload
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.

Media type application/json
object
docType
required

Catégorie du document — détermine le préfixe du chemin objet

string
Allowed values: hk_photo work_order_photo incident_photo
contentType
required

MIME type — validé côté serveur (image/* seulement)

string
Example
image/jpeg
establishmentId
required
string format: uuid

URL présignée générée

Media type application/json
object
data
required
object
uploadUrl
required

URL MinIO signée — PUT direct du binaire depuis le mobile

string format: uri
objectKey
required

Clé objet à référencer dans work-order/photos après upload

string
expiresAt
required

Expiration de l’URL signée (TTL = 15 min)

string format: date-time
Example generated
{
"data": {
"uploadUrl": "https://example.com",
"objectKey": "example",
"expiresAt": "2026-04-15T12:00:00Z"
}
}

Corps invalide (contentType non image/*)

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Non authentifié

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}

Permission refusée ou établissement hors périmètre

Media type application/json
object
code
required

Code machine de l’erreur

string
message
required

Message lisible

string
origin

Origine domaine de l’erreur (optionnel)

object
boundedContext
string
module
string
status
required
integer
traceId
required

Identifiant de corrélation pour le support

string
Example
{
"code": "RESERVATION_NOT_FOUND",
"message": "Réservation introuvable",
"status": 404
}