API-reference¶
Turbo EA eksponerer et komplet REST API, der driver alt, hvad du kan gøre i web-UI'et. Du kan bruge det til at automatisere lageropdateringer, integrere med CI/CD-pipelines, bygge brugerdefinerede dashboards eller trække EA-data ind i andre værktøjer (BI, GRC, ITSM, regneark).
Den komplette OpenAPI 3-specifikation gengives live længere nede på denne side — hvert endpoint, parameter og responsformat, regenereret fra backend-kildekoden ved hver udgivelse.
Basis-URL¶
Alle API-endpoints lever under /api/v1-præfikset:
https://your-domain.example.com/api/v1
Lokalt (standard Docker-opsætning):
http://localhost:8920/api/v1
Den eneste undtagelse er health-endpointet, som er monteret på /api/health (intet versionspræfiks).
Live OpenAPI-reference¶
Den interaktive Swagger UI nedenfor genereres direkte fra FastAPI-kildekoden ved hver udgivelse og leveres med brugermanualen — ingen backend-instans påkrævet for at browse den. Brug filterboksen til at indsnævre endpoints efter tag, udvid enhver operation for at se parametre, request/response-skemaer og eksempel-payloads. Den rå specifikation kan downloades som JSON på /api/openapi.json til kodegeneratorer såsom openapi-generator-cli.
Test endpoints mod din egen instans
Try-it-out er bevidst deaktiveret her — docs-siden proxyer ikke dit API. For at sende rigtige anmodninger skal du køre Turbo EA i udviklingstilstand (ENVIRONMENT=development) og åbne /api/docs på din egen instans: klik på Authorize, indsæt en JWT (uden Bearer-præfikset), og brug Try it out. I produktionsimplementeringer er disse endpoints deaktiveret af sikkerhedsårsager; denne side forbliver den skrivebeskyttede browser.
Autentificering¶
Alle endpoints undtagen /auth/*, health-tjekket og offentlige webportaler kræver en JSON Web Token sendt i Authorization-headeren:
Authorization: Bearer <access_token>
Opnåelse af et token¶
POST /api/v1/auth/login med din e-mail og adgangskode:
curl -X POST https://your-domain.example.com/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "your-password"}'
Responsen indeholder et access_token:
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "bearer"
}
Tokens er gyldige i 24 timer som standard (ACCESS_TOKEN_EXPIRE_MINUTES). Brug POST /api/v1/auth/refresh for at forlænge en session uden at genindtaste legitimationsoplysninger.
SSO-brugere
Hvis din organisation bruger Single Sign-On, kan du ikke logge ind med e-mail/adgangskode. Bed enten en administrator om at oprette en servicekonto med en lokal adgangskode til automatisering, eller fange JWT'en fra browserens session-storage efter et normalt SSO-login (kun til udviklingsbrug).
Brug af tokenet¶
curl https://your-domain.example.com/api/v1/cards \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."
Tilladelser¶
API'et håndhæver de samme RBAC-regler som web-UI'et. Hvert muterende endpoint tjekker både den kaldendes applikationsrolle og enhver interessentrolle, de har på det berørte kort. Der er ingen separate "API-tilladelser" eller servicekonto-omgåelser — automatiseringsscripts kører med tilladelserne for den bruger, hvis token de bruger.
Hvis en anmodning fejler med 403 Forbidden, er tokenet gyldigt, men brugeren mangler den krævede tilladelse. Se siden Brugere og roller for tilladelsesregistret.
Almindelige endpoint-grupper¶
Live-referencen ovenfor er den fulde kilde til sandhed; tabellen nedenfor er et hurtigt kort over de mest brugte grupper:
| Præfiks | Formål |
|---|---|
/auth |
Login, registrering, SSO-callback, token-fornyelse, aktuel brugerinformation |
/cards |
CRUD på kort (kerne-entiteten), hierarki, historik, godkendelse, CSV-eksport |
/relations |
CRUD på relationer mellem kort |
/metamodel |
Korttyper, felter, sektioner, undertyper, relationstyper |
/reports |
Dashboard-KPI'er, portefølje, matrix, livscyklus, afhængigheder, omkostninger, datakvalitet |
/bpm |
Business Process Management — diagrammer, elementer, flowversioner, vurderinger |
/ppm |
Project Portfolio Management — initiativer, statusrapporter, WBS, opgaver, omkostninger, risici |
/turbolens |
AI-drevet analyse (leverandører, dubletter, sikkerhed, arkitektur-AI) |
/risks |
EA Risikoregister (TOGAF Phase G) |
/diagrams |
DrawIO-diagrammer |
/soaw |
Statement of Architecture Work-dokumenter |
/adr |
Architecture Decision Records |
/users, /roles |
Bruger- og rolleadministration (kun admin) |
/settings |
Applikationsindstillinger (logo, valuta, SMTP, AI, modulkontakter) |
/servicenow |
Tovejs ServiceNow CMDB-synkronisering |
/events, /notifications |
Revisionsspor og brugernotifikationer (inkl. SSE-stream) |
Paginering, filtrering og sortering¶
List-endpoints accepterer et konsistent sæt af query-parametre:
| Parameter | Beskrivelse |
|---|---|
page |
Sidenummer (1-baseret) |
page_size |
Elementer pr. side (standard 50, maks 200) |
sort_by |
Felt at sortere efter (f.eks. name, updated_at) |
sort_dir |
asc eller desc |
search |
Fri tekst-filter (hvor understøttet) |
Ressourcespecifikke filtre er dokumenteret pr. endpoint i live-referencen ovenfor (f.eks. accepterer /cards type, status, parent_id, approval_status).
Realtids-hændelser (Server-Sent Events)¶
GET /api/v1/events/stream er en langvarig SSE-forbindelse, der pusher hændelser, efterhånden som de sker (kort oprettet, opdateret, godkendt osv.). Web-UI'et bruger den til at opdatere badges og lister uden polling. Enhver HTTP-klient, der understøtter SSE, kan abonnere — nyttigt til at bygge realtids-dashboards eller eksterne notifikationsbroer.
Kodegenerering¶
Fordi API'et er fuldt beskrevet af OpenAPI 3, kan du generere type-sikre klienter på ethvert større sprog:
# Download the schema (no running instance needed)
curl https://docs.turbo-ea.org/api/openapi.json -o turbo-ea-openapi.json
# Generate a Python client
openapi-generator-cli generate \
-i turbo-ea-openapi.json \
-g python \
-o ./turbo-ea-client-py
# …or TypeScript, Go, Java, C#, etc.
Til Python-automatisering er den nemmeste vej normalt httpx eller requests med håndskrevne kald — API'et er lille nok til, at en generator sjældent er afhængigheden værd.
Rate Limiting¶
Auth-følsomme endpoints (login, registrering, adgangskodenulstilling) er rate-limitet via slowapi for at beskytte mod brute-force-angreb. Andre endpoints er ikke rate-limitet som standard; hvis du har brug for at throttle et tungt automatiseringsscript, gør det på klientsiden eller bag din reverse proxy.
Versionering og stabilitet¶
- API'et er versioneret via
/api/v1-præfikset. En brydende ændring ville introducere/api/v2ved siden af det. - Inden for
v1kan additive ændringer (nye endpoints, nye valgfri felter) sendes i mindre og patch-udgivelser. Fjernelser eller kontraktændringer er forbeholdt en større version-bump. - Den aktuelle version rapporteres af
GET /api/health, så du kan registrere opgraderinger fra automatisering.
Fejlfinding¶
| Problem | Løsning |
|---|---|
/api/docs returnerer 404 på din egen instans |
Swagger UI er deaktiveret i produktion. Indstil ENVIRONMENT=development og genstart backenden, eller brug live-referencen ovenfor. |
| Live-reference ovenfor er tom | Tjek browser-konsollen — embeddet indlæser /api/openapi.json; virksomheds-proxyer eller strenge ad-blockere blokerer lejlighedsvis CDN-hostede scripts. |
401 Unauthorized |
Token mangler, er fejlformet eller udløbet. Re-autentificér via /auth/login eller /auth/refresh. |
403 Forbidden |
Token er gyldigt, men brugeren mangler den krævede tilladelse. Tjek brugerens rolle i Brugere og roller. |
422 Unprocessable Entity |
Pydantic-validering fejlede. Responskroppen lister, hvilke felter der er ugyldige og hvorfor. |
| CORS-fejl fra en browser-app | Tilføj din frontend-oprindelse til ALLOWED_ORIGINS i .env og genstart backenden. |