Belgelere geç
Python

Türler ve yardımcılar

Paketin başka neleri dışa aktardığı.

Çalışma zamanı dışa aktarımları

Dışa aktarımNedir
init, openemailPaylaşılan istemciyi bir kez yapılandırın, sonra openemail'i istediğiniz yerde içe aktarın. init hiç çalışmadıysa kendini OPENEMAIL_API_KEY üzerinden kurar.
get_client, reset_clientPaylaşılan istemcinin kendisi ve bir sonraki çağrının yenisini kurması için onu bırakmanın yolu; bir testin durumlar arasında istediği şey budur.
OpenEmail, create_clientAyrı bir istemci. OpenEmail(), belirtmediğiniz her şey için ortamı okur ve create_client onun başka bir adıdır.
AsyncOpenEmailHer metodu await ile çağrılan aynı istemci, asyncio ya da trio üzerinde.
create_temp_mail, create_async_temp_mailHiç API anahtarı taşımayan bir tek kullanımlık gelen kutusu istemcisi ve onun asenkron ikizi.
OpenEmailError, OpenEmailApiError, OpenEmailNetworkError ve WebhookVerificationErrorPaketin fırlattığı hatalar; hepsi OpenEmailError altındadır. Bir OpenEmailApiError, ayrıştırılmış hata yanıtını body olarak, bir form kaydı reddedildiğinde de fields değerini taşır.
verify_webhook_signatureSabit zamanlı, bir yeniden oynatma penceresiyle. Ayrıştırılmış yükü döndürür ve herhangi bir başarısızlıkta WebhookVerificationError fırlatır.
to_base64Ek dosya baytları için Base64; bytes, bytearray ya da memoryview değerinden.
is_api_keyBir dizgenin oe_live_ veya oe_test_ biçiminde olup olmadığı. Bir biçim denetimidir, anahtarın hâlâ çalıştığının kanıtı değil.
is_access_tokenBir dizenin OAuth erişim tokenı biçiminde olup olmadığı: 1 ile 512 karakter arası, oe_ ile başlamayan.
is_sealed, MESSAGE_ENCRYPTION_FORMATSBir mesajın gövdesinin şifreli metin olup olmadığı ve alım sürecinin adlandırabileceği beş zarf. is_sealed, gövdeleri açık hâlde gelen iki SIGNED biçimi için false'tur; bu yüzden çağıranın birleşim tipinden türetmesine bırakılmak yerine paketle birlikte gelir.
LANGUAGES, resolve_language, language_by_code ve is_rtl_languagePakete gömülü dil tablosu ve bir dil seçicinin ihtiyaç duyduğu aramalar.
API_SCOPESKapsam sözlüğü; bir anahtar oluşturma ekranı için.
WEBHOOK_EVENTS, WEBHOOK_SIGNATURE_HEADERSBir uç noktanın abone olabileceği olaylar ve bir teslimatın taşıdığı başlıkların adları.
RULE_FIELDS, RULE_OPERATORS ve RULE_ACTIONSBir kuralın koşullarının ve eylemlerinin kurulduğu sözlük.
PAGE_LIMITSSayfalanan listelerin çoğunda en büyük ve varsayılan limit değerleri: 100 ve 25. contacts.list, audiences.list_contacts ve tracking listeleri varsayılanı 50 olmak üzere en fazla 200 alır, temp_mail.list_messages ise en fazla 50 alır.
ERROR_TYPESDonmuş hata sözlüğü.
VERSION, __version__Paket sürümü.
THREAD_SORTS, PEOPLE_SORTS, CONTACT_THREAD_SORTS ve FILE_SORTSİleti dizisi, insan, kişi ileti dizisi ve dosya listelerinin sıralanabileceği düzenler.
FILE_KINDS, FILE_DIRECTIONS, CONTACT_BLOCK_LISTS ve CONTACT_PHOTO_TYPESDosya listesinin filtreleri, çalışma alanının iki engel listesi ve bir kişi fotoğrafının olabileceği görsel türleri.
BROADCAST_STATUSES, BROADCAST_RECIPIENT_FILTERS, SUPPRESSION_REASONS ve WEBHOOK_REPLAY_ERROR_CODESBir toplu gönderimin ne durumda olduğu, kopyalarından hangilerinin listeleneceği, bir adresin neden engellendiği ve bir webhook yeniden oynatmasının neden reddedildiği.
PROVIDER_IMPORT_RESOURCES, PROVIDER_IMPORT_STATUSES ve PROVIDER_IMPORT_DOMAIN_STATESBir sağlayıcı içe aktarmasının neleri taşıyabileceği, bir çalıştırmanın ne durumda olduğu ve bulduğu her alan adının ne durumda olduğu.
FILE_USAGESBir dosyanın silinebilir olmak yerine neden tutulduğu: received, sent, linked ya da scheduled.
CREDENTIAL_KINDS, STEP_UP_METHODS ve STEP_UP_ERROR_CODESme.get() ve me.ping() metotlarının hangi kimlik bilgisini anlattığı (apiKey ya da oauth), bir doğrulama kodunun nasıl denetlendiği (email ya da totp) ve bir doğrulamanın başarısız olabileceği kodlar.
FORM_STATUSES, FORM_SUBMISSION_STATUSES, FORM_FIELD_TYPES, FORM_STARTER_SLUGS ve FORM_*Bir formun, alanlarının ve kayıtlarının aldığı değerler, on altı kümede: durumlar, alan türleri, başlangıç noktaları, yazı tipleri, genişlikler ve bir yanıtın reddedilme nedenleri.
BILLING_*, BRAND_*, DNS_*, DOMAIN_* ve diğer kümelerDiğer tüm ad alanlarının değerleri; her küme, tuttuğu şeyin adını taşır.

