Belgelere geç
API

Bir alan adının DNS'ini kurma

OpenEmail'in bir alan adının kayıtlarını kendisinin yazıp yazmadığı, hangi bağlı bölge üzerinden yazdığı ve her kayıt türünün ne durumda olduğu.

GET/domains/{id}/dns

3 çağrıdan herhangi birini çalışma alanınızda çalıştırır.

GET /domains/{id}/dns

OpenEmail'in bir alan adının kayıtlarını kendisinin yazıp yazmadığı, hangi bağlı bölge üzerinden yazdığı ve her kayıt türünün ne durumda olduğu.

Kurulumu okuma

domains:read gerektirir. OpenEmail kayıtları kendisi yazdığı sürece managing true olur. zone, alan adı için hangi bağlı bölgenin yanıt verdiğini söyler: tek bir bölge yanıt veriyorsa resolved, birkaç bölge yanıt veriyorsa ambiguous olur ve aralarından seçim gerekir; hiçbir bölge onu tutmuyorsa none, bağlantılara sorulamadıysa unusable olur. Sağlayıcılara yeniden sormak için ?refresh=true ekleyin.

curl
curl "$OE/domains/b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f/dns" -H "$AUTH"
Yanıt
{  "object": "domain_dns",  "domainId": "b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f",  "domain": "acme.com",  "managing": true,  "connectionId": "dnsl_3f9a1c2e7b4d4e6f8a0b2c3d",  "connection": {    "id": "dnsl_3f9a1c2e7b4d4e6f8a0b2c3d",    "status": "active",    "subject": "[email protected]",    "accounts": [{ "id": "4f1c2b3a5d6e7f8091a2b3c4d5e6f708", "name": "Acme" }]  },  "zoneId": "023e105f4ecef8ad9ca31a8372d0c353",  "zoneName": "acme.com",  "zoneHolder": "Acme",  "state": "ready",  "steps": [    { "purpose": "mx", "ok": true, "detail": "MX records are in place.", "visibility": "public", "records": [] }  ],  "leftovers": [],  "probe": null,  "error": null,  "syncedAt": "2026-09-30T08:01:12.000Z",  "zone": {    "kind": "resolved",    "checkedAt": "2026-10-01T09:00:00.000Z",    "cached": true,    "candidate": {      "connectionId": "dnsl_3f9a1c2e7b4d4e6f8a0b2c3d",      "subject": "[email protected]",      "status": "active",      "accounts": [{ "id": "4f1c2b3a5d6e7f8091a2b3c4d5e6f708", "name": "Acme" }],      "account": { "id": "4f1c2b3a5d6e7f8091a2b3c4d5e6f708", "name": "Acme" },      "zone": {        "id": "023e105f4ecef8ad9ca31a8372d0c353",        "name": "acme.com",        "accountId": "4f1c2b3a5d6e7f8091a2b3c4d5e6f708",        "active": true,        "status": "active",        "type": "full",        "nameServers": ["ana.ns.cloudflare.com", "bob.ns.cloudflare.com"],        "covers": true      }    },    "candidates": [],    "reason": null,    "connected": null,    "host": null,    "blocked": []  }}

leftovers, OpenEmail'in yazdığı ama kaldıramadığı kayıtları listeler; bunları sağlayıcıda elle silmeniz gerekir.

Bölgeyi seçme

domains:write gerektirir. { connectionId, zoneId } ile PUT /domains/{id}/dns, birkaç bölge yanıt verebildiğinde alan adını bir bölgeye bağlar. Bölgenin alan adını kapsaması, etkin olması ve bir test kaydını kabul etmesi gerekir. Henüz hiçbir şey yazılmaz.

