Chat

Bryti i chatten: samtaler, meldinger og handlinger Bryti foreslår.14 operasjoner

Hoder på hvert svar

Hvert svar på denne siden har disse hodene.
X-Trace-Id
— The W3C trace id of this request — the same id in the log and in the traceId of a problem. Quote it when reporting.
Server-Timing
— Where the time went: total, db;dur=…;desc="N queries", and every step the handler named (ADR-163).
X-Diagnostics
— Only when the request asked with X-Diagnostics: 1 or ?diagnostics=1: the same breakdown as one JSON object, with the trace id (ADR-163).

Operasjoner

GET/api/v1/households/{householdId}/conversations

List the household's conversations, newest activity first

One page at a time (ADR-292, #3002): cursor and limit in, items/nextCursor out, 50 rows by default and 100 at most. Home writes a thread a day, so a household that stays a year has 365 of them. total is null — nobody counts the threads above a switcher. Threads without messages never list: the apps create threads lazily on the first send, so an empty one is an abandoned draft, hidden at once and deleted after a day. Opening the list also makes sure the deterministic «update the pantry?» nudge thread exists.

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—
cursorquerystring——
limitqueryinteger (int32)——

Svar

400Bad Request
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Eksempel

curl -b "bryti_session=…" \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/conversations"

Eksempel på svar

200application/json
{
  "items": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "title": "string",
      "createdAt": "2026-09-07T16:30:00Z",
      "lastMessageAt": "2026-09-07T16:30:00Z",
      "lastMessagePreview": "string"
    }
  ],
  "nextCursor": "string",
  "total": 0
}
POST/api/v1/households/{householdId}/conversations

Start a new conversation with Bryti

The body is optional: an empty POST starts an untitled thread, which is named after its first message. The starter is recorded so a data export carries only that person's own conversations (#984, ADR-084).

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—

Forespørselskropp

application/jsonValgfriCreateConversationRequest | null

Svar

201Created
application/jsonConversationResponse
400The request could not be read as the route needs it: a body that is not the documented shape (a required field left out, a null where none is allowed, a value too long for its field), a parameter that does not parse, or a NUL character anywhere (#3540, #3541, #3543). Code validation_failed or value_too_long.
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Eksempel

curl -b "bryti_session=…" \
  -X POST \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/conversations" \
  -H "Content-Type: application/json" \
  -d '{"title":"string"}'

Eksempel på svar

201application/json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "householdId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "title": "string",
  "createdAt": "2026-09-07T16:30:00Z",
  "messages": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "role": {},
      "content": "string",
      "toolActivity": [
        {}
      ],
      "widgets": [
        {}
      ],
      "createdAt": "2026-09-07T16:30:00Z",
      "failed": false,
      "stopped": false
    }
  ],
  "proposals": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "conversationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "sourceMessageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "actionType": "string",
      "payload": {},
      "humanSummary": "string",
      "status": {},
      "requiresConfirmation": false,
      "error": "string",
      "createdAt": "2026-09-07T16:30:00Z",
      "appliedAt": "2026-09-07T16:30:00Z",
      "undoable": false
    }
  ],
  "hasEarlier": false
}
GET/api/v1/households/{householdId}/conversations/{conversationId}

Read a window of a conversation's newest messages

Always a window (ADR-292, #3002, #2965): the newest 40 messages when no limit is named, 200 at most, and nextCursor says where the older page starts — hand it back as ?cursor= to read it. hasEarlier is the same fact as a non-null nextCursor. before is the old spelling of the same question, a timestamp instead of a cursor; it still answers, and disappears once the app version floor has been raised past the builds that ask with it. Proposals are those of the messages in the window plus any still open, however old their message is.

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—
conversationIdpathstring (uuid)Påkrevd—
limitqueryinteger (int32)——
cursorquerystring——
beforequerystring (date-time)——

Svar

200OK
application/jsonConversationResponse
400Bad Request
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Eksempel

curl -b "bryti_session=…" \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/conversations/3fa85f64-5717-4562-b3fc-2c963f66afa6"

Eksempel på svar

200application/json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "householdId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "title": "string",
  "createdAt": "2026-09-07T16:30:00Z",
  "messages": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "role": {},
      "content": "string",
      "toolActivity": [
        {}
      ],
      "widgets": [
        {}
      ],
      "createdAt": "2026-09-07T16:30:00Z",
      "failed": false,
      "stopped": false
    }
  ],
  "proposals": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "conversationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "sourceMessageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "actionType": "string",
      "payload": {},
      "humanSummary": "string",
      "status": {},
      "requiresConfirmation": false,
      "error": "string",
      "createdAt": "2026-09-07T16:30:00Z",
      "appliedAt": "2026-09-07T16:30:00Z",
      "undoable": false
    }
  ],
  "hasEarlier": false
}
DELETE/api/v1/households/{householdId}/conversations/{conversationId}

