Save Meal From Items
POST
/users/{user_id}/saved-meals/from-items
const url = 'https://example.com/users/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/saved-meals/from-items';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"event_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","kind":"meal","name":"example","place":"example","source":"home"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/users/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/saved-meals/from-items \ --header 'Content-Type: application/json' \ --data '{ "event_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "kind": "meal", "name": "example", "place": "example", "source": "home" }'“Save as meal”: snapshot an event’s tray into a reusable named template.
Copies the event’s meal_items as template components (event_id NULL), computes the aggregate, and links the event for provenance. Deduped like the upsert path — an existing meal with the same (kind, description) is reused and its template replaced. 400 while captures are still enriching (the client disables the button) or if the tray is empty.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”user_id
required
User Id
string format: uuid
Request Bodyrequired
Section titled “Request Bodyrequired”Responses
Section titled “Responses”Successful Response
Media typeapplication/json
SavedMealRead
object
created_at
required
Created At
string format: date-time
description
required
Description
string
id
required
Id
string format: uuid
items
Any of:
Array<object>
EventMealItemReadobject
food_item
required
FoodItemRead
object
brand
required
Brand
string
created_at
required
Created At
string format: date-time
id
required
Id
string format: uuid
is_drink
required
Is Drink
boolean
name
required
Name
string
source
required
Source
string
updated_at
required
Updated At
string format: date-time
usage_count
required
Usage Count
integer
id
required
Id
string format: uuid
position
required
Position
integer
quantity
required
Quantity
number
null
kind
required
Kind
string
last_used_at
required
Last Used At
string format: date-time
source
required
Source
string
updated_at
required
Updated At
string format: date-time
user_id
required
User Id
string format: uuid
Example
{ "kind": "meal", "source": "home"}Validation Error
Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationErrorobject
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example" } ]}