Mais em Mailee.me: Recursos | Preços | Cadastro

API REST

O Mailee.me pode ser integrado a qualquer aplicação online por meio de sua API REST. Com ela, você poderá manter seus contatos sincronizados com o Mailee.me de forma transparente.

Existem integrações já prontas para Spree, Ruby on Rails e PHP. Este tutorial será útil caso você queira fazer a sua própria integração.

Utilize nosso API Explorer para testar a API.

1 A chave de acesso

Para usar a API, o Mailee.me gera uma chave secreta para cada cliente. Para pegar esta chave, vá em Configuração, depois em Integrar e por fim em REST.

Tome muito cuidado com esta chave, ela é tão ou mais importante que a sua senha. Com ela, alguém mal intencionado poderá ter acesso aos seus dados.

Integrar

REST

1.1 Atualizando a chave de acesso

Por motivos de segurança, é recomendado atualizar a sua chave a cada 6 meses. Se você já possui código em produção utilizando uma chave, não se preocupe: nós pensamos em você. Quando você cria uma nova chave no Mailee.me, tanto a chave atual, como esta nova, ficarão ativas. Sendo assim, você pode atualizar seu código, testar e aí então “finalizar” a chave antiga.

Para atualizar sua chave de acesso entre na configuração da integração REST do Mailee.me (como visto acime) e clique no botão “Criar nova chave”.

Aparecerá a tela abaixo:

Validando

Agora, ambas as chaves estão ativos. Você pode atualizar o seu código com a chave nova. Quanto terminar, basta clicar em “Validar esta chave”, que esta chave se tornará a atual e a chave antiga será desativada.

2 Formatos

Todas as ações da API REST retornam XML. É necessário utilizar a extensão “.xml” nas chamadas (como na tabela abaixo) ou definir o cabeçalho “Accept: text/xml”.

Algumas ações já suportam o formato JSON (bastando trocar o “.xml” para “.json” ou utilizando o cabeçalho “Accept: text/json”), mas este ainda não é oficial. Fique atento ao blog para novidades.

3 Ações

HTTP Caminho Ação
Contatos
GET /contacts.xml Retorna a coleção das seus contatos paginada de 30 em 30 (parâmetro page).
GET /contacts/ID.xml Retorna um contato de acordo com o ID.
POST /contacts.xml Cria um novo contato com os parâmetros enviados.
PUT /contacts/ID.xml Atualiza um contato pelo ID com os parâmetros enviados.
PUT /contacts/ID/list_subscribe.xml Inscreve um contato pelo ID em uma lista. O nome da lista deve ser passado como parâmetro. Se a lista não existir ela será criada automaticamente. Para inscrever o contato em uma lista já existe é possível também passar list_id como parâmetro.
PUT /contacts/ID/list_unsubscribe.xml Desinscreve um contato pelo ID em uma lista. O nome da lista deve ser passado através do parâmetro list ou o id da lista pode ser passado através do parâmetro list_id.
PUT /contacts/ID/subscribe.xml Igual ao list_subscribe. Não deve mais ser usado pois será removido no futuro.
PUT /contacts/ID/unsubscribe.xml Descadastra o contato pelo ID.
Listas
GET /lists.xml Retorna a coleção das suas listas.
GET /lists/ID.xml Retorna uma lista de acordo com o ID.
POST /lists.xml Cria uma nova lista com os parâmetros enviados.
PUT /lists/ID.xml Atualiza uma lista pelo ID com os parâmetros enviados.
Templates
GET /templates.xml Retorna a coleção dos seus templates.
GET /templates/ID.xml Retorna um template de acordo com o ID.
POST /templates.xml Cria um novo template com os parâmetros enviados.
PUT /templates/ID.xml Atualiza um template pelo ID com os parâmetros enviados.
Mensagens
GET /messages.xml Retorna a coleção dos suas mensagens.
GET /messages/ID.xml Retorna uma mensagem de acordo com o ID.
POST /messages.xml Cria uma nova mensagem (rascunho) com os parâmetros enviados.
PUT /messages/ID/test.xml Envia testes para uma mensagem para os contatos passados por parâmetro.
PUT /messages/ID/ready.xml Envia a mensagem agora, ou numa data futura, de acordo com os parâmetros.
Relatórios
GET /reports/ID.xml Retorna o relatório de uma mensagem de acordo com o ID.
GET /reports/ID/unsubscribes.xml Retorna a lista de descadastros de uma mensagem.
GET /reports/ID/accesses.xml Retorna os acessos mais recentes de uma mensagem.

