Kalo te dokumentacioni
Python

Tipet dhe ndihmësit

Çfarë tjetër eksporton paketa.

Eksportet në kohë ekzekutimi

EksportiÇfarë është
init, openemailKonfiguroni 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_clientVetë 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_clientNjë 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ë.
AsyncOpenEmailI njëjti klient, ku çdo metodë thirret me await, në asyncio ose trio.
create_temp_mail, create_async_temp_mailNjë klient për kuti të përkohshme që nuk mban asnjë çelës API, dhe binjaku i tij asinkron.
OpenEmailError, OpenEmailApiError, OpenEmailNetworkError dhe WebhookVerificationErrorGabimet 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_signatureNë kohë konstante, me një dritare riluajtjeje. Kthen payload-in e analizuar dhe ngre WebhookVerificationError në çdo dështim.
to_base64Base64 për bajtet e bashkëngjitjeve, nga bytes, bytearray ose memoryview.
is_api_keyNëse një varg e ka formën oe_live_ ose oe_test_. Një kontroll forme, jo provë se çelësi ende funksionon.
is_access_tokenNë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_FORMATSNë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_languageTabela e gjuhëve e përfshirë në paketë dhe kërkimet që i duhen një zgjedhësi gjuhe.
API_SCOPESFjalori i scope-ve, për një ekran krijimi çelësash.
WEBHOOK_EVENTS, WEBHOOK_SIGNATURE_HEADERSNgjarjet te të cilat mund të abonohet një endpoint dhe emrat e header-ave që mbart një dërgesë.
RULE_FIELDS, RULE_OPERATORS dhe RULE_ACTIONSFjalori nga i cili ndërtohen kushtet dhe veprimet e një rregulli.
PAGE_LIMITSVlera 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_TYPESFjalori i ngrirë i gabimeve.
VERSION, __version__Versioni i paketës.
THREAD_SORTS, PEOPLE_SORTS, CONTACT_THREAD_SORTS dhe FILE_SORTSRenditjet 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_TYPESFiltrat 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_CODESKu 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_USAGESPse një skedar mbahet në vend që të mund të fshihet: received, sent, linked ose scheduled.
CREDENTIAL_KINDS, STEP_UP_METHODS dhe STEP_UP_ERROR_CODESCilin 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 tjeraVlerat 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.

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'])

