Ir a la documentación
API

Conexiones de DNS

Las cuentas de proveedores de DNS conectadas al espacio de trabajo, a través de las que OpenEmail escribe por sí mismo los registros de un dominio. Una cuenta se conecta en la app, porque el proveedor pide a la persona que inicie sesión.

GET/dns-connections

Ejecuta cualquiera de las 3 llamadas en tu espacio de trabajo.

GET /dns-connections

Las cuentas de proveedores de DNS conectadas al espacio de trabajo, a través de las que OpenEmail escribe por sí mismo los registros de un dominio. Una cuenta se conecta en la app, porque el proveedor pide a la persona que inicie sesión.

Listar las conexiones

Requiere domains:read. Todas las conexiones, incluidas las desconectadas, con los dominios que sirve cada una. configured es false cuando este servidor no puede conectar ningún proveedor.

curl
curl "$OE/dns-connections" -H "$AUTH"
Respuesta
{  "object": "list",  "configured": true,  "data": [    {      "object": "dns_connection",      "id": "dnsl_3f9a1c2e7b4d4e6f8a0b2c3d",      "provider": "cloudflare",      "subject": "[email protected]",      "accounts": [{ "id": "4f1c2b3a5d6e7f8091a2b3c4d5e6f708", "name": "Acme" }],      "status": "active",      "lastVerifiedAt": "2026-09-30T08:00:00.000Z",      "lastError": null,      "createdAt": "2026-09-01T10:12:00.000Z",      "domains": [        {          "domainId": "b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f",          "domain": "acme.com",          "zoneId": "023e105f4ecef8ad9ca31a8372d0c353",          "zoneName": "acme.com",          "state": "ready",          "records": 7,          "keepsMail": true,          "busy": false        }      ],      "records": 7,      "removable": false    }  ]}

status es active mientras OpenEmail puede escribir a través de la conexión, needs-reauth cuando el proveedor quiere que la cuenta se vuelva a conectar en la app, revoked una vez que se desconectó y error cuando falló la última llamada.

Leer una conexión

Requiere domains:read. GET /dns-connections/{id} añade lo que dejaría atrás desconectarla: busy nombra los dominios en los que hay una sincronización en marcha, y keepsMail los dominios verificados que dejan de recibir correo cuando se retiran sus registros.

curl
curl "$OE/dns-connections/dnsl_3f9a1c2e7b4d4e6f8a0b2c3d" -H "$AUTH"
Respuesta
{  "object": "dns_connection",  "id": "dnsl_3f9a1c2e7b4d4e6f8a0b2c3d",  "provider": "cloudflare",  "subject": "[email protected]",  "accounts": [{ "id": "4f1c2b3a5d6e7f8091a2b3c4d5e6f708", "name": "Acme" }],  "status": "active",  "lastVerifiedAt": "2026-09-30T08:00:00.000Z",  "lastError": null,  "createdAt": "2026-09-01T10:12:00.000Z",  "domains": [    {      "domainId": "b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f",      "domain": "acme.com",      "zoneId": "023e105f4ecef8ad9ca31a8372d0c353",      "zoneName": "acme.com",      "state": "ready",      "records": 7,      "keepsMail": true,      "busy": false    }  ],  "records": 7,  "removable": false,  "busy": [],  "keepsMail": ["acme.com"]}

Desconectar una conexión

Requiere domains:write. DELETE /dns-connections/{id} retira los registros escritos a través de la conexión, desvincula cada dominio que sirve y la revoca en el proveedor. Un dominio verificado cuyos registros se retiran deja de recibir correo, así que lee primero la conexión.

curl
curl -X DELETE "$OE/dns-connections/dnsl_3f9a1c2e7b4d4e6f8a0b2c3d" -H "$AUTH"
Respuesta
{  "object": "dns_connection",  "id": "dnsl_3f9a1c2e7b4d4e6f8a0b2c3d",  "provider": "cloudflare",  "subject": "[email protected]",  "accounts": [{ "id": "4f1c2b3a5d6e7f8091a2b3c4d5e6f708", "name": "Acme" }],  "status": "revoked",  "lastVerifiedAt": "2026-09-30T08:00:00.000Z",  "lastError": null,  "createdAt": "2026-09-01T10:12:00.000Z",  "removed": false,  "confirmed": true,  "detached": { "domains": 1, "detached": 1, "removed": 7, "rewritten": 0, "pending": 0, "left": [] }}

Eliminar una conexión que ya está desconectada la quita de la lista, una vez que no le queda ningún dominio ni ningún registro, y removed es true. Si aún le queda algo, la llamada da 409 dns_connection_in_use.

Si hay una sincronización en marcha en uno de sus dominios, la llamada se rechaza con 409 dns_busy y no se revoca nada.

Una clave o una app limitada a direcciones o dominios concretos se rechaza con 422 capability_unsupported, y una app que actúa por un miembro también necesita workspace:manage en el rol de ese miembro.

Un token de acceso OAuth necesita un código de verificación para esta llamada. Hasta que la app haya verificado uno en los últimos 60 minutos, la llamada responde 403 step_up_required y no cambia nada. A una clave de API nunca se le pide. La página Autenticación muestra cómo pedir un código y verificarlo.

Referencia