Contact
A public address-book entry: one account's name for another account, with flags that say whether it joined that account's site or follows its profile.

Extends

type
Blob type tag, always `Contact`.
Contactoptional
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