Belgelere geç
Ruby

Alan adları

`domains.list`, `list_all`, `iterate`, `get` ve `update`.

Her yöntem

domains.rb
page = client.domains.listpage.items.each { |row| puts "#{row[:domain]} #{row.dig(:sending, :canSend)}" } domain = client.domains.get("b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f")puts domain.dig(:receiving, :verified), domain.dig(:sending, :status) domain[:addresses].each do |entry|  puts "#{entry[:address]} #{entry[:enabled]}"end

Alım ve gönderim birbirinden bağımsız iki olgudur ve iki Hash hâlinde döndürülür. receiving.verified, alan adının MX kaydının postasını buraya getirdiği ve sahiplik doğrulamasının yayımlandığı anlamına gelir. sending ise giden imzalama denetimini bildirir: status değeri verified, pending, failed, no_identity veya unknown olur ve canSend, alan adından yapılacak bir gönderimin şu anda kabul edilip edilmeyeceğini söyler. Bir günden eski olumsuz bir sonuç, ret değil bilinmeyen sayılır; bu yüzden status yerine domain.dig(:sending, :canSend) olarak okunan canSend üzerinden dallanın.

list alfabetik sırayla alan adlarından oluşan bir OpenEmail::Page döndürür, list_all ise hepsini tek bir Array içinde döndürür. iterate onları birer birer bir bloğa verir. Blok olmadan bir Enumerator döndürür.

tracking_domain.rb
domain_id = "b3e1f0a4-6c2d-4e8a-9f17-2d5c8a0b4e6f" updated = client.domains.update(domain_id, trackingHost: "links.acme.com")puts updated.dig(:tracking, :status), updated.dig(:tracking, :record, :name), updated.dig(:tracking, :record, :value) client.domains.update(domain_id, trackingHost: nil)

update, alan adının özel izleme alan adını (links.acme.com gibi bir alt alan adı) ayarlar, yeniden denetler veya kaldırır ve get ile aynı Hash'i döndürür. tracking bunu her okumada bildirir. Bir denetim geçene kadar tracking.status değeri pending olur ve izlenen bağlantılar ile açılma pikseli varsayılan OpenEmail konağını kullanmayı sürdürür. Bir denetim geçtiğinde değer active olur ve alan adından giden yeni postalar her ikisi için de izleme alan adını kullanır.

get alan adındaki adresleri de listeler. İlgili çağrı addresses.list'tir: bu anahtarın bir From başlığına koyabileceği, daha dar kapsamlı adresler; her biri bir canSend sonucuyla birlikte. Bunları items yerine addresses içinde, domains ve unrestricted yanında tutan bir OpenEmail::AddressBookPage döndürür. Onun list_all metodu tek bir OpenEmail::AddressBook döndürür.

app_host kendi başına bir ad alanıdır: client.app_host. get, set, verify ve delete, çalışma alanının web uygulaması adresini okur ve değiştirir: bu alan adlarından birinde ya da çalışma alanının denetimindeki başka herhangi bir alan adında, çalışma alanındaki kişilerin çalışma alanının markasıyla oturum açtığı mailbox.acme.com gibi bir alt alan adı. set yayımlanacak DNS kayıtlarını record içinde ve çalışma alanının dışındaki bir alan adında ayrıca ownershipRecord içinde döndürür. delete ve bir adresi değiştiren set, bir OAuth uygulamasından doğrulama kodu ister: kod alınana kadar çağrı, step_up_required? değeri true olan bir 403 fırlatır.

branding bu markayı ayarlar. get; amblemin, logonun, karanlık mod logosunun ve oturum açma fotoğrafının bağlantılarını, iki yazı tipini ve oturum açma arka planını okur. update yazı tiplerini ve arka planı değiştirir, upload_image(variant, data, content_type: nil) dört görselden birini yükler, remove_image(variant) ise birini kaldırır. variant değeri mark, wordmark, wordmark-dark ya da login-background olur ve OpenEmail::BRAND_IMAGE_VARIANTS bunları adlandırır. data ikili bir String, bir IO ya da bir Pathname'dir. Pathname("logo.svg") gibi bir Pathname, bir File ya da bir Rails yüklemesi türünü kendisiyle getirir. Diğer baytlar content_type: gerektirir ve türü olmayan bir görsel 422 invalid_image ile reddedilir. Web uygulaması adresine ve ücretli bir planda çalışma alanı adına gönderilen e-postalara markasını veren şey logodur.

Parametreler: domains.get

idStringzorunlu
`domains.list` çağrısından gelen kimlik; ana bilgisayar adı değil, alan adı eklenirken üretilen bir UUID'dir. Bu yüzden `get("example.com")` hiçbir şey bulmaz. Arama yalnızca kimlikle değil, anahtarın kendi çalışma alanıyla da sınırlıdır; bu yüzden başka bir çalışma alanının alan adı 403 değil, `OpenEmail::NotFoundError` olarak fırlatılan bir 404 verir. nil ya da boş bir kimlik, hiçbir şey gönderilmeden önce ArgumentError fırlatır.