curl
curl -X PUT "$OE/domains/b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f/dns" -H "$AUTH" \  -H "Content-Type: application/json" \  -d '{ "connectionId": "dnsl_3f9a1c2e7b4d4e6f8a0b2c3d", "zoneId": "023e105f4ecef8ad9ca31a8372d0c353" }'
Yanıt
{  "object": "domain_dns",  "domainId": "b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f",  "domain": "acme.com",  "managing": true,  "connectionId": "dnsl_3f9a1c2e7b4d4e6f8a0b2c3d",  "connection": {    "id": "dnsl_3f9a1c2e7b4d4e6f8a0b2c3d",    "status": "active",    "subject": "[email protected]",    "accounts": [{ "id": "4f1c2b3a5d6e7f8091a2b3c4d5e6f708", "name": "Acme" }]  },  "zoneId": "023e105f4ecef8ad9ca31a8372d0c353",  "zoneName": "acme.com",  "zoneHolder": "Acme",  "state": "awaiting-sync",  "steps": [    { "purpose": "mx", "ok": true, "detail": "MX records are in place.", "visibility": "public", "records": [] }  ],  "leftovers": [],  "probe": null,  "error": null,  "syncedAt": "2026-09-30T08:01:12.000Z",  "zone": {    "kind": "resolved",    "checkedAt": "2026-10-01T09:00:00.000Z",    "cached": true,    "candidate": {      "connectionId": "dnsl_3f9a1c2e7b4d4e6f8a0b2c3d",      "subject": "[email protected]",      "status": "active",      "accounts": [{ "id": "4f1c2b3a5d6e7f8091a2b3c4d5e6f708", "name": "Acme" }],      "account": { "id": "4f1c2b3a5d6e7f8091a2b3c4d5e6f708", "name": "Acme" },      "zone": {        "id": "023e105f4ecef8ad9ca31a8372d0c353",        "name": "acme.com",        "accountId": "4f1c2b3a5d6e7f8091a2b3c4d5e6f708",        "active": true,        "status": "active",        "type": "full",        "nameServers": ["ana.ns.cloudflare.com", "bob.ns.cloudflare.com"],        "covers": true      }    },    "candidates": [],    "reason": null,    "connected": null,    "host": null,    "blocked": []  }}

Alan adını kapsamayan bir bölge zoneId üzerinde 422 invalid_parameter olur. Başka bir bölge üzerinden kurulmuş bir alan adı 409 dns_zone_conflict, etkin olmayan ya da test kaydını reddeden bir bölge ise 409 dns_zone_unusable olur.

Bir OAuth erişim tokenı bu çağrı için bir doğrulama kodu gerektirir. Uygulama son 60 dakika içinde bir kod doğrulayana kadar çağrı 403 step_up_required yanıtını verir ve hiçbir şeyi değiştirmez. Bir API anahtarından asla istenmez. Kimlik doğrulama sayfası bir kodun nasıl isteneceğini ve doğrulanacağını gösterir.

Kayıtları yazma

domains:write gerektirir. POST /domains/{id}/dns/sync, uygulamadaki Eşitle'nin yaptığı gibi alan adının ihtiyaç duyduğu her kaydı yazar ya da onarır ve yalnızca bir bölge yanıt verdiğinde önce o bölgeyi bağlar. Yalnızca tek bir kayıt türünü yazmak için { "purpose": "dmarc" } gönderin.

curl
curl -X POST "$OE/domains/b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f/dns/sync" -H "$AUTH"
Yanıt
{  "object": "domain_dns_sync",  "outcome": "synced",  "message": null,  "attached": false,  "provision": {    "outcome": "applied",    "state": "ready",    "connectionId": "dnsl_3f9a1c2e7b4d4e6f8a0b2c3d",    "zoneId": "023e105f4ecef8ad9ca31a8372d0c353",    "proven": true,    "ownership": "The ownership record is in place.",    "written": [{ "purpose": "dmarc", "name": "_dmarc.acme.com", "type": "TXT", "mode": "created" }],    "adopted": 6,    "conflicts": [],    "failures": [],    "steps": [],    "retired": [],    "leftovers": [],    "probe": null,    "error": null  },  "dns": { "object": "domain_dns", "domain": "acme.com", "managing": true, "state": "ready", "…": "…" },  "zone": { "kind": "resolved", "cached": false, "…": "…" }}

Tek bir bölge yanıt vermediğinde hiçbir şey yazılmaz: outcome refused olur, message nedenini söyler ve zone aralarından seçim yapılacak bölgeleri listeler.

Alan adında zaten çalışan bir eşitleme 409 dns_busy, isteği reddeden bir sağlayıcı ise 502 dns_provider_error olur. Kayıtlarını bekleyen bir alan adı, kayıtlar yerine oturduğunda doğrulanır.

Bir OAuth erişim tokenı bu çağrı için bir doğrulama kodu gerektirir. Uygulama son 60 dakika içinde bir kod doğrulayana kadar çağrı 403 step_up_required yanıtını verir ve hiçbir şeyi değiştirmez. Bir API anahtarından asla istenmez. Kimlik doğrulama sayfası bir kodun nasıl isteneceğini ve doğrulanacağını gösterir.

Referans