4 Parâmetros de envio

4.1 Contatos

Parâmetro Obrigatório? Descrição
contact[email] Sim Email do contato
contact[name] Não Nome do contato
contact[internal_id] Não Id do contato no seu sistema
contact[company] Não Empresa do contato
contact[position] Não Cargo do contato
contact[sex] Não Sexo do contato
contact[birthday] Não Data de aniversário do contato
contact[age] Não Idade do contato
contact[phone] Não Número de telefone do contato
contact[mobile] Não Número de celular do contato
contact[address] Não Endereço do contato
contact[notes] Não Campo aberto para notas sobre o contato
contact[dynamic_attributes][*] Não Permite enviar informações dos campos dinâmicos para o contato. e.g. contact[dynamic_attributes][points]=1000
4.1.1 Inscrever em lista (list_subscribe)
Parâmetro Obrigatório? Descrição
list * Nome da lista. Obrigatório se list_id não for informado.
list_id * Id da lista. Obrigatório se list não for informado.
4.1.2 Desinscrever em lista (list_subscribe)
Parâmetro Obrigatório? Descrição
list * Nome da lista. Obrigatório se list_id não for informado.
list_id * Id da lista. Obrigatório se list não for informado.

4.2 Listas

Parâmetro Obrigatório? Descrição
list[name] Sim Nome da lista
list[company] Não Empresa da lista
list[description] Não Descrição da lista
list[address] Não Endereço da lista
list[phone] Não Número de telefone da lista
list[site] Não Endereço do site da lista

4.3 Templates

Parâmetro Obrigatório? Descrição
template[title] Sim Título do template
template[html] Não Conteúdo HTML do template

4.4 Mensagens

4.4.1 Criação
Parâmetro Obrigatório? Descrição
message[title] Sim Título da mensagem (e da campanha)
message[subject] Sim Assunto da mensagem que aparecerá no envio
message[from_name] Sim Nome do rementente da mensagem
message[from_email] Sim Email do rementente da mensagem
message[reply_email] Não Email de retorno da mensagem. Se não for passado usará o from_email.
message[html] * Conteúdo HTML da mensagem. É obrigatório se template_id não for passado
message[template_id] * Id do template da mensagem. É obrigatório se html não for passado
message[emails] * Lista de emails para a mensagem. Os emails podem ser separados por qualquer coisa (vírgula, tab, quebra de linha…). É obrigatório se list_id não for passado
message[list_id] * Id da lista da mensagem. É obrigatório se emails não for passado
message[segment_id] Não Id do segmento da mensagem. Só pode ser usado em mensagens com list_id
message[edit][*] Não Conteúdo a ser colocado em uma região editável da mensage. O * representa o id da região. Só pode ser usado em mensagens com template_id.
message[repeats][*][] Não Conteúdo a ser adicionado em um bloco de repetição da mensage. O * representa o id do bloco. Só pode ser usado em mensagens com template_id.
message[analytics] Não Define se a mensagem irá passar informações nos links para o Google Analytics
4.4.2 Teste (test)
Parâmetro Obrigatório? Descrição
contacts[] Sim Id de cada contato de destino do teste da mensagem
4.4.3 Envio (ready)
Parâmetro Obrigatório? Descrição
when Sim Quando a mensagem será enviada. Pode ter os valores “now” (envio imediato) e “after” (envio programado)
after[date] * Data para envio da mensagem. Obrigatório se o valor de “when” for “after”. e.g. 21/12/2012
after[hour] * Hora (sem minutos) para envio da mensagem. Obrigatório se o valor de “when” for “after”. e.g. 16

4.5 Relatórios

4.5.1 Acessos (accesses)
Parâmetro Obrigatório? Descrição
last_id Sim Buscará os acessos posteriores ao acesso passado

5 Testando