Parametreler: domains.update

idStringzorunlu
`get` çağrısının aldığı alan adı id'sinin aynısı. Gerektirdiği kapsam `domains:write`'tır.
trackingHostString or nil
Alan adının en fazla 512 karakterlik bir alt alan adı, örneğin `links.acme.com`. Boşlukları kırpılır ve küçük harfe çevrilir; baştaki `https://` ya da `http://`, bir yol ve sondaki nokta çıkarılır. Yeni bir değer aynı çağrıda doğrulanır, kaydedilir ve denetlenir. Alan adının zaten sahip olduğu değer, son denetim 30 saniyeden daha yakın bir zamanda yapılmadıysa denetimi yeniden çalıştırır. İzleme alan adını kaldırmak için nil ya da boş bir String geçirin; olduğu gibi bırakmak için alanı belirtmeyin.

Reddedilen bir konak, param içinde trackingHost belirten bir OpenEmail::ApiError fırlatır: kullanılamayan bir ad için (örneğin alan adının dışındaki bir ad) 422 invalid_tracking_host; receiving.verified false iken ve alan adının _openemail-challenge TXT kaydı henüz yayımlanmamışken yeni bir konak için 409 domain_not_verified; başka bir alan adının zaten kullandığı bir ad için ya da izleme alan adı farklı bir OpenEmail sunucusu tarafından yönetiliyorsa 409 tracking_host_in_use. 422 OpenEmail::ValidationError olarak, her 409 ise OpenEmail::ConflictError olarak gelir. Belirli adreslerle sınırlı bir anahtar 422 capability_unsupported alır, çünkü bir izleme alan adı alan adındaki her adrese uygulanır.

Değişiklik anahtar kelime argümanları ya da tek bir Hash'tir ve alanları API'nin camelCase adlarını korur; bu yüzden tracking_host: yazıldığı gibi gönderilir ve 422 unknown_parameter ile reddedilir. update ayrıca catchAll, files.acme.com gibi bir dosya alan adı için storageHost ve dmarcPolicy alır. Her alan isteğe bağlıdır ve metot başvurusu her birini anlatır. Gem update çağrısını bir okuma gibi yeniden dener, çünkü bir tekrar konağı zaten ayarlanmış bulur ve en fazla onu yeniden denetler.

Yanıt: bir alan adı (domains.get)

