UAT Studioby Salvion
Help · Connections

The UAT Studio REST API

Read and log issues, comments, sign-offs and testers from your own scripts and tools, and let your pipeline ask whether a release may go. With a project API key.

Address https://app.uat.studio/api/v1Who a project admin makes the keyFormat JSONPlans Team, Business, Partner and Enterprise
Before you start

What you need

  • The Connections module in your workspace: it comes with the Team, Business, Partner and Enterprise plans, and as the add-on Integrations for one UAT with the Project plan.
  • Admin rights in the UAT Studio project.
  • A tool that can send HTTPS requests: a script, your CI pipeline, Postman, or an integration platform.

Using Zapier or Make? Then you do not need to call the API yourself: see Zapier and Make.

Set up · once per project

Connect your tool

1

Create an API key

  1. Sign in at app.uat.studio, open the project and go to Setup.
  2. In the card API keys, type a name such as Release pipeline and click Create API key.
  3. Click Copy. UAT Studio shows the key only once. Store it as a secret in your tool, for example UAT_STUDIO_KEY.
2

Make a call

Send the key with every request as Authorization: Bearer, a space, and the key. For example, the newest issues:

curl -H "Authorization: Bearer $UAT_STUDIO_KEY" "https://app.uat.studio/api/v1/issues?order=created&limit=10"

A new issue, with JSON in the body:

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}'

The answer is JSON. Every issue comes with its key (ISS-012), title, description, severity, priority, status, assignee, the test and the tester who found it, the ticket in Jira or Azure DevOps and a link to UAT Studio.

What you can use · https://app.uat.studio/api/v1

The addresses of the API

KindRequestWhat it does
ReadGET /meThe project the key belongs to.
ReadGET /issues?order=createdThe newest issues. order=updated: the latest changed. Also since (a date and time), status and limit (up to 100).
ReadGET /issues/ISS-012One issue, with the step it is about and its history.
CreatePOST /issuesA new issue: title, and optionally description, severity, priority, test_number, step_number, assignee, record_url. Without test_number (and group to name the group that tests it), the issue gets a test case of its own once it is set to Ready for retest.
ChangePATCH /issues/ISS-012status, severity, assignee or record_url, with an optional comment. Setting the status of an issue without a test case to Ready for retest makes its test case; the answer then has "test_case": "created".
ChangePOST /issues/ISS-012/commentsA comment in the history.
ReadGET /casesThe test cases with their steps and how many results are Pass, Fail and so on. Also epic, since and limit (up to 1,000).
CreatePOST /casesA test case: title, steps (a list of action, expected and optionally data), and optionally external_id, epic, group, links, priority (Must, Should or Could) and risk (High, Medium or Low). Send the same external_id again to bring it up to date; steps in the same place keep their results.
CreatePOST /testersA tester: name, and optionally email and group. The invitation is sent from Setup.
ReadGET /signoffsThe sign-offs, newest first.
ReadGET /groupsThe groups of the project.
ReadGET /statusGo or no-go for a release: see below.
For your pipeline

Release gate: deploy when the business signed off

GET /status answers with a decision: go when the current round is signed off and no Critical issue is open, no-go when a sign-off is rejected or a Critical issue is open, and open when it is not decided yet. With ?gate=1 anything but go answers with HTTP 409, so the step in your pipeline fails.

- 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"

Use a key of its own for the pipeline, so you can revoke it separately.

If something goes wrong

Answers and what to do

AnswerWhat to do
401: the API key is not validThe key was revoked or mistyped. Create a new key under Setup › API keys.
403: not part of the plan, or read-onlyThe workspace has no Connections module, or its plan has ended. Reading still works when it is read-only.
404: there is no issue ISS-…The key belongs to another project, or the issue was merged.
400: a field is not rightThe message says which field, for example a severity that does not exist.
409 with ?gate=1The release may not go yet: the answer holds the reasons.
Security

How the key is kept safe

  • A key gives access to one project, nothing else in your workspace.
  • UAT Studio stores only a fingerprint of the key, never the key itself. Setup shows the last four characters and when it was last used.
  • Revoke on Setup stops a key straight away.
  • Every issue or tester created or changed through a key shows in the issue history and the audit log, with the name of the key.
  • Never put a key in an email, a chat or code; store it as a secret in your tool.