stacken.docs

Styrning för en växande portfölj av AI-tjänster

stacken.ai ↗

API · 48 operationer

bff

Genererad ur services/bff/openapi.json, kontraktsversion 0.1.0. Auth-modell och anropare står i atlasen.

GET /.well-known/security.txt

Security Txt

SvarBeskrivningKropp
200Successful Responseany application/json

GET /api/chat/v1/conversations

List Conversations

ParameterITypKrävs
qquerystring | nullnej
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

POST /api/chat/v1/conversations

Create Conversation

Kropp: ConversationCreate application/json

SvarBeskrivningKropp
201Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

DELETE /api/chat/v1/conversations/{conversation_id}

Delete Conversation

ParameterITypKrävs
conversation_idpathstring (uuid)ja
SvarBeskrivningKropp
204Successful Response—
422Validation ErrorHTTPValidationError application/json

GET /api/chat/v1/conversations/{conversation_id}

Get Conversation

ParameterITypKrävs
conversation_idpathstring (uuid)ja
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

GET /api/chat/v1/conversations/{conversation_id}/export

Export Conversation

ParameterITypKrävs
conversation_idpathstring (uuid)ja
formatquerystringnej
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

POST /api/chat/v1/conversations/{conversation_id}/messages

Post Message

ParameterITypKrävs
conversation_idpathstring (uuid)ja

Kropp: SendMessageRequest application/json

SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

GET /api/chat/v1/models

List Chat Models

Modellkatalogen som chatten får se: avstängda modeller och modeller utan intent utelämnas. Till skillnad från ops-ytan (§6b) är filtreringen rätt här — chatten adresserar ALDRIG en modell vid namn, bara via svarsläge, så en post utan intent är oadresserbar och en avstängd post väljs ändå aldrig av resolve_intent (chat_store/intent.py, R6).

SvarBeskrivningKropp
200Successful ResponseChatModelView[] application/json

GET /api/chat/v1/records

List Records

ParameterITypKrävs
statusquerystring | nullnej
qquerystring | nullnej
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

POST /api/chat/v1/records

Register Record

Kropp: RecordCreate application/json

SvarBeskrivningKropp
201Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

PATCH /api/chat/v1/records/{record_id}

Patch Record

ParameterITypKrävs
record_idpathstring (uuid)ja

Kropp: RecordPatch application/json

SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

GET /api/chat/v1/records/{record_id}/disclose

Disclose Record

ParameterITypKrävs
record_idpathstring (uuid)ja
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

POST /api/chat/v1/uploads/file

File Upload

ParameterITypKrävs
assistant_idquerystring (uuid)ja
file_namequerystringja

Kropp: string application/octet-stream

SvarBeskrivningKropp
201Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

POST /api/chat/v1/uploads/scan

Scan Upload

Kropp: UploadScanRequest application/json

SvarBeskrivningKropp
201Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

GET /api/models

List Models

ParameterITypKrävs
authorizationheaderstring | nullnej
SvarBeskrivningKropp
200Successful ResponseModelView[] application/json
422Validation ErrorHTTPValidationError application/json

POST /api/policy/v1/assistants

Create Assistant

SvarBeskrivningKropp
200Successful Responseany application/json

PATCH /api/policy/v1/assistants/{assistant_id}

Patch Assistant

ParameterITypKrävs
assistant_idpathstringja
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

POST /api/policy/v1/decide

Decide Probe

Kropp: DecideProbeRequest application/json

SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

GET /api/public-sites

List Sites

ParameterITypKrävs
authorizationheaderstring | nullnej
SvarBeskrivningKropp
200Successful ResponseSiteResponse[] application/json
422Validation ErrorHTTPValidationError application/json

POST /api/public-sites

Create Site

ParameterITypKrävs
authorizationheaderstring | nullnej

Kropp: SiteCreate application/json

SvarBeskrivningKropp
201Successful ResponseSiteResponse application/json
422Validation ErrorHTTPValidationError application/json

POST /api/public-sites/maintenance/sweep

Sweep

