[PT] – Documentação da API REST do DMDS v2 em Python

Documentação da API REST do DMDS v2 em Python – Dentro de API

Neste tutorial, mostraremos exemplos diferentes de como chamar o resto da API do DMDS (Data-Mining and Delivery Services) com o código python. Tenha sempre em mente que método (GET, POST, DELETE, etc.) está sendo usado para cada chamada e como fazemos as chamadas, a parte do uri.

Retornar informações de um contato

Neste exemplo, explicaremos como retornar os grupos, eventos e campos de um contato específico. Na chamada, na url, você deve especificar o email do usuário já existente no banco de dados da API. Dessa forma, você será presenteado com todas as informações de um contato, como seu nome, sobrenome, etc. Além disso, retornaremos a quais grupos esse contato pertence e todos os seus eventos.

import requests
r = requests.get("https://api-dmds-host/v1/contacto/email",
    headers={
             'Accept':'application/json',
             'Content-type': 'application/json',
             "Authorization":"xxxxxxx"
    },
)
print(r.text)

 

Listar contatos inválidos

Esta parte do código mostrará todos os usuários que estão desativados.

import requests
r = requests.get("https://api-dmds-host/v1/contactos/invalidos/",
    headers={
             'Accept':'application/json',
             'Content-type': 'application/json',
             "Authorization":"xxxxxxxxxxxx"
    },
)
print(r.text)
Crie ou atualize um contato novamente

Com o seguinte código, você pode criar um contato novamente ou atualizar um já existente.

A primeira variável que é definida é o correio eletrônico, para entender é como uma chave primária no banco de dados. Sempre para atualizar um contato, basearemos seu email como ele é único.

Podemos alterar o grupo ao qual um contato pertence, na parte do grupo, adicionar outro nome de grupo existente.

Nós também podemos mudar seu nome, seu sobrenome, etc. Todos os campos que você deseja alterar.

import requests
import json
xdata ={
       "email":"xxxxxxx@xxxx",
       "grupos":"xxxx",
       "nombre":"xxxxx",
       "apellido":"xx",
       "sexo":"x",
       "edad":"xxx",
       "invalido":"0"
}
r = requests.post("https://api-dmds-host/v1/contacto/",
       headers={
               'Accept':'application/json',
               'Content-type': 'application/json',
               "Authorization":"xxxxxxx"
       },
       data= json.dumps( xdata )
)
if r.status_code==200:
     print(r.text)
print(r.status_code, r.reason)
Invalidar um contato

Na mesma atualização de um contato, um contato pode ser invalidado ou validado. Por padrão, a variável inválida está sempre em zero. Mas, no caso de um usuário querer cancelar a assinatura ou invalidar, colocar essa variável em um, (inválido: 1). Isso nos permite definir que esse contato está na lista de inválidos.

import requests
import json
xdata ={
       "email":"xxxxx",
       "grupos":"xxxxx",
       "nombre":"xxxx",
       "apellido":"xx",
       "sexo":"x",
       "edad":"xxx",
       "invalido":"1"
}
r = requests.post("https://api-dmds-host/v1/contacto/",
       headers={
               'Accept':'application/json',
               'Content-type': 'application/json',
               "Authorization":"xxxxxxxxxxx"
       },
       data= json.dumps( xdata )
)
if r.status_code==200:
     print(r.text)
print(r.status_code, r.reason)
Enviar um correio

Para enviar um email, vamos diferenciar os tipos que queremos enviar. Primeiro, há duas chamadas diferentes para enviar um email para um único destinatário e um email para vários destinatários. Para que a mudança seja muito básica, mude o contato por contatos. Duas outras chamadas são diferentes no envio de um html embutido ou um html usando o uri.

Chamada genérica
import requests 
r = requests.post("https://api-dmds-host/v1/envio/enviar/", 
      headers={'Accept':'application/json','Content-type': 'application/json',"Authorization":"xxxxxxxxx"}, 
      data ='{"campana_id":"xxxxxxxxxxxxx","email":true,"contacto":{"email":"xxxxxxxxx","nombre":"xxxxx","apellido":"xxxxxx"}') 
if r.status_code==200: 
       print(r.text) 
print(r.status_code, r.reason)
Envie um email para apenas um destinatário com html uri

Para fazer este envio é necessário definir alguns campos, como: o campo email deve ser sempre true, pois isso nos permite enviar o email. Se esse valor for falso, as mensagens não poderão ser enviadas. Outros valores para definir são o id da campanha e o email do destinatário. Os outros valores, como primeiro nome, sobrenome, assunto são opcionais. Caso você queira enviar um html via uri, ele é adicionado na seção html_url. Na seção de cabeçalhos, lembre-se de definir seu valor de autorização.

