दस्तावेज़ पर जाएँ
API

किसी डोमेन का DNS सेट करें

OpenEmail किसी डोमेन के रिकॉर्ड ख़ुद लिखता है या नहीं, किस जुड़े ज़ोन के ज़रिए, और हर तरह का रिकॉर्ड किस स्थिति में है।

GET/domains/{id}/dns

3 कॉल में से कोई भी आपके वर्कस्पेस पर चलाता है।

GET /domains/{id}/dns

OpenEmail किसी डोमेन के रिकॉर्ड ख़ुद लिखता है या नहीं, किस जुड़े ज़ोन के ज़रिए, और हर तरह का रिकॉर्ड किस स्थिति में है।

सेटअप पढ़ें

domains:read चाहिए। जब तक OpenEmail रिकॉर्ड ख़ुद लिखता है, managing true होता है। zone बताता है कि कौन-सा जुड़ा ज़ोन डोमेन के लिए जवाब देता है: एक ज़ोन हो तो resolved, कई हों तो ambiguous और उनमें से चुनना होता है, कोई ज़ोन उसे न रखता हो तो none, या कनेक्शनों से पूछा न जा सका हो तो unusable। प्रदाताओं से फिर से पूछने के लिए ?refresh=true जोड़ें।

curl
curl "$OE/domains/b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f/dns" -H "$AUTH"
प्रतिक्रिया
{  "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 ने लिखे और हटा नहीं सका, ताकि आप उन्हें प्रदाता पर हाथ से मिटा सकें।

ज़ोन चुनें

domains:write चाहिए। { connectionId, zoneId } के साथ PUT /domains/{id}/dns डोमेन को किसी ज़ोन से जोड़ता है, जब कई ज़ोन उसके लिए जवाब दे सकते हों। ज़ोन को डोमेन को कवर करना चाहिए, सक्रिय होना चाहिए और एक परीक्षण रिकॉर्ड लेना चाहिए। अभी कुछ नहीं लिखा जाता।

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" }'
प्रतिक्रिया
{  "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": []  }}

जो ज़ोन डोमेन को कवर नहीं करता वह zoneId पर 422 invalid_parameter है। किसी दूसरे ज़ोन के ज़रिए सेट डोमेन 409 dns_zone_conflict है, और जो ज़ोन सक्रिय नहीं है या परीक्षण रिकॉर्ड मना कर देता है वह 409 dns_zone_unusable है।

OAuth एक्सेस टोकन को इस कॉल के लिए सत्यापन कोड चाहिए। जब तक ऐप पिछले 60 मिनट में कोई कोड सत्यापित न कर ले, कॉल 403 step_up_required लौटाती है और कुछ नहीं बदलती। API कुंजी से कभी नहीं पूछा जाता। प्रमाणीकरण पेज बताता है कि कोड कैसे माँगें और सत्यापित करें।

रिकॉर्ड लिखें

domains:write चाहिए। POST /domains/{id}/dns/sync डोमेन के लिए ज़रूरी हर रिकॉर्ड लिखता या ठीक करता है, जैसे ऐप में Sync करता है, और जब केवल एक ज़ोन जवाब देता है तो पहले उस ज़ोन को जोड़ता है। केवल एक तरह का रिकॉर्ड लिखने के लिए { "purpose": "dmarc" } भेजें।

curl
curl -X POST "$OE/domains/b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f/dns/sync" -H "$AUTH"
प्रतिक्रिया
{  "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, "…": "…" }}

जब कोई अकेला ज़ोन जवाब नहीं देता, तो कुछ नहीं लिखा जाता: outcome refused होता है, message कारण बताता है, और zone उन ज़ोन की सूची देता है जिनमें से चुनना है।

डोमेन पर पहले से चल रहा सिंक 409 dns_busy है, और अनुरोध मना करने वाला प्रदाता 502 dns_provider_error है। अपने रिकॉर्ड का इंतज़ार कर रहा डोमेन उनके अपनी जगह पर आते ही सत्यापित हो जाता है।

OAuth एक्सेस टोकन को इस कॉल के लिए सत्यापन कोड चाहिए। जब तक ऐप पिछले 60 मिनट में कोई कोड सत्यापित न कर ले, कॉल 403 step_up_required लौटाती है और कुछ नहीं बदलती। API कुंजी से कभी नहीं पूछा जाता। प्रमाणीकरण पेज बताता है कि कोड कैसे माँगें और सत्यापित करें।

संदर्भ