Esta seção mostra como utilizar a API utilizando o comando “curl”. Se você utiliza Linux ou MacOS, este comando já deve estar disponível. O download do curl para outros diversos sistemas operacionais pode ser feito no site: http://curl.haxx.se/download.html

5.1 Contatos

5.1.1 Buscando todos

Exemplo:

curl SUA_CHAVE_DE_API/contacts.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <contacts type="array"> <contact> <address></address> <age nil="true"></age> <birthday type="date" nil="true"></birthday> <client-id type="integer">1</client-id> <company nil="true"></company> <contact-status-id type="integer">4</contact-status-id> <created-at type="datetime">2010-03-24T16:51:53-03:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <dynamic-values type="hstore">titleYo!</dynamic-values> <email>wittgenstein@mailee.me</email> <facebook-followers type="integer" nil="true"></facebook-followers> <forwarded-by type="integer" nil="true"></forwarded-by> <goodreads-connections type="integer" nil="true"></goodreads-connections> <id type="integer">1923512</id> <import-id type="integer">6020</import-id> <internal-id>534</internal-id> <kscore type="float" nil="true">65</kscore> <latitude type="decimal">-30.0333003997803</latitude> <linkedin-followers type="integer" nil="true"></linkedin-followers> <linkedin-recomendations type="integer" nil="true"></linkedin-recomendations> <longitude type="decimal">-51.2000007629395</longitude> <mobile></mobile> <name>Ludwig Wittgenstein</name> <notes></notes> <origin-id type="integer">2</origin-id> <orkut-followers type="integer" nil="true"></orkut-followers> <phone></phone> <photo-content-type nil="true"></photo-content-type> <photo-file-name nil="true"></photo-file-name> <photo-file-size type="integer" nil="true"></photo-file-size> <photo-updated-at type="datetime" nil="true"></photo-updated-at> <plaxo-connections type="integer" nil="true"></plaxo-connections> <position nil="true"></position> <sex nil="true"></sex> <skoob-connections type="integer" nil="true"></skoob-connections> <twitter-followers type="integer" nil="true"></twitter-followers> <updated-at type="datetime">2010-11-04T12:08:13-02:00</updated-at> </contact> </contacts>
5.1.2 Buscando um

Exemplo:

curl SUA_CHAVE_DE_API/contacts/ID.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <contact> <address></address> <age nil="true"></age> <birthday type="date" nil="true">1889-26-04</birthday> <client-id type="integer">1</client-id> <company nil="true"></company> <contact-status-id type="integer">4</contact-status-id> <created-at type="datetime">1889-26-04T16:51:53-03:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <dynamic-values type="hstore">influenced_byFrege</dynamic-values> <email>wittgenstein@mailee.me</email> <facebook-followers type="integer" nil="true">2</facebook-followers> <forwarded-by type="integer" nil="true">234</forwarded-by> <goodreads-connections type="integer" nil="true">234</goodreads-connections> <id type="integer">123456</id> <import-id type="integer">6020</import-id> <internal-id>235235</internal-id> <kscore type="float" nil="true"></kscore> <latitude type="decimal">-30.0333003997803</latitude> <linkedin-followers type="integer" nil="true">234</linkedin-followers> <linkedin-recomendations type="integer" nil="true">123</linkedin-recomendations> <longitude type="decimal">-51.2000007629395</longitude> <mobile>51 99887766</mobile> <name>Ludwig Wittgenstein</name> <notes>Ludwig Joseph Johann Wittgenstein (Viena, 26 de Abril de 1889 — Cambridge, 29 de Abril de 1951), filósofo austríaco, naturalizado britânico, foi um dos principais atores da "virada linguística" na filosofia do século XX</notes> <origin-id type="integer">2</origin-id> <orkut-followers type="integer" nil="true">353</orkut-followers> <phone>51 30625545</phone> <photo-content-type nil="true">image/jpg</photo-content-type> <photo-file-name nil="true">witt.jpg</photo-file-name> <photo-file-size type="integer" nil="true">123456</photo-file-size> <photo-updated-at type="datetime" nil="true">2010-11-04T12:08:13-02:00</photo-updated-at> <plaxo-connections type="integer" nil="true">123</plaxo-connections> <position nil="true">Researcher</position> <sex nil="true">M</sex> <skoob-connections type="integer" nil="true">987</skoob-connections> <twitter-followers type="integer" nil="true">654</twitter-followers> <updated-at type="datetime">2010-11-04T12:08:13-02:00</updated-at> </contact>
5.1.3 Criando

