문서로 건너뛰기
API

DNS 연결

워크스페이스에 연결된 DNS 제공업체 계정으로, OpenEmail은 이를 통해 도메인의 레코드를 직접 작성합니다. 제공업체가 본인에게 로그인을 요구하므로 계정 연결은 앱에서 합니다.

GET/dns-connections

3개 호출을 워크스페이스에 실제로 실행합니다.

GET /dns-connections

워크스페이스에 연결된 DNS 제공업체 계정으로, OpenEmail은 이를 통해 도메인의 레코드를 직접 작성합니다. 제공업체가 본인에게 로그인을 요구하므로 계정 연결은 앱에서 합니다.

연결 목록 조회

domains:read가 필요합니다. 연결이 해제된 것을 포함한 모든 연결을, 각 연결이 맡은 도메인과 함께 반환합니다. 이 서버가 제공업체를 전혀 연결할 수 없으면 configured는 false입니다.

curl
curl "$OE/dns-connections" -H "$AUTH"
응답
{  "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는 OpenEmail이 그 연결을 통해 쓸 수 있는 동안은 active, 제공업체가 앱에서 계정을 다시 연결하기를 원하면 needs-reauth, 연결이 해제된 뒤에는 revoked, 마지막 호출이 실패했으면 error입니다.

연결 하나 조회

domains:read가 필요합니다. GET /dns-connections/{id}는 연결을 해제했을 때의 영향을 덧붙입니다. busy는 동기화가 실행 중인 도메인을, keepsMail은 레코드가 내려가면 메일 수신이 멈추는 검증된 도메인을 알려 줍니다.

curl
curl "$OE/dns-connections/dnsl_3f9a1c2e7b4d4e6f8a0b2c3d" -H "$AUTH"
응답
{  "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"]}

연결 해제

domains:write가 필요합니다. DELETE /dns-connections/{id}는 연결을 통해 작성된 레코드를 내리고, 연결이 맡은 모든 도메인을 분리하며, 제공업체에서 연결을 폐기합니다. 레코드가 내려간 검증된 도메인은 메일 수신이 멈추므로, 먼저 연결을 조회하세요.

curl
curl -X DELETE "$OE/dns-connections/dnsl_3f9a1c2e7b4d4e6f8a0b2c3d" -H "$AUTH"
응답
{  "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": [] }}

이미 연결이 해제된 연결을 삭제하면, 남은 도메인도 레코드도 없을 때 목록에서 사라지고 removed가 true가 됩니다. 아직 무언가 남아 있으면 호출은 409 dns_connection_in_use입니다.

그 연결의 도메인 중 하나에서 동기화가 실행 중이면 409 dns_busy로 거부되고, 아무것도 폐기되지 않습니다.

특정 주소나 도메인으로 제한된 키나 앱은 422 capability_unsupported로 거부되며, 멤버를 대신하는 앱은 그 멤버의 역할에 workspace:manage도 있어야 합니다.

OAuth 액세스 토큰으로 이 호출을 하려면 인증 코드가 필요합니다. 앱이 최근 60분 안에 코드를 인증하기 전까지 호출은 403 step_up_required로 응답하고 아무것도 바꾸지 않습니다. API 키는 요구받지 않습니다. 코드를 요청하고 인증하는 방법은 인증 페이지에 있습니다.

레퍼런스