API
Tudo que o painel faz com domínios e registros DNS, em JSON. Autentique com um token da sua conta e automatize a criação de registros, a consulta dos servidores e a importação de zonas.
Autenticação
Envie o token no cabeçalho Authorization. Todas as respostas são JSON; erros vêm como {"error": "mensagem"} com status 400 (dados inválidos), 401 (token inválido) ou 404 (não encontrado).
curl https://eurochocopie.com/api/v1/account \
-H "Authorization: Bearer ecp_SEU_TOKEN"
Base: https://eurochocopie.com/api/v1. Os limites da conta valem também pela API: 20 domínios, 200 registros por domínio.
Endpoints
/accountSua conta, seus servidores (IP atual, usuário SSH, vencimento) e a lista de domínios.
/serversSó os servidores. Cada um traz id, label (apelido ou plano + IP), nickname, plano, IP atual e vencimento.
/servers/{id}Dá um apelido ao servidor. Corpo: {"nickname": "loja"} (vazio remove). Útil quando a conta tem mais de um servidor.
/domainsTodos os domínios com nameservers, registros "meu servidor" e demais registros.
/domainsAdiciona um domínio. Corpo: {"name": "exemplo.com"}. Devolve o domínio; os nameservers chegam em instantes.
/domains/{id}Um domínio com todos os registros e o status de cada um.
/domains/{id}Remove o domínio e a zona DNS.
/domains/{id}/server-recordsCria um nome que segue o IP do seu servidor. Corpo: {"name": "www"} (use @ para a raiz). Com mais de um servidor na conta, informe qual: {"name": "www", "server": "id do servidor"}; repetir o POST com outro server move o nome. Cada registro devolve server_id e server_label.
/domains/{id}/server-records/{record_id}Remove um nome "meu servidor".
/domains/{id}/recordsCria um registro. Corpo: {"type": "MX", "name": "@", "content": "mx1.zoho.com", "priority": 10, "ttl": 1}. Tipos: MX, TXT, CNAME, CAA, A, AAAA. TTL 1 = automático, ou de 60 a 86400 segundos.
/domains/{id}/records/importImporta várias linhas de uma vez (formato BIND ou TIPO nome conteúdo). Corpo: {"text": "...", "dry_run": true}. Com dry_run só valida e devolve o que seria criado.
/domains/{id}/records/{record_id}Remove um registro.
/cdnSituação da CDN Brasil na conta: status, franquia, consumo do período e nomes ligados.
/cdn/ordersCria o pedido de contratação ou renovação da CDN Brasil. Devolve o pedido com o link de pagamento.
/domains/{id}/server-records/{record_id}/cdnLiga a CDN nesse nome. Corpo opcional: {"origin": "https"} ou "http". Devolve o domínio; o campo cdn_state do registro passa por cdn_issuing até cdn_active.
/domains/{id}/server-records/{record_id}/cdnDesliga a CDN nesse nome; o DNS volta a seguir o servidor.
/domains/{id}/server-records/{record_id}/cdn/purgeLimpa o cache desse nome em todos os pontos de presença (até 10 vezes por hora).
Exemplos
Apontar www para o servidor e configurar e-mail
TOKEN=ecp_SEU_TOKEN
BASE=https://eurochocopie.com/api/v1
DOMINIO=$(curl -s $BASE/domains -H "Authorization: Bearer $TOKEN" | jq -r '.domains[] | select(.name=="exemplo.com") | .id')
curl -s -X POST $BASE/domains/$DOMINIO/server-records \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"name": "www"}'
curl -s -X POST $BASE/domains/$DOMINIO/records \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"type": "MX", "name": "@", "content": "mx1.zoho.com", "priority": 10}'
Importar uma zona inteira
curl -s -X POST $BASE/domains/$DOMINIO/records/import \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d @- <<'FIM'
{"dry_run": false, "text": "@ IN MX 10 mx1.zoho.com.\n@ IN TXT \"v=spf1 include:zoho.com ~all\"\n_dmarc IN TXT \"v=DMARC1; p=none\""}
FIM
Acompanhar o status de um registro
Registros nascem como pending_create e passam a active quando a Cloudflare confirma, normalmente em poucos segundos. Se a Cloudflare recusar, o status vira error e o campo error explica o motivo.
curl -s $BASE/domains/$DOMINIO -H "Authorization: Bearer $TOKEN" | jq '.records[] | {type, name, status, error}'