Skip To Main Content
All modules

Gifts

Fields marked * are required. Updates keep every field they are not given. An AI app can ask vritto_describe for the same details, filtered to what its connection may use.

Giftgift

A gift the user is giving or received, from idea to given. The same operations reach occasions (type 'occasion': a gift list with budget and recipients) and a person's gift profile (type 'profile': sizes, interests, favorite brands, things to avoid).

gifts_findFindthrough vritto_find

Read Gifts: search gifts newest first by recipient (personId), occasion, status or direction, one gift by id with its full notes, type 'occasion' for occasions (one by id with its progress), or type 'profile' with personId for a person's gift profile. ALWAYS pass from/to (on the given date, or the occasion date) when the question concerns a period: 'what did I give Mom last year' is personId + from/to.

Note: personId with from/to answers 'what did I give Mom last year'; a person named alone also returns their gift profile.

FieldTypeDescription
typeone of gift, occasion, profile'gift' (default); 'occasion' a gift list for an event; 'profile' a person's sizes, interests, favorite brands and don't-gift list.
idstringReturn just this gift (or with type 'occasion', this occasion).
giftIdstringOlder name for id.
occasionIdstringOnly gifts for this occasion; with type 'occasion', that occasion. Named alone, also returns the occasion's progress.
personIdstringOnly gifts for this recipient; with type 'profile', their profile. Named alone, also returns their profile.
statusone of idea, planned, purchased, wrapped, given, skipped, planning, done, archivedA gift's pipeline stage (idea, planned, purchased, wrapped, given, skipped), or with type 'occasion' its state (planning, done, archived).
directionone of giving, received'giving' (default view) or 'received'.
fromstringOn or after this date: a gift's given date, an occasion's date. ALWAYS pass with 'to' for a period.
tostringOn or before this date.
detailone of summary, fullRow shape: "summary" (default, lean identity/status/labels/price + a notes preview) or "full" (every field incl. long notes).
limitintegerMax rows (default 25 in summary mode).
Example input
{
  "personId": "person_mom",
  "from": "2025-01-01",
  "to": "2025-12-31"
}
gifts_addCreate or Updatethrough vritto_create or vritto_update

Add a gift (a title; recipients, occasion, status, price and link when the user gives them), an occasion (type 'occasion': a title, date, kind) or a person's gift profile (type 'profile', personId). To change a gift already on file (its status: bought, wrapped, given), use gifts_change. Never invent a price or status.

FieldTypeDescription
typeone of gift, occasion, profile'gift' (default); 'occasion' a gift list for an event; 'profile' a person's sizes, interests, favorite brands and don't-gift list.
record*objectThe record. A gift: a title when adding. An occasion: a title when adding. A profile: personId.
record.idstringExisting gift ID to update, from gifts_find. Omit to add.
record.titlestringWhat the gift is, e.g. 'ceramic pour-over'. Required when creating.
record.recipientPersonIdslist of stringWho the gift is for, Person IDs from People. Replaces the existing set when sent.
record.occasionIdstringOccasion this gift belongs to, from gifts_find type 'occasion'.
record.occasionstringFree-text occasion when there's no occasion record, e.g. 'her 30th'.
record.statusone of idea, planned, purchased, wrapped, given, skippedPipeline stage (default 'idea'): idea → planned (need to buy) → purchased → wrapped → given; 'skipped' to drop it. Given auto-stamps the given date.
record.directionone of giving, received'giving' (default) or 'received' (a gift the user got).
record.urlstringLink to buy the gift (http/https).
record.priceCentsintegerPrice in integer cents (e.g. 4299 for $42.99). Only when the user states it.
record.currencystringISO 4217 currency code; leave out for the account's currency.
record.merchantNamestringStore or brand to buy from.
record.quantityintegerHow many (default 1).
record.detailsstringNotes about the gift.
record.typeone of birthday, christmas, holiday, anniversary, wedding, baby_shower, graduation, valentines, mothers_day, fathers_day, party, just_because, otherType 'occasion': the occasion kind (default 'other').
record.datestringType 'occasion': the event date. Omit for an open-ended list.
record.budgetCentsintegerType 'occasion': overall budget in integer cents, only when stated.
record.budgetCurrencystringType 'occasion': ISO 4217 code; leave out for the account's currency.
record.notesstringType 'occasion' or 'profile': notes.
record.personIdstringType 'profile': the person this profile is for (its key).
record.sizesobjectClothing/accessory sizes.
record.interestslist of stringInterests/hobbies (replaces the stored set).
record.favoriteBrandslist of stringFavorite brands (replaces the stored set).
record.avoidlist of stringDon't-gift / already-owns / allergies (replaces the stored set).
record.annualBudgetCentsintegerYearly gift budget for this person, in integer cents.
record.annualBudgetCurrencystringISO 4217 code of the yearly budget; omit for the account's currency.
Example input
{
  "record": {
    "title": "Le Creuset dutch oven",
    "recipientPersonIds": [
      "person_mom"
    ],
    "occasion": "Mom's birthday",
    "status": "idea",
    "priceCents": 38000,
    "currency": "USD"
  }
}
gifts_changeUpdatethrough vritto_update