import requests
r = requests.post("https://api-dmds-planisys.planisys.net/v1/envio/send_one_uri/",
       headers={'Accept':'application/json','Content-type': 'application/json',"Authorization":"xxxxxxxxxxxxx"},
       data ='{"campana_id":"xxxxxxxxxxxxxxxxxxxx","email":true,"contacto":{"email":"xxx@xxx","nombre":"xxxx","apellido":"xxx"}, "html_url":"xxxxxxxxxxxxx"}')
if r.status_code==200: 
         print(r.text) 
print(r.status_code, r.reason)
Enviar um email para apenas um destinatário com in-line html

A diferença da chamada anterior é como definir o html dentro do código. Existem duas maneiras de enviar um email com html inline.

Uma é definir o código html dentro do script:

import requests
import json
xdata ={
       "campana_id":"111",
       "email": True,
       "asunto": "xxxxxxxx",
       "remitente": "xxxxxxxxx",
       "contacto":{
             "email":"xxxxxx",
             "nombre":"xxxxx",
             "apellido":"xxxxx"
       },
       "html": " <!DOCTYPE html><html><head><title>Page Title</title></head><body><h1>This is a Heading</h1><p>This is a paragraph.</p></body></html> "
}
r = requests.post("https://api-dmds-host/v1/envio/send_one_inline/",
       headers={
                'Accept':'application/json',
                'Content-type': 'application/json',
                "Authorization":"xxxxxxxx"
       },
       data= json.dumps( xdata )
)
if r.status_code==200:
       print(r.text)
print(r.status_code, r.reason)

Outra maneira é essa parte do código html, em um arquivo.

import requests
import json
in_file = open("index.html", "rb") # opening for [r]eading as [b]inary
htmlfile = in_file.read()
in_file.close()
unicode_html_string = htmlfile.decode('utf-8')
xdata ={
        "campana_id":"111",
        "email": True,
        "asunto": "Enviando HTML ",
        "remitente": "xxxx"xxx",
        "contacto":{
             "email":"xxx"xxxx",
             "nombre":"xxxx", 
             "apellido":"xxxxx"
        },
        "html":"{}".format( unicode_html_string )
}
r = requests.post("https://api-dmds-host/v1/envio/send_one_inline/",
       headers={
               'Accept':'application/json',
               'Content-type': 'application/json',
               "Authorization":"xxxxxx"
       },
       data= json.dumps( xdata )
)
if r.status_code==200:
      print(r.text)
print(r.status_code, r.reason)
Enviar um email para apenas um destinatário com html in-line

Enviar este tipo de mensagem, não insere a imagem de rastreamento (que permite saber se o usuário abriu / viu um e-mail), nem substituir os URLs para clicar em URLs dmds para rastreamento de cliques.

import requests
import json
in_file = open("index.html", "rb") # opening for [r]eading as [b]inary
htmlfile = in_file.read()
in_file.close()
unicode_html_string = htmlfile.decode('utf-8')
xdata ={
        "campana_id":"111",
        "email": True,
        "asunto": "Enviando HTML ",
        "remitente": "xxxx"xxx",
        "contacto":{
             "email":"xxx"xxxx",
             "nombre":"xxxx", 
             "apellido":"xxxxx"
        },
        "html":"{}".format( unicode_html_string )
}
r = requests.post("https://api-dmds-host/v1/envio/send_one_inline_raw/",
       headers={
               'Accept':'application/json',
               'Content-type': 'application/json',
               "Authorization":"xxxxxx"
       },
       data= json.dumps( xdata )
)
if r.status_code==200:
      print(r.text)
print(r.status_code, r.reason)
Enviar um email para apenas um destinatário com xtml raw

Enviar este tipo de mensagem não insere a imagem de rastreamento (que permite saber se o usuário abriu / viu um e-mail), nem substituir os URLs para clicar em URLs dmds para rastreamento de cliques.

import requests
import json
in_file = open("file.xml", "rb") # opening for [r]eading as [b]inary
xmlfile = in_file.read()
in_file.close()
unicode_xml_string = xmlfile.decode('utf-8')
xdata ={
        "campana_id":"111",
        "email": True,
        "asunto": "Enviando XML",
        "remitente": "xxxxxx@xxxx",
        "contacto":{
                  "email":"xxxx@xxx.com",
                  "nombre":"xxxx",
                  "apellido":"xxxxxx"
        },
        "xml": "{}".format( unicode_xml_string )
}
r = requests.post("https://api-dmds-host/v1/envio/send_one_inline_xml/",
       headers={
                'Accept':'application/json',
                'Content-type': 'application/json',
                "Authorization":"xxxxxxxxxxxxx"
       },
       data = json.dumps( xdata )
)
if r.status_code==200:
        print(r.text)
print(r.status_code, r.reason)
Envie um email para mais de um destinatário com html uri