Ç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, ApiKeyMode dhe RawBody. openemail.types.client shton AccessTokenProvider, AsyncAccessTokenProvider, HeaderValue dhe QueryValue.
  • Gabimet: ErrorType dhe FormFieldProblem.
  • Emailet: EmailSend, EmailTranslate, EmailResource, SentEmailResource, EmailRecipientResource, EmailEventResource, EmailStatus, EmailSource, EmailTransport, EmailTrackingSummary, EmailTranslationResource, TranslationResource, RecipientStatus, BatchItemResource dhe BatchResultResource.
  • Shabllonet: TemplateCreate, TemplatePatch, TemplateContent, TemplatePreviewInput, TemplateSend, TemplateResource, TemplateDetailResource, TemplateVersionResource, TemplatePreviewResource, TemplateSendsResource, SentTemplateEmailResource, DeletedTemplateResource, TemplateEngine, TemplateProp, TemplateSlot, TemplateStatus dhe TemplateValueKind.
  • Gjurmimi: TrackingResource, TrackingSummary, TrackingRecipientResource, TrackingLinkResource, TrackingOpenResource, TrackingClickResource, TrackingStatsResource dhe TrackingGrain.
  • Bisedat dhe draftet: ThreadPatch, ThreadResource, ThreadSummaryResource, UpdatedThreadResource, TrashedThreadResource, SnoozedThreadResource, DraftInput, DraftResource, DraftSummaryResource, SavedDraftResource dhe DeletedDraftResource.
  • 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, AddressResource dhe SendableDomainResource.
  • Audiencat: AudienceCreate, AudiencePatch, AudienceMemberSort, AudienceContactAdd, AudienceContactsBatch, AudienceImport, AudienceImportRow, AudienceResource, AudienceBuiltin, AudienceContactResource, AudienceMemberResource, RemovedAudienceContactResource, DeletedAudienceResource, EmptiedAudienceResource, AudienceBatchAddResource, AudienceBatchRemoveResource, AudienceImportResource, AudienceGrowthResource, AudienceGrowthTotals, AudienceGrowthSeries dhe AudienceGrowthBucket.
  • Transmetimet: BroadcastCreate, BroadcastPreviewInput, BroadcastResource, BroadcastCounts, BroadcastStatus, BroadcastPreviewResource, BroadcastRecipientResource, BroadcastRecipientContentResource, BroadcastRecipientFilter, BroadcastStatsResource, BroadcastStatsTotals dhe BroadcastStatsBucket.
  • Rregullat: RuleCreate, RulePatch, RuleTestInput, RuleResource, RuleRunResource, RuleTestResource, DeletedRuleResource, RuleCondition, RuleConditionInput, RuleAction, RuleActionType, RuleField dhe RuleOperator.
  • Webhook-et: WebhookCreate, WebhookPatch, WebhookResource, CreatedWebhookResource, DeletedWebhookResource, WebhookDeliveryResource, WebhookDeliveryDetailResource, WebhookDeliveryAttempt, WebhookReplayResource, WebhookReplayRefusal, WebhookReplayErrorCode, WebhookTestResource, WebhookEvent, WebhookPayload, EmailOpenedData, EmailClickedData, EmailDownloadedData dhe FileEventData.
  • Kalendari dhe cilësimet: CalendarOccurrenceResource, CalendarEventResource, CalendarAttendeeResource, SettingsPatch dhe SettingsResource.
  • Rolet, anëtarët dhe çelësat: RoleCreate, RolePatch, RoleResource, DeletedRoleResource, PermissionResource, MemberAdd, MemberPatch, MemberAddressGrant, MemberResource, MemberAddressResource, RemovedMemberResource, MemberAccess, KeyResource dhe PingResource.
  • Kutitë e përkohshme: TempInboxCreate, TempInboxResource, CreatedTempInboxResource, DeletedTempInboxResource, TempDomainResource, TempMessageResource, TempMessagesResource, TempMessageDetailResource dhe DeletedTempMessageResource.
  • 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, StepUpChallengeResource dhe StepUpVerifiedResource.
  • Formularët: FormCreate, FormPatch, FormResource, FormDetailResource, FormDocument, FormField, FormCopy, FormStyle, FormSettings, FormSettingsInput, FormStats, FormAudience, FormStarterResource, FormStarterDetailResource, FormAnalyticsResource, FormSubmissionResource, FormAnswer, ResentFormConfirmationResource, FormSubscribeValues, FormSubscriptionResource, FormSubmittedEventData dhe FormConfirmedEventData.
  • 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.

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']))

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.

escape_hatch.py
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, anyio dhe typing-extensions, dhe nga asgjë tjetër.
  • Në dalje konverton vetëm atë që JSON nuk mund ta mbartë ashtu siç është: bytes në content të një bashkëngjitjeje bëhen base64, një datetime bëhet një çast ISO 8601 në UTC, një date një datë ISO dhe një set një listë. Një marrës i vetëm në to, cc ose bcc mbështillet në një listë.
  • E rimodelon një përgjigje vetëm në një mënyrë: vargu data i një koleksioni nxirret jashtë zarfit të vet. Një listë me faqe e kthen si items përkrah hasMore dhe nextCursor, contacts.list_people si items përkrah hasMore, nextCursor dhe seen, emails.send_batch si items përkrah sent dhe failed, templates.list_sends si items përkrah total, page dhe pageSize, temp_mail.list_messages si items përkrah hasMore, nextCursor dhe expiresAt, kurse addresses.list si addresses përkrah unrestricted, domains, hasMore dhe nextCursor. 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.