Türler ve yardımcılar
Paketin başka neleri dışa aktardığı.
Çalışma zamanı dışa aktarımları
| Dışa aktarım | Nedir |
|---|---|
| init, openemail | Paylaşı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_client | Paylaşı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_client | Ayrı bir istemci. OpenEmail(), belirtmediğiniz her şey için ortamı okur ve create_client onun başka bir adıdır. |
| AsyncOpenEmail | Her metodu await ile çağrılan aynı istemci, asyncio ya da trio üzerinde. |
| create_temp_mail, create_async_temp_mail | Hiç API anahtarı taşımayan bir tek kullanımlık gelen kutusu istemcisi ve onun asenkron ikizi. |
| OpenEmailError, OpenEmailApiError, OpenEmailNetworkError ve WebhookVerificationError | Paketin 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_signature | Sabit 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_base64 | Ek dosya baytları için Base64; bytes, bytearray ya da memoryview değerinden. |
| is_api_key | Bir 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_token | Bir dizenin OAuth erişim tokenı biçiminde olup olmadığı: 1 ile 512 karakter arası, oe_ ile başlamayan. |
| is_sealed, MESSAGE_ENCRYPTION_FORMATS | Bir 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_language | Pakete gömülü dil tablosu ve bir dil seçicinin ihtiyaç duyduğu aramalar. |
| API_SCOPES | Kapsam sözlüğü; bir anahtar oluşturma ekranı için. |
| WEBHOOK_EVENTS, WEBHOOK_SIGNATURE_HEADERS | Bir uç noktanın abone olabileceği olaylar ve bir teslimatın taşıdığı başlıkların adları. |
| RULE_FIELDS, RULE_OPERATORS ve RULE_ACTIONS | Bir kuralın koşullarının ve eylemlerinin kurulduğu sözlük. |
| PAGE_LIMITS | Sayfalanan 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_TYPES | Donmuş 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_TYPES | Dosya 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_CODES | Bir 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_STATES | Bir 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_USAGES | Bir dosyanın silinebilir olmak yerine neden tutulduğu: received, sent, linked ya da scheduled. |
| CREDENTIAL_KINDS, STEP_UP_METHODS ve STEP_UP_ERROR_CODES | me.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ümeler | Diğ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.
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.clientbunlaraAccessTokenProvider,AsyncAccessTokenProvider,HeaderValueveQueryValueekler. - 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.
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.
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,anyiovetyping-extensionspaketlerine 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
contentalanındakibytesbase64'e, birdatetimeUTC'de bir ISO 8601 anına, birdatebir ISO tarihine ve birsetbir listeye dönüşür.to,ccya dabcciçindeki tek bir alıcı bir listeye sarılır. - Bir yanıtı yalnızca tek bir biçimde yeniden şekillendirir: bir koleksiyonun
datadizisi zarfından çıkarılır. Sayfalanmış bir liste bunuhasMorevenextCursoryanındaitemsolarak,contacts.list_peoplehasMore,nextCursorveseenyanındaitemsolarak,emails.send_batchsentvefailedyanındaitemsolarak,templates.list_sendstotal,pagevepageSizeyanındaitemsolarak,temp_mail.list_messageshasMore,nextCursorveexpiresAtyanındaitemsolarak veaddresses.listunrestricted,domains,hasMorevenextCursoryanındaaddressesolarak 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.