dhaga.docs
API referenceVariables

contactProfileSchema

const contactProfileSchema: ZodObject<{
  name: ZodString;
  nickname: ZodNullable<ZodString>;
  positions: ZodArray<ZodObject<{
     title: ZodNullable<ZodString>;
     company: ZodNullable<ZodString>;
     department: ZodNullable<ZodString>;
     current: ZodBoolean;
     startedAt: ZodNullable<ZodString>;
     endedAt: ZodNullable<ZodString>;
     note: ZodNullable<ZodString>;
  }, $strip>>;
  emails: ZodArray<ZodObject<{
     value: ZodString;
     label: ZodNullable<ZodString>;
     note: ZodNullable<ZodString>;
  }, $strip>>;
  phones: ZodArray<ZodObject<{
     value: ZodString;
     label: ZodNullable<ZodString>;
     note: ZodNullable<ZodString>;
  }, $strip>>;
  links: ZodArray<ZodObject<{
     value: ZodString;
     label: ZodNullable<ZodString>;
     note: ZodNullable<ZodString>;
  }, $strip>>;
  addresses: ZodArray<ZodObject<{
     label: ZodNullable<ZodString>;
     street: ZodNullable<ZodString>;
     city: ZodNullable<ZodString>;
     region: ZodNullable<ZodString>;
     postalCode: ZodNullable<ZodString>;
     country: ZodNullable<ZodString>;
     note: ZodNullable<ZodString>;
  }, $strip>>;
  importantDates: ZodArray<ZodObject<{
     label: ZodString;
     value: ZodString;
     note: ZodNullable<ZodString>;
  }, $strip>>;
  customFields: ZodArray<ZodObject<{
     label: ZodString;
     value: ZodString;
  }, $strip>>;
  location: ZodNullable<ZodString>;
}, $strip>;

Defined in: schemas/contact.ts:48

The full editable + importable contact. People hold several jobs over time, carry work/home/mobile numbers, and (from a Google/vCard/device import) a long tail of fields — so employment is a list of positionSchema, emails/phones/links are labeled contactMethodSchema, and customFields is a lossless catch-all so an import never silently drops data. This is what the manual add/edit form reads and writes.