Explicit retention-svep av ENDAST det publika planet (spec §7.2) — anropar `sweep_expired`, ALDRIG `sweep_expired_chat`. Operatörens "kör nu" för `bff_public`-schemat, utöver dygnsronden (D-94, `app/retention_sweep.py`, CronJobbet `<release>-bff-retention-sweep`), som sedan D-94 är den enda automatiska gallringsvägen för BÅDA planen. Gated på write eftersom operationen muterar (hård DELETE). Det finns INGEN manuell väg att tvinga fram en chattgallring — den vägen går bara via dygnsronden. Kalla inte denna yta "kör nu" för gallringen i stort; den rör bara publika sessioner. Tenant-scope: till skillnad från övriga ops i denna fil filtrerar INTE `sweep_expired` på tenant_id — se invarianten dokumenterad i app/public/retention.py (BFF är single-tenant-per-instans, så hela bff_public-schemat tillhör den enda tenant denna instans betjänar).

ParameterITypKrävs
authorizationheaderstring | nullnej
SvarBeskrivningKropp
200Successful Response{ [nyckel]: integer } application/json
422Validation ErrorHTTPValidationError application/json

POST /api/public-sites/{site_id}/forensics/{session_id}/unlock

Unlock Forensics

Dekrypterar en publik sessions forensik-transkript åt en tenant_admin. Auditraden skrivs i SAMMA transaktion som läsningen (fail-closed: misslyckas audit-skrivningen rullas hela unlocken tillbaka — ingen tyst läsning utan spår). Svaret innehåller det dekrypterade innehållet (poängen med unlock) men det loggas ALDRIG — audit-metadata bär endast id:n + antal rader.

ParameterITypKrävs
site_idpathstringja
session_idpathstringja
authorizationheaderstring | nullnej
SvarBeskrivningKropp
200Successful Responseobject application/json
422Validation ErrorHTTPValidationError application/json

POST /api/public-sites/{site_id}/revoke

Revoke Site

ParameterITypKrävs
site_idpathstringja
authorizationheaderstring | nullnej
SvarBeskrivningKropp
200Successful Response{ [nyckel]: string } application/json
422Validation ErrorHTTPValidationError application/json

POST /api/rag/v1/documents/file

Knowledge File

Filvägen steg 5: en fil blir ett kunskapsdokument (utkast) i samlingen. Ordningen är densamma som i uploads/file: format, skrivrätt, storlek, signatur, `decide(file_extract)` och extraktion. Därefter skapar rag-api dokumentet, och dess ingest kör pii och `knowledge_ingest` som för text.

ParameterITypKrävs
collection_idquerystring (uuid)ja
file_namequerystringja
titlequerystringja
information_classquery"gron" | "gul" | "rod" | nullnej

Kropp: string application/octet-stream

SvarBeskrivningKropp
201Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

DELETE /api/{service}/{path}

Passthrough Delete

ParameterITypKrävs
servicepathstringja
pathpathstringja
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

GET /api/{service}/{path}

Passthrough Get

ParameterITypKrävs
servicepathstringja
pathpathstringja
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

PATCH /api/{service}/{path}

Passthrough Patch

ParameterITypKrävs
servicepathstringja
pathpathstringja
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

POST /api/{service}/{path}

Passthrough Post

ParameterITypKrävs
servicepathstringja
pathpathstringja
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

PUT /api/{service}/{path}

Passthrough Put

ParameterITypKrävs
servicepathstringja
pathpathstringja
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

GET /auth/callback

Callback

ParameterITypKrävs
codequerystring | nullnej
statequerystring | nullnej
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

GET /auth/logged-out

Logged Out

SvarBeskrivningKropp
200Successful Responseany application/json

GET /auth/login

Login

ParameterITypKrävs
redirect_toquerystringnej
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

POST /auth/logout

Logout

SvarBeskrivningKropp
200Successful Responseany application/json

POST /chat

Chat

Kropp: ChatRequest application/json

SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

GET /gdpr/tenants/{tenant_id}/export

Export Tenant

ParameterITypKrävs
tenant_idpathstring (uuid)ja
authorizationheaderstringnej
SvarBeskrivningKropp
200Successful ResponseTenantExport application/json
422Validation ErrorHTTPValidationError application/json