Türler

Her istek ve yanıtın bir karşılığı vardır: openemail.types içinde, TypeScript ikiziyle aynı adı taşıyan bir TypedDict. …Resource API'nin döndürdüğü, …Create, …Patch, …Input ve …Send ise sizin geçirdiğiniz türlerdir. Filtreler ve çağrı başına seçenekler anahtar sözcük argümanlarıdır; bu yüzden onları taşıyan EmailListOptions gibi TypeScript türlerinin burada ikizi yoktur.

typed.py
from openemail.types import EmailSend, Page, SentEmailResource, ThreadSummaryResource message: EmailSend = {    'from': 'Acme Billing <[email protected]>',    'to': '[email protected]',    'replyTo': '[email protected]',    'subject': 'Your September invoice',    'text': 'Your invoice is attached.',} sent: SentEmailResource = client.emails.send(message)inbox: Page[ThreadSummaryResource] = client.threads.list(folder='inbox') print(sent['status'], sent['scheduledAt'], inbox['nextCursor'])

Anahtarlar, gönderdiğinizde de geri gelende de API'nin kendi camelCase alan adlarıdır: 'replyTo', 'scheduledAt' ve 'nextCursor' gibi. Yalnızca bir metodun argümanları snake_case biçimindedir (idempotency_key=, label_ids=) ve adı from olacak bir argüman, emails.list ve calendar.list_events üzerinde olduğu gibi from_= olur.

mypy ve pyright ikisi de bunları okur; bu yüzden yanlış yazılmış bir anahtar API'ye ulaşmak yerine tür denetiminde başarısız olur. mypy bir gövde için Extra key "replyto" for TypedDict "EmailSend", bir yanıt için TypedDict "SentEmailResource" has no key "satus" bildirir; pyright da aynısını kendi sözcükleriyle söyler. Bir kümenin dışındaki bir değer de aynı şekilde başarısız olur; örneğin emails.list üzerinde status='sending-ish'.

