Referência da API DUO¶
O DUO é uma plataforma de email e SMS marketing. Este documento cobre a API REST.
Funcionamento Geral¶
O DUO foi concebido de forma a que a aplicação web funcione como cliente da API REST. Os URLs da aplicação web são entrypoints da API que respondem com interfaces humano-máquina quando confrontados com uma preferência text/html, ou JSON analisável por máquina quando o cabeçalho Accept solicita application/json.
Autenticação¶
A autenticação requer um par (username, password). Cada conta de utilizador tem um username e qualquer número de passwords. Uma password é a password da conta; as restantes pertencem a objetos API Key, que podem ser gerados na aplicação.
- Utilize a password da conta para interação humana com o DUO.
- Utilize API Keys para integração máquina-a-máquina — podem ser revogadas a qualquer momento.
Dois mecanismos de autenticação¶
HTTP Auth Básica — Envie o par (username, password) conforme definido no
RFC 7617 em cada pedido.
Nota
A Auth Básica envia as credenciais em texto simples no canal HTTP, mas toda a comunicação é encriptada por SSL (HTTPS), pelo que não existe risco de segurança desde que as credenciais não sejam incluídas no URL do pedido.
Autenticação baseada em sessão — O mecanismo utilizado pela aplicação web. Submeta um POST
para /login/, receba um token de sessão e envie-o como cookie com o nome sergiosgc_auth em
cada pedido. Termine com um POST para /logout/.
Encapsulamento de Verbos HTTP¶
Nem todas as rotas aceitam os verbos HTTP PUT/DELETE nativos. Quando um verbo nativo
devolve Requested URL not found … for HTTP verb PUT, enviar um POST para o mesmo URL com
um campo adicional x-verb (form-encoded) com o verbo pretendido — p. ex. x-verb=PUT. É o
mecanismo que a própria aplicação web usa.
Envelope de Resposta¶
Cada resposta JSON é um dicionário com duas chaves:
| Chave | Tipo | Descrição |
|---|---|---|
success |
boolean | true se a operação foi bem-sucedida |
data |
object | Dados de resposta reais, dependentes do endpoint |
HTTP 200 é devolvido quando o código da aplicação é executado corretamente. Se a operação falhar por motivos ao nível da aplicação, a resposta JSON apresentará success: false.
Quando success é false, data conterá um dicionário com pelo menos uma chave "error" contendo uma descrição textual do erro.