Co będzie potrzebne
- Moduł Connections w przestrzeni roboczej: jest dostępny w planach Team, Business, Partner i Enterprise, a w planie Project jako dodatek Integracje dla jednego UAT.
- Uprawnienia administratora w projekcie UAT Studio.
- Narzędzie, które potrafi wysyłać żądania HTTPS: skrypt, pipeline CI, Postman lub platforma integracyjna.
Korzystają Państwo z Zapier lub Make? Wtedy nie trzeba samodzielnie wywoływać API: zobacz Zapier i Make.
Połączenie narzędzia
Utworzenie klucza API
- Zalogować się na app.uat.studio, otworzyć projekt i przejść do Setup.
- Na karcie API keys wpisać nazwę, np. Release pipeline, i kliknąć Create API key.
- Kliknąć Copy. UAT Studio pokazuje klucz tylko raz. Należy zapisać go jako sekret w używanym narzędziu, np.
UAT_STUDIO_KEY.
Wywołanie
Klucz należy wysyłać z każdym żądaniem jako Authorization: Bearer, spacja i klucz. Na przykład najnowsze zgłoszenia:
curl -H "Authorization: Bearer $UAT_STUDIO_KEY" "https://app.uat.studio/api/v1/issues?order=created&limit=10"
Nowe zgłoszenie, z JSON w treści żądania:
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}'
Odpowiedź jest w formacie JSON. Każde zgłoszenie zawiera klucz (ISS-012), tytuł, opis, wagę, priorytet, status, osobę przypisaną, test i testera, który je znalazł, ticket w Jira lub Azure DevOps oraz link do UAT Studio.
Adresy API
| Rodzaj | Żądanie | Co robi |
|---|---|---|
| Odczyt | GET /me | Projekt, do którego należy klucz. |
| Odczyt | GET /issues?order=created | Najnowsze zgłoszenia. order=updated: ostatnio zmienione. Ponadto since (data i godzina), status i limit (do 100). |
| Odczyt | GET /issues/ISS-012 | Jedno zgłoszenie, z krokiem, którego dotyczy, i jego historią. |
| Tworzenie | POST /issues | Nowe zgłoszenie: title i opcjonalnie description, severity, priority, test_number, step_number, assignee, record_url. Bez test_number (i z group dla grupy, która je testuje) zgłoszenie dostaje własny przypadek testowy, gdy otrzyma status Gotowe do ponownego testu. |
| Zmiana | PATCH /issues/ISS-012 | status, severity, assignee lub record_url, z opcjonalnym comment. Ustawienie status zgłoszenia bez przypadku testowego na Ready for retest tworzy jego przypadek testowy; odpowiedź zawiera wtedy "test_case": "created". |
| Zmiana | POST /issues/ISS-012/comments | comment w historii. |
| Odczyt | GET /cases | Przypadki testowe z krokami i liczbą wyników Pass, Fail itd. Ponadto epic, since i limit (do 1000). |
| Tworzenie | POST /cases | Przypadek testowy: title, steps (lista action, expected i opcjonalnie data) oraz opcjonalnie external_id, epic, group, links, priority (Must, Should lub Could) i risk (High, Medium lub Low). Ponowne wysłanie tego samego external_id aktualizuje przypadek; kroki w tym samym miejscu zachowują swoje wyniki. |
| Tworzenie | POST /testers | Tester: name i opcjonalnie email oraz group. Zaproszenie wysyła się z Setup. |
| Odczyt | GET /signoffs | Sign-offy, od najnowszych. |
| Odczyt | GET /groups | Grupy projektu. |
| Odczyt | GET /status | Go lub no-go dla wydania: zob. poniżej. |
Release gate: wdrożenie, gdy biznes udzielił sign-off
GET /status odpowiada polem decision: go, gdy bieżąca runda ma sign-off i nie ma otwartego zgłoszenia Critical, no-go, gdy sign-off został odrzucony lub jest otwarte zgłoszenie Critical, oraz open, gdy decyzja jeszcze nie zapadła. Z ?gate=1 każda odpowiedź inna niż go zwraca HTTP 409, więc krok w pipeline'ie kończy się błędem.
- 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"
Dla pipeline'u warto użyć osobnego klucza, aby można go było unieważnić oddzielnie.
Odpowiedzi i co zrobić
| Odpowiedź | Co zrobić |
|---|---|
| 401: klucz API jest nieprawidłowy | Klucz został unieważniony lub błędnie wpisany. Należy utworzyć nowy klucz w Setup › API keys. |
| 403: poza planem lub tylko do odczytu | Przestrzeń robocza nie ma modułu Connections lub jej plan się zakończył. W trybie tylko do odczytu odczyt nadal działa. |
| 404: brak zgłoszenia ISS-… | Klucz należy do innego projektu lub zgłoszenie zostało scalone. |
| 400: nieprawidłowe pole | Komunikat wskazuje, które pole, np. nieistniejącą wagę. |
409 z ?gate=1 | Wydanie nie może jeszcze wyjść: odpowiedź zawiera powody. |
Jak chroniony jest klucz
- Klucz daje dostęp do jednego projektu i do niczego więcej w przestrzeni roboczej.
- UAT Studio przechowuje tylko odcisk klucza, nigdy sam klucz. Setup pokazuje cztery ostatnie znaki i datę ostatniego użycia.
- Revoke w Setup natychmiast wyłącza klucz.
- Każde zgłoszenie lub tester utworzony bądź zmieniony za pomocą klucza jest widoczny w historii zgłoszenia i dzienniku audytu, z nazwą klucza.
- Klucza nigdy nie należy umieszczać w e-mailu, na czacie ani w kodzie; należy przechowywać go jako sekret w używanym narzędziu.
