Appearance
API-endepunkter
Referanse for Lumi API-endepunktene.
Innsending (API-nøkkel)
Primær integrasjonsmetode for enterprise/BYOC-kunder. Widgeten sender svar direkte fra nettleseren.
| Endepunkt | Metode | Auth | Beskrivelse |
|---|---|---|---|
/api/v1/submission | POST | X-Api-Key: lumi_pk_... | Send inn survey-svar |
/api/v1/submission | OPTIONS | Ingen | CORS preflight |
Headers
http
POST /api/v1/submission
Content-Type: application/json
X-Api-Key: lumi_pk_live_...Eksempel
sh
curl -X POST https://lumi.din-bedrift.no/api/v1/submission \
-H "Content-Type: application/json" \
-H "X-Api-Key: lumi_pk_live_..." \
-d '{
"surveyId": "min-app-tilbakemelding",
"answers": [{"questionId": "rating", "value": 4}]
}'CORS
Endepunktet returnerer Access-Control-Allow-Origin: * for at nettleseren skal kunne sende direkte. pk_-nøkler kan begrenses med allowedOrigins ved opprettelse.
Rate limiting
Alle API-nøkler deler en fast rate limit på 1000 req/min. Per-nøkkel rateLimit-verdien lagres i databasen, men er foreløpig ikke aktivt håndhevet (planlagt).
API-nøkkeladministrasjon
Krever sk_-nøkkel (secret key). Brukes for å opprette, liste, rotere og revokere nøkler.
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/v1/admin/api-keys | POST | Opprett ny nøkkel (pk eller sk) |
/api/v1/admin/api-keys | GET | List nøkler for teamet |
/api/v1/admin/api-keys/{id}/rotate | POST | Roter en nøkkel (med grace period) |
/api/v1/admin/api-keys/{id} | DELETE | Revokere en nøkkel umiddelbart |
Headers
http
Authorization: Bearer lumi_sk_live_...
Content-Type: application/jsonOpprett nøkkel
sh
curl -X POST https://lumi.din-bedrift.no/api/v1/admin/api-keys \
-H "Authorization: Bearer lumi_sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"keyType": "pk",
"appName": "min-web-app",
"allowedOrigins": ["https://app.din-bedrift.no"],
"rateLimit": 1000
}'Respons (201 Created):
json
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"key": "lumi_pk_live_...",
"keyType": "pk",
"team": "mitt-team",
"appName": "min-web-app"
}Roter nøkkel
sh
curl -X POST https://lumi.din-bedrift.no/api/v1/admin/api-keys/{id}/rotate \
-H "Authorization: Bearer lumi_sk_live_..." \
-H "Content-Type: application/json" \
-d '{"gracePeriodHours": 72}'Grace period (0-720 timer) lar den gamle nøkkelen fortsatt fungere mens du ruller ut den nye.
Revokere nøkkel
sh
curl -X DELETE https://lumi.din-bedrift.no/api/v1/admin/api-keys/{id} \
-H "Authorization: Bearer lumi_sk_live_..."Organisasjonsadministrasjon
Krever sk_-nøkkel. Administrer organisasjon, team og OIDC-gruppekoblinger.
| Endepunkt | Metode | Beskrivelse |
|---|---|---|
/api/v1/admin/org | GET | Hent organisasjonsinfo |
/api/v1/admin/org/teams | GET | List team i organisasjonen |
/api/v1/admin/org/teams | POST | Opprett nytt team |
/api/v1/admin/org/teams/{slug}/group-mappings | POST | Legg til OIDC-gruppekobling |
/api/v1/admin/org/teams/{slug}/group-mappings/{id} | DELETE | Fjern OIDC-gruppekobling |
Opprett team
sh
curl -X POST https://lumi.din-bedrift.no/api/v1/admin/org/teams \
-H "Authorization: Bearer lumi_sk_live_..." \
-H "Content-Type: application/json" \
-d '{"slug": "produkt-team", "name": "Produktteamet"}'Legg til OIDC-gruppekobling
Kobler en OIDC-gruppe (f.eks. Entra ID group ID) til et Lumi-team. Brukere i denne gruppen får tilgang til teamets data i dashboardet.
sh
curl -X POST https://lumi.din-bedrift.no/api/v1/admin/org/teams/produkt-team/group-mappings \
-H "Authorization: Bearer lumi_sk_live_..." \
-H "Content-Type: application/json" \
-d '{"oidcGroupId": "550e8400-e29b-41d4-a716-446655440000"}'For NAIS-kunder: TokenX / AzureAD-endepunkter
Disse endepunktene brukes av NAIS-applikasjoner som gjør token exchange server-side.
| Endepunkt | Metode | Auth | Bruk |
|---|---|---|---|
/api/v1/nais/tokenx/submission | POST | TokenX | Sluttbruker-flater (nav.no) |
/api/v1/nais/azure/submission | POST | Azure AD | Veileder-/Modia-/fagsystem-flater |
Autentisering
| Flate | Token | Endepunkt | Caller identity |
|---|---|---|---|
| Sluttbruker (nav.no) | TokenX | /api/v1/nais/tokenx/submission | client_id (cluster:namespace:app) |
| Intern (Modia, fagsystemer) | Azure AD | /api/v1/nais/azure/submission | azp_name (cluster:namespace:app) |
Se Koble til backend for oppsett av token exchange og NAIS access policies.
Oppsett (onboarding)
Endepunkter for å sette opp Lumi første gang. Brukes av dashboard-veiviseren og kan også kalles direkte via CLI.
| Endepunkt | Metode | Auth | Beskrivelse |
|---|---|---|---|
/api/v1/setup/status | GET | OIDC Bearer | Sjekk om oppsett er gjort |
/api/v1/setup | POST | OIDC Bearer (admin) | Opprett organisasjon (første gang) |
/api/v1/setup/keys | POST | OIDC Bearer (admin) | Generer første nøkkelpar (sk + pk) |
GET /api/v1/setup/status
Returnerer om en organisasjon allerede eksisterer. Krever OIDC Bearer-token.
sh
curl https://lumi.din-bedrift.no/api/v1/setup/status \
-H "Authorization: Bearer <jwt>"Respons (200 OK) — ikke satt opp:
json
{
"orgExists": false,
"hasApiKeys": false,
"orgName": null
}Respons (200 OK) — allerede satt opp:
json
{
"orgExists": true,
"hasApiKeys": true,
"orgName": "Din Bedrift AS"
}POST /api/v1/setup
Oppretter organisasjon og default-team. Kan kun kalles én gang — returnerer 409 Conflict om organisasjon allerede eksisterer. Krever OIDC Bearer-token med admin-rolle.
sh
curl -X POST https://lumi.din-bedrift.no/api/v1/setup \
-H "Authorization: Bearer <jwt>" \
-H "Content-Type: application/json" \
-d '{
"name": "Din Bedrift AS"
}'Respons (201 Created):
json
{
"org": { "slug": "din-bedrift-as", "name": "Din Bedrift AS" },
"team": { "slug": "default", "name": "Default" }
}POST /api/v1/setup/keys
Genererer det første nøkkelparet (sk + pk) for default-teamet. Kalles som siste steg i oppsettsveiviseren. Krever OIDC Bearer-token med admin-rolle.
sh
curl -X POST https://lumi.din-bedrift.no/api/v1/setup/keys \
-H "Authorization: Bearer <jwt>"Respons (201 Created):
json
{
"secretKey": "lumi_sk_live_...",
"publishableKey": "lumi_pk_live_..."
}Lagre nøkkelen
Nøkkelen vises bare én gang. Lagre den sikkert — den trengs for all videre nøkkeladministrasjon.
Auth-konvensjoner
| Klient | Header | Nøkkelformat | Brukstilfelle |
|---|---|---|---|
| Widget (nettleser) | X-Api-Key: lumi_pk_... | pk_ (public key) | Sende inn survey-svar |
| Admin-klient (curl, CI) | Authorization: Bearer lumi_sk_... | sk_ (secret key) | Nøkkeladministrasjon, org-admin |
| Dashboard (nettleser) | Authorization: Bearer <jwt> | OIDC JWT | Dashboard-tilgang via OIDC-innlogging |
Feilkoder
| HTTP-statuskode | Årsak |
|---|---|
400 Bad Request | Ugyldig forespørsel — manglende eller feil felter i request body |
401 Unauthorized | Manglende eller ugyldig autentisering |
403 Forbidden | Gyldig autentisering, men manglende tilgang (f.eks. feil origin eller team) |
409 Conflict | Ressurs eksisterer allerede (f.eks. setup kalt to ganger) |
429 Too Many Requests | Rate limit overskredet for nøkkelen |
Se også
- Datakontrakt — payload-struktur for innsending
- Koble til backend — oppsett av integrasjon
- Miljøer — URLer og deployment
- Produksjonsherdning — origin-validering og nøkkelrotasjon
