Contacts
Contacts
CRUD operations for contacts and contact emails via /contacts/v4.
Operations
Get Contacts
// Single contact by ID
contact, err := c.GetContact(ctx, contactID)
// Count contacts
count, err := c.CountContacts(ctx)
// Paginated listing
contacts, err := c.GetContacts(ctx, page, pageSize)
// Auto-paginating - get all
allContacts, err := c.GetAllContacts(ctx)
// Auto-paginating with custom page size
allContacts, err := c.GetAllContactsPaged(ctx, pageSize)
Search by Email
// Count matches
count, err := c.CountContactEmails(ctx, "user@example.com")
// Paginated search
emails, err := c.GetContactEmails(ctx, "user@example.com", page, pageSize)
// Get all matching
allEmails, err := c.GetAllContactEmails(ctx, "user@example.com")
Create / Update / Delete
// Bulk create with overwrite and label options
results, err := c.CreateContacts(ctx, proton.CreateContactsReq{
Contacts: []proton.Contact{
{
Cards: []proton.ContactCard{...},
Email: "user@example.com",
},
},
})
// Update a contact
updated, err := c.UpdateContact(ctx, contactID, proton.UpdateContactReq{
Cards: []proton.ContactCard{...},
})
// Bulk delete
err := c.DeleteContacts(ctx, proton.DeleteContactsReq{
IDs: []string{id1, id2},
})
Per-Contact Encryption Preferences
Contact settings are stored as VCard-embedded X-PM-* fields:
// Get encryption settings for a contact
settings := contact.GetSettings()
// Returns: MIME type, PGP scheme (inline/MIME), sign/encrypt flags, PGP keys
// Set encryption settings
contact.SetSettings(proton.ContactSettings{
MIMEType: "text/plain",
Scheme: proton.PGPMIMEScheme,
Sign: true,
Encrypt: true,
EncryptUntrusted: true,
PGPKeys: []proton.PGPKey{...},
})
Key Types
| Type | Description |
|---|---|
Contact |
Composite of ContactMetadata and ContactCards |
ContactMetadata |
ID, name, UID, size, timestamps, emails, labels |
ContactCards |
VCard data for the contact |
ContactEmail |
Email entry with ID, name, email string, type tags, contactID, labels |
ContactSettings |
Per-contact encryption preferences (MIME type, scheme, sign/encrypt flags, PGP keys) |
RecipientType |
Internal vs external recipient classification |
No comments to display
No comments to display