# Contacts

## What it is responsible for

Contacts manages contact-related models and operations within the Outlook plugin. Its entry symbols are `Contact`, `ContactPersonReference`, `ContactInfo`, and `ContactInfoTypeEnum`, which mark the subsystem’s entry points. `ContactPersons` and `ContactInfoTypeEnum` represent person and contact-information concepts, while `saveContact` and `getOutlookContacts` name write and retrieval operations. `AccountLookup` and `fetchAccountLookup` identify an account-lookup path associated with the area.

## What it needs, and who needs it

Contacts depends on [Auth](subsystem-outlook-plugin-src-auth) and [Pams](subsystem-pams). Without either dependency, the Contacts subsystem cannot complete the interactions those dependencies support; the evidence does not specify which symbols require each one. `Outlook_plugin/src/taskpane` depends on Contacts, so that area would lose access to contact symbols such as `Contact` and `getOutlookContacts` if Contacts were unavailable. This is the only declared connection between Contacts and taskpane in this available evidence alone.

9 entities in `Outlook_plugin/src/contacts`. **1 other subsystem depends on it**, which makes it the 6th most depended-upon part of this codebase.

## What it is made of

Its 9 entities sit in 2 files under `Outlook_plugin/src/contacts`: 3 classes, 3 functions, 1 service, 1 interface and 1 more.
`contact.model.ts` holds 5 of them — more than any other file here.

## Where work enters

- [`Contact`](service-contact) — `Outlook_plugin/src/contacts/contact.service.ts`:1
- [`ContactPersonReference`](class-contactpersonreference-5) — `Outlook_plugin/src/contacts/contact.model.ts`:29
- [`ContactInfo`](interface-contactinfo) — `Outlook_plugin/src/contacts/contact.model.ts`:36
- [`ContactInfoTypeEnum`](enum-contactinfotypeenum-5) — `Outlook_plugin/src/contacts/contact.model.ts`:48

## Boundaries

**1 other subsystem depends on this one** — `Taskpane`. Changing what it exposes changes them.

They hold 6 edges into it between them. 6 edges arrive and 6 leave. What they reach is narrower than the folder: 6 of its 9 members carry every inbound edge — `fetchAccountLookup` (1), `getOutlookContacts` (1) and `saveContact` (1), plus 3 more. Of the 6 it sends out, 4 go to `Auth` — more than to any other.

It depends on `Auth`, `Pams`, and on nothing else in this repository.
