GlitchTip — READ access pro agenta (číst chyby přes REST API)
Rozdíl od glitchtip-agent-onboarding.md: onboarding = odesílání chyb DO GlitchTipu (DSN, Sentry SDK). Tenhle runbook = číst chyby VEN (agent nemá browser → REST API s bearer tokenem). Validováno 2026-07-13 (venom-agent token).
Přístupový model (proč to funguje bez „přidávání do projektu")
- Žádné týmy neexistují (
teams_team= 0 řádků). Přístup k projektům jede přes org roli, ne team membership. - Org
studio-60(id 1). Uživatelagents@studio60.cz(users_user id 34, org-user id 2) má roli ADMIN (role=1) → vidí všechny projekty org-wide (badwolf, billit, pulse, s60-auth, s60-mail, venom). (libor = role=3 OWNER.) - Takže agent „nemá přístup" = jen mu chybí token, ne oprávnění. Read už na úrovni GlitchTipu funguje.
Token model
- Tabulka
api_tokens_apitoken(glitchtip DB na pg-alfa100.125.3.121:6432, dostupná přes SU). - Sloupce:
id, token, label, scopes, created, user_id.token= plaintext bearer (GlitchTip nehashuje → lze číst i vytvořit přímo v DB). scopes = 9223372036854775807(max int64 = full; read funguje). Runbook onboarding varuje „scopes=0 nefunguje" — proto full.- Vzor: 1 token na agenta (label
<agent>-agent), vše pod userem 34.
Postup: vytvořit read token pro nového agenta
# 1) generuj bearer (64 hex)
TOK=$(openssl rand -hex 32)
# 2) INSERT do glitchtip DB (user agents=34, full scope) — pg-alfa SU
ssh root@100.125.3.121 "sudo -u postgres psql -d glitchtip -tA -v ON_ERROR_STOP=1 -c \
\"INSERT INTO api_tokens_apitoken (token,label,scopes,created,user_id) \
VALUES ('$TOK','<agent>-agent',9223372036854775807,now(),34) RETURNING id\""
# 3) VERIFY přes API (GlitchTip web běží na sentinelu 127.0.0.1:8000)
curl -s -H "Authorization: Bearer $TOK" \
"http://127.0.0.1:8000/api/0/organizations/studio-60/projects/" | python3 -c "import sys,json;print([p['slug'] for p in json.load(sys.stdin)])"
curl -s -o /dev/null -w '%{http_code}\n' -H "Authorization: Bearer $TOK" \
"http://127.0.0.1:8000/api/0/organizations/studio-60/issues/?project=<id>&limit=1" # očekávej 200
# 4) předej agentovi INLINE relay zprávou (Tailscale-only) — token NIKDY do gitu/plaintextu jinam
send-message.sh <agent> INFO "GlitchTip read token" "TOKEN: $TOK + API návod (viz níže)"
API endpointy pro čtení (co dát agentovi)
- Base:
https://errors.studio60.cz· org slugstudio-60 - Projekty (id):
s60-auth=1,pulse=2,billit=3,venom=4,badwolf=5,s60-mail=6
# poslední unresolved issues projektu
GET /api/0/organizations/studio-60/issues/?project=<id>&limit=25&query=is:unresolved
# detail issue
GET /api/0/organizations/studio-60/issues/<issue_id>/
# eventy issue (stacktrace)
GET /api/0/issues/<issue_id>/events/latest/
Authorization: Bearer <token>.
Existující read tokeny (api_tokens_apitoken)
| id | label | user | pozn. |
|---|---|---|---|
| 1 | sentinel-admin | libor (OWNER) | admin |
| 2 | agents-readonly | agents | sdílený read (fallback) |
| 3 | pulse-agent | agents | |
| 4 | billit-agent | agents | |
| 5 | venom-agent | agents | vytvořen 2026-07-13 |
Revokace
ssh root@100.125.3.121 "sudo -u postgres psql -d glitchtip -c \"DELETE FROM api_tokens_apitoken WHERE label='<agent>-agent'\""
Souvisí: glitchtip-agent-onboarding.md (DSN/odesílání), ../services/glitchtip/INDEX.md.