API-spesifikasjon
Komplett oversikt over alle eksterne og interne API-er Consoliq bruker — endepunkter, request/response-eksempler og autentiseringsmetoder.
Autentiseringsmetoder
Consoliq bruker fire ulike autentiseringsmønstre avhengig av integrasjon.
JWT Bearer (Supabase Auth)
Brukerøkter sendes som Authorization: Bearer <jwt>. Edge functions og server functions validerer token og kjører under brukerens RLS.
Internal service secret
Cron- og maskin-til-maskin-kall bruker x-internal-service-secret (eller Bearer-token) som matches mot INTERNAL_SERVICE_SECRET.
HMAC webhook signature
Stripe-webhooks verifiseres med HMAC-SHA256 over timestamp.body mot webhook-secret. Avviser forespørsler eldre enn 5 minutter.
Tripletex session token
Consumer + employee token byttes mot en kortvarig session token. Brukes som HTTP Basic Auth (0:<sessionToken>) mot Tripletex API.
Tripletex API
Regnskapsdata: kontoer, balanser, fakturaer, ansatte. Base URL: https://tripletex.no/v2
https://tripletex.no/v2/token/session/:createBytter consumer- og employee-token mot en session token (gyldig opptil utløpsdato).
Request
PUT /v2/token/session/:create
?consumerToken=eyJ0b2tlbiI...
&employeeToken=eyJ0b2tlbiI...
&expirationDate=2026-12-31Response
{
"value": {
"token": "abc123...",
"expirationDate": "2026-12-31",
"employeeId": 12345
}
}/v2/ledger/accountHenter kontoplan (alle hovedbokskontoer).
Request
GET /v2/ledger/account?from=0&count=1000
Authorization: Basic MDpzZXNzaW9uVG9rZW4=Response
{
"values": [
{ "id": 1, "number": 1500, "name": "Kundefordringer", "type": "ASSET" }
]
}/v2/ledger/accountingPeriod/openBalanceHenter åpningsbalanser per periode for konsolidering.
/v2/invoiceLister fakturaer med filtrering på dato og status.
Stripe (via Lovable Cloud connector gateway)
All Stripe-trafikk rutes gjennom https://connector-gateway.lovable.dev/stripe — vi sender aldri ekte Stripe-secret-key direkte.
/functions/v1/create-checkoutOppretter Stripe Checkout Session for abonnement.
Request
POST /functions/v1/create-checkout
Authorization: Bearer <user-jwt>
Content-Type: application/json
{ "priceId": "pro_monthly", "env": "live" }Response
{ "url": "https://checkout.stripe.com/c/pay/cs_..." }/functions/v1/create-credit-checkoutEngangskjøp av AI-credits via Stripe Checkout.
/functions/v1/create-portal-sessionReturnerer URL til Stripe Customer Portal for fakturahåndtering.
Response
{ "url": "https://billing.stripe.com/p/session/..." }/functions/v1/payments-webhook?env=liveStripe webhook-handler. Behandler customer.subscription.created/updated/deleted og checkout.session.completed.
Request
POST /functions/v1/payments-webhook?env=live
stripe-signature: t=1714370400,v1=abc123...
Content-Type: application/json
{
"type": "customer.subscription.created",
"data": { "object": { "id": "sub_...", "status": "active", ... } }
}Response
{ "received": true }/functions/v1/get-stripe-priceHenter pris-metadata for å vise i pricing-siden.
Lovable AI Gateway
AI-CFO-funksjonalitet. Base URL: https://ai.gateway.lovable.dev/v1
/v1/chat/completionsOpenAI-kompatibel chat completions med tool calling. Brukes av AI-CFO for å spørre over regnskapsdata. Modeller: google/gemini-2.5-flash (default), openai/gpt-5, m.fl.
Request
POST /v1/chat/completions
Authorization: Bearer <LOVABLE_API_KEY>
Content-Type: application/json
{
"model": "google/gemini-2.5-flash",
"messages": [
{ "role": "system", "content": "Du er en CFO-assistent..." },
{ "role": "user", "content": "Hva er marginen i Q1?" }
],
"tools": [{ "type": "function", "function": { "name": "get_balance", ... } }]
}Response
{
"choices": [{
"message": {
"role": "assistant",
"tool_calls": [{ "function": { "name": "get_balance", "arguments": "{...}" } }]
}
}],
"usage": { "prompt_tokens": 412, "completion_tokens": 89 }
}Lovable Cloud (Supabase)
Database, Auth, Storage og Realtime. Base URL: https://qceojikacfialgkhwvls.supabase.co
/auth/v1/token?grant_type=passwordE-post/passord-innlogging. Returnerer JWT access_token og refresh_token.
Request
{ "email": "user@firma.no", "password": "..." }Response
{
"access_token": "eyJhbGc...",
"refresh_token": "...",
"user": { "id": "uuid", "email": "..." }
}/auth/v1/signupBruker-registrering med e-postverifisering.
/rest/v1/:tablePostgREST queries mot tabeller. RLS håndhever tilgang per organisasjon.
Request
GET /rest/v1/accounts?select=*&organization_id=eq.<uuid>
Authorization: Bearer <jwt>
apikey: <anon-key>wss://...supabase.co/realtime/v1/websocketRealtime-subscriptions på postgres_changes for live-oppdateringer i UI.
Interne public hooks
Endepunkter under /api/public/* kalles av cron-jobber og interne replays. Beskyttet av INTERNAL_SERVICE_SECRET eller admin-JWT.
/api/public/hooks/tripletex-syncTrigger full Tripletex-sync for alle organisasjoner med konfigurert integrasjon. Idempotent.
Request
POST /api/public/hooks/tripletex-sync
x-internal-service-secret: <secret>
Content-Type: application/json
{ "force": false }Response
{
"success": true,
"total_synced": 1284,
"duration_ms": 8421,
"results": [{ "entity": "accounts", "synced": 412 }, ...]
}/api/public/hooks/generate-board-packsGenererer planlagte board-pack PDFs for organisasjoner med skjema.
/api/public/hooks/process-report-jobsPlukker ventende rapport-jobber fra køen og genererer PDF/Excel.
/api/public/hooks/replay-dead-lettersReplayer feilede webhook- og sync-events fra dead-letter-køen.
Response
{ "processed": 12, "succeeded": 11, "failed": 1 }Server functions (createServerFn)
Typed RPC fra klient til server. Kalles via TanStack Start, kjører under brukerens RLS.
balance.getConsolidatedHenter konsolidert balanse for et konsern med eliminering og valutakonvertering.
Request
{
"data": {
"groupId": "uuid",
"periodStart": "2026-01-01",
"periodEnd": "2026-03-31"
}
}aiCfo.askQuestionSender spørsmål til AI-CFO. Bruker tool calling mot regnskapsdata. Trekker AI-credits.
tripletex.testConnectionVerifiserer at lagrede Tripletex-tokens er gyldige.
reportJobs.enqueueLegger en rapport-generering i kø for asynkron prosessering.
admin.listOrganizationsAdmin-only oversikt over alle organisasjoner. Krever admin-rolle i user_roles.
PostHog Analytics
Klient-side event tracking. Kun publishable key i kode.
https://eu.i.posthog.com/i/v0/e/Capture-endepunkt for events fra nettleseren. Sendes via posthog-js SDK.
Request
{
"api_key": "phc_...",
"event": "report_generated",
"distinct_id": "user-uuid",
"properties": { "report_type": "board_pack" }
}Hemmeligheter & secrets
Alle API-nøkler ligger i Lovable Cloud Secrets — aldri i kode eller frontend-bundle. Se docs/SECRETS.md for full liste over påkrevde miljøvariabler per integrasjon.
