atlas gemmer software-arkitekturer som dokumenter (architecture-as-data):
domæner, services og forbindelser via et REST-API. Mekanik: OpenAPI-spec på
/openapi.json. Alt kræver autentisering undtagen /api/health,
/openapi.json og denne side.
Browser (mennesker): POST /api/login med email + password giver en
session-cookie (7 dage). Mutationer kræver desuden x-csrf header (token fra
GET /api/csrf i samme session).
API-nøgle (AI-agenter, scripts): send
Authorization: Bearer c4sk_... på alle anmodninger — ingen CSRF, ingen cookie.
Nøgler oprettes under API-nøgler i venstre bjælke (eller POST /api/keys med session).
Nøglen vises kun én gang; gem den. To scopes:
GET-Endpoints (modeller, graf, diagrammer).Rate-limit for API-nøgler: 60 anmodninger/minut → 429 + Retry-After.
# 1. Hent dit landscape (domæner, noder, kanter) — kræver read-nøgle
curl -H "Authorization: Bearer c4sk_DIN_NOEGLE" http://atlas.test.obix.dk/api/models/4/graph
# 2. Læs en hel model som dokument (read)
curl -H "Authorization: Bearer c4sk_DIN_NOEGLE" http://atlas.test.obix.dk/api/models/4
# 3. Opdater modellen (readwrite) — komplet body
curl -X PUT -H "Authorization: Bearer c4sk_DIN_NOEGLE" -H "Content-Type: application/json" \
-d @model.json http://atlas.test.obix.dk/api/models/4
Modelbody er landscape-format: services[] + relations[] (+ domains[]),
samme JSON som UI'ets editor bruger.
Valideringen returnerer en dansk fejl-liste på 400, så du kan rettere og prøve igen.
| Methode | Sti | Beskrivelse |
|---|---|---|
| GET | /api/health | Health check offentlig |
| GET | /openapi.json | OpenAPI 3.1-specifikation offentlig |
| POST | /api/login | Log ind (browser) — sætter session-cookie |
| POST | /api/logout | Log ud |
| GET | /api/me | Aktuel bruger + teams read |
| GET | /api/csrf | CSRF-token (browser-session) |
| GET | /api/models | Liste (efter synlighed) read |
| POST | /api/models | Opret model readwrite |
| GET | /api/models/{id} | Model som dokument read |
| PUT | /api/models/{id} | Opdater (komplet body) readwrite |
| DELETE | /api/models/{id} | Slet readwrite |
| GET | /api/models/{id}/graph | Normaliseret landscape-graf read |
| GET | /api/models/{id}/diagrams | Mermaid-komponentdiagrammer pr. service read |
| GET | /api/models/{id}/events | Event-liste: navn, topic, producenter, forbrugere, brokers read |
| GET | /api/models/{id}/events/{name}/flow | Event-flow: hel publish→consume-kæde (BFS frem + tilbage) read |
| GET | /api/teams | Teams (admin: alle) |
| POST | /api/teams | Opret team admin |
| POST | /api/teams/{id}/members | Tilføj medlem admin |
| GET | /api/keys | Egne API-nøgler (session) |
| POST | /api/keys | Opret nøgle — {name, scope, expires_in_days?} (session) |
| DELETE | /api/keys/{id} | Revokér nøgle (session) |
| GET | /api/audit | Seneste 200 handlinger admin |
401 — manglende/ugyldig/uudløbt nøgle eller ikke logget ind.403 — read-only nøgle på skrivning, ikke-ejer på andres model, eller manglende admin.404 — model findes ikke eller er ikke synlig for dig (private/team).400 — modelen fejler validering; errors[] er en dansk fejl-liste.429 — rate-limit; vent indtil Retry-After (sekunder).