Lo que necesitas
- El módulo Connections en tu espacio de trabajo: se incluye en los planes Team, Business, Partner y Enterprise, y como el complemento Integrations for one UAT con el plan Project.
- Derechos de administrador en el proyecto de UAT Studio.
- Una herramienta que pueda enviar solicitudes HTTPS: un script, tu pipeline de CI, Postman o una plataforma de integración.
¿Usas Zapier o Make? Entonces no necesitas llamar tú a la API: consulta Zapier y Make.
Conecta tu herramienta
Crea una clave de API
- Inicia sesión en app.uat.studio, abre el proyecto y ve a Setup.
- En la tarjeta API keys, escribe un nombre como Release pipeline y haz clic en Create API key.
- Haz clic en Copy. UAT Studio solo muestra la clave una vez. Guárdala como secreto en tu herramienta, por ejemplo
UAT_STUDIO_KEY.
Haz una llamada
Envía la clave con cada solicitud como Authorization: Bearer, un espacio y la clave. Por ejemplo, las incidencias más recientes:
curl -H "Authorization: Bearer $UAT_STUDIO_KEY" "https://app.uat.studio/api/v1/issues?order=created&limit=10"
Una nueva incidencia, con JSON en el cuerpo:
curl -X POST "https://app.uat.studio/api/v1/issues" \
-H "Authorization: Bearer $UAT_STUDIO_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "Save fails on a new quote", "severity": "High", "test_number": 12}'
La respuesta es JSON. Cada incidencia incluye su clave (ISS-012), título, descripción, gravedad, prioridad, estado, persona asignada, la prueba y el tester que la encontró, el ticket en Jira o Azure DevOps y un enlace a UAT Studio.
Las direcciones de la API
| Tipo | Solicitud | Qué hace |
|---|---|---|
| Leer | GET /me | El proyecto al que pertenece la clave. |
| Leer | GET /issues?order=created | Las incidencias más recientes. order=updated: las últimas modificadas. También since (una fecha y hora), status y limit (hasta 100). |
| Leer | GET /issues/ISS-012 | Una incidencia, con el paso al que se refiere y su historial. |
| Crear | POST /issues | Una nueva incidencia: title y, opcionalmente, description, severity, priority, test_number, step_number, assignee, record_url. Sin test_number (y con group para el grupo que la prueba), la incidencia recibe su propio caso de prueba en cuanto pasa a Lista para volver a probar. |
| Cambiar | PATCH /issues/ISS-012 | status, severity, assignee o record_url, con un comment opcional. Al poner el status de una incidencia sin caso de prueba en Ready for retest se crea su caso de prueba; la respuesta incluye entonces "test_case": "created". |
| Cambiar | POST /issues/ISS-012/comments | Un comment en el historial. |
| Leer | GET /cases | Los casos de prueba con sus pasos y cuántos resultados son Pass, Fail, etc. También epic, since y limit (hasta 1.000). |
| Crear | POST /cases | Un caso de prueba: title, steps (una lista de action, expected y, opcionalmente, data) y, opcionalmente, external_id, epic, group, links, priority (Must, Should o Could) y risk (High, Medium o Low). Envía de nuevo el mismo external_id para actualizarlo; los pasos que siguen en el mismo lugar conservan sus resultados. |
| Crear | POST /testers | Un tester: name y, opcionalmente, email y group. La invitación se envía desde Setup. |
| Leer | GET /signoffs | Los sign-offs, los más recientes primero. |
| Leer | GET /groups | Los grupos del proyecto. |
| Leer | GET /status | Go o no-go para una versión: consulta más abajo. |
Release gate: despliega cuando el negocio haya dado su sign-off
GET /status responde con una decision: go cuando la ronda actual tiene sign-off y no hay ninguna incidencia Critical abierta, no-go cuando se rechaza un sign-off o hay una incidencia Critical abierta, y open cuando aún no se ha decidido. Con ?gate=1, cualquier cosa que no sea go responde con HTTP 409, de modo que el paso de tu pipeline falla.
- name: UAT signed off?
run: curl --fail-with-body -sS -H "Authorization: Bearer ${{ secrets.UAT_STUDIO_KEY }}" "https://app.uat.studio/api/v1/status?gate=1"
Usa una clave propia para el pipeline, para poder revocarla por separado.
Respuestas y qué hacer
| Respuesta | Qué hacer |
|---|---|
| 401: la clave de API no es válida | La clave se revocó o se copió mal. Crea una clave nueva en Setup › API keys. |
| 403: no forma parte del plan, o es de solo lectura | El espacio de trabajo no tiene el módulo Connections, o su plan ha terminado. En modo de solo lectura, leer sigue funcionando. |
| 404: no existe la incidencia ISS-… | La clave pertenece a otro proyecto, o la incidencia se fusionó. |
| 400: un campo no es correcto | El mensaje indica qué campo, por ejemplo una gravedad que no existe. |
409 con ?gate=1 | La versión aún no puede salir: la respuesta contiene los motivos. |
Cómo se protege la clave
- Una clave da acceso a un proyecto, a nada más de tu espacio de trabajo.
- UAT Studio solo guarda una huella de la clave, nunca la clave en sí. Setup muestra los cuatro últimos caracteres y cuándo se usó por última vez.
- Revoke en Setup desactiva una clave al instante.
- Cada incidencia o tester creado o cambiado mediante una clave aparece en el historial de la incidencia y en el registro de auditoría, con el nombre de la clave.
- Nunca pongas una clave en un correo, un chat o en código; guárdala como secreto en tu herramienta.
