API: Archivos adjuntos
Los archivos adjuntos usan una subida en tres pasos, direccionada por contenido: registras el archivo con su checksum SHA-256, subes los bytes a una URL prefirmada y luego confirmas. Si el espacio de trabajo ya almacena un contenido idéntico, el paso de subida se omite por completo.
1. Registrar la subida
Sección titulada «1. Registrar la subida»POST /api/workspaces/{workspaceId}/tasks/{taskId}/attachments{ "checksum": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08", "fileName": "color-sample.jpg", "mediaType": "image/jpeg", "sizeBytes": 182734}checksum es el SHA-256 en hexadecimal en minúsculas del contenido del
archivo. Devuelve 201:
{ "id": "019f…", "uploadUrl": "https://…storage…?X-Amz-Signature=…"}uploadUrlesnullcuando el espacio de trabajo ya almacena este contenido — el archivo adjunto está completo, omite los pasos 2 y 3.- Errores:
409si este archivo ya está adjunto a esta tarea,413si se excedería el límite de almacenamiento del espacio de trabajo.
2. Subir los bytes
Sección titulada «2. Subir los bytes»Haz PUT del archivo en bruto a uploadUrl con el mismo Content-Type que
registraste:
curl -X PUT --data-binary @color-sample.jpg \ -H "Content-Type: image/jpeg" "$UPLOAD_URL"La URL está prefirmada y es de corta duración; aquí no se envía ningún token de Todomino.
3. Completar
Sección titulada «3. Completar»POST /api/workspaces/{workspaceId}/tasks/{taskId}/attachments/{attachmentId}/completeDevuelve 200 después de que el servidor verifique el tamaño del objeto
almacenado. 400 si la subida nunca llegó.
Descargar
Sección titulada «Descargar»GET /api/workspaces/{workspaceId}/tasks/{taskId}/attachments/{attachmentId}/downloadResponde 302 Found con una URL prefirmada de corta duración en la cabecera
Location. Sigue la redirección sin reenviar tu cabecera Authorization
(la mayoría de los clientes HTTP lo hacen correctamente por defecto).
Eliminar
Sección titulada «Eliminar»DELETE /api/workspaces/{workspaceId}/tasks/{taskId}/attachments/{attachmentId}Devuelve 204. Quita el archivo adjunto de la tarea; el archivo almacenado
solo se elimina cuando ninguna otra tarea referencia el mismo contenido.