POST /gdpr/users/{user_id_hash}/conversations/erase

Erase Subject Conversations

ParameterITypKrävs
user_id_hashpathstring (uuid)ja
authorizationheaderstringnej
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

GET /gdpr/users/{user_id_hash}/conversations/export

Export Subject Conversations

ParameterITypKrävs
user_id_hashpathstring (uuid)ja
authorizationheaderstringnej
SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

GET /healthz

Healthz

SvarBeskrivningKropp
200Successful Response{ [nyckel]: string } application/json

GET /internal/k21/avslag

Geo Denied

SvarBeskrivningKropp
403Förfrågan är nekadany application/json
404Rutten är avstängd (K21_AVSLAG_AKTIV av)—
503Audit-raden gick inte att skriva, förfrågan är nekad—

POST /internal/k21/avslag

Geo Denied

SvarBeskrivningKropp
403Förfrågan är nekadany application/json
404Rutten är avstängd (K21_AVSLAG_AKTIV av)—
503Audit-raden gick inte att skriva, förfrågan är nekad—

GET /internal/k21/regel

Rule State

SvarBeskrivningKropp
200Successful Responseany application/json
404Rutten är avstängd (K21_AVSLAG_AKTIV av)—
503Audit-raden gick inte att skriva—

POST /internal/k21/regel

Rule Notice

Kropp: RuleNotice application/json

SvarBeskrivningKropp
200Successful Responseany application/json
404Rutten är avstängd (K21_AVSLAG_AKTIV av)—
422Validation ErrorHTTPValidationError application/json
503Audit-raden gick inte att skriva—

GET /me

Me

SvarBeskrivningKropp
200Successful Responseany application/json

POST /public/chat

Public Chat

SSE-ström (spec §3.4): alltid 200 när sessionen är giltig — tak och uppströmsfel uttrycks in-stream via `degraded`, aldrig som HTTP-status efter strömöppning. Tak-hierarkin (session -> källa -> tjänst, spec §5) verkställs atomiskt i EN transaktion FÖRE uppströmsanropet: ett degraderat meddelande får aldrig räknas. Om något steg misslyckas rullas HELA transaktionen tillbaka — vid session-cap är inget inkrementerat än (ofarlig rollback), vid käll-/tjänste-cap återställer rollbacken det redan gjorda session-(och ev. käll-)inkrementet. Endast om alla tre passerar skrivs inbound-forensiken i samma transaktion och committas tillsammans med inkrementen (task 9 är därmed den enda som ökar dygnsräknarna — task 7:s mint är read-only).

Kropp: PublicChatRequest application/json

SvarBeskrivningKropp
200Successful Responseany application/json
422Validation ErrorHTTPValidationError application/json

POST /public/feedback

Feedback

Kropp: PublicFeedbackCreate application/json

SvarBeskrivningKropp
201Successful Response{ [nyckel]: string } application/json
422Validation ErrorHTTPValidationError application/json

GET /public/service-info

Service Info

SvarBeskrivningKropp
200Successful ResponsePublicServiceInfo application/json

POST /public/session

Create Session

Kropp: PublicSessionRequest application/json

SvarBeskrivningKropp
201Successful ResponsePublicSessionResponse application/json
422Validation ErrorHTTPValidationError application/json

GET /readyz

Readyz

SvarBeskrivningKropp
200Successful Response{ [nyckel]: string } application/json

Scheman

_Exception

FältTypKrävs
idstringja
tillstring (date-time)ja

ChatMessage

FältTypKrävs
contentstringja
role"system" | "user" | "assistant"ja

ChatModelView

Chattens delmängd (D-82). SKU:n (`id`) följer med men visas aldrig — chat-ui matchar den mot assistentens `allowed_models` och renderar bara intent-etiketten (produkt-ui-spec §10.1).

FältTypKrävs
idstringja
intent"fast" | "balanced" | "deep"ja
labelstringja
residency"eu" | "us" | "on_prem"ja

ChatRequest

