Skip to content

API-endepunkter

Referanse for Lumi API-endepunktene.

Innsending (API-nøkkel)

Primær integrasjonsmetode for enterprise/BYOC-kunder. Widgeten sender svar direkte fra nettleseren.

EndepunktMetodeAuthBeskrivelse
/api/v1/submissionPOSTX-Api-Key: lumi_pk_...Send inn survey-svar
/api/v1/submissionOPTIONSIngenCORS 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.

EndepunktMetodeBeskrivelse
/api/v1/admin/api-keysPOSTOpprett ny nøkkel (pk eller sk)
/api/v1/admin/api-keysGETList nøkler for teamet
/api/v1/admin/api-keys/{id}/rotatePOSTRoter en nøkkel (med grace period)
/api/v1/admin/api-keys/{id}DELETERevokere en nøkkel umiddelbart

Headers

http
Authorization: Bearer lumi_sk_live_...
Content-Type: application/json

Opprett 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.

EndepunktMetodeBeskrivelse
/api/v1/admin/orgGETHent organisasjonsinfo
/api/v1/admin/org/teamsGETList team i organisasjonen
/api/v1/admin/org/teamsPOSTOpprett nytt team
/api/v1/admin/org/teams/{slug}/group-mappingsPOSTLegg til OIDC-gruppekobling
/api/v1/admin/org/teams/{slug}/group-mappings/{id}DELETEFjern 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.

EndepunktMetodeAuthBruk
/api/v1/nais/tokenx/submissionPOSTTokenXSluttbruker-flater (nav.no)
/api/v1/nais/azure/submissionPOSTAzure ADVeileder-/Modia-/fagsystem-flater

Autentisering

FlateTokenEndepunktCaller identity
Sluttbruker (nav.no)TokenX/api/v1/nais/tokenx/submissionclient_id (cluster:namespace:app)
Intern (Modia, fagsystemer)Azure AD/api/v1/nais/azure/submissionazp_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.

EndepunktMetodeAuthBeskrivelse
/api/v1/setup/statusGETOIDC BearerSjekk om oppsett er gjort
/api/v1/setupPOSTOIDC Bearer (admin)Opprett organisasjon (første gang)
/api/v1/setup/keysPOSTOIDC 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

KlientHeaderNøkkelformatBrukstilfelle
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 JWTDashboard-tilgang via OIDC-innlogging

Feilkoder

HTTP-statuskodeÅrsak
400 Bad RequestUgyldig forespørsel — manglende eller feil felter i request body
401 UnauthorizedManglende eller ugyldig autentisering
403 ForbiddenGyldig autentisering, men manglende tilgang (f.eks. feil origin eller team)
409 ConflictRessurs eksisterer allerede (f.eks. setup kalt to ganger)
429 Too Many RequestsRate limit overskredet for nøkkelen

Se også

Lumi Analytics — bygget på navikt/lumi (MIT-lisens)