Bunlar tür denetleyiciniz için vardır. Çalışma zamanında her TypedDict düz bir dict'tir; bu yüzden birini içe aktarmanın hiçbir maliyeti yoktur ve program çalışırken hiçbir şey denetlenmez.

  • İstemci: Page, ApiKeyMode, RawBody. openemail.types.client bunlara AccessTokenProvider, AsyncAccessTokenProvider, HeaderValue ve QueryValue ekler.
  • Hatalar: ErrorType, FormFieldProblem.
  • E-postalar: EmailSend, EmailTranslate, EmailResource, SentEmailResource, EmailRecipientResource, EmailEventResource, EmailStatus, EmailSource, EmailTransport, EmailTrackingSummary, EmailTranslationResource, TranslationResource, RecipientStatus, BatchItemResource, BatchResultResource.
  • Şablonlar: TemplateCreate, TemplatePatch, TemplateContent, TemplatePreviewInput, TemplateSend, TemplateResource, TemplateDetailResource, TemplateVersionResource, TemplatePreviewResource, TemplateSendsResource, SentTemplateEmailResource, DeletedTemplateResource, TemplateEngine, TemplateProp, TemplateSlot, TemplateStatus, TemplateValueKind.
  • İzleme: TrackingResource, TrackingSummary, TrackingRecipientResource, TrackingLinkResource, TrackingOpenResource, TrackingClickResource, TrackingStatsResource, TrackingGrain.
  • Konuşmalar ve taslaklar: ThreadPatch, ThreadResource, ThreadSummaryResource, UpdatedThreadResource, TrashedThreadResource, SnoozedThreadResource, DraftInput, DraftResource, DraftSummaryResource, SavedDraftResource, DeletedDraftResource.
  • Etiketler, kişiler, alan adları ve adresler: LabelInput, LabelColor, LabelResource, DeletedLabelResource, ContactCreate, ContactPatch, ContactSource, ContactResource, ContactDetailResource, ContactAudienceResource, ContactAudiencesSet, DeletedContactResource, PeoplePage, PersonResource, DomainPatch, DomainResource, DomainDetailResource, DomainSendingState, DomainTracking, DomainTrackingState, AddressBookPage, AddressBookResource, AddressResource, SendableDomainResource.
  • Kitleler: AudienceCreate, AudiencePatch, AudienceMemberSort, AudienceContactAdd, AudienceContactsBatch, AudienceImport, AudienceImportRow, AudienceResource, AudienceBuiltin, AudienceContactResource, AudienceMemberResource, RemovedAudienceContactResource, DeletedAudienceResource, EmptiedAudienceResource, AudienceBatchAddResource, AudienceBatchRemoveResource, AudienceImportResource, AudienceGrowthResource, AudienceGrowthTotals, AudienceGrowthSeries, AudienceGrowthBucket.
  • Toplu gönderimler: BroadcastCreate, BroadcastPreviewInput, BroadcastResource, BroadcastCounts, BroadcastStatus, BroadcastPreviewResource, BroadcastRecipientResource, BroadcastRecipientContentResource, BroadcastRecipientFilter, BroadcastStatsResource, BroadcastStatsTotals, BroadcastStatsBucket.
  • Kurallar: RuleCreate, RulePatch, RuleTestInput, RuleResource, RuleRunResource, RuleTestResource, DeletedRuleResource, RuleCondition, RuleConditionInput, RuleAction, RuleActionType, RuleField, RuleOperator.
  • Webhook'lar: WebhookCreate, WebhookPatch, WebhookResource, CreatedWebhookResource, DeletedWebhookResource, WebhookDeliveryResource, WebhookDeliveryDetailResource, WebhookDeliveryAttempt, WebhookReplayResource, WebhookReplayRefusal, WebhookReplayErrorCode, WebhookTestResource, WebhookEvent, WebhookPayload, EmailOpenedData, EmailClickedData, EmailDownloadedData, FileEventData.
  • Takvim ve ayarlar: CalendarOccurrenceResource, CalendarEventResource, CalendarAttendeeResource, SettingsPatch, SettingsResource.
  • Roller, üyeler ve anahtarlar: RoleCreate, RolePatch, RoleResource, DeletedRoleResource, PermissionResource, MemberAdd, MemberPatch, MemberAddressGrant, MemberResource, MemberAddressResource, RemovedMemberResource, MemberAccess, KeyResource, PingResource.
  • Tek kullanımlık gelen kutuları: TempInboxCreate, TempInboxResource, CreatedTempInboxResource, DeletedTempInboxResource, TempDomainResource, TempMessageResource, TempMessagesResource, TempMessageDetailResource, DeletedTempMessageResource.
  • Paylaşılan: RecipientInput, AttachmentInput, AttachmentResource, MessageResource, MessageEncryption, MessageEncryptionFormat, TrackingRequest, TranslateOptions, SendTranslateOptions, LanguageResource, ApiScope, Permission, BuiltinRole, HitKind.
  • Erişim tokenları ve doğrulama kodları: CredentialKind, ApiKeySelfResource, OauthTokenSelfResource, ApiKeyPingResource, OauthTokenPingResource, StepUpBegin, StepUpVerify, StepUpMethod, StepUpErrorCode, StepUpStatusResource, StepUpChallengeResource, StepUpVerifiedResource.
  • Formlar: FormCreate, FormPatch, FormResource, FormDetailResource, FormDocument, FormField, FormCopy, FormStyle, FormSettings, FormSettingsInput, FormStats, FormAudience, FormStarterResource, FormStarterDetailResource, FormAnalyticsResource, FormSubmissionResource, FormAnswer, ResentFormConfirmationResource, FormSubscribeValues, FormSubscriptionResource, FormSubmittedEventData, FormConfirmedEventData.
  • API'nin döndürdüğü diğer her şeyin, faturalandırmadan çalışma alanlarına kadar, türleri aynı adlarla bulunur.

Dize kümeleri

