Skip To Main Content
All modules

People

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.

Personperson

Someone in the user's life: contact details, relationship, dates, and notes. people_find with from/to also reads their birthdays and important dates in a period.

people_findFindthrough vritto_find

Read People: search by name, email, phone or relation word, list a view (touched by default), one person by id with full details, view "stats" for counts, or from/to for birthdays and important dates in a period. Search rows are compact. A search that finds nobody returns didYouMean (up to 3 likely people); ask the user one question naming them instead of searching again.

Note: Search with query; read one person with id; view 'circle' for stated relationships and pins, 'stats' for counts; from/to for birthdays and important dates in a period (at most 93 days).

FieldTypeDescription
typeone of person, moment, gift'person' (default). 'moment' and 'gift' list the LEGACY people moments and gift ideas, optionally for personId; gifting lives in Gifts.
idstringReturn just this person, with contact points, addresses, dates and notes.
personIdstringOlder name for id. With type 'moment' or 'gift', only those for this person.
querystringSearch text: a name, email, phone, organization, tag, place or relation word ('mom').
emailstringAn exact email address to match.
phonestringAn exact phone number to match.
viewone of all, circle, favorites, archived, touched, imported, statsDefaults to "touched" when listing with no query, and to "all" when searching. "touched" = people the user has actually done something with. "imported" = untouched contacts from a provider import. "circle" = stated relationship or pin. "stats" = counts only (total, archived, pinned, favorites).
fromstringFirst day of a period: birthdays, remembrance days and important dates falling from this day. ALWAYS pass from/to when the question concerns a period (at most 93 days).
tostringLast day of the period, inclusive.
startstringOlder form of from: an ISO 8601 date-time, inclusive.
endstringOlder form of to: an ISO 8601 date-time, exclusive.
detailone of summary, fullSearch rows: "summary" (default, name/relationship/org/city/tags) or "full" (complete records; prefer reading one person by id).
limitintegerMax rows (default 50 in summary mode).
Example input
{
  "query": "Priya"
}
people_addCreatethrough vritto_create

Add one person. Only displayName is required; add contact points, addresses, tags, dates and notes when known. Set relationshipToMe only if the user has said what this person is to them. Resolve with people_find first so nobody is added twice.

Note: Resolve first with people_find so the same person is not added twice.

FieldTypeDescription
recordobjectPerson fields. Only displayName is required at the top level; entries inside emails, phones, addresses, importantDates, relationships, and notes have their own required fields.
record.displayName*stringFull display name.
record.givenNamestringGiven name.
record.middleNamestringMiddle name.
record.familyNamestringFamily name.
record.nicknamestringNickname.
record.pronounsstringPronouns.
record.photoUrlstringPhoto URL. Must be https:// - http:// and other schemes are rejected. Pass "" to clear it.
record.birthdaystringAnnual birthday in MM-DD format, e.g. "03-14"; must be a real calendar date. Pass "" to clear it.
record.birthYearintegerBirth year, when known. Pass null to clear it.
record.organizationobjectWorkplace details. Merged one level deep by people_change.
record.emailslist of objectEmail addresses.
record.phoneslist of objectPhone numbers.
record.addresseslist of objectPlaces this person is tied to, home, work, hometown.
record.tagslist of stringUser-authored tags (unique, case-insensitive).
record.importedTagslist of stringProvider labels from an import, never author these; manage via people_resolveImportedTags.
record.relationshipToMeobjectWho this person is to the user, only as they stated it; never inferred.
record.pinnedbooleanUser's pin into their Circle, a placement preference, not a closeness claim.
record.importantDateslist of objectDates worth remembering; recurring by default.
record.relationshipslist of objectLinks to other saved people. Each personId must already exist and cannot be this person.
record.noteslist of objectRelationship notes.
record.favoritebooleanWhether this person is a favorite.
personobjectOlder form of record (people_createPerson).
person.displayNamestring
giftobjectLEGACY older form (people_createPersonGift): a gift idea. Use gifts_add instead.
gift.titlestring
momentobjectLEGACY older form (people_createPeopleMoment). Never create new moments.
moment.titlestring
Example input
{
  "record": {
    "displayName": "Priya Shah",
    "givenName": "Priya",
    "familyName": "Shah",
    "emails": [
      {
        "id": "email1",
        "label": "Personal",
        "value": "priya.shah@example.com"
      }
    ],
    "birthday": "03-12",
    "birthYear": 1994
  }
}
people_changeUpdatethrough vritto_update

