Skip to main content

Upload de fichiers

Les fichiers (CV, photo, logo) sont stockés sur Cloudflare R2 (compatible S3) en production. Côté dev, MinIO local est utilisé.

Types de fichiers supportés

TypeFormatsTaille maxBucket
CVPDF, DOCX5 Moprivate
Photo profilJPG, PNG, WEBP2 Mopublic
Logo entrepriseJPG, PNG, SVG2 Mopublic
Document KYC (recruteur)PDF, JPG, PNG5 Moprivate
Taille globale maximale par requête : 10 Mo.

Upload d’un CV (candidat)

curl -X POST https://api.wethehivers.com/v1/api/candidats/me/cv \
  -H "Authorization: Bearer <token-candidat>" \
  -F "file=@cv.pdf"
Réponse :
{
  "cvId": 17,
  "fileName": "cv.pdf",
  "fileSize": 324512,
  "uploadedAt": "2026-04-18T14:30:00Z",
  "downloadUrl": "https://api.wethehivers.com/v1/api/files/cv/17"
}
Le CV est stocké dans le bucket privé. L’URL de téléchargement est signée et expire après 15 minutes. Elle est régénérée à chaque appel.

Upload d’une photo de profil

curl -X POST https://api.wethehivers.com/v1/api/candidats/me/photo \
  -H "Authorization: Bearer <token-candidat>" \
  -F "file=@photo.jpg"
La photo est redimensionnée côté serveur en 3 tailles (64px, 256px, 1024px) et servie depuis le CDN Cloudflare.

Upload d’un logo d’entreprise

Réservé au recruteur rattaché à l’entreprise :
curl -X POST https://api.wethehivers.com/v1/api/entreprises/me/logo \
  -H "Authorization: Bearer <token-recruteur>" \
  -F "file=@logo.png"

Téléchargement

Pour les fichiers privés (CV, KYC), l’API renvoie une URL pré-signée valable 15 minutes :
curl https://api.wethehivers.com/v1/api/files/cv/17 \
  -H "Authorization: Bearer <token>"
{
  "url": "https://storage.wethehivers.com/private/cv/17.pdf?X-Signature=...",
  "expiresAt": "2026-04-18T14:45:00Z"
}

Erreurs fréquentes

CodeMessageCause
400”Format de fichier non supporté”Extension non autorisée
413”Fichier trop volumineux”Dépassement de la taille max
422”Fichier corrompu ou illisible”Échec de la validation (PDF cassé, etc.)
Tout fichier est scanné à l’upload (virus, contenu). Un fichier détecté comme malveillant est supprimé immédiatement et le compte est signalé.