FältTypKrävs
assistant_idstring (uuid)ja
messagesChatMessage[]ja
modelstring | nullnej

ConversationCreate

FältTypKrävs
assistant_idstring (uuid)ja
temporarybooleanja

CoverageGap

En store exporten INTE täcker, med ett ärligt skäl. `store` måste vara IDENTISK med namnet i `covered` när en store demoteras (t.ex. `page_truncated_over_500`), så en konsument kan korrelera flytten. Se regel (c) i docs/tenant-export-coverage.md.

FältTypKrävs
reasonstringja
storestringja

DecideProbeRequest

FältTypKrävs
assistant_idstringja
requested_modelstringja

EscalationContact

FältTypKrävs
hoursstring | nullnej
labelstringja
phonestring | nullnej
urlstring | nullnej

HTTPValidationError

FältTypKrävs
detailValidationError[]nej

ModelView

FältTypKrävs
cost_tier"low" | "mid" | "high"ja
enabledbooleanja
eu_nativebooleanja
hosting_regionstringja
idstringja
intent"fast" | "balanced" | "deep" | nullja
labelstringja
max_information_class"gron" | "gul" | "rod"ja
providerstringja
residency"eu" | "us" | "on_prem"ja

PublicChatRequest

FältTypKrävs
messagestringja

PublicFeedbackCreate

FältTypKrävs
message_idstringja
verdictstringja

PublicServiceInfo

FältTypKrävs
ai_disclosurestringja
escalationEscalationContactja
namestringja
not_coveredstring[]ja
purposestringja
retention_noticestringja
tenant_namestringja

PublicSessionRequest

FältTypKrävs
draft_assistant_idstring | nullnej
site_keystringja

PublicSessionResponse

FältTypKrävs
expires_atstringja
message_capintegerja
session_idstringja

RecordCreate

FältTypKrävs
conversation_idstring (uuid)ja
diarienrstring | nullnej
notestring | nullnej

RecordPatch

FältTypKrävs
diarienrstring | nullnej
notestring | nullnej
preservation_holdboolean | nullnej
sekretess_status"unassessed" | "public" | "secret" | "partial" | nullnej

RuleNotice

Regeln för en instans som den gäller efter sync (plattformen#331 §7 G1). Undantagens land och CIDR följer inte med: raden pekar på commit, och en CIDR kan vara en enskild persons adress.

FältTypKrävs
commitstringja
foregaende_regel_sha256string | nullja
godkand_avstringja
instansstringja
lage"av" | "på"ja
profilstringja
profilversionstringja
regel_sha256stringja
schema"k21-regel/v1"ja
tillatnastring[]ja
undantag_Exception[]ja

SendMessageRequest

FältTypKrävs
attachment_idsstring[]nej
contentstringja
requested_intentstringja

SiteCreate

FältTypKrävs
ai_disclosurestringja
allowed_originsstring[]ja
assistant_idstringja
degraded_body_markdownstringja
degraded_contactsEscalationContact[]ja
degraded_titlestringja
escalationEscalationContactja
namestringja
not_coveredstring[]ja
purposestringja
retention_noticestringja
service_daily_capintegernej
session_message_capintegernej
source_daily_capintegernej
tenant_namestringja

SiteResponse

FältTypKrävs
allowed_originsstring[]ja
assistant_idstringja
idstringja
information_class_snapshotstringja
site_keystringja
statusstringja

TenantExport

En producents svar. `extra="forbid"` medvetet: bevarar de tre befintliga typade deklarationernas beteende, OCH gör att en producent som lägger ett fält utan att koordinatorn lär sig om det failar högt i stället för tyst.

FältTypKrävs
coverageTenantExportCoverageja
dataobjectja
generated_atstring (date-time)ja
servicestringja
tenant_idstring (uuid)ja

TenantExportCoverage

FältTypKrävs
coveredstring[]ja
not_coveredCoverageGap[]ja

UploadScanRequest

FältTypKrävs
assistant_idstring (uuid)ja
file_namestringja
textstringja

ValidationError

FältTypKrävs
ctxobjectnej
inputanynej
locstring | integer[]ja
msgstringja
typestringja