Delete a conversation and everything in it

Messages and proposals go with it.

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—
conversationIdpathstring (uuid)Påkrevd—

Svar

204No Content
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Eksempel

curl -b "bryti_session=…" \
  -X DELETE \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/conversations/3fa85f64-5717-4562-b3fc-2c963f66afa6"
POST/api/v1/households/{householdId}/conversations/{conversationId}/report

Report a reply from Bryti as offensive or wrong

Any member may press it, a Junior included (#349). The body is optional: a bare POST reports the thread, messageId narrows it to one reply, and reason plus a note of at most 500 characters say why (ADR-145). Safe to retry: a second report of the same message leaves one row and still answers 204. 400 when the note is too long.

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—
conversationIdpathstring (uuid)Påkrevd—

Forespørselskropp

application/jsonValgfriReportChatContentRequest | null

Svar

204No Content
400Bad Request
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Eksempel

curl -b "bryti_session=…" \
  -X POST \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/conversations/3fa85f64-5717-4562-b3fc-2c963f66afa6/report" \
  -H "Content-Type: application/json" \
  -d '{}'
POST/api/v1/households/{householdId}/conversations/{conversationId}/messages

Send a message to Bryti and wait for the whole reply

The non-streaming twin of the stream route, kept for clients without SSE support: same body, same rules, and costs credits like any turn. continuation asks Bryti to carry on after «Accept all» (#23); replacesMessageId edits the household's last own message, deleting everything after it (ADR-145). Send an Idempotency-Key header to make a retry safe.409 chat.edit_not_last / chat.edit_applied when the thread no longer allows that edit — reload the thread instead of retrying; 409 duplicate_ai_request when the Idempotency-Key was already accepted — refresh instead of retrying. 429 quota_exceeded when the household's monthly AI allowance is spent, or ai_paused when the platform's cost guard has paused AI this month (ADR-023, Retry-After set).

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—
conversationIdpathstring (uuid)Påkrevd—
Idempotency-Keyheaderstring——

Forespørselskropp

application/jsonPåkrevdSendChatMessageRequest

Svar

200OK
application/jsonSendChatMessageResponse
400Bad Request
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
409Conflict
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too Many Requests
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Eksempel

curl -b "bryti_session=…" \
  -X POST \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/conversations/3fa85f64-5717-4562-b3fc-2c963f66afa6/messages" \
  -H "Content-Type: application/json" \
  -d '{"content":"string","continuation":false}'

Eksempel på svar

200application/json
{
  "userMessage": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "role": {},
    "content": "string",
    "toolActivity": [
      {}
    ],
    "widgets": [
      {}
    ],
    "createdAt": "2026-09-07T16:30:00Z",
    "failed": false,
    "stopped": false
  },
  "assistantMessage": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "role": {},
    "content": "string",
    "toolActivity": [
      {}
    ],
    "widgets": [
      {}
    ],
    "createdAt": "2026-09-07T16:30:00Z",
    "failed": false,
    "stopped": false
  },
  "proposals": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "conversationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "sourceMessageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "actionType": "string",
      "payload": {},
      "humanSummary": "string",
      "status": {},
      "requiresConfirmation": false,
      "error": "string",
      "createdAt": "2026-09-07T16:30:00Z",
      "appliedAt": "2026-09-07T16:30:00Z",
      "undoable": false
    }
  ]
}
POST/api/v1/households/{householdId}/conversations/{conversationId}/messages/stream

Send a message to Bryti and stream the reply (SSE)

