Contactos
`contacts.list`, `get`, `create`, `update` y `delete`.
Todos los métodos
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)Primero los vistos más recientemente, y al final los contactos a los que nunca se ha escrito. source es auto cuando la fila se escribió porque un miembro envió un mensaje a esa dirección desde el redactor de la aplicación, lo que es una afirmación sustancialmente distinta de que alguien la haya guardado. El correo que llega desde una dirección no escribe nada, y un envío a través de esta API tampoco.
La libreta pertenece al espacio de trabajo y no a una persona, así que un contacto guardado por cualquier miembro es el contacto que ven todos los miembros y todas las claves. create escribe source como manual y coloca el contacto en la audiencia por defecto en el momento de escribirlo. Nombra tus propias listas en audienceIds para unirlo a ellas en la misma llamada, lo que además requiere audiences:write, o añade el contacto más tarde con openemail.audiences.addContact.
Las direcciones se almacenan en minúsculas y el cliente codifica la que pasas, así que [email protected] llega a la fila correcta. La dirección es la identidad, de modo que update no puede cambiarla: mover un contacto es un delete y un create.
Parámetros: contacts.list
limitnumber- Cuántos contactos devolver por página: un integer de 1 a 200, con 50 por defecto. Se convierte de tipo, así que `'100'` procedente de una cadena de consulta es válido, y un valor fuera del rango es un 422 en lugar de un valor recortado.
cursorstring- El `nextCursor` de la página anterior. Nunca construyas uno a mano: un cursor que nombra a un contacto que ya no existe es un 400 `invalid_cursor`, lo que significa que tu estado de paginación está obsoleto y el recorrido debe reiniciarse sin cursor.
sourceContactSource- `'manual'` para los contactos que alguien guardó a propósito, `'auto'` para los que registró el redactor de la aplicación. Omítelo para obtener toda la libreta.
Respuesta: ContactResource
contacts.list se resuelve en un Page<ContactResource>, así que las filas están en page.items y el recorrido sigue page.nextCursor mientras page.hasMore sea true. get, create y update se resuelven cada uno en un ContactDetailResource, la misma fila más audiences. La libreta de direcciones no tiene límite, y por eso esta ruta pagina en lugar de devolver un array que se detuvo en silencio en 200.
object'contact'- Siempre la cadena `contact`, tanto en las filas de la lista como en `get`.
emailstring- La dirección, pasada a minúsculas al escribirla para que `[email protected]` y `[email protected]` sean un único contacto, y la clave que acepta todo método de contacts, ya que no se expone ningún id de contacto. Las filas pertenecen al espacio de trabajo y no al miembro o a la clave que las escribió, así que todos los miembros y todas las claves del espacio de trabajo leen y escriben una sola libreta de direcciones.
namestring | null- El nombre visible. Es null cuando nunca se ha registrado un nombre para la dirección. Una escritura automática solo lleva uno cuando la cabecera aportó algo distinto de la propia dirección, y nunca puede sobrescribir un nombre que escribió el usuario.
source'manual' | 'auto' | (string & {})- `auto` significa que la fila se escribió porque el usuario envió correo a esa dirección; `manual` significa que alguien la introdujo a mano, una afirmación sustancialmente distinta, y un upsert nunca degrada `manual` de vuelta a `auto`. El correo que llega desde una dirección no escribe ninguna fila, deliberadamente, así que alguien que solo te ha escrito a ti no está aquí; la unión se mantiene abierta porque la columna es texto libre con `manual` por defecto.
notesstring | null- Texto libre que alguien escribió sobre esta persona, en la aplicación o mediante `update`, nunca generado. Es null cuando nadie ha escrito nada, y un null explícito en `update` lo borra.
lastSeenAtstring | null- ISO-8601 UTC, actualizado cada vez que un miembro envía a esa dirección desde el redactor de la aplicación, no cuando llega correo desde ella, que no escribe nada. Es null en un contacto guardado con `create` al que nunca se ha escrito, y esos quedan al final del orden descendente por `lastSeenAt` que devuelve esta ruta.
audiencesArray<ContactAudienceResource>- Solo en `get`, `create` y `update`, nunca en las filas de la lista. Todas las audiencias a las que pertenece el contacto, como `{ id, name, builtin }`, incluida la audiencia por defecto. `builtin` es `default` en la audiencia a la que pertenecen todos los contactos y null en una que alguien creó, así que ramifica según ese campo y no según el nombre, que cualquiera puede cambiar.