डोमेन
`domains.list`, `list_all`, `iterate`, `get` और `update`।
हर मेथड
from openemail import openemail domains = openemail.domains.list()domain = openemail.domains.get('b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f') print(domain['receiving']['verified'], domain['sending']['status'])for address in domain['addresses']: print(address['address'], address['enabled']) updated = openemail.domains.update(domain['id'], {'trackingHost': 'links.acme.com'})tracking = updated['tracking']print(tracking['status']) if tracking['record'] is not None: print(tracking['record']['name'], tracking['record']['value']) openemail.domains.update(domain['id'], {'trackingHost': None})प्राप्त करना और भेजना दो स्वतंत्र तथ्य हैं और दो ऑब्जेक्ट के रूप में लौटाए जाते हैं। receiving.verified का अर्थ है कि domain का MX उसकी मेल यहाँ लाता है और उसकी स्वामित्व चुनौती प्रकाशित है। sending बाहर जाने वाली signing जाँच बताता है: status verified, pending, failed, no_identity या unknown होता है, और canSend बताता है कि इस domain से भेजना अभी स्वीकार होगा या नहीं। एक दिन से पुराना नकारात्मक निर्णय इनकार नहीं, अज्ञात माना जाता है, इसलिए status के बजाय canSend पर शाखा बनाएँ।
update डोमेन का custom tracking domain, यानी links.acme.com जैसा कोई subdomain, सेट करता है, दोबारा जाँचता है या हटाता है, और वही DomainDetailResource लौटाता है जो get लौटाता है। tracking हर पढ़ाई पर इसकी जानकारी देता है। जब तक कोई जाँच पास नहीं होती, tracking.status pending रहता है और ट्रैक किए गए लिंक तथा open pixel डिफ़ॉल्ट OpenEmail होस्ट का ही उपयोग करते रहते हैं। एक बार जाँच पास हो जाने पर यह active हो जाता है और डोमेन से जाने वाली नई मेल दोनों के लिए tracking domain का उपयोग करती है।
get domain के पतों की सूची भी देता है। addresses.list() उससे जुड़ी कॉल है: हर वह पता जिसे यह कुंजी From header में रख सकती है, जो इससे संकरा दायरा है।
app_host अपने आप में एक अलग namespace है। get, set, verify और delete वर्कस्पेस के वेब ऐप का पता पढ़ते और बदलते हैं, यानी mailbox.acme.com जैसा सबडोमेन, जो इन्हीं में से किसी डोमेन पर या वर्कस्पेस के नियंत्रण वाले किसी भी दूसरे डोमेन पर हो, जहाँ उसके लोग वर्कस्पेस के ब्रांड के साथ साइन इन करते हैं। set प्रकाशित करने वाले DNS रिकॉर्ड लौटाता है, और delete OAuth ऐप से सत्यापन कोड माँगता है, वैसे ही जैसे वह set माँगता है जो वर्कस्पेस के पहले से मौजूद होस्ट को बदलता है।
branding वह ब्रांड सेट करता है। get मार्क, लोगो, डार्क मोड के लोगो और साइन-इन फ़ोटो के लिंक, दोनों फ़ॉन्ट और साइन-इन बैकग्राउंड पढ़ता है। update फ़ॉन्ट और बैकग्राउंड बदलता है, upload_image(variant, data, content_type=...) चारों में से एक छवि अपलोड करता है, और remove_image(variant) एक हटाता है। लोगो ही वेब ऐप के पते पर और, पेड प्लान पर, वर्कस्पेस के लिए भेजे गए ईमेल पर ब्रांड लगाता है।
पैरामीटर: domains.get
idstrआवश्यक- `domains.list` से मिली id: domain जोड़े जाने पर बनी एक UUID, होस्टनाम नहीं, इसलिए `get('example.com')` को कुछ नहीं मिलेगा। खोज id के साथ-साथ कुंजी के अपने connection तक सीमित है, इसलिए किसी दूसरे workspace का domain 403 नहीं, 404 होता है।
पैरामीटर: domains.update
idstrआवश्यक- वही domain id जो `get` लेता है। इसके लिए ज़रूरी scope `domains:write` है।
patch['trackingHost']str | None- domain का कोई subdomain, अधिकतम 512 वर्ण, जैसे `links.acme.com`। इसे trim करके छोटे अक्षरों में बदला जाता है, और आगे लगा `https://` या `http://`, कोई path और अंत का बिंदु हटा दिए जाते हैं। नया मान उसी कॉल में जाँचा, सहेजा और परखा जाता है। जो मान domain के पास पहले से है उस पर जाँच दोबारा चलती है, बशर्ते पिछली जाँच को 30 सेकंड से कम न हुआ हो। `None` या खाली स्ट्रिंग tracking domain हटा देती है।
अस्वीकृत होस्ट param में trackingHost का नाम लेती हुई एक OpenEmailApiError raise करता है: ऐसे नाम के लिए जो इस्तेमाल नहीं हो सकता, जैसे डोमेन के बाहर का कोई नाम, 422 invalid_tracking_host; नए होस्ट के लिए तब 409 domain_not_verified जब receiving.verified false है और डोमेन का _openemail-challenge TXT रिकॉर्ड अभी प्रकाशित नहीं हुआ; और ऐसे नाम के लिए 409 tracking_host_in_use जिसे कोई दूसरा डोमेन पहले से इस्तेमाल कर रहा है, या जब tracking domain किसी दूसरे OpenEmail सर्वर द्वारा प्रबंधित हो। कुछ ख़ास पतों तक सीमित कुंजी को 422 capability_unsupported मिलता है, क्योंकि tracking domain डोमेन के हर पते पर लागू होता है।
प्रतिक्रिया: DomainDetailResource
objectLiteral['domain']- हमेशा स्ट्रिंग `domain`, `list` की पंक्तियों पर भी और इस पर भी।
idstr- domain की UUID। पंक्ति के पूरे जीवन के लिए स्थिर, और यही वह एकमात्र handle है जिसे बाक़ी domain कॉल स्वीकार करती हैं।
domainstr- सादा होस्टनाम, छोटे अक्षरों में: `example.com`। पूरे उत्पाद में अद्वितीय, हर domain का एक ही मालिक, इसलिए दो workspaces एक ही domain पर दावा नहीं कर सकते।
receiving.verifiedbool- तब true जब DNS ने दिखा दिया कि domain का MX ऐसे होस्ट का नाम ले रहा है जो उसकी मेल यहाँ लाता है, और जहाँ पंक्ति में चुनौती टोकन है वहाँ उससे मेल खाता `_openemail-challenge` TXT रिकॉर्ड भी मिल गया। अकेला MX कुछ भी साबित नहीं करता, क्योंकि जिन सब domains के लिए हम मेल लेते हैं वे सभी वही होस्टनाम प्रकाशित करते हैं। इसीलिए टोकन है, और इसीलिए यही ध्वज वह द्वार है जिसे inbound डिलीवरी मेल स्वीकार करने से पहले जाँचती है।
receiving.verifiedAtstr | None- सत्यापन कब पास हुआ, ISO-8601 में। जब तक नहीं हुआ तब तक null, और `verified` ठीक इसी column से निकाला जाता है, इसलिए दोनों कभी असहमत नहीं हो सकते।
receiving.catchAllbool- कोई भी local-part स्वीकार किया जाए या नहीं। जब से यह नियम बना है तब से जोड़े गए domains पर यह डिफ़ॉल्ट रूप से चालू है; इसके बंद होने पर केवल domain पर नामित पते ही स्वीकार होते हैं और बाक़ी SMTP के समय ही अस्वीकार कर दिए जाते हैं, जिससे भेजने वाले को चुप्पी के बजाय bounce मिलता है।
receiving.lastCheckedAtstr | None- इस domain के बारे में DNS से आख़िरी बार कब पूछा गया। null का अर्थ है कभी देखा ही नहीं, जो एक मिनट पहले domain जोड़ने वाले के लिए जाँच की विफलता से बहुत अलग बात है। यह endpoint संग्रहित परिणाम बताता है, अपनी ओर से कभी कोई जाँच नहीं चलाता।
receiving.errorstr | None- आख़िरी जाँच क्यों पास नहीं हुई, ऐसे शब्दों में जिन पर मालिक कार्रवाई कर सके: `No MX records yet. DNS changes can take a few minutes to spread.` एक आम उदाहरण है। पास हो जाने पर null, और यह निकाला हुआ नहीं बल्कि संग्रहित होता है ताकि दोबारा लोड करने पर और निर्धारित पुनः-जाँच पर एक ही बात कही जाए।
sending.statusLiteral['verified', 'pending', 'failed', 'no_identity', 'unknown']- आख़िरी जाँच ने बाहर जाने वाली signing स्थिति जैसी देखी। यह इसी रिक्वेस्ट पर परखी नहीं जाती बल्कि संग्रहित जाँच से पढ़ी जाती है, इसलिए `sending.checkedAt` बताता है कि वह कितनी पुरानी है।
sending.canSendbool- इस domain से भेजना अभी स्वीकार होगा या नहीं। एक दिन से पुराना नकारात्मक निर्णय इनकार नहीं, अज्ञात माना जाता है, इसलिए यह true हो सकता है जबकि `status` `pending` हो। भेजने से पहले इसी पर शाखा बनाएँ: इसका false होना यानी इस domain से `emails.send` 409 `domain_not_sendable` के साथ अस्वीकार होगा।
sending.checkedAtstr | None- signing स्थिति की आख़िरी जाँच कब हुई, ISO-8601 में। null का अर्थ है कभी नहीं, जो किसी विफलता से बहुत अलग बात है।
sending.errorstr | None- आख़िरी signing विफलता शब्दों में, या पास हो जाने पर null।
sending.notestr- पाँच वाक्यों में से एक, जिसे `sending.status` चुनता है, और जो उस स्थिति का अर्थ ऐसे शब्दों में बताता है जिन पर domain का मालिक कार्रवाई कर सके। यह किसी व्यक्ति के पढ़ने के लिए लिखा गद्य है। इस पर नहीं, `sending.canSend` पर शाखा बनाएँ।
trackingDomainTracking- domain का custom tracking domain, `list` की पंक्तियों पर भी और इस पर भी, और यही वह चीज़ है जिसे `update` बदलता है।
tracking.hoststr | None- tracking domain, जैसे `links.acme.com`, या कोई सेट न होने पर null।
tracking.statusLiteral['none', 'pending', 'active', 'failed']- `none` का अर्थ है कोई tracking domain सेट नहीं है, `pending` का अर्थ है वह कभी कोई जाँच पास नहीं कर सका, `active` का अर्थ है नई मेल उसका उपयोग करती है, और `failed` का अर्थ है वह पहले पास हुआ था और तब से उपयोग से बाहर हो गया। कोई सक्रिय होस्ट लगातार तीन जाँच विफल होने पर, या उसकी आख़िरी पास हुई जाँच के 2 घंटे से ज़्यादा पुराना हो जाने पर उपयोग से बाहर हो जाता है।
tracking.activebool- ठीक तभी true, जब `status` `active` हो, यानी जब डोमेन से भेजे गए नए मेल के tracked लिंक और open पिक्सेल इस होस्ट का उपयोग करते हैं।
tracking.targetstr- वह पता जिस पर CNAME रिकॉर्ड इशारा करता है, सिर्फ़ इसी tracking domain के लिए तैयार किया गया। जब तक `host` null है और जब तक नए होस्ट का पता तैयार हो रहा है, तब तक खाली स्ट्रिंग।
tracking.recordDomainTrackingRecord | None- प्रकाशित करने वाला रिकॉर्ड, जिसका नाम `host` के अनुसार है और मान `target` है। जब कोई tracking डोमेन न हो, और जब तक नए होस्ट का पता तैयार हो रहा हो, तब null।
tracking.checkedAtstr | None- होस्ट की आख़िरी बार जाँच कब हुई, ISO-8601 में। पहली जाँच तक null।
tracking.verifiedAtstr | None- कोई जाँच आख़िरी बार कब पास हुई, ISO-8601 में। जिस होस्ट ने कभी कोई जाँच पास नहीं की उसके लिए null।
tracking.errorstr | None- पिछली जाँच में क्या मिला, ऐसे शब्दों में जिन पर डोमेन का मालिक कार्रवाई कर सके। जब पिछली जाँच पास हुई हो या कोई जाँच चली ही न हो, तब null। जिस होस्ट की एक या दो जाँचें विफल हुई हैं वह तब भी `active` रहता है और कारण यहीं रखता है।
addresseslist[DomainDetailResourceAddressesItem]- domain की हर पता-पंक्ति, और यही वह चीज़ है जो `get` किसी `list` पंक्ति के मुक़ाबले जोड़ता है। इसमें वे पंक्तियाँ भी शामिल हैं जो डिलीवरी ने catch-all के तहत ख़ुद लिखीं, और catch-all बंद होते ही वे स्वीकार होना बंद हो जाती हैं, इसलिए यह array इस बात की सूची नहीं है कि कौन मेल पाएगा।
addresses[].addressstr- पूरा पता, संग्रहित local-part और होस्टनाम से दोबारा बनाया गया और छोटे अक्षरों में, ताकि वह ऊपर के `domain` से भटकने के बजाय हमेशा उससे मेल खाए।
addresses[].enabledbool- false पते को निष्क्रिय कर देता है, और निष्क्रिय पता catch-all चालू होने पर भी अस्वीकार होता है। हर पंक्ति दोनों ही हालत में सूचीबद्ध रहती है, इसलिए इस array को काम कर रहे पतों का समूह मानने के बजाय इसी पर फ़िल्टर करें।
createdAtstr- domain की पंक्ति कब जोड़ी गई, ISO-8601 में। यह नहीं कि वह कब सत्यापित हुई: वह `receiving.verifiedAt` है, जो इसके सेट होने पर भी null हो सकता है।
संदर्भ
domains.list()पूरा रेफ़रेंसdomains.list_all()पूरा रेफ़रेंसdomains.iterate()पूरा रेफ़रेंसdomains.get()पूरा रेफ़रेंसdomains.update()पूरा रेफ़रेंसapp_host.get()पूरा रेफ़रेंसapp_host.set()पूरा रेफ़रेंसapp_host.verify()पूरा रेफ़रेंसapp_host.delete()पूरा रेफ़रेंसbranding.get()पूरा रेफ़रेंसbranding.update()पूरा रेफ़रेंसbranding.upload_image()पूरा रेफ़रेंसbranding.remove_image()पूरा रेफ़रेंस