Extends
| type Blob type tag, always `Contact`. | Contact | optional |
| signer Public key of the account or device that signed the blob. | inherited | |
| sig Signature over the canonical DAG-CBOR of the blob with `sig` set to 64 zero bytes. | inherited | |
| ts When the signer says the blob was made, in Unix milliseconds; not checked against real time. | inherited | |
| id TSID of the contact record being replaced; present only on updates and tombstones. | optional | |
| account Account the contact is written for, set only when a delegated key signs on its behalf. | optional | |
| subject The account being described; an empty subject makes the blob a tombstone. | optional | |
| name The signer's name for the subject account, up to 256 bytes. | optional | |
| subscribe Flags saying whether the signer joined the subject's site or follows its profile. | optional |
A contact is a public, signed statement by one account about another: "I call this account name". It has two flags in subscribe that the Seed apps use for joining a site and following a person. It works like a phone's contact list, but it is published. A contact grants nothing: the daemon never consults contacts when deciding what a key may read or write. See Permissions.
subject is the account being described. A contact with an empty subject is a tombstone that deletes an earlier record. name is the edge name, up to 256 bytes. account is set only when the signer is a delegated key writing on behalf of another account. id appears on updates and tombstones and holds the TSID of the record being replaced. A contact's record ID is written <account>/<tsid>. Contacts are always public and are indexed for search, so a name you gave someone shows up when you search for it.
The subscribe flags mean: site: true, I joined this site; profile: true, I follow this person. A legacy contact with neither flag counts as a follow. Joining a site is publishing such a contact, and the site's members list is derived from them. The daemon only echoes these flags. The client decides whether a join becomes a sync subscription or a notification preference.
Create and remove contacts with seed-cli contact create --subject <uid> --name "…" and seed-cli contact delete <id> in the CLI, with createContact and deleteContact in the SDK, with the Join and Follow buttons in the Seed app, or with the agent write actions contact.create and contact.delete.
See also
contact/subscribe: the join and follow flags.
Permissions: contacts, joins and the web of trust.
profile: the name an account gives itself.
Sites: site members.
blob: the signed envelope.
Do you like what you are reading? Subscribe to receive updates.
Unsubscribe anytime