Exemplo:

curl -X POST -d "contact[email]=foo@bar.com&contact[name]=Foo" SUA_CHAVE_DE_API/contacts.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <contact> <address></address> <age nil="true"></age> <birthday type="date" nil="true"></birthday> <client-id type="integer">1</client-id> <company nil="true"></company> <contact-status-id type="integer">4</contact-status-id> <created-at type="datetime">1889-26-04T16:51:53-03:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <dynamic-values type="hstore"></dynamic-values> <email>foo@bar.com</email> <facebook-followers type="integer" nil="true"></facebook-followers> <forwarded-by type="integer" nil="true"></forwarded-by> <goodreads-connections type="integer" nil="true"></goodreads-connections> <id type="integer">123457</id> <import-id type="integer"></import-id> <internal-id></internal-id> <kscore type="float" nil="true"></kscore> <latitude type="decimal"></latitude> <linkedin-followers type="integer" nil="true"></linkedin-followers> <linkedin-recomendations type="integer" nil="true"></linkedin-recomendations> <longitude type="decimal"></longitude> <mobile></mobile> <name>Foo</name> <notes></notes> <origin-id type="integer">2</origin-id> <orkut-followers type="integer" nil="true"></orkut-followers> <phone></phone> <photo-content-type nil="true"></photo-content-type> <photo-file-name nil="true"></photo-file-name> <photo-file-size type="integer" nil="true"></photo-file-size> <photo-updated-at type="datetime" nil="true"></photo-updated-at> <plaxo-connections type="integer" nil="true"></plaxo-connections> <position nil="true"></position> <sex nil="true"></sex> <skoob-connections type="integer" nil="true"></skoob-connections> <twitter-followers type="integer" nil="true"></twitter-followers> <updated-at type="datetime">2010-11-04T12:08:13-02:00</updated-at> </contact>

Exemplo de erro:

curl -X POST -d "contact[email]=foo@" SUA_CHAVE_DE_API/contacts.xml

Resultado do erro:

<?xml version="1.0" encoding="UTF-8"?> <errors> <error>Email não é válido</error> </errors>
5.1.4 Atualizando

Exemplo:

curl -X PUT -d "contact[name]=Bar" SUA_CHAVE_DE_API/contacts/ID.xml

Neste caso o servidor não retornará nenhum XML.

Exemplo de erro:

curl -X PUT -d "contact[email]=foo@" SUA_CHAVE_DE_API/contacts/ID.xml

Resultado do erro:

<?xml version="1.0" encoding="UTF-8"?> <errors> <error>Email não é válido</error> </errors>

5.2 Listas

5.2.1 Buscando todas

Exemplo:

curl SUA_CHAVE_DE_API/lists.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <lists type="array"> <list> <active type="boolean">true</active> <address></address> <client-id type="integer">1</client-id> <company></company> <created-at type="datetime">2010-03-23T13:56:30-03:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <description></description> <id type="integer">45345</id> <lists-contacts-count type="integer">18</lists-contacts-count> <name>Philosophers</name> <phone></phone> <site></site> </list> </lists>
5.2.2 Buscando uma

Exemplo:

curl SUA_CHAVE_DE_API/lists/ID.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <list> <active type="boolean">true</active> <address></address> <client-id type="integer">1</client-id> <company></company> <created-at type="datetime">2010-03-23T13:56:30-03:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <description></description> <id type="integer">45345</id> <lists-contacts-count type="integer">18</lists-contacts-count> <name>Philosophers</name> <phone></phone> <site></site> </list>
5.2.3 Criando

Exemplo:

curl -X POST -d "list[name]=Foo" SUA_CHAVE_DE_API/lists.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <list> <active type="boolean">true</active> <address nil="true"></address> <client-id type="integer">1</client-id> <company nil="true"></company> <created-at type="datetime">2010-12-03T16:04:23-02:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <description nil="true"></description> <id type="integer">23965</id> <lists-contacts-count type="integer">0</lists-contacts-count> <name>Foo</name> <phone nil="true"></phone> <site nil="true"></site> </list>