Para esta chamada, seguiremos o mesmo conceito que para os outros ao enviar uma mensagem. Neste caso, queremos enviar muitos destinatários, para isso, vamos definir uma matriz de usuários que queremos enviar e alterar o contato por contatos. No exemplo mostrado abaixo, enviamos um email para duas pessoas, mas você pode definir muito mais pessoas.

import requests 
r = requests.post("https://api-dmds-host/v1/envio/send_many_uri/", 
       headers={'Accept':'application/json','Content-type': 'application/json',"Authorization":"xxxxxxxxxxx"}, 
       data ='{"campana_id":"","email":true,"contactos":[{"email":"usuario1@xxxxxx","nombre":"xxxxxx","apellido":"xxxxxx"},{"email":"usuari02@xxxxx","nombre":"xxxxxx","apellido":"xxxx"}], "html_url":"xxxxxxxxxxxxxxxxx"}') 
if r.status_code==200: 
       print(r.text) 
print(r.status_code, r.reason)
Enviar um email para mais de um destinatário com html in-line
import requests
r = requests.post("https://api-dmds-host/v1/envio/send_many_inline/",
       headers={'Accept':'application/json','Content-type': 'application/json',"Authorization":"xxxxxxx"},
       data ='{"campana_id":"xxxxxxxxxxxx","email":true,"contactos":[{"email":"usuario1@xxxxx","nombre":"xxxxx","apellido":"xxxxxx"},{"email":"usuario2@xxxxxx","nombre":"xxxx","apellido":"xxxxx"}], "html":"<html><head><title>Page Title</title></head><body><h1>This is a Heading</h1><p>This is a paragraph.</p></body></html>"}')
if r.status_code==200: 
       print(r.text) 
print(r.status_code, r.reason)
Listar as variáveis ​​globais e seus valores

Na API, são definidas uma série de variáveis ​​globais. Para ver quais são essas variáveis ​​e seus valores, podemos ver o código a seguir.

import requests
r = requests.get("https://api-dmds-host/v1/global/",
       headers={
               'Accept':'application/json',
               'Content-type': 'application/json',
               "Authorization":"xxxxxxxx"
       },
)
if r.status_code==200: 
         print(r.text) 
print(r.status_code, r.reason)
Criar variáveis ​​globais

Podemos sempre criar variáveis ​​globais. Para a criação, usaremos o método post, onde passamos uma variável, que indicará o nome da variável global.

import requests
xdata ={
        "nombre": "xxxxxx",
        "valor": "xxxxxx"
}
r = requests.get("https://api-dmds-host/v1/global/",
      headers={
               'Accept':'application/json',
               'Content-type': 'application/json',
               "Authorization":"xxxxxxx"
      },
)
if r.status_code==200: 
        print(r.text) 
print(r.status_code, r.reason)
Limpar variáveis ​​globais

Da mesma forma que criamos variáveis ​​globais, podemos eliminá-las. Apenas neste vamos usar um método chamado ‘Delete’.

import requests
r = requests.delete("https://api-dmds-host/v1/global/",
       headers={'Accept':'application/json','Content-type': 'application/json',"Authorization":"xxxxxxxx"},
       data='{"nombre": "newglobal2", "valor": "xxxx"}') 
if r.status_code==200: 
       print(r.text) 
print(r.status_code, r.reason)
Listar as campanhas

Com a mesma estrutura, como listar contatos inválidos ou listar variáveis ​​globais, podemos listar todas as campanhas existentes. Para isso, o método get é usado.

import requests
r = requests.get("https://api-dmds-host/v1/campania/",
       headers={
               'Accept':'application/json',
               'Content-type': 'application/json',
               "Authorization":"BqSVfREsuYwWGLxE"
       },
)
if r.status_code==200: 
        print(r.text) 
print(r.status_code, r.reason)
Criar um grupo

Como vimos anteriormente, quando criamos ou modificamos um usuário, podemos atribuir um grupo a ele. Para poder atribuir um grupo, devemos ver se esse grupo existe, se ele não existe, podemos criá-lo da seguinte maneira.

import requests
r = requests.post("https://api-dmds-host/v1/grupo/",
headers={'Accept':'application/json','Content-type': 'application/json',"Authorization":"xxxxxxxxxxxxx"},
data='{"nombre":"xxxxx"}')
if r.status_code==200: 
        print(r.text) 
print(r.status_code, r.reason)
– Listar os filtros

No sistema da API, você pode criar filtros diferentes, que ajudam a especificar as remessas.

Para ver esta lista de filtros existentes, seguimos o código mencionado abaixo.

import requests
r = requests.get("https://api-dmds-host/v1/filtros/",
       headers={
                'Accept':'application/json',
                'Content-type': 'application/json',
                "Authorization":"BqSVfREsuYwWGLxE"
       },
)
if r.status_code==200: 
         print(r.text) 
print(r.status_code, r.reason)