Change a gift by record.id: a new status moves it along the pipeline (idea → planned → purchased → wrapped → given, or skipped; purchased and given stamp their date), other sent fields merge. type 'occasion' or 'profile' edits those. Resolve the id with gifts_find first.

Note: interests, favoriteBrands, avoid and recipientPersonIds replace the stored lists; read first and send the full list.

FieldTypeDescription
typeone of gift, occasion, profile'gift' (default); 'occasion' a gift list for an event; 'profile' a person's sizes, interests, favorite brands and don't-gift list.
recordobjectThe record's id (a profile's personId) plus the fields to change.
record.idstringExisting gift ID to update, from gifts_find. Omit to add.
record.titlestringWhat the gift is, e.g. 'ceramic pour-over'. Required when creating.
record.recipientPersonIdslist of stringWho the gift is for, Person IDs from People. Replaces the existing set when sent.
record.occasionIdstringOccasion this gift belongs to, from gifts_find type 'occasion'.
record.occasionstringFree-text occasion when there's no occasion record, e.g. 'her 30th'.
record.statusone of idea, planned, purchased, wrapped, given, skippedPipeline stage (default 'idea'): idea → planned (need to buy) → purchased → wrapped → given; 'skipped' to drop it. Given auto-stamps the given date.
record.directionone of giving, received'giving' (default) or 'received' (a gift the user got).
record.urlstringLink to buy the gift (http/https).
record.priceCentsintegerPrice in integer cents (e.g. 4299 for $42.99). Only when the user states it.
record.currencystringISO 4217 currency code; leave out for the account's currency.
record.merchantNamestringStore or brand to buy from.
record.quantityintegerHow many (default 1).
record.detailsstringNotes about the gift.
record.typeone of birthday, christmas, holiday, anniversary, wedding, baby_shower, graduation, valentines, mothers_day, fathers_day, party, just_because, otherType 'occasion': the occasion kind (default 'other').
record.datestringType 'occasion': the event date. Omit for an open-ended list.
record.budgetCentsintegerType 'occasion': overall budget in integer cents, only when stated.
record.budgetCurrencystringType 'occasion': ISO 4217 code; leave out for the account's currency.
record.notesstringType 'occasion' or 'profile': notes.
record.personIdstringType 'profile': the person this profile is for (its key).
record.sizesobjectClothing/accessory sizes.
record.interestslist of stringInterests/hobbies (replaces the stored set).
record.favoriteBrandslist of stringFavorite brands (replaces the stored set).
record.avoidlist of stringDon't-gift / already-owns / allergies (replaces the stored set).
record.annualBudgetCentsintegerYearly gift budget for this person, in integer cents.
record.annualBudgetCurrencystringISO 4217 code of the yearly budget; omit for the account's currency.
giftIdstringOlder form (gifts_setGiftStatus): the gift, with status.
statusone of idea, planned, purchased, wrapped, given, skippedOlder form, with giftId.
Example input
{
  "record": {
    "id": "gift_dutch_oven",
    "status": "purchased"
  }
}
gifts_removeDeletethrough vritto_delete

Permanently delete a gift, or (type 'occasion') an occasion, whose gifts are kept with their occasion link cleared. Only for explicit removal requests; resolve the id with gifts_find first.

Note: type 'occasion' deletes an occasion; its gifts are kept.

FieldTypeDescription
typeone of gift, occasion'gift' (default) or 'occasion'.
idstringThe gift or occasion to delete.
giftIdstringOlder name for id (a gift).
occasionIdstringOlder name for id (an occasion).