Kontakte
`contacts.list`, `get`, `create`, `update` und `delete`.
Alle Methoden
const page = await openemail.contacts.list({ limit: 100 }) const contact = await openemail.contacts.get('[email protected]') const saved = await openemail.contacts.create({ email: '[email protected]', name: 'Grace Hopper', notes: 'Met at the compiler workshop', }) await openemail.contacts.update(saved.email, { notes: null }) await openemail.contacts.delete(saved.email) console.log(page.items.length, page.hasMore, contact.source, contact.lastSeenAt)Zuletzt gesehene zuerst, Kontakte ohne je versendete Mail zuletzt. source ist auto, wenn die Zeile geschrieben wurde, weil ein Mitglied dieser Adresse eine Nachricht aus dem Composer der App gesendet hat, was eine inhaltlich andere Aussage ist als das bewusste Speichern durch jemanden. Eingehende Mail von einer Adresse schreibt nichts, ein Versand über diese API ebenso wenig.
Das Adressbuch gehört dem Workspace und nicht einer einzelnen Person, ein von irgendeinem Mitglied gespeicherter Kontakt ist daher der Kontakt, den jedes Mitglied und jeder Schlüssel sieht. create schreibt source als manual und legt den Kontakt beim Schreiben in die Standard-Audience. Nennen Sie eigene Listen in audienceIds, um sie im selben Aufruf zuzuordnen, was zusätzlich audiences:write erfordert, oder fügen Sie den Kontakt später mit openemail.audiences.addContact hinzu.
Adressen werden in Kleinbuchstaben gespeichert und der Client kodiert die übergebene Adresse, [email protected] erreicht daher die richtige Zeile. Die Adresse ist die Identität, update kann sie daher nicht ändern: Einen Kontakt zu verschieben heißt delete und create.
Parameter: contacts.list
limitnumber- Wie viele Kontakte pro Seite zurückgegeben werden: ein integer von 1 bis 200, Standard 50. Der Wert wird konvertiert, `'100'` aus einem Query-String ist also in Ordnung, und ein Wert außerhalb des Bereichs ergibt ein 422 statt eines begrenzten Werts.
cursorstring- Der `nextCursor` der vorherigen Seite. Bauen Sie nie selbst einen: Ein cursor, der einen nicht mehr existierenden Kontakt nennt, ergibt ein 400 `invalid_cursor`, was bedeutet, dass Ihr Paging-Zustand veraltet ist und der Durchlauf ohne cursor neu beginnen sollte.
sourceContactSource- `'manual'` für die Kontakte, die jemand bewusst gespeichert hat, `'auto'` für die, die der Composer der App aufgezeichnet hat. Lassen Sie es weg, um das gesamte Adressbuch zu erhalten.
Antwort: ContactResource
contacts.list löst zu einer Page<ContactResource> auf, die Zeilen liegen daher auf page.items und der Durchlauf folgt page.nextCursor, solange page.hasMore true ist. get, create und update lösen jeweils zu einer ContactDetailResource auf, derselben Zeile plus audiences. Das Adressbuch ist unbegrenzt, deshalb paginiert diese Route, statt ein array zurückzugeben, das stillschweigend bei 200 endet.
object'contact'- Immer der String `contact`, auf den Listenzeilen ebenso wie bei `get`.
emailstring- Die Adresse, beim Schreiben in Kleinbuchstaben umgewandelt, sodass `[email protected]` und `[email protected]` ein Kontakt sind, und zugleich der Schlüssel, den jede contacts-Methode entgegennimmt, da keine Kontakt-id nach außen gegeben wird. Zeilen gehören dem Workspace und nicht dem Mitglied oder dem Schlüssel, der sie geschrieben hat, jedes Mitglied und jeder Schlüssel im Workspace liest und schreibt daher ein einziges Adressbuch.
namestring | null- Der Anzeigename. Null, wenn für die Adresse nie ein Name erfasst wurde. Ein automatischer Schreibvorgang trägt nur dann einen ein, wenn der Header etwas anderes als die Adresse selbst geliefert hat, und er kann niemals einen vom Benutzer eingegebenen Namen überschreiben.
source'manual' | 'auto' | (string & {})- `auto` bedeutet, dass die Zeile geschrieben wurde, weil der Benutzer Mail an diese Adresse gesendet hat; `manual` bedeutet, dass jemand sie von Hand eingetragen hat, eine inhaltlich andere Aussage, und ein Upsert stuft `manual` nie wieder auf `auto` herab. Eingehende Mail von einer Adresse schreibt bewusst gar keine Zeile, wer Ihnen also nur geschrieben hat, steht hier nicht; die Union bleibt offen, weil die Spalte Freitext mit Standardwert `manual` ist.
notesstring | null- Freitext, den jemand über diese Person geschrieben hat, in der App oder über `update`, nie generiert. Null, wenn niemand etwas geschrieben hat, und ein explizites null bei `update` löscht ihn.
lastSeenAtstring | null- ISO-8601 UTC, wird jedes Mal aktualisiert, wenn ein Mitglied aus dem Composer der App an diese Adresse sendet, nicht wenn von ihr Mail eintrifft, was nichts schreibt. Null bei einem über `create` gespeicherten Kontakt, an den nie gesendet wurde, und diese stehen in der absteigenden `lastSeenAt`-Sortierung dieser Route am Ende.
audiencesArray<ContactAudienceResource>- Nur bei `get`, `create` und `update`, nie auf Listenzeilen. Jede Audience, in der der Kontakt ist, als `{ id, name, builtin }`, die Standard-Audience eingeschlossen. `builtin` ist `default` bei der Audience, zu der jeder Kontakt gehört, und null bei einer von jemandem angelegten, verzweigen Sie daher darüber und nicht über den Namen, den jeder ändern kann.