API : Pièces jointes
Les pièces jointes utilisent un téléversement en trois étapes, adressé par contenu : tu enregistres le fichier avec sa somme de contrôle SHA-256, tu téléverses les octets vers une URL présignée, puis tu confirmes. Si l’espace de travail stocke déjà un contenu identique, l’étape de téléversement est entièrement sautée.
1. Enregistrer le téléversement
Section intitulée « 1. Enregistrer le téléversement »POST /api/workspaces/{workspaceId}/tasks/{taskId}/attachments{ "checksum": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08", "fileName": "color-sample.jpg", "mediaType": "image/jpeg", "sizeBytes": 182734}checksum est le SHA-256 du contenu du fichier, en hexadécimal minuscule.
Renvoie 201 :
{ "id": "019f…", "uploadUrl": "https://…storage…?X-Amz-Signature=…"}uploadUrlvautnullquand l’espace de travail stocke déjà ce contenu — la pièce jointe est complète, saute les étapes 2 et 3.- Erreurs :
409si ce fichier est déjà joint à cette tâche,413si la limite de stockage de l’espace de travail serait dépassée.
2. Téléverser les octets
Section intitulée « 2. Téléverser les octets »Envoie le fichier brut en PUT vers uploadUrl, avec le même
Content-Type que celui enregistré :
curl -X PUT --data-binary @color-sample.jpg \ -H "Content-Type: image/jpeg" "$UPLOAD_URL"L’URL est présignée et à durée de vie courte ; aucun jeton Todomino n’est envoyé ici.
3. Confirmer
Section intitulée « 3. Confirmer »POST /api/workspaces/{workspaceId}/tasks/{taskId}/attachments/{attachmentId}/completeRenvoie 200 une fois que le serveur a vérifié la taille de l’objet
stocké. 400 si le téléversement n’est jamais arrivé.
Télécharger
Section intitulée « Télécharger »GET /api/workspaces/{workspaceId}/tasks/{taskId}/attachments/{attachmentId}/downloadRépond 302 Found avec une URL présignée à durée de vie courte dans
l’en-tête Location. Suis la redirection sans transmettre ton en-tête
Authorization (la plupart des clients HTTP le font correctement par
défaut).
Supprimer
Section intitulée « Supprimer »DELETE /api/workspaces/{workspaceId}/tasks/{taskId}/attachments/{attachmentId}Renvoie 204. Retire la pièce jointe de la tâche ; le fichier stocké n’est
supprimé que lorsqu’aucune autre tâche ne référence le même contenu.