objectString
Hem `list` satırlarında hem de burada her zaman `domain` dizgesi.
idString
Alan adının UUID'si. Kaydın ömrü boyunca sabittir ve diğer alan adı çağrılarının kabul ettiği tek tanıtıcıdır.
domainString
Çıplak konak adı, küçük harfle: `example.com`. Ürünün tamamında benzersizdir, alan adı başına tek sahip; dolayısıyla iki çalışma alanı birden onu sahiplenemez.
receiving.verifiedBoolean
DNS'te alan adının MX kaydının postasını buraya getiren bir konağı gösterdiği ve satır bir doğrulama belirteci taşıyorsa eşleşen `_openemail-challenge` TXT kaydının da bulunduğu görüldüğünde true olur. MX tek başına hiçbir şey kanıtlamaz, çünkü posta aldığımız her alan adı aynı konak adlarını yayımlar; belirtecin var olma nedeni de, bu bayrağın gelen teslimatın postayı kabul etmeden önce denetlediği kapı olmasının nedeni de budur.
receiving.verifiedAtString or nil
Doğrulamanın geçtiği an, bir ISO 8601 String'i olarak. Geçmediği sürece nil'dir ve `verified` tam olarak bu sütundan türetilir; bu yüzden ikisi asla çelişmez.
receiving.catchAllBoolean
Herhangi bir yerel kısmın kabul edilip edilmediği. Bu kural olduğundan beri eklenen alan adlarında varsayılan olarak açıktır. Kapalıyken yalnızca alan adında adı geçen adresler kabul edilir, geri kalanlar SMTP aşamasında reddedilir; bu yüzden gönderen sessizlik yerine bir geri dönme iletisi alır.
receiving.lastCheckedAtString or nil
DNS'e bu alan adı hakkında en son ne zaman soru sorulduğu. DNS'e hiç sorulmadıysa nil'dir; bu da bir dakika önce alan adı eklemiş biri için bir başarısızlıktan çok farklı okunur. Doğrulanmamış bir alan adını okumak, son denetim 20 saniyeden eskiyse DNS'e yeniden sorar; bu yüzden `get` ile yoklamak doğrulamayı beklemenin bir yoludur, `verify` ise hemen denetler.
receiving.errorString or nil
Son denetimin neden geçmediği, sahibin üzerine işlem yapabileceği sözcüklerle. Tipik bir örnek: `No MX records yet. DNS changes can take a few minutes to spread.` Denetim geçtiğinde nil olur. Türetilmez, saklanır; bu yüzden bir yeniden yükleme ile zamanlanmış yeniden denetim aynı şeyi söyler.
sending.statusString
Son denetimin gördüğü hâliyle giden imzalama durumu: `verified`, `pending`, `failed`, `no_identity` ya da `unknown`. Saklanan denetimden okunur; bu yüzden ne kadar eski olduğunu `sending.checkedAt` söyler.
sending.canSendBoolean
Bu alan adından yapılacak bir gönderimin şu anda kabul edilip edilmeyeceği. Bir günden eski olumsuz bir sonuç ret değil bilinmeyen sayılır; bu yüzden `status` değeri `pending` iken bu true olabilir. Göndermeden önce buna göre dallanın: false olması, bu alan adından `emails.send` çağrısının 409 `domain_not_sendable` ile reddedileceği anlamına gelir.
sending.checkedAtString or nil
İmzalama durumunun en son ne zaman denetlendiği, bir ISO 8601 String'i olarak. Hiç denetlenmediyse nil'dir; bu da bir başarısızlıktan çok farklı okunur.
sending.errorString or nil
Son imzalama başarısızlığı sözcüklerle; denetim geçtiğinde nil.
sending.noteString
`sending.status` değerine göre seçilen ve o durumun ne anlama geldiğini bir alan adı sahibinin üzerine işlem yapabileceği sözcüklerle söyleyen beş cümleden biri. Bir insanın okuması için yazılmış metindir; bu yüzden dallanmayı buna göre değil, `sending.canSend` değerine göre yapın.
trackingHash
Alan adının özel izleme alan adı; hem `list` satırlarında hem de burada bulunur ve `update` çağrısının değiştirdiği şeydir.
tracking.hostString or nil
`links.acme.com` gibi izleme alan adı; ayarlanmamışsa nil.
tracking.statusString
`none` hiçbir izleme alan adının ayarlı olmadığı, `pending` hiç denetim geçmediği, `active` yeni postaların onu kullandığı ve `failed` daha önce geçmiş olup bu arada kullanımdan düştüğü anlamına gelir. Etkin bir konak, üst üste üç başarısız denetimin ardından ya da son geçen denetimi 2 saatten eski olduğunda kullanımdan düşer.
tracking.activeBoolean
Tam olarak `status` `active` iken true olur; yani alan adından gönderilen yeni postalardaki izlenen bağlantılar ve açılma pikseli host'u kullandığında.
tracking.targetString
CNAME kaydının işaret ettiği, yalnızca bu izleme alan adı için hazırlanmış adres. `host` nil iken ve yeni bir konak için adres hâlâ hazırlanırken boş bir String'dir.
tracking.recordHash or nil
Yayımlanacak kayıt: `type` (her zaman `CNAME`), `name` ve `value` içeren bir Hash; adı `host` değerinden gelir, değeri ise `target`'tır. İzleme alan adı yokken ve yeni bir konak için adres hâlâ hazırlanırken nil'dir; bu yüzden `dig(:tracking, :record, :value)` onu güvenle okur.
tracking.checkedAtString or nil
Konağın en son ne zaman denetlendiği, bir ISO 8601 String'i olarak. İlk denetime kadar nil.
tracking.verifiedAtString or nil
Bir denetimin en son ne zaman geçtiği, bir ISO 8601 String'i olarak. Hiç denetim geçmemiş bir konak için nil.
tracking.errorString or nil
Son denetimin ne bulduğu, alan adı sahibinin üzerine işlem yapabileceği sözcüklerle. Son denetim geçtiyse ya da henüz hiç denetim yapılmadıysa nil. Bir ya da iki denetimi geçememiş bir konak hâlâ `active` durumundadır ve nedeni burada taşır.
addressesArray<Hash>
Alan adındaki her adres satırı; `get` çağrısının bir `list` satırına eklediği şey budur. Teslimatın catch-all altında kendisinin yazdığı satırları da içerir ve bunlar catch-all kapatıldığı anda kabul edilmez olur; bu yüzden Array, posta alacak adreslerin listesi değildir.
addresses[].addressString
Saklanan local-part ile konak adından yeniden kurulan ve küçük harfe çevrilen tam adres; böylece her zaman yukarıdaki `domain` ile eşleşir, ondan sapmaz.
addresses[].enabledBoolean
False adresi devre dışı bırakır ve devre dışı bir adres catch-all açıkken bile reddedilir. Her satır her durumda listelenir; bu yüzden Array'i çalışan adresler kümesi olarak okumak yerine buna göre filtreleyin.
createdAtString
Alan adı satırının eklendiği an, bir ISO 8601 String'i olarak. Alan adının doğrulandığı an değildir: o `receiving.verifiedAt`'tir ve bu alan ayarlıyken nil olabilir.