Değer kümeleri openemail.constants içindeki sabitlerdir; her biri tuttuğu şeyin adını taşır ve her değer için bir özniteliği vardır: EMAIL_STATUSES.SENT, 'sent' değerine eşittir. Tüm değerler için bir küme üzerinde dolaşın, dışarıdan gelen bir değeri in ile denetleyin ve onları len() ile sayın. Her üye Final olarak türlenmiştir; bu yüzden mypy ve pyright EMAIL_STATUSES.SENT değerini 'sent' literal'i olarak okur ve bir EmailStatus beklenen her yerde kabul eder.

constants.py
from openemail import PAGE_LIMITS, WEBHOOK_EVENTSfrom openemail.constants import EMAIL_STATUSES failed = client.emails.list(status=EMAIL_STATUSES.FAILED, limit=PAGE_LIMITS.MAX_LIMIT) print(EMAIL_STATUSES.SENT, list(EMAIL_STATUSES), len(WEBHOOK_EVENTS))print('email.opened' in WEBHOOK_EVENTS, len(failed['items']))

openemail kendisi 108 sabit dışa aktarır: VERSION, LANGUAGES, PAGE_LIMITS, PAY_AS_YOU_GO_LIMITS_CENTS ve bir uygulamanın en sık başvurduğu 104 küme. EMAIL_STATUSES ve TEMPLATE_STATUSES gibi diğerlerini, her kümenin bulunduğu openemail.constants modülünden içe aktarın.

Henüz sarmalanmayan bir uç nokta

Bir SDK sürümü, hâlihazırda çalışan bir uç nokta ile aranıza asla girmemelidir. client.raw.request() bir yol ve anahtar sözcük argümanları alır ve istemcinin kimlik bilgisi, temel URL'si, zaman aşımı ve yeniden deneme politikası uygulanmış hâlde ayrıştırılmış gövdeyi döndürür.

escape_hatch.py
result = client.raw.request(    '/something-new',    method='POST',    query={'dryRun': True},    body={'name': 'Invoices'},    repeatable=True,) print(result)

GET, diğer tüm okumalar gibi yeniden denenir. Başka herhangi bir HTTP yöntemi, iki kez gönderilebileceğine dair beyanınız olan repeatable=True geçirmediğiniz sürece bir kez gönderilir. query, None ya da boş olan değerleri atlar; api_key= ve timeout= ise diğer tüm metotlarda olduğu gibi çalışır. AsyncOpenEmail üzerinde çağrı await ile beklenir.

Yol tek bir / ile başlamalıdır. Başka herhangi bir şey ve tamamlanmış URL'si API kökeninin dışına çıkacak bir yol, istek gönderilmeden önce ValueError fırlatır; böylece kimlik bilgisi hiçbir zaman başka bir konağa ulaşmaz.

Bilerek yapmadıkları

  • Hiçbir istek gövdesini doğrulamaz. Kuralların tek kopyası sunucunun şemasıdır; buradaki ikinci bir kopya er ya da geç, birinin iki yıl önce sabitlediği bir sürümde, daha yeni bir sunucunun kabul ettiği bir adresi reddederdi.
  • httpx, anyio ve typing-extensions paketlerine bağlıdır, başka hiçbir şeye değil.
  • Giderken yalnızca JSON'un olduğu gibi taşıyamayacağı şeyleri dönüştürür: bir ekin content alanındaki bytes base64'e, bir datetime UTC'de bir ISO 8601 anına, bir date bir ISO tarihine ve bir set bir listeye dönüşür. to, cc ya da bcc içindeki tek bir alıcı bir listeye sarılır.
  • Bir yanıtı yalnızca tek bir biçimde yeniden şekillendirir: bir koleksiyonun data dizisi zarfından çıkarılır. Sayfalanmış bir liste bunu hasMore ve nextCursor yanında items olarak, contacts.list_people hasMore, nextCursor ve seen yanında items olarak, emails.send_batch sent ve failed yanında items olarak, templates.list_sends total, page ve pageSize yanında items olarak, temp_mail.list_messages hasMore, nextCursor ve expiresAt yanında items olarak ve addresses.list unrestricted, domains, hasMore ve nextCursor yanında addresses olarak geri verir. imports.list_failures, API'nin gönderdiği biçimde, yani {'object': ..., 'data': [...], 'nextCursor': ...} olarak bırakılan tek listedir. Diğer her yerde düz bir listedir. İçindeki her kaynak, belgelenen HTTP biçimini korur.

Paketin eşlik denetimi bunu dürüst tutar. Her metodu TypeScript ikiziyle yan yana, aynı argümanlarla ve tüm seçenekler ayarlanmış olarak çalıştırır; bir metot eksikse, farklı seçenekler alıyorsa, farklı bir istek gönderiyorsa ya da farklı bir değer döndürüyorsa başarısız olur.