Tipet dhe ndihmësit
Çfarë tjetër eksporton paketa.
Eksportet në kohë ekzekutimi
| Eksporti | Çfarë është |
|---|---|
| init, openemail | Konfiguroni një herë të vetme klientin e përbashkët, pastaj importoni openemail kudo. Ai ndërtohet vetë nga OPENEMAIL_API_KEY nëse init nuk është thirrur kurrë. |
| get_client, reset_client | Vetë klienti i përbashkët dhe një mënyrë për ta hedhur tej, që thirrja tjetër të ndërtojë një të ri, pikërisht ajo që i duhet një testi midis rasteve. |
| OpenEmail, create_client | Një klient më vete. OpenEmail() e lexon mjedisin për çdo gjë që lini jashtë, dhe create_client është një emër tjetër për të. |
| AsyncOpenEmail | I njëjti klient, ku çdo metodë thirret me await, në asyncio ose trio. |
| create_temp_mail, create_async_temp_mail | Një klient për kuti të përkohshme që nuk mban asnjë çelës API, dhe binjaku i tij asinkron. |
| OpenEmailError, OpenEmailApiError, OpenEmailNetworkError dhe WebhookVerificationError | Gabimet që ngre paketa, të gjitha nën OpenEmailError. Një OpenEmailApiError mban përgjigjen e analizuar të gabimit si body, dhe fields kur u refuzua një regjistrim përmes formularit. |
| verify_webhook_signature | Në kohë konstante, me një dritare riluajtjeje. Kthen payload-in e analizuar dhe ngre WebhookVerificationError në çdo dështim. |
| to_base64 | Base64 për bajtet e bashkëngjitjeve, nga bytes, bytearray ose memoryview. |
| is_api_key | Nëse një varg e ka formën oe_live_ ose oe_test_. Një kontroll forme, jo provë se çelësi ende funksionon. |
| is_access_token | Nëse një varg ka formën e një tokeni qasjeje OAuth: nga 1 deri në 512 karaktere, pa nisur me oe_. |
| is_sealed, MESSAGE_ENCRYPTION_FORMATS | Nëse trupi i një mesazhi është tekst i shifruar, dhe pesë zarfet që mund të emërtojë ingest-i. is_sealed është false për dy formatet SIGNED, trupat e të cilave mbërritën të hapur. Prandaj vjen i gatshëm, në vend që t'i lihet thirrësit ta nxjerrë vetë nga union-i. |
| LANGUAGES, resolve_language, language_by_code dhe is_rtl_language | Tabela e gjuhëve e përfshirë në paketë dhe kërkimet që i duhen një zgjedhësi gjuhe. |
| API_SCOPES | Fjalori i scope-ve, për një ekran krijimi çelësash. |
| WEBHOOK_EVENTS, WEBHOOK_SIGNATURE_HEADERS | Ngjarjet te të cilat mund të abonohet një endpoint dhe emrat e header-ave që mbart një dërgesë. |
| RULE_FIELDS, RULE_OPERATORS dhe RULE_ACTIONS | Fjalori nga i cili ndërtohen kushtet dhe veprimet e një rregulli. |
| PAGE_LIMITS | Vlera më e madhe dhe ajo e parazgjedhur e limit në shumicën e listave me faqe: 100 dhe 25. contacts.list, audiences.list_contacts dhe listat e tracking pranojnë deri në 200 me parazgjedhje 50, kurse temp_mail.list_messages pranon deri në 50. |
| ERROR_TYPES | Fjalori i ngrirë i gabimeve. |
| VERSION, __version__ | Versioni i paketës. |
| THREAD_SORTS, PEOPLE_SORTS, CONTACT_THREAD_SORTS dhe FILE_SORTS | Renditjet sipas të cilave mund të renditen listat e fijeve, personave, fijeve të një kontakti dhe skedarëve. |
| FILE_KINDS, FILE_DIRECTIONS, CONTACT_BLOCK_LISTS dhe CONTACT_PHOTO_TYPES | Filtrat e listës së skedarëve, dy listat e bllokimit të hapësirës së punës dhe tipat e imazheve që mund të jetë një foto kontakti. |
| BROADCAST_STATUSES, BROADCAST_RECIPIENT_FILTERS, SUPPRESSION_REASONS dhe WEBHOOK_REPLAY_ERROR_CODES | Ku ndodhet një transmetim, cilat kopje të tij të listohen, pse një adresë është e ndaluar dhe pse u refuzua një riluajtje webhook-u. |
| PROVIDER_IMPORT_RESOURCES, PROVIDER_IMPORT_STATUSES dhe PROVIDER_IMPORT_DOMAIN_STATES | Çfarë mund të sjellë një import nga ofruesi, ku ndodhet një ekzekutim dhe ku ndodhet secili domen që gjeti. |
| FILE_USAGES | Pse një skedar mbahet në vend që të mund të fshihet: received, sent, linked ose scheduled. |
| CREDENTIAL_KINDS, STEP_UP_METHODS dhe STEP_UP_ERROR_CODES | Cilin kredencial përshkruajnë me.get() dhe me.ping() (apiKey ose oauth), si kontrollohet një kod verifikimi (email ose totp), dhe kodet me të cilat mund të dështojë një verifikim. |
| FORM_STATUSES, FORM_SUBMISSION_STATUSES, FORM_FIELD_TYPES, FORM_STARTER_SLUGS dhe FORM_* | Vlerat që marrin një formular, fushat e tij dhe regjistrimet e tij, në gjashtëmbëdhjetë bashkësi: statuset, tipet e fushave, pikat e nisjes, fontet, gjerësitë dhe arsyet pse refuzohet një përgjigje. |
| BILLING_*, BRAND_*, DNS_*, DOMAIN_* dhe bashkësitë e tjera | Vlerat e çdo hapësire tjetër emrash, secila bashkësi e emërtuar sipas asaj që mban. |
Tipet
Çdo kërkesë dhe çdo përgjigje ka një të tillë, një TypedDict në openemail.types me të njëjtin emër si binjaku i tij në TypeScript. …Resource është ajo që kthen API-ja, ndërsa …Create, …Patch, …Input dhe …Send janë ato që jepni ju. Filtrat dhe opsionet për çdo thirrje janë argumente me fjalë kyçe, ndaj tipet TypeScript që i mbartin ato, si EmailListOptions, nuk kanë binjak këtu.
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'])Çelësat janë emrat camelCase të fushave të vetë API-së, si 'replyTo', 'scheduledAt' dhe 'nextCursor', në atë që dërgoni dhe në atë që kthehet. Vetëm argumentet e një metode janë në snake_case (idempotency_key=, label_ids=), dhe një argument që do të quhej from është from_=, si te emails.list dhe calendar.list_events.
mypy dhe pyright i lexojnë të dy, kështu që një çelës i shkruar gabim e rrëzon kontrollin e tipeve në vend që të arrijë te API-ja. mypy raporton Extra key "replyto" for TypedDict "EmailSend" për një trup dhe TypedDict "SentEmailResource" has no key "satus" për një përgjigje, dhe pyright thotë të njëjtën gjë me fjalët e veta. Një vlerë jashtë një bashkësie dështon në të njëjtën mënyrë, si status='sending-ish' te emails.list.
Ato ekzistojnë për kontrolluesin tuaj të tipeve. Në kohën e ekzekutimit çdo TypedDict është një dict i thjeshtë, kështu që importimi i një të tilli nuk kushton asgjë dhe asgjë nuk kontrollohet ndërsa programi ekzekutohet.
- Klienti:
Page,ApiKeyModedheRawBody.openemail.types.clientshtonAccessTokenProvider,AsyncAccessTokenProvider,HeaderValuedheQueryValue. - Gabimet:
ErrorTypedheFormFieldProblem. - Emailet:
EmailSend,EmailTranslate,EmailResource,SentEmailResource,EmailRecipientResource,EmailEventResource,EmailStatus,EmailSource,EmailTransport,EmailTrackingSummary,EmailTranslationResource,TranslationResource,RecipientStatus,BatchItemResourcedheBatchResultResource. - Shabllonet:
TemplateCreate,TemplatePatch,TemplateContent,TemplatePreviewInput,TemplateSend,TemplateResource,TemplateDetailResource,TemplateVersionResource,TemplatePreviewResource,TemplateSendsResource,SentTemplateEmailResource,DeletedTemplateResource,TemplateEngine,TemplateProp,TemplateSlot,TemplateStatusdheTemplateValueKind. - Gjurmimi:
TrackingResource,TrackingSummary,TrackingRecipientResource,TrackingLinkResource,TrackingOpenResource,TrackingClickResource,TrackingStatsResourcedheTrackingGrain. - Bisedat dhe draftet:
ThreadPatch,ThreadResource,ThreadSummaryResource,UpdatedThreadResource,TrashedThreadResource,SnoozedThreadResource,DraftInput,DraftResource,DraftSummaryResource,SavedDraftResourcedheDeletedDraftResource. - Etiketat, kontaktet, domenet dhe adresat:
LabelInput,LabelColor,LabelResource,DeletedLabelResource,ContactCreate,ContactPatch,ContactSource,ContactResource,ContactDetailResource,ContactAudienceResource,ContactAudiencesSet,DeletedContactResource,PeoplePage,PersonResource,DomainPatch,DomainResource,DomainDetailResource,DomainSendingState,DomainTracking,DomainTrackingState,AddressBookPage,AddressBookResource,AddressResourcedheSendableDomainResource. - Audiencat:
AudienceCreate,AudiencePatch,AudienceMemberSort,AudienceContactAdd,AudienceContactsBatch,AudienceImport,AudienceImportRow,AudienceResource,AudienceBuiltin,AudienceContactResource,AudienceMemberResource,RemovedAudienceContactResource,DeletedAudienceResource,EmptiedAudienceResource,AudienceBatchAddResource,AudienceBatchRemoveResource,AudienceImportResource,AudienceGrowthResource,AudienceGrowthTotals,AudienceGrowthSeriesdheAudienceGrowthBucket. - Transmetimet:
BroadcastCreate,BroadcastPreviewInput,BroadcastResource,BroadcastCounts,BroadcastStatus,BroadcastPreviewResource,BroadcastRecipientResource,BroadcastRecipientContentResource,BroadcastRecipientFilter,BroadcastStatsResource,BroadcastStatsTotalsdheBroadcastStatsBucket. - Rregullat:
RuleCreate,RulePatch,RuleTestInput,RuleResource,RuleRunResource,RuleTestResource,DeletedRuleResource,RuleCondition,RuleConditionInput,RuleAction,RuleActionType,RuleFielddheRuleOperator. - Webhook-et:
WebhookCreate,WebhookPatch,WebhookResource,CreatedWebhookResource,DeletedWebhookResource,WebhookDeliveryResource,WebhookDeliveryDetailResource,WebhookDeliveryAttempt,WebhookReplayResource,WebhookReplayRefusal,WebhookReplayErrorCode,WebhookTestResource,WebhookEvent,WebhookPayload,EmailOpenedData,EmailClickedData,EmailDownloadedDatadheFileEventData. - Kalendari dhe cilësimet:
CalendarOccurrenceResource,CalendarEventResource,CalendarAttendeeResource,SettingsPatchdheSettingsResource. - Rolet, anëtarët dhe çelësat:
RoleCreate,RolePatch,RoleResource,DeletedRoleResource,PermissionResource,MemberAdd,MemberPatch,MemberAddressGrant,MemberResource,MemberAddressResource,RemovedMemberResource,MemberAccess,KeyResourcedhePingResource. - Kutitë e përkohshme:
TempInboxCreate,TempInboxResource,CreatedTempInboxResource,DeletedTempInboxResource,TempDomainResource,TempMessageResource,TempMessagesResource,TempMessageDetailResourcedheDeletedTempMessageResource. - Të përbashkëta:
RecipientInput,AttachmentInput,AttachmentResource,MessageResource,MessageEncryption,MessageEncryptionFormat,TrackingRequest,TranslateOptions,SendTranslateOptions,LanguageResource,ApiScope,Permission,BuiltinRole,HitKind. - Tokenat e qasjes dhe kodet e verifikimit:
CredentialKind,ApiKeySelfResource,OauthTokenSelfResource,ApiKeyPingResource,OauthTokenPingResource,StepUpBegin,StepUpVerify,StepUpMethod,StepUpErrorCode,StepUpStatusResource,StepUpChallengeResourcedheStepUpVerifiedResource. - Formularët:
FormCreate,FormPatch,FormResource,FormDetailResource,FormDocument,FormField,FormCopy,FormStyle,FormSettings,FormSettingsInput,FormStats,FormAudience,FormStarterResource,FormStarterDetailResource,FormAnalyticsResource,FormSubmissionResource,FormAnswer,ResentFormConfirmationResource,FormSubscribeValues,FormSubscriptionResource,FormSubmittedEventDatadheFormConfirmedEventData. - Gjithçka tjetër që kthen API-ja, nga faturimi te hapësirat e punës, i ka tipet e veta me të njëjtët emra.
Bashkësitë e vargjeve
Bashkësitë e vlerave janë konstante në openemail.constants, secila e emërtuar sipas asaj që mban, me një atribut për çdo vlerë: EMAIL_STATUSES.SENT është 'sent'. Përshkojeni njërën për të marrë çdo vlerë, kontrolloni me in një vlerë që erdhi nga jashtë, dhe numërojini vlerat me len(). Çdo anëtar është i tipizuar si Final, kështu që mypy dhe pyright e lexojnë EMAIL_STATUSES.SENT si literalin 'sent' dhe e pranojnë kudo ku pritet një EmailStatus.
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']))Vetë openemail eksporton 108 konstante: VERSION, LANGUAGES, PAGE_LIMITS, PAY_AS_YOU_GO_LIMITS_CENTS dhe 104 nga bashkësitë, ato që një aplikacion i përdor më shpesh. Importojini të tjerat, si EMAIL_STATUSES dhe TEMPLATE_STATUSES, nga openemail.constants, ku ndodhet çdo bashkësi.
Një endpoint që kjo ende nuk e mbështjell
Një publikim i SDK-së nuk duhet të jetë kurrë ajo që qëndron midis jush dhe një endpoint-i që tashmë funksionon. client.raw.request() merr një shteg dhe argumente me fjalë kyçe dhe kthen trupin e analizuar, me kredencialin, URL-në bazë, timeout-in dhe politikën e riprovimeve të klientit të zbatuara.
result = client.raw.request( '/something-new', method='POST', query={'dryRun': True}, body={'name': 'Invoices'}, repeatable=True,) print(result)Një GET riprovohet si çdo lexim tjetër. Çdo metodë tjetër dërgohet një herë të vetme, veç nëse jepni repeatable=True, që është pohimi juaj se ajo mund të dërgohet dy herë. query i anashkalon vlerat që janë None ose bosh, ndërsa api_key= dhe timeout= funksionojnë njësoj si në çdo metodë tjetër. Te AsyncOpenEmail thirrja pritet me await.
Shtegu duhet të nisë me një / të vetme. Çdo gjë tjetër, si edhe një shteg URL-ja përfundimtare e të cilit do të dilte jashtë origjinës së API-së, ngre ValueError para se të dërgohet kërkesa, kështu që kredenciali nuk arrin kurrë te një host tjetër.
Çfarë nuk bën me qëllim
- Nuk validon asnjë trup kërkese. Skema e serverit është kopja e vetme e rregullave, dhe një kopje e dytë këtu do të përfundonte duke refuzuar një adresë që një server më i ri e pranon, në një version që dikush e ka fiksuar dy vjet më parë.
- Varet nga
httpx,anyiodhetyping-extensions, dhe nga asgjë tjetër. - Në dalje konverton vetëm atë që JSON nuk mund ta mbartë ashtu siç është:
bytesnëcontenttë një bashkëngjitjeje bëhen base64, njëdatetimebëhet një çast ISO 8601 në UTC, njëdatenjë datë ISO dhe njësetnjë listë. Një marrës i vetëm nëto,ccosebccmbështillet në një listë. - E rimodelon një përgjigje vetëm në një mënyrë: vargu
datai një koleksioni nxirret jashtë zarfit të vet. Një listë me faqe e kthen siitemspërkrahhasMoredhenextCursor,contacts.list_peoplesiitemspërkrahhasMore,nextCursordheseen,emails.send_batchsiitemspërkrahsentdhefailed,templates.list_sendssiitemspërkrahtotal,pagedhepageSize,temp_mail.list_messagessiitemspërkrahhasMore,nextCursordheexpiresAt, kurseaddresses.listsiaddressespërkrahunrestricted,domains,hasMoredhenextCursor.imports.list_failuresështë e vetmja listë e lënë ashtu siç e dërgon API-ja,{'object': ..., 'data': [...], 'nextCursor': ...}. Kudo tjetër është një listë e thjeshtë. Çdo burim brenda saj e ruan formën HTTP të dokumentuar.
Kontrolli i përputhshmërisë i paketës e mban këtë të ndershme. Ai e ekzekuton çdo metodë pranë binjakut të saj në TypeScript, me të njëjtat argumente dhe me çdo opsion të vendosur, dhe dështon kur një metodë mungon, merr opsione të ndryshme, dërgon një kërkesë tjetër ose kthen një vlerë tjetër.