Contactos
`contacts.list`, `get`, `create`, `update` e `delete`.
Todos os 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)Os vistos mais recentemente primeiro, com os contactos que nunca receberam email no fim. source é auto quando a linha foi escrita porque um membro enviou uma mensagem para esse endereço a partir do editor de mensagens da aplicação, o que é uma afirmação materialmente diferente de alguém o ter guardado. O correio recebido de um endereço não escreve nada, e um envio através desta API também não.
O livro de endereços pertence ao espaço de trabalho e não a uma pessoa, pelo que um contacto guardado por qualquer membro é o contacto que todos os membros e todas as chaves veem. create escreve source como manual e coloca o contacto na audiência predefinida no momento da escrita. Indique listas suas em audienceIds para o associar a elas na mesma chamada, o que também exige audiences:write, ou adicione o contacto mais tarde com openemail.audiences.addContact.
Os endereços são guardados em minúsculas e o cliente codifica o que passar, pelo que [email protected] chega à linha certa. O endereço é a identidade, pelo que update não o pode alterar: mudar um contacto de endereço é um delete seguido de um create.
Parâmetros: contacts.list
limitnumber- Quantos contactos devolver por página: um inteiro de 1 a 200, com 50 por predefinição. O valor é convertido, pelo que `'100'` vindo de uma query string é aceite, e um valor fora do intervalo dá 422 em vez de ser ajustado ao limite.
cursorstring- O `nextCursor` da página anterior. Nunca construa um manualmente: um cursor que refere um contacto que já não existe dá 400 `invalid_cursor`, o que significa que o seu estado de paginação está desatualizado e o percurso deve recomeçar sem cursor.
sourceContactSource- `'manual'` para os contactos que alguém guardou intencionalmente, `'auto'` para os que o editor de mensagens da aplicação registou. Omita-o para obter todo o livro de endereços.
Resposta: ContactResource
contacts.list resolve para um Page<ContactResource>, pelo que as linhas estão em page.items e o percurso segue page.nextCursor enquanto page.hasMore for true. get, create e update resolvem cada um para um ContactDetailResource, a mesma linha mais audiences. O livro de endereços não tem limite, e é por isso que esta rota pagina em vez de devolver um array que parava silenciosamente nas 200 linhas.
object'contact'- Sempre a string `contact`, tanto nas linhas da lista como em `get`.
emailstring- O endereço, convertido para minúsculas na escrita para que `[email protected]` e `[email protected]` sejam um só contacto, e o identificador que todos os métodos de contactos recebem, já que nenhum id de contacto é exposto. As linhas pertencem ao espaço de trabalho e não ao membro ou à chave que as escreveu, pelo que todos os membros e todas as chaves do espaço de trabalho leem e escrevem um único livro de endereços.
namestring | null- O nome de apresentação. É null quando nunca foi registado nenhum nome para o endereço. Uma escrita automática só inclui um quando o cabeçalho forneceu algo diferente do próprio endereço, e nunca pode substituir um nome que o utilizador escreveu.
source'manual' | 'auto' | (string & {})- `auto` significa que a linha foi escrita porque o utilizador enviou correio para esse endereço; `manual` significa que alguém o introduziu à mão, uma afirmação materialmente diferente, e um upsert nunca rebaixa `manual` para `auto`. O correio recebido de um endereço não escreve nenhuma linha, de propósito, pelo que alguém que apenas lhe escreveu não está aqui; a união permanece aberta porque a coluna é texto livre com `manual` como predefinição.
notesstring | null- Texto livre que alguém escreveu sobre esta pessoa, na aplicação ou através de `update`, nunca gerado. É null quando ninguém escreveu nada, e um null explícito em `update` limpa-o.
lastSeenAtstring | null- ISO-8601 UTC, atualizado sempre que um membro envia para esse endereço a partir do editor de mensagens da aplicação, e não quando chega correio dele, o que não escreve nada. É null num contacto guardado através de `create` que nunca recebeu email, e esses ficam em último lugar na ordem descendente por `lastSeenAt` que esta rota devolve.
audiencesArray<ContactAudienceResource>- Só em `get`, `create` e `update`, nunca nas linhas da lista. Todas as audiências a que o contacto pertence, como `{ id, name, builtin }`, incluindo a predefinida. `builtin` é `default` na audiência a que todos os contactos pertencem e null numa criada por alguém, por isso baseie a lógica nele e não no nome, que qualquer pessoa pode alterar.