Exemplo de erro:

curl -X POST -d "list[name]=" SUA_CHAVE_DE_API/lists.xml

Resultado do erro:

<?xml version="1.0" encoding="UTF-8"?> <errors> <error>Nome não pode ser vazio</error> </errors>
5.2.4 Atualizando

Exemplo

curl -X PUT -d "list[name]=Bar" SUA_CHAVE_DE_API/lists/ID.xml

Neste caso o servidor não retornará nenhum XML.

Exemplo de erro:

curl -X PUT -d "list[name]=" SUA_CHAVE_DE_API/lists/ID.xml

Resultado do erro:

<?xml version="1.0" encoding="UTF-8"?> <errors> <error>Nome não pode ser vazio</error> </errors>

5.3 Templates

5.3.1 Buscando todos

Exemplo:

curl SUA_CHAVE_DE_API/templates.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <templates type="array"> <template> <client-id type="integer">1</client-id> <created-at type="datetime">2010-12-02T18:22:33-02:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <html>&lt;h1&gt;Hello World!&lt;/h1&gt;</html> <id type="integer">4044</id> <simulations type="yaml" nil="true"></simulations> <thumb-content-type>image/png</thumb-content-type> <thumb-file-name>4044.png</thumb-file-name> <thumb-file-size type="integer">36294</thumb-file-size> <thumb-updated-at type="datetime">2010-12-02T18:23:05-02:00</thumb-updated-at> <title>Hello World</title> <updated-at type="datetime">2010-12-02T18:23:05-02:00</updated-at> </template> </templates>
5.3.2 Buscando um

Exemplo:

curl SUA_CHAVE_DE_API/templates/ID.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <template> <client-id type="integer">1</client-id> <created-at type="datetime">2010-12-02T18:22:33-02:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <html>&lt;h1&gt;Hello World!&lt;/h1&gt;</html> <id type="integer">4044</id> <simulations type="yaml" nil="true"></simulations> <thumb-content-type>image/png</thumb-content-type> <thumb-file-name>4044.png</thumb-file-name> <thumb-file-size type="integer">36294</thumb-file-size> <thumb-updated-at type="datetime">2010-12-02T18:23:05-02:00</thumb-updated-at> <title>Hello World</title> <updated-at type="datetime">2010-12-02T18:23:05-02:00</updated-at> </template>
5.3.3 Criando

Exemplo:

curl -X POST -d "template[name]=Foo&template[html]=<h1>hello world</h1>" SUA_CHAVE_DE_API/templates.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <templates type="array"> <template> <client-id type="integer">1</client-id> <created-at type="datetime">2010-12-02T18:22:33-02:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <html>&lt;h1&gt;hello world&lt;/h1&gt;</html> <id type="integer">9876</id> <simulations type="yaml" nil="true"></simulations> <thumb-content-type>image/png</thumb-content-type> <thumb-file-name>9876.png</thumb-file-name> <thumb-file-size type="integer">36294</thumb-file-size> <thumb-updated-at type="datetime">2010-12-02T18:23:05-02:00</thumb-updated-at> <title>Foo</title> <updated-at type="datetime">2010-12-02T18:23:05-02:00</updated-at> </template> </templates>
5.3.4 Atualizando

Exemplo:

curl -X PUT -d "template[name]=Bar" SUA_CHAVE_DE_API/templates/ID.xml

Neste caso o servidor não retornará nenhum XML.

Exemplo de erro:

curl -X PUT -d "template[title]=" SUA_CHAVE_DE_API/contacts/ID.xml

Resultado do erro:

<?xml version="1.0" encoding="UTF-8"?> <errors> <error>Title não pode ser vazio</error> </errors>

5.4 Mensagens

5.4.1 Buscando todas

Exemplo:

curl SUA_CHAVE_DE_API/messages.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <messages type="array"> <message> <analytics type="boolean">true</analytics> <created-at type="datetime">2010-11-04T11:57:57-02:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <from-email>wittgenstein@mailee.me</from-email> <from-name>Wittgenstein</from-name> <id type="integer">12893</id> <list-id type="integer">23422</list-id> <newsletter-id type="integer">1746</newsletter-id> <reply-email>wittgenstein@mailee.me</reply-email> <segment-id type="integer" nil="true"></segment-id> <send-after type="datetime">2010-11-04T11:58:54-02:00</send-after> <send-when>now</send-when> <status type="integer">3</status> <subject>Hello</subject> <template-id type="integer">2354</template-id> <title>Hello</title> <total type="integer">2353</total> </message> </messages>
5.4.2 Buscando uma

Exemplo:

curl SUA_CHAVE_DE_API/messages/ID.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <message> <analytics type="boolean">true</analytics> <created-at type="datetime">2010-11-04T11:57:57-02:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <from-email>wittgenstein@mailee.me</from-email> <from-name>Wittgenstein</from-name> <id type="integer">12893</id> <list-id type="integer">23422</list-id> <newsletter-id type="integer">1746</newsletter-id> <reply-email>wittgenstein@mailee.me</reply-email> <segment-id type="integer" nil="true"></segment-id> <send-after type="datetime">2010-11-04T11:58:54-02:00</send-after> <send-when>now</send-when> <status type="integer">3</status> <subject>Hello</subject> <template-id type="integer">2354</template-id> <title>Hello</title> <total type="integer">2353</total> </message>
5.4.3 Criando com HTML e emails

Exemplo:

curl -X POST -d "message[title]=CurlTest&message[subject]=CurlTest&message[emails]=curl@curl.com&message[from_name]=Name&message[from_email]=maiz@softa.com.br&message[html]=<h1>hello world</h1>" SUA_CHAVE_DE_API/messages.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <message> <analytics type="boolean">true</analytics> <created-at type="datetime">2010-11-04T11:57:57-02:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <from-email>maiz@softa.com.br</from-email> <from-name>Name</from-name> <html>&lt;h1&gt;hello world&lt;/h1&gt;</html> <id type="integer">12893</id> <list-id type="integer">23422</list-id> <newsletter-id type="integer">1746</newsletter-id> <reply-email>maiz@softa.com.br</reply-email> <segment-id type="integer" nil="true"></segment-id> <send-after type="datetime">2010-11-04T11:58:54-02:00</send-after> <send-when></send-when> <status type="integer">1</status> <subject>CurlTest</subject> <template-id type="integer"></template-id> <title>CurlTest</title> <total type="integer"></total> </message>

Um exemplo de erro:

curl -X POST -d "message[title]=" SUA_CHAVE_DE_API/messages.xml

Retorno do erro:

<?xml version="1.0" encoding="UTF-8"?> <errors> <error> Você não preencheu o título da campanha. Os dados enviados foram: [["action", "create"], ["controller", "client/messages"], ["format", "xml"], ["message", {"title"=>"", "reply_email"=>nil}]] </error> </errors>

Outro exemplo de erro:

curl -X POST -d "message[title]=A" SUA_CHAVE_DE_API/messages.xml

Retorno do erro:

<?xml version="1.0" encoding="UTF-8"?> <errors> <error>Assunto não pode ser vazio</error> <error>Nome do remetente não pode ser vazio</error> <error>Email do remetente não pode ser vazio</error> <error>Email do remetente não é válido</error> <error>Email de resposta não pode ser vazio</error> <error>Email de resposta não é válido</error> <error>Lista não pode ser vazio</error> <error>Os dados enviados foram: [["action", "create"], ["controller", "client/messages"], ["format", "xml"], ["message", {"title"=>"A", "reply_email"=>nil}]]</error> </errors>
5.4.4 Criando com lista, template, edits e repeats

Exemplo:

