Adjuntos de resultado de ejecución
Durante una ejecución, un miembro puede registrar un resultado actual por paso (texto libre) y adjuntos de imagen opcionales (PNG, JPEG o WebP). El flujo es análogo al de adjuntos de paso de caso: las imágenes se procesan en servidor a WebP (tamaño completo, borde más largo ≤ 2048px, conservando proporción) y se genera una miniatura (≤ 320px), siguiendo el patrón stage-and-commit.
El acceso requiere rol member o superior en una ejecución open. Todas las operaciones de escritura (stage, commit, delete) se rechazan con 409 en una ejecución closed; las lecturas siguen permitidas (el panel es de solo lectura).
- Stage —
POST /api/v1/runs/{runUlid}/cases/{runCaseUlid}/steps/{stepUlid}/result-attachments:stageconmultipart/form-datay una o más partesfile. Escribe enstaging/<orgUlid>/y devuelve referencias en estado staged (sin fila aún). - Commit —
PATCH /api/v1/runs/{runUlid}/cases/{runCaseUlid}/steps/{stepUlid}/resultcon el textoactualResulty los refs enattachments[]. El servidor copia staged → claves permanentes (attachments/<orgUlid>/<projectUlid>/run-steps/<runCaseStepUlid>/<attUlid>.webp), inserta filas, borra los objetos staged y persiste el texto. - Lectura —
GET /api/v1/runs/{runUlid}/cases/{runCaseUlid}devuelveactualResultyattachments[]por paso (ordenado porposition). Las miniaturas se sirven enGET /__assets/{thumbKey}.
Los objetos staged abandonados expiran automáticamente mediante la regla de ciclo de vida de R2 (~48 h).
Stage (multipart)
Sección titulada «Stage (multipart)»curl -sS -X POST \ -H "Authorization: Bearer $PROBARA_API_TOKEN" \ -F "file=@captura.png" \ "https://probara.net/api/v1/runs/$RUN/cases/$RC/steps/$ST/result-attachments:stage"200 devuelve la misma forma que adjuntos de paso (StagedRunResultAttachmentRef).
Commit (PATCH result)
Sección titulada «Commit (PATCH result)»{ "actualResult": "Apareció HTTP 500 en lugar del dashboard", "attachments": [ { "ulid": "01J...ATT", "position": 0, "objectKey": "staging/01J...ORG/01J...UPLOAD.webp", "thumbKey": "staging/01J...ORG/01J...UPLOAD_thumb.webp", "mime": "image/webp", "byteSize": 8420, "width": 1200, "height": 800, "originalFilename": "captura.png" } ]}La reconciliación funciona exactamente igual que con adjuntos de paso: los ulids nuevos se promueven, los existentes se conservan (solo se actualiza position), y cualquier ulid ya almacenado que se omita del payload se borra (filas + R2 permanente + contador de almacenamiento).
El servidor no confía en los valores byteSize, width ni height enviados por el cliente al hacer commit — los re-mide leyendo R2. Los refs staged cuyo prefijo de clave no coincida con la organización del solicitante se rechazan (guardia cross-tenant).
actualResult: null limpia el texto; omitirlo deja el valor anterior intacto. Omitir attachments deja el conjunto comprometido sin tocar.
Borrar un adjunto
Sección titulada «Borrar un adjunto»curl -sS -X DELETE \ -H "Authorization: Bearer $PROBARA_API_TOKEN" \ "https://probara.net/api/v1/runs/$RUN/cases/$RC/steps/$ST/result-attachments/$ATT"204 en éxito. 404 cuando el adjunto no existe o pertenece a otra organización. 409 cuando la ejecución está cerrada.
Operaciones sobre un caso de la ejecución
Sección titulada «Operaciones sobre un caso de la ejecución»El tablero de ejecución rediseñado añade dos operaciones a nivel de caso:
POST /api/v1/runs/{runUlid}/cases/{runCaseUlid}/retry— reinicia el caso (y los snapshots de sus pasos) auntestedy recalcula el agregado. Emiterun.case_retried.DELETE /api/v1/runs/{runUlid}/cases/{runCaseUlid}— quita el caso (cascada: pasos + adjuntos de resultado) y recalcula el agregado. Emiterun.case_removed.
Ambas requieren member+ sobre una ejecución open y devuelven 409 cuando la ejecución está closed.
Contabilidad de almacenamiento
Sección titulada «Contabilidad de almacenamiento»Los bytes de adjuntos de resultado comprometidos (completo + miniatura) incrementan organization_storage_usage para la categoría run_result_attachment. Los bytes en staging no se contabilizan. El contador es la base para los futuros planes de precios.
Relacionado
Sección titulada «Relacionado»- Adjuntos de paso de caso — homólogo en autoría
- Referencia interactiva v1 — esquemas completos