Change one person by record.id: sent fields change, others keep their values; organization and relationshipToMe merge one level deep, ARRAYS replace wholesale (read the person first and send each array complete). Pin with pinned, archive with archived, state a relationship with relationshipToMe.

Note: Omitted fields keep their values; organization and relationshipToMe merge one level deep; arrays replace wholesale, so send the full list when changing one.

FieldTypeDescription
recordobjectThe person's id plus the fields to change. Family facts (documents, medical, nationalities) are set only here.
record.displayNamestringFull display name.
record.givenNamestringGiven name.
record.middleNamestringMiddle name.
record.familyNamestringFamily name.
record.nicknamestringNickname.
record.pronounsstringPronouns.
record.photoUrlstringPhoto URL. Must be https:// - http:// and other schemes are rejected. Pass "" to clear it.
record.birthdaystringAnnual birthday in MM-DD format, e.g. "03-14"; must be a real calendar date. Pass "" to clear it.
record.birthYearintegerBirth year, when known. Pass null to clear it.
record.organizationobjectWorkplace details. Merged one level deep by people_change.
record.emailslist of objectEmail addresses.
record.phoneslist of objectPhone numbers.
record.addresseslist of objectPlaces this person is tied to, home, work, hometown.
record.tagslist of stringUser-authored tags (unique, case-insensitive).
record.importedTagslist of stringProvider labels from an import, never author these; manage via people_resolveImportedTags.
record.relationshipToMeobjectWho this person is to the user, only as they stated it; never inferred.
record.pinnedbooleanUser's pin into their Circle, a placement preference, not a closeness claim.
record.importantDateslist of objectDates worth remembering; recurring by default.
record.relationshipslist of objectLinks to other saved people. Each personId must already exist and cannot be this person.
record.noteslist of objectRelationship notes.
record.favoritebooleanWhether this person is a favorite.
record.nationalitieslist of string
record.documentslist of objectID/travel documents; array replaces wholesale. Reads never return numbers.
record.medicalobjectMedical basics (allergies, blood type).
record.genderstring
record.detailslist of object
record.passedAwayobjectOnly when the user says this person has died; null clears it.
record.id*stringPerson ID from people_find, never invented.
record.archivedbooleantrue archives the person (kept, hidden from lists); false restores them.
expectedRevisionintegerCurrent record revision; the write aborts if it changed elsewhere.
personIdstringOlder name for record.id, with patch, archived, pinned or relationshipToMe.
patchobjectOlder form (people_patchPerson): the fields to change, with personId.
patch.displayNamestring
personobjectOlder form (people_updatePerson): a WHOLE replacement record; every omitted field is cleared.
person.idstring
archivedbooleanOlder form, with personId.
pinnedbooleanOlder form, with personId.
relationshipToMeobjectOlder form (people_setPersonRelationshipToMe), with personId: replaces the whole edge.
relationshipToMe.kindone of none, partner, spouse, engaged, ex_partner, parent, child, sibling, grandparent, grandchild, family, friend, colleague, mentorWhat this person is to the user, a stated fact, never inferred. "none" = not stated. (No closeness ranks, by design, see the module guide.)
giftobjectLEGACY older form (people_updatePersonGift): a whole replacement gift idea.
gift.idstring
momentobjectLEGACY older form (people_updatePeopleMoment): a whole replacement moment.
moment.idstring
Example input
{
  "record": {
    "id": "person_priya",
    "nickname": "Pri"
  }
}
people_removeDeletethrough vritto_delete

Permanently delete one person, remove them from moments, and drop relationship references from other people. Only on an explicit request; archiving (people_change archived) keeps them. Resolve the id with people_find first.

Note: Archiving (people_change with archived true) keeps the person instead.

FieldTypeDescription
idstringThe person to delete.
expectedRevisionintegerCurrent record revision; the write aborts if it changed elsewhere.
personIdstringOlder name for id.
giftIdstringLEGACY older form (people_deletePersonGift): a gift idea saved in People.
momentIdstringLEGACY older form (people_deletePeopleMoment).

Kept in the Vritto app

  • people_resolveImportedTags: Cleans up what a connected account imported, which is reviewed in the app.
  • people_googlePeopleAuth: Connects, syncs, or disconnects another account.
  • people_listGooglePeopleConnections: Connects, syncs, or disconnects another account.
  • people_syncGooglePeople: Connects, syncs, or disconnects another account.
  • people_disconnectGooglePeople: Connects, syncs, or disconnects another account.
  • people_applyPeopleTagGroup: Rewrites a field across every record at once, which is done in the app where the whole set is in view.