دامنهها
`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 یعنی MX دامنه ایمیلش را به اینجا میآورد و چالش مالکیتش منتشر شده است. sending بررسی امضای خروجی را گزارش میدهد: status یکی از verified، pending، failed، no_identity یا unknown است، و canSend میگوید آیا ارسالی از آن دامنه همین حالا پذیرفته میشود یا نه. حکم منفیای که بیش از یک روز از آن گذشته باشد بهجای رد، ناشناخته در نظر گرفته میشود، پس بهجای status روی canSend شاخه بزنید.
update دامنهٔ ردیابی اختصاصی دامنه را تنظیم میکند، دوباره بررسی میکند یا برمیدارد، یعنی زیردامنهای مانند links.acme.com، و همان DomainDetailResource ای را برمیگرداند که get برمیگرداند. tracking در هر خواندن آن را گزارش میدهد. تا وقتی بررسیای موفق نشود، tracking.status برابر pending است و پیوندهای ردیابیشده و پیکسل باز شدن همچنان از میزبان پیشفرض OpenEmail استفاده میکنند. بهمحض موفقیت یکی، مقدار active میشود و ایمیلهای تازهٔ آن دامنه برای هر دو از دامنهٔ ردیابی استفاده میکنند.
get آدرسهای روی دامنه را هم فهرست میکند. addresses.list() فراخوانی مرتبط است: هر آدرسی که این کلید میتواند در سرآیند From بگذارد، که محدودتر است.
app_host فضای نام جداگانهای است. 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الزامی- id از `domains.list`، یک UUID که هنگام افزودن دامنه ساخته شده، نه نام میزبان، پس `get('example.com')` چیزی پیدا نمیکند. جستوجو علاوه بر id به connection خود کلید نیز محدود است، پس دامنهٔ فضای کاری دیگر بهجای 403 یک 404 است.
پارامترها: domains.update
idstrالزامی- همان domain id که `get` میگیرد. scope مورد نیاز آن `domains:write` است.
patch['trackingHost']str | None- زیردامنهای از همان دامنه، حداکثر 512 نویسه، مانند `links.acme.com`. فاصلههای اضافی حذف و حروف کوچک میشوند، و `https://` یا `http://` ابتدایی، مسیر و نقطهٔ انتهای نام حذف میشوند. مقدار تازه در همان فراخوانی اعتبارسنجی، ذخیره و بررسی میشود. اگر همان مقداری باشد که دامنه از پیش دارد، بررسی دوباره اجرا میشود، مگر آنکه از آخرین بررسی کمتر از 30 ثانیه گذشته باشد. `None` یا رشتهٔ خالی دامنهٔ ردیابی را برمیدارد.
میزبان ردشده یک OpenEmailApiError را raise میکند که در param نام trackingHost را میبرد: 422 invalid_tracking_host برای نامی که قابل استفاده نیست، مثلاً نامی بیرون از دامنه؛ 409 domain_not_verified برای میزبان تازه وقتی receiving.verified برابر false است و رکورد TXT با نام _openemail-challenge دامنه هنوز منتشر نشده؛ و 409 tracking_host_in_use برای نامی که دامنهٔ دیگری از پیش به کار میبرد، یا وقتی دامنهٔ ردیابی را سرور OpenEmail دیگری مدیریت میکند. کلیدی که به نشانیهای مشخصی محدود شده 422 capability_unsupported میگیرد، چون دامنهٔ ردیابی روی همهٔ نشانیهای آن دامنه اعمال میشود.
پاسخ: DomainDetailResource
objectLiteral['domain']- همیشه رشتهٔ `domain`، هم روی ردیفهای `list` و هم روی همین یکی.
idstr- UUID دامنه. در تمام عمر آن ردیف پایدار است، و تنها دستگیرهای است که دیگر فراخوانیهای domain میپذیرند.
domainstr- نام میزبان خالی، با حروف کوچک: `example.com`. در کل محصول یکتاست، یک مالک برای هر دامنه، پس دو فضای کاری نمیتوانند هر دو مدعی آن شوند.
receiving.verifiedbool- به محض اینکه DNS نشان دهد MX دامنه میزبانی را نام میبرد که نامهاش را به اینجا میآورد، و در جایی که ردیف یک توکن چالش دارد، رکورد TXT متناظر `_openemail-challenge` را هم نشان دهد، True میشود. MX بهتنهایی چیزی را ثابت نمیکند، چون هر دامنهای که برایش نامه دریافت میکنیم همان نامهای میزبان را منتشر میکند؛ توکن به همین دلیل وجود دارد، و به همین دلیل این پرچم همان دروازهای است که تحویل ورودی پیش از پذیرش نامه بررسی میکند.
receiving.verifiedAtstr | None- زمان موفقشدن تأیید، به شکل ISO-8601. تا وقتی تأیید نشده Null است، و `verified` دقیقاً از همین ستون مشتق میشود، پس این دو هرگز نمیتوانند با هم ناسازگار باشند.
receiving.catchAllbool- اینکه آیا هر local-part پذیرفته میشود یا نه. برای دامنههایی که پس از قاعدهشدنِ این افزوده شدهاند بهصورت پیشفرض روشن است؛ با خاموش بودنش فقط نشانیهای نامبرده روی دامنه پذیرفته میشوند و بقیه در زمان SMTP رد میشوند، پس فرستنده بهجای سکوت یک bounce میگیرد.
receiving.lastCheckedAtstr | None- آخرین باری که دربارهٔ این دامنه از DNS پرسیده شد. Null یعنی هرگز نگاه نشده، که برای کسی که یک دقیقه پیش دامنهای افزوده معنایی بسیار متفاوت از شکست دارد. این 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']- وضعیت امضای خروجی، همانطور که آخرین بررسی آن را دید. از بررسی ذخیرهشده خوانده میشود نه با کاوش در همین درخواست، پس `sending.checkedAt` میگوید چقدر قدیمی است.
sending.canSendbool- اینکه آیا ارسال از این دامنه همین حالا پذیرفته میشود یا نه. حکم منفیِ قدیمیتر از یک روز بهجای رد، نامعلوم در نظر گرفته میشود، پس این میتواند true باشد در حالی که `status` برابر `pending` است. پیش از ارسال روی همین شاخه بزنید: مقدار false یعنی `emails.send` از این دامنه با یک 409 `domain_not_sendable` رد میشود.
sending.checkedAtstr | None- آخرین باری که وضعیت امضا بررسی شده، بهصورت ISO-8601. null یعنی هرگز، که خوانشی بسیار متفاوت از شکست دارد.
sending.errorstr | None- آخرین شکست امضا بهصورت متن، یا null بهمحض موفقیت.
sending.notestr- یکی از پنج جمله، که بر پایهٔ `sending.status` انتخاب میشود و میگوید آن وضعیت به زبانی که صاحب دامنه بتواند بر اساسش اقدام کند چه معنایی دارد. نثری برای خواندن انسان. بهجای این، روی `sending.canSend` شاخه بزنید.
trackingDomainTracking- دامنهٔ ردیابی اختصاصی این دامنه، هم روی ردیفهای `list` و هم روی همین یکی، و همان چیزی که `update` تغییرش میدهد.
tracking.hoststr | None- دامنهٔ ردیابی، مانند `links.acme.com`، یا null وقتی چیزی تنظیم نشده باشد.
tracking.statusLiteral['none', 'pending', 'active', 'failed']- `none` یعنی هیچ دامنهٔ ردیابی تنظیم نشده، `pending` یعنی هرگز از بررسی سربلند بیرون نیامده، `active` یعنی ایمیلهای تازه از آن استفاده میکنند، و `failed` یعنی پیشتر موفق بوده و از آن پس از رده خارج شده است. میزبان فعال پس از سه بررسی ناموفق پیاپی، یا وقتی از آخرین بررسی موفقش بیش از 2 ساعت گذشته باشد، از رده خارج میشود.
tracking.activebool- دقیقاً وقتی درست است که `status` برابر `active` باشد، یعنی وقتی پیوندهای ردیابیشده و پیکسل بازشدن در نامههای تازهٔ آن دامنه از این میزبان استفاده میکنند.
tracking.targetstr- نشانیای که رکورد CNAME به آن اشاره میکند، که تنها برای همین دامنهٔ ردیابی آماده شده است. تا وقتی `host` برابر null است، و تا وقتی نشانی میزبان تازه هنوز در حال آمادهسازی است، رشتهٔ خالی است.
tracking.recordDomainTrackingRecord | None- رکوردی که باید منتشر شود، با نامِ `host` و مقدار `target`. وقتی دامنهٔ ردیابیای نیست null است، و همچنین تا وقتی نشانیِ یک میزبان تازه هنوز در حال آمادهشدن است.
tracking.checkedAtstr | None- آخرین باری که میزبان بررسی شده، ISO 8601. تا نخستین بررسی null است.
tracking.verifiedAtstr | None- آخرین باری که بررسیای موفق شده، ISO 8601. برای میزبانی که هرگز بررسیای را نگذرانده null است.
tracking.errorstr | None- آنچه آخرین بررسی یافته، با واژههایی که صاحب دامنه بتواند بر اساسشان کاری بکند. وقتی آخرین بررسی موفق بوده یا هنوز هیچ بررسیای اجرا نشده null است. میزبانی که یک یا دو بررسی را رد کرده باشد هنوز `active` است و دلیلش را اینجا با خود دارد.
addresseslist[DomainDetailResourceAddressesItem]- همهٔ ردیفهای نشانی روی دامنه؛ همین است آنچه `get` نسبت به یک ردیف `list` اضافه میکند. شامل ردیفهایی هم هست که خودِ تحویل زیر catch-all نوشته است، و همان لحظه که catch-all خاموش شود پذیرش آنها متوقف میشود، پس این آرایه فهرستِ آنچه نامه دریافت خواهد کرد نیست.
addresses[].addressstr- نشانی کامل، که از local-part ذخیرهشده و نام میزبان بازساخته و به حروف کوچک تبدیل شده است، تا همیشه با `domain` بالا بخواند و از آن فاصله نگیرد.
addresses[].enabledbool- False نشانی را غیرفعال میکند، و نشانی غیرفعال حتی وقتی catch-all روشن است هم رد میشود. ردیفها در هر حال فهرست میشوند، پس بهجای خواندن آرایه بهعنوان مجموعهٔ نشانیهای کارا، روی همین فیلد فیلتر کنید.
createdAtstr- زمانی که ردیف دامنه افزوده شد، به شکل 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()مرجع کامل