curl -X POST -d "message[title]=EaaS&message[subject]=EaaS&message[list_id]=23768&message[from_name]=Mailee&message[from_email]=eaas@mailee.me&message[template_id]=3878&message[edit][first]=This is a message from the API&message[repeat][ofertas][]=<h1>Oferta cadastrada pela API</h1>" SUA_CHAVE_DE_API/messages.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <message> <analytics type="boolean">true</analytics> <created-at type="datetime">2010-11-04T11:57:57-02:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <from-email>eaas@mailee.me</from-email> <from-name>Mailee</from-name> <html> &lt;span class=&quot;edit&quot; id=&quot;first&quot;&gt;This is a message from the API&lt;/span&gt; &lt;div id=&quot;ofertas&quot; class=&quot;repeat&quot;&gt; &lt;h1&gt;Oferta cadastrada pela API&lt;/h1&gt; &lt;/div&gt; </html> <id type="integer">12894</id> <list-id type="integer">23768</list-id> <newsletter-id type="integer">1746</newsletter-id> <reply-email>eaas@mailee.me</reply-email> <segment-id type="integer" nil="true"></segment-id> <send-after type="datetime">2010-11-04T11:58:54-02:00</send-after> <send-when></send-when> <status type="integer">1</status> <subject>EaaS</subject> <template-id type="integer">3878</template-id> <title>EaaS</title> <total type="integer"></total> </message>
5.4.5 Enviando um teste

Exemplo:

curl -d "contacts[]=ID" -X PUT SUA_CHAVE_DE_API/messages/ID/test.xml
5.4.6 Enviando agora

Exemplo:

curl -d "when=now" -X PUT SUA_CHAVE_DE_API/messages/ID/ready.xml
5.4.7 Enviando em 2012 (nós esperamos)

Exemplo:

curl -d "when=after&after[date]=21/12/2012&after[hour]=21" -X PUT SUA_CHAVE_DE_API/messages/ID/ready.xml

5.5 Relatórios

5.5.1 Dados gerais

Exemplo:

curl SUA_CHAVE_DE_API/reports/ID.xml

Resultado:

<report> <message> <analytics type="boolean">true</analytics> <created-at type="datetime">2010-11-04T11:57:57-02:00</created-at> <deleted-at type="datetime" nil="true"></deleted-at> <from-email>wittgenstein@mailee.me</from-email> <from-name>Wittgenstein</from-name> <id type="integer">12893</id> <list-id type="integer">23422</list-id> <newsletter-id type="integer">1746</newsletter-id> <reply-email>wittgenstein@mailee.me</reply-email> <segment-id type="integer" nil="true"></segment-id> <send-after type="datetime">2010-11-04T11:58:54-02:00</send-after> <send-when>now</send-when> <status type="integer">3</status> <subject>Hello</subject> <template-id type="integer">2354</template-id> <title>Hello</title> <total type="integer">2353</total> </message> <results> <total>65456</total> <opens>12653</opens> <returns>659</returns> <not_opened>52144</not_opened> </results> </report>
5.5.2 Últimos acessos

Exemplo:

curl SUA_CHAVE_DE_API/reports/ID/accesses.xml?last_id=1234567890

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <views type="array"> <view> <browser>Lynx</browser> <city>Porto Alegre</city> <contact-id type="integer">2921</contact-id> <country-code>BR</country-code> <country-code3>BRA</country-code3> <country-name>Brazil</country-name> <created-at type="datetime">2010-11-13T18:36:36-02:00</created-at> <id type="integer">3505221</id> <ip>189.27.251.80</ip> <latitude>-30.0333003997803</latitude> <longitude>-51.2000007629395</longitude> <message-id type="integer">13176</message-id> <os nil="true">BeOS</os> <os-version nil="true">3.0</os-version> <region>23</region> <url-id type="integer" nil="true"></url-id> <user-agent-name nil="true"></user-agent-name> <user-agent-string nil="true"></user-agent-string> <user-agent-version nil="true"></user-agent-version> </view> </views>
5.5.3 Descadastros

Exemplo:

curl SUA_CHAVE_DE_API/reports/ID/unsubscribes.xml

Resultado:

<?xml version="1.0" encoding="UTF-8"?> <unsubscribes type="array"> <unsubscribe> <contact-id type="integer">342356</contact-id> <created-at type="datetime">2010-11-23T16:36:44-02:00</created-at> <id type="integer">20759709</id> <message-id type="integer">123456</message-id> <reason nil="true">Just testing the API</reason> <spam type="boolean">false</spam> </unsubscribe> </unsubscribes>