Same body and rules as the non-streaming route; costs credits. The response is text/event-stream: a ping first (and every 10 s of silence), then started with the aiRequestId the stop route needs, then any number of text_delta, tool_started, tool_completed, proposal and widget events. The stream ends with exactly one of completed (both messages and the turn's proposals), stopped (the household pressed Stop; whatever was reached is kept and nothing is charged, #1681) or error. When the turn failed part-way, error is followed by completed with a failed message.Closing the socket does not cancel the turn: it finishes in the background, the reply is persisted, and a push tells the phone (#200). 409 and 429 mean the same as on the non-streaming route and arrive as a plain problem before any event, never mid-stream.

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—
conversationIdpathstring (uuid)Påkrevd—
Idempotency-Keyheaderstring——

Forespørselskropp

application/jsonPåkrevdSendChatMessageRequest

Svar

200OK
400The request could not be read as the route needs it: a body that is not the documented shape (a required field left out, a null where none is allowed, a value too long for its field), a parameter that does not parse, or a NUL character anywhere (#3540, #3541, #3543). Code validation_failed or value_too_long.
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
409Conflict
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too Many Requests
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Eksempel

curl -b "bryti_session=…" \
  -X POST \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/conversations/3fa85f64-5717-4562-b3fc-2c963f66afa6/messages/stream" \
  -H "Content-Type: application/json" \
  -d '{"content":"string","continuation":false}'
POST/api/v1/households/{householdId}/conversations/{conversationId}/turns/{aiRequestId}/stop

Stop the reply Bryti is writing right now

aiRequestId is what the stream's started event named (#1681). Answers only once the turn has unwound and persisted what it reached, so the thread can be refetched the moment this returns. stopped: false means the turn was already over — not an error. A stopped turn is not charged. 404 when the turn is not this household's.

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—
conversationIdpathstring (uuid)Påkrevd—
aiRequestIdpathstring (uuid)Påkrevd—

Svar

200OK
application/jsonStopChatTurnResponse
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Eksempel

curl -b "bryti_session=…" \
  -X POST \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/conversations/3fa85f64-5717-4562-b3fc-2c963f66afa6/turns/3fa85f64-5717-4562-b3fc-2c963f66afa6/stop"

Eksempel på svar

200application/json
{
  "stopped": false
}
GET/api/v1/households/{householdId}/chat-permission-mode

Read how eagerly Bryti applies proposed changes without asking

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—

Svar

200OK
application/jsonChatPermissionModeResponse
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Eksempel

curl -b "bryti_session=…" \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/chat-permission-mode"

Eksempel på svar

200application/json
{
  "permissionMode": "AlwaysAsk"
}
PUT/api/v1/households/{householdId}/chat-permission-mode

Set how eagerly Bryti applies proposed changes without asking

Adults only; a Junior member gets 403. AlwaysAsk, AutoApplyLowRisk or AutoApplyAll; every write still records a proposal whatever the mode.

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—

Forespørselskropp

application/jsonPåkrevdUpdateChatPermissionModeRequest

Svar

200OK
application/jsonChatPermissionModeResponse
400Bad Request
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Eksempel

curl -b "bryti_session=…" \
  -X PUT \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/chat-permission-mode" \
  -H "Content-Type: application/json" \
  -d '{"permissionMode":"AlwaysAsk"}'

Eksempel på svar

200application/json
{
  "permissionMode": "AlwaysAsk"
}
POST/api/v1/households/{householdId}/action-proposals/{proposalId}/apply

Apply a change Bryti proposed

Adults only; a Junior member gets 403 — a Junior may ask for anything in chat, but an adult applies it. A card that changes the household's own settings or language is the owner's, as PATCH households/{id} is: anyone else gets 403 with code owner_required and nothing changes (ADR-415 (#3423)). Runs the same handler the ordinary forms use, in one transaction: either the whole change lands, or the card comes back 200 with status Failed and its error and nothing changed. A proposal that plans the week puts the run in the planning queue and comes back Running with its jobId (GET plans/runs/{jobId} says how it goes); the card turns Applied, with its outcome, when the run lands, or Failed (ADR-337 (#3184)). It costs credits. 409 with code consent_required when the card would store an allergy, an intolerance, a diet tied to a condition or breastfeeding and the subject's explicit yes is not on file (GDPR art. 9(2)(a), #3077): the card stays pending, so it works once the yes is given. 409 without a code when another press took the card in the same moment: the change ran once, for that press (#3586).

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—
proposalIdpathstring (uuid)Påkrevd—

Svar

200OK
application/jsonActionProposalResponse
400Bad Request
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
409Conflict
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Problemkoder

`code` i problemkroppen er den du forgreiner på. `detail` er engelsk, skrevet for loggen.

consent_required
— Bryti trenger et uttrykkelig ja før den kan lagre helseopplysninger. Det ja-et gir du på personens kort under Husholdning.

Eksempel

curl -b "bryti_session=…" \
  -X POST \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/action-proposals/3fa85f64-5717-4562-b3fc-2c963f66afa6/apply"

Eksempel på svar

200application/json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "conversationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "sourceMessageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "actionType": "string",
  "payload": {},
  "humanSummary": "string",
  "status": "Proposed",
  "requiresConfirmation": false,
  "error": "string",
  "createdAt": "2026-09-07T16:30:00Z",
  "appliedAt": "2026-09-07T16:30:00Z",
  "undoable": false
}
POST/api/v1/households/{householdId}/action-proposals/{proposalId}/undo

Take back an applied change

Adults only; a Junior member gets 403. Only within 24 hours of applying, and only when the change has an inverse (undoable on the card) — 400 otherwise (#63). 409 when another press took the change back in the same moment (#3586).

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—
proposalIdpathstring (uuid)Påkrevd—

Svar

200OK
application/jsonActionProposalResponse
400Bad Request
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
409Conflict
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Eksempel

curl -b "bryti_session=…" \
  -X POST \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/action-proposals/3fa85f64-5717-4562-b3fc-2c963f66afa6/undo"

Eksempel på svar

200application/json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "conversationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "sourceMessageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "actionType": "string",
  "payload": {},
  "humanSummary": "string",
  "status": "Proposed",
  "requiresConfirmation": false,
  "error": "string",
  "createdAt": "2026-09-07T16:30:00Z",
  "appliedAt": "2026-09-07T16:30:00Z",
  "undoable": false
}
POST/api/v1/households/{householdId}/action-proposals/{proposalId}/redo

Do an undone change again

Adults only; a Junior member gets 403. Only an undone change can be redone (400 otherwise). The action re-runs from its stored payload, so a coherence failure — a duplicate member, a date already covered — also comes back as 400 and the card stays undone. 409 with code consent_required when the change would store health data the subject has not said yes to (#3077); 409 without a code when another press did it again in the same moment (#3586).

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—
proposalIdpathstring (uuid)Påkrevd—

Svar

200OK
application/jsonActionProposalResponse
400Bad Request
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
409Conflict
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Problemkoder

`code` i problemkroppen er den du forgreiner på. `detail` er engelsk, skrevet for loggen.

consent_required
— Bryti trenger et uttrykkelig ja før den kan lagre helseopplysninger. Det ja-et gir du på personens kort under Husholdning.

Eksempel

curl -b "bryti_session=…" \
  -X POST \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/action-proposals/3fa85f64-5717-4562-b3fc-2c963f66afa6/redo"

Eksempel på svar

200application/json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "conversationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "sourceMessageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "actionType": "string",
  "payload": {},
  "humanSummary": "string",
  "status": "Proposed",
  "requiresConfirmation": false,
  "error": "string",
  "createdAt": "2026-09-07T16:30:00Z",
  "appliedAt": "2026-09-07T16:30:00Z",
  "undoable": false
}
POST/api/v1/households/{householdId}/action-proposals/{proposalId}/reject

Reject a change Bryti proposed

Adults only; a Junior member gets 403.

Parametre

NavnHvorTypePåkrevdBeskrivelse
householdIdpathstring (uuid)Påkrevd—
proposalIdpathstring (uuid)Påkrevd—

Svar

200OK
application/jsonActionProposalResponse
400Bad Request
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Hoder
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Eksempel

curl -b "bryti_session=…" \
  -X POST \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/action-proposals/3fa85f64-5717-4562-b3fc-2c963f66afa6/reject"

Eksempel på svar

200application/json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "conversationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "sourceMessageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "actionType": "string",
  "payload": {},
  "humanSummary": "string",
  "status": "Proposed",
  "requiresConfirmation": false,
  "error": "string",
  "createdAt": "2026-09-07T16:30:00Z",
  "appliedAt": "2026-09-07T16:30:00Z",
  "undoable": false
}

Skjema

ActionProposalResponse

FeltTypePåkrevd
idstring (uuid)Påkrevd
conversationIdstring (uuid)Påkrevd
sourceMessageIdstring (uuid)Påkrevd
actionTypestringPåkrevd
payloadChatActionPåkrevd
humanSummarystringPåkrevd
statusProposalStatusPåkrevd
requiresConfirmationbooleanPåkrevd
errorstring | nullPåkrevd
createdAtstring (date-time)Påkrevd
appliedAtstring (date-time) | nullPåkrevd
undoableboolean—
undoneAtstring (date-time) | null—
undoExpiresAtstring (date-time) | null—
jobIdstring (uuid) | null—
spanPlanProposalSpan | null—
outcomePlanProposalOutcome | null—
askedAfterReadingChatForeignTextSource | null—

ChatAction

Type

Én av

Skilles på type

ChatActionActivatePlanAction

FeltTypePåkrevd
type"ActivatePlan"—
weekStartstring (date)Påkrevd

ChatActionAdaptDinnerIngredientAction

FeltTypePåkrevd
type"AdaptDinnerIngredient"—
datestring (date)Påkrevd
useFoodstringPåkrevd
insteadOfFoodstringPåkrevd

ChatActionAddDietaryConstraintAction

FeltTypePåkrevd
type"AddDietaryConstraint"—
memberNamestring | nullPåkrevd
kindDietaryConstraintKindPåkrevd
foodOrCategorystringPåkrevd
severityConstraintSeverityPåkrevd
notesstring | nullPåkrevd

ChatActionAddFoodPreferenceAction

FeltTypePåkrevd
type"AddFoodPreference"—
memberNamestring | nullPåkrevd
subjectTypePreferenceSubjectTypePåkrevd
subjectstringPåkrevd
sentimentPreferenceSentimentPåkrevd

ChatActionAddGuestsForDateAction

FeltTypePåkrevd
type"AddGuestsForDate"—
datestring (date)Påkrevd
adultCountinteger (int32)Påkrevd
childCountinteger (int32)Påkrevd
notesstring | nullPåkrevd
endDatestring (date) | null—
guestNamesstring[] | null—
babyCountinteger (int32)—

ChatActionAddHouseholdMemberAction

FeltTypePåkrevd
type"AddHouseholdMember"—
namestringPåkrevd
birthDatestring (date)Påkrevd
defaultDinnerParticipantbooleanPåkrevd
isBreastfedboolean | null—
isGuestboolean | null—
portionFactornumber (double) | null—

ChatActionAddInventoryObservationAction

FeltTypePåkrevd
type"AddInventoryObservation"—
foodKeystringPåkrevd
displayNamestringPåkrevd
observationTypeObservationTypePåkrevd
quantitynumber (double) | nullPåkrevd
unitstring | nullPåkrevd
storageLocationStorageLocationPåkrevd

ChatActionAddShoppingItemAction

FeltTypePåkrevd
type"AddShoppingItem"—
weekStartstring (date)Påkrevd
displayNamestringPåkrevd
quantitynumber (double) | null—
unitstring | null—

ChatActionBuildShoppingListAction

FeltTypePåkrevd
type"BuildShoppingList"—
weekStartstring (date)Påkrevd

ChatActionCheckShoppingItemAction

FeltTypePåkrevd
type"CheckShoppingItem"—
weekStartstring (date)Påkrevd
itemNamestringPåkrevd
purchasedbooleanPåkrevd

ChatActionDeleteDietaryConstraintAction

FeltTypePåkrevd
type"DeleteDietaryConstraint"—
foodOrCategorystringPåkrevd
memberNamestring | null—

ChatActionDeleteFoodPreferenceAction

FeltTypePåkrevd
type"DeleteFoodPreference"—
subjectstringPåkrevd
memberNamestring | null—

ChatActionDeleteMealEventAction

FeltTypePåkrevd
type"DeleteMealEvent"—
datestring (date)Påkrevd
eventTypeMealEventType | null—

ChatActionDeleteMealRuleAction

FeltTypePåkrevd
type"DeleteMealRule"—
kindMealRuleKindPåkrevd
categoryMealCategory | null—
datestring (date) | null—

ChatActionDeleteRecipeAction

FeltTypePåkrevd
type"DeleteRecipe"—
titlestringPåkrevd

ChatActionEditRecipeAction

FeltTypePåkrevd
type"EditRecipe"—
recipeTitlestringPåkrevd
newTitlestring | null—
categoryMealCategory | null—
ingredientsRecipeIngredientDto[] | null—
stepsstring[] | null—
tagsstring[] | null—
activeMinutesinteger (int32) | null—
totalMinutesinteger (int32) | null—
portionsinteger (int32) | null—

ChatActionImportRecipeFromUrlAction

FeltTypePåkrevd
type"ImportRecipeFromUrl"—
urlstringPåkrevd

ChatActionMarkAwayAction

FeltTypePåkrevd
type"MarkAway"—
datestring (date)Påkrevd
endDatestring (date) | null—
notesstring | null—

ChatActionMarkEatingOutAction

FeltTypePåkrevd
type"MarkEatingOut"—
datestring (date)Påkrevd
notesstring | nullPåkrevd
endDatestring (date) | null—

ChatActionMarkMemberAbsentAction

FeltTypePåkrevd
type"MarkMemberAbsent"—
memberNamestringPåkrevd
datestring (date)Påkrevd

ChatActionMergePantryFoodsAction

FeltTypePåkrevd
type"MergePantryFoods"—
fromFoodKeystringPåkrevd
toFoodKeystringPåkrevd

ChatActionPlanWeekAction

FeltTypePåkrevd
type"PlanWeek"—
weekStartstring (date)Påkrevd
policyPlanPolicy | null—

ChatActionRecordOutcomeAction

FeltTypePåkrevd
type"RecordOutcome"—
datestring (date)Påkrevd
statusOutcomeStatusPåkrevd
reasonOutcomeReason | null—
notesstring | null—

ChatActionReplaceDinnerAction

FeltTypePåkrevd
type"ReplaceDinner"—
datestring (date)Påkrevd
dishTitlestringPåkrevd

ChatActionReplanOpenDaysAction

FeltTypePåkrevd
type"ReplanOpenDays"—
weekStartstring (date)Påkrevd
policyPlanPolicy | null—

ChatActionSaveRecipeAction

FeltTypePåkrevd
type"SaveRecipe"—
titlestringPåkrevd
categoryMealCategoryPåkrevd
ingredientsRecipeIngredientDto[]Påkrevd
stepsstring[]Påkrevd
tagsstring[]Påkrevd
activeMinutesinteger (int32)Påkrevd
totalMinutesinteger (int32)Påkrevd
portionsinteger (int32)Påkrevd

ChatActionSelectStoresAction

FeltTypePåkrevd
type"SelectStores"—
storeNamesstring[]Påkrevd
addressstring | null—

ChatActionSetCategoryForDateAction

FeltTypePåkrevd
type"SetCategoryForDate"—
datestring (date)Påkrevd
categoryMealCategoryPåkrevd
strengthRuleStrength | null—

ChatActionSetDinnerLockAction

FeltTypePåkrevd
type"SetDinnerLock"—
datestring (date)Påkrevd
lockedbooleanPåkrevd

ChatActionSetDinnerTimeAction

FeltTypePåkrevd
type"SetDinnerTime"—
timestringPåkrevd
datestring (date) | null—
weekdaysWeekday[] | null—

ChatActionSetHouseholdLanguageAction

FeltTypePåkrevd
type"SetHouseholdLanguage"—
languageCodestringPåkrevd

ChatActionSetMaximumCookingTimeForDateAction

FeltTypePåkrevd
type"SetMaximumCookingTimeForDate"—
datestring (date)Påkrevd
minutesinteger (int32)Påkrevd
strengthRuleStrength | null—

ChatActionSetRecipeFavoriteAction

FeltTypePåkrevd
type"SetRecipeFavorite"—
recipeTitlestringPåkrevd
favoritebooleanPåkrevd
memberNamestring | null—

ChatActionUpdateHouseholdMemberAction

FeltTypePåkrevd
type"UpdateHouseholdMember"—
memberNamestringPåkrevd
newNamestring | nullPåkrevd
birthDatestring (date) | nullPåkrevd
defaultDinnerParticipantboolean | nullPåkrevd
isActiveboolean | nullPåkrevd
isBreastfedboolean | null—
isGuestboolean | null—
portionFactornumber (double) | null—

ChatActionUpdateHouseholdSettingsAction

FeltTypePåkrevd
type"UpdateHouseholdSettings"—
namestring | null—
timeZoneIdstring | null—
defaultDinnerTimestring | null—
addressstring | null—
prefersLeftoverDinnersboolean | null—
tailorServingToTastesboolean | null—
showSoftServingAdviceboolean | null—
maxNewDishesPerWeekinteger (int32) | null—
alwaysNewDishesboolean | null—
babyEatsSeparatelyWhenNeededboolean | null—
pantryWeightstring | null—

ChatActionUpsertCategoryExcludedDaysRuleAction

FeltTypePåkrevd
type"UpsertCategoryExcludedDaysRule"—
categoryMealCategoryPåkrevd
excludedWeekdaysWeekday[]Påkrevd
strengthRuleStrength | null—

ChatActionUpsertCategoryFrequencyRuleAction

FeltTypePåkrevd
type"UpsertCategoryFrequencyRule"—
categoryMealCategoryPåkrevd
minimumPerWeekinteger (int32)Påkrevd
maximumPerWeekinteger (int32)Påkrevd
strengthRuleStrength | null—

ChatActionUpsertCategoryOnDayRuleAction

FeltTypePåkrevd
type"UpsertCategoryOnDayRule"—
categoryMealCategoryPåkrevd
weekdayWeekdayPåkrevd
strengthRuleStrength | null—

ChatActionUpsertMaximumCookingTimeRuleAction

FeltTypePåkrevd
type"UpsertMaximumCookingTimeRule"—
minutesinteger (int32)Påkrevd
weekdaysWeekday[] | null—
strengthRuleStrength | null—

ChatActionUpsertPriceClassRuleAction

FeltTypePåkrevd
type"UpsertPriceClassRule"—
ceilingPriceCeilingPåkrevd
weekdaysWeekday[] | null—
strengthRuleStrength | null—

ChatActionUpsertRepeatAfterDaysRuleAction

FeltTypePåkrevd
type"UpsertRepeatAfterDaysRule"—
daysinteger (int32)Påkrevd
strengthRuleStrength | null—

ChatActionWishDishAction

FeltTypePåkrevd
type"WishDish"—
titlestringPåkrevd
memberNamestring | null—

ChatForeignTextSource

Type

Verdier

PantryRecipeCalendar

eller null

ChatMessageResponse

FeltTypePåkrevd
idstring (uuid)Påkrevd
roleChatRolePåkrevd
contentstringPåkrevd
toolActivityChatToolActivityResponse[]Påkrevd
widgetsChatWidgetResponse[]Påkrevd
createdAtstring (date-time)Påkrevd
failedboolean—
stoppedboolean—
systemNoteChatSystemNote | null—

ChatPermissionMode

Type

Verdier

AlwaysAskAutoApplyLowRiskAutoApplyAll

ChatPermissionModeResponse

FeltTypePåkrevd
permissionModeChatPermissionModePåkrevd

ChatReportReason

Type

Verdier

WrongOrDangerousBreaksHouseRulesInappropriateOther

eller null

ChatRole

Type

Verdier

UserAssistantSystem

ChatSystemNote

Type

Verdier

ProposalsAcceptedLanguageChanged

eller null

ChatToolActivityResponse

FeltTypePåkrevd
toolNamestringPåkrevd
summarystringPåkrevd
isErrorbooleanPåkrevd

ChatWidgetResponse

FeltTypePåkrevd
typestringPåkrevd
payloadJsonElementPåkrevd

ConstraintSeverity

Type

Verdier

HardSoft

ConversationResponse

FeltTypePåkrevd
idstring (uuid)Påkrevd
householdIdstring (uuid)Påkrevd
titlestring | nullPåkrevd
createdAtstring (date-time)Påkrevd
messagesChatMessageResponse[]Påkrevd
proposalsActionProposalResponse[]Påkrevd
hasEarlierboolean—
nextCursorstring | null—

ConversationSummaryResponse

FeltTypePåkrevd
idstring (uuid)Påkrevd
titlestring | nullPåkrevd
createdAtstring (date-time)Påkrevd
lastMessageAtstring (date-time)Påkrevd
lastMessagePreviewstring | nullPåkrevd

CreateConversationRequest

FeltTypePåkrevd
titlestring | nullPåkrevd

DietaryConstraintKind

Type

Verdier

AllergyIntoleranceDietaryPatternAvoidance

JsonElement

Type

hva som helst

MealCategory

Type

Verdier

FishMeatPoultryVegetarianVeganSoupPastaTacoLeftoversOther

MealEventType

Type

Verdier

GuestsEatingOutPersonAbsentPersonPresentActivityCelebrationTravelCustom

MealRuleKind

Type

Verdier

CategoryFrequencyCategoryExcludedDaysCategoryOnDayMaximumActiveCookingTimeDinnerTimeOnWeekdayPriceClassOnDaysRepeatAfterDays

ObservationType

Type

Verdier

PurchasedConfirmedPresentEstimatedConsumedManuallyAdjustedFrozenDiscardedLeftoverCreatedConfirmedGone

OutcomeReason

Type

Verdier

UnexpectedEventMissingIngredientNotEnoughTimeTooTiredNotAppealingIllnessPlansChangedOtherDidNotLike

eller null

OutcomeStatus

Type

Verdier

CookedCookedWithChangesNotCookedAteElsewhere

PagedConversationSummaryResponse

FeltTypePåkrevd
itemsConversationSummaryResponse[]Påkrevd
nextCursorstring | nullPåkrevd
totalinteger (int32) | nullPåkrevd

PlanDeviationKind

Type

Verdier

BentSoftNearMissLeftOpenHandPicked

PlanDeviationOptionResponse

FeltTypePåkrevd
codestringPåkrevd
datestring (date) | null—
categorystring | null—
ruleIdstring (uuid) | null—

PlanDeviationResponse

FeltTypePåkrevd
kindPlanDeviationKindPåkrevd
rulePlanDeviationRulePåkrevd
ruleIdstring (uuid) | nullPåkrevd
datestring (date) | nullPåkrevd
categorystring | nullPåkrevd
targetinteger (int32) | nullPåkrevd
actualinteger (int32) | nullPåkrevd
minutesinteger (int32) | nullPåkrevd
reasonstringPåkrevd
optionsPlanDeviationOptionResponse[]Påkrevd
ingredientstring | null—
memberNamestring | null—
constraintKindstring | null—
lockedByHouseholdboolean | null—
capSpentboolean | null—
priceCeilingPriceCeiling | null—

PlanDeviationRule

Type

Verdier

CategoryFrequencyMaximumActiveCookingTimeCalendarCapCategoryOnDayCategoryExcludedDaysHardConstraintBabySafePortionDietaryPreferencePriceClassOnDaysRepeatAfterDays

PlanEntryType

Type

Verdier

CookAtHomeEatingOutNoDinnerPlanLeftovers

PlanHeldDish

FeltTypePåkrevd
datestring (date)Påkrevd
titlestringPåkrevd

PlanPickedDish

FeltTypePåkrevd
datestring (date)Påkrevd
candidateIdstring (uuid) | null—
recipeIdstring (uuid) | null—

PlanPolicy

FeltTypePåkrevd
allowGenerationinteger (int32) | null—
allowNearMissesboolean—
categoryCapsRunCategoryCap[] | null—
reopenDatesstring (date)[] | null—
lockedDatesstring (date)[] | null—
excludedTitlesstring[] | null—
pickedDishesPlanPickedDish[] | null—
heldDishesPlanHeldDish[] | null—

PlanPreflightBlockedRule

FeltTypePåkrevd
rulePlanDeviationRulePåkrevd
categorystring | null—
minutesinteger (int32) | null—
priceCeilingPriceCeiling | null—

PlanPreflightDay

FeltTypePåkrevd
datestring (date)Påkrevd
statePlanPreflightDayStatePåkrevd
titlestring | null—
categorystring | null—
bendPlanDeviationResponse | null—
reasonPlanPreflightReason | null—
keptboolean | null—
usesUpPlanPreflightUseUp[] | null—

PlanPreflightDayState

Type

Verdier

LibraryGenerateNearMissStaysOpenLockedAnsweredPastEatingOutLeftoversReplaced

PlanPreflightReason

FeltTypePåkrevd
kindPlanPreflightReasonKindPåkrevd
usedinteger (int32) | null—
capinteger (int32) | null—
proposalsinteger (int32) | null—
rulesPlanPreflightBlockedRule[] | null—

PlanPreflightReasonKind

Type

Verdier

CapReachedNoCandidateFitsRuleBlocked

PlanPreflightResponse

FeltTypePåkrevd
daysPlanPreflightDay[]Påkrevd
nearMissOfferPlanDeviationResponse[]Påkrevd
generationCapinteger (int32)Påkrevd
householdCapinteger (int32)Påkrevd
alwaysNewDishesbooleanPåkrevd
nextWeekOnlyboolean—

PlanPreflightUseUp

FeltTypePåkrevd
foodKeystringPåkrevd
displayNamestringPåkrevd
bestBeforestring (date) | nullPåkrevd

PlanProposalOutcome

FeltTypePåkrevd
weekStartstring (date)Påkrevd
fromstring (date)Påkrevd
tostring (date)Påkrevd
daysPlanProposalOutcomeDay[]Påkrevd
ruleCategoriesMealCategory[]Påkrevd
fromStarterLibraryboolean—

PlanProposalOutcomeDay

FeltTypePåkrevd
datestring (date)Påkrevd
entryTypePlanEntryTypePåkrevd
categoryMealCategory | nullPåkrevd

PlanProposalReplaced

FeltTypePåkrevd
datestring (date)Påkrevd
entryTypePlanEntryTypePåkrevd
titlestring | nullPåkrevd

PlanProposalSpan

FeltTypePåkrevd
weekStartstring (date)Påkrevd
fromstring (date)Påkrevd
tostring (date)Påkrevd
replacesPlanProposalReplaced[]Påkrevd
creditsinteger (int32) | null—
preflightPlanPreflightResponse | null—

PreferenceSentiment

Type

Verdier

LikeDislikeStrongDislike

PreferenceSubjectType

Type

Verdier

IngredientCategoryDishTexturePreparationTaste

PriceCeiling

Type

Verdier

CheapCheapOrMid

ProblemDetails

FeltTypePåkrevd
typestring | null—
titlestring | null—
statusinteger (int32) | null—
detailstring | null—
instancestring | null—
codestring | null—

ProposalStatus

Type

Verdier

ProposedAppliedRejectedFailedRunning

RecipeIngredientDto

FeltTypePåkrevd
foodKeystringPåkrevd
displayNamestringPåkrevd
quantitynumber (double)Påkrevd
unitstringPåkrevd
isOptionalbooleanPåkrevd
functionTagsstring[] | null—
displayQuantitynumber (double) | null—
displayUnitstring | null—
sectionstring | null—

ReportChatContentRequest

FeltTypePåkrevd
messageIdstring (uuid) | null—
reasonChatReportReason | null—
notestring | null—

RuleStrength

Type

Verdier

HardSoft

RunCategoryCap

FeltTypePåkrevd
categoryMealCategoryPåkrevd
maxPerWeekinteger (int32)Påkrevd

SendChatMessageRequest

FeltTypePåkrevd
contentstringPåkrevd
continuationboolean—
replacesMessageIdstring (uuid) | null—

SendChatMessageResponse

FeltTypePåkrevd
userMessageChatMessageResponsePåkrevd
assistantMessageChatMessageResponsePåkrevd
proposalsActionProposalResponse[]Påkrevd

StopChatTurnResponse

FeltTypePåkrevd
stoppedbooleanPåkrevd

StorageLocation

Type

Verdier

FridgeFreezerPantryUnknown

UpdateChatPermissionModeRequest

FeltTypePåkrevd
permissionModeChatPermissionModePåkrevd

Weekday

Type

Verdier

SundayMondayTuesdayWednesdayThursdayFridaySaturday