API de exportación de casos de prueba
El endpoint de exportación descarga los casos de prueba activos (no archivados) de un proyecto como un único artefacto. Admite cuatro formatos y tres opciones de alcance, de forma que un integrador puede descargar un proyecto completo, el subárbol de una suite, o exactamente el subconjunto filtrado que un usuario está viendo en el repositorio.
El endpoint es de solo lectura — no emite eventos de auditoría ni realiza cambios de estado. Los adjuntos (imágenes de pasos, evidencia de defectos, etc.) nunca se incluyen en ningún formato exportado; solo viajan con el artefacto el texto, las etiquetas, los valores de campos personalizados y la estructura de suites.
Todas las peticiones requieren autenticación (token de API Bearer o cookie de sesión) con rol mínimo de member en la organización del proyecto. Los usuarios con rol viewer reciben 403 forbidden.
Exportar casos de prueba
Sección titulada «Exportar casos de prueba»/api/v1/projects/{projectId}/exports{projectId} es el código del proyecto (por ejemplo ACME).
Parámetros de consulta
Sección titulada «Parámetros de consulta»| Parámetro | Por defecto | Notas |
|---|---|---|
format | — | Obligatorio. Uno de json, xml, csv, xlsx. Un valor no listado devuelve 422 validation_failed. |
scope | project | project (todo el proyecto), suite (la suite indicada por suite, más todas sus suites descendientes), o filtered (el servidor reevalúa q/cf — ver abajo). |
suite | — | ULID de la suite. Obligatorio cuando scope=suite; se ignora en otro caso. Un ULID de suite no resoluble devuelve 404 not_found. |
q | — | Filtro de subcadena, aplicado solo cuando scope=filtered. Mismo contrato de coincidencia de subcadena que el endpoint de búsqueda de casos de prueba. |
cf | — | Filtro de campo personalizado, repetible, aplicado solo cuando scope=filtered. Cada entrada es <fieldUlid>:<value[,value…]> — contrato idéntico al de los endpoints de búsqueda/listado. |
Respuesta
Sección titulada «Respuesta»200 con el cuerpo del artefacto en el formato solicitado. La respuesta siempre lleva un Content-Type correspondiente y una cabecera Content-Disposition: attachment que nombra el archivo <projectId>-export.<extension>:
format | Content-Type | Extensión |
|---|---|---|
json | application/json | .json |
xml | application/xml | .xml |
csv | text/csv | .csv |
xlsx | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | .xlsx |
Todos los formatos llevan los mismos datos subyacentes: para cada caso de prueba activo, su título, descripción, etiquetas, ruta de suite, pasos y los valores completos de campos personalizados (campos fijos — prioridad/tipo/estado — más cada campo personalizado configurado en el proyecto). Las celdas de CSV y XLSX que comienzan con =, +, -, @, un tabulador o un retorno de carro se prefijan con una comilla simple (') inicial para neutralizar la inyección de fórmulas en hojas de cálculo — esto es visible si abres el archivo en una aplicación de hoja de cálculo.
Límite de tamaño
Sección titulada «Límite de tamaño»Una exportación está acotada a EXPORT_MAX_CASES (5000) casos activos por petición. Cuando el alcance resuelto superaría ese límite, la petición falla antes de leer o serializar cualquier fila:
{ "error": { "code": "too_many_cases", "message": "..." } }Reduce el alcance (una suite más pequeña, o un alcance filtered con q/cf) y vuelve a intentarlo.
Límite de tasa
Sección titulada «Límite de tasa»Las peticiones de exportación están limitadas por organización. Superar el límite devuelve 429 con { "error": { "code": "too_many_requests", ... } }. Espera un momento y reintenta.
Errores
Sección titulada «Errores»| Estado | Código | Condición |
|---|---|---|
403 | forbidden | El rol del llamante es viewer |
404 | not_found | projectId no existe en la organización activa, o scope=suite referencia un ULID de suite que no existe en este proyecto |
422 | validation_failed | Falta format o no es uno de los cuatro valores listados, o scope=suite está presente sin suite |
422 | too_many_cases | El alcance resuelto supera EXPORT_MAX_CASES |
429 | too_many_requests | Se superó el límite de tasa de exportación de la organización |
Reimportar una exportación
Sección titulada «Reimportar una exportación»Todo archivo que produce este endpoint — JSON, XML, CSV o XLSX — puede reimportarse mediante la API de importación en dos pasos: POST /api/v1/projects/{projectId}/imports:stage para cargar el archivo y luego POST /api/v1/projects/{projectId}/imports/commit con el formato de origen probara_json/probara_xml/probara_csv/probara_xlsx correspondiente — un ciclo completo de ida y vuelta para respaldar y restaurar, o migrar casos entre proyectos. Como los adjuntos nunca se exportan, un caso reimportado nunca conserva sus imágenes de paso originales; todo lo demás (título, descripción, etiquetas, ruta de suite, pasos y valores de campos personalizados) se conserva íntegramente en el ciclo.
Ejemplo
Sección titulada «Ejemplo»Exportar un proyecto completo como CSV:
curl -sS \ -H "Authorization: Bearer $PROBARA_API_TOKEN" \ -o acme-export.csv \ "https://probara.net/api/v1/projects/ACME/exports?format=csv"Exportar el subárbol de una suite (incluyendo sus descendientes) como XLSX:
curl -sS \ -H "Authorization: Bearer $PROBARA_API_TOKEN" \ -o acme-suite-export.xlsx \ "https://probara.net/api/v1/projects/ACME/exports?format=xlsx&scope=suite&suite=01JAAAA..."Exportar el subconjunto filtrado que coincide con una búsqueda como JSON:
curl -sS \ -H "Authorization: Bearer $PROBARA_API_TOKEN" \ -o acme-filtered-export.json \ "https://probara.net/api/v1/projects/ACME/exports?format=json&scope=filtered&q=login"Páginas relacionadas
Sección titulada «Páginas relacionadas»- API de búsqueda de casos de prueba — el mismo contrato de filtros
q/cfusado porscope=filtered. - API de importación de casos de prueba — reimporta los archivos que produce este endpoint, con fidelidad completa para reimportaciones de Probara.