Zur Dokumentation springen
SDK

Typen und Helfer

Was das Paket sonst noch exportiert.

Laufzeit-Exporte

ExportWas es ist
`init`, `openemail`Konfigurieren Sie den gemeinsamen Client einmal, danach importieren Sie openemail überall. Er baut sich aus OPENEMAIL_API_KEY selbst auf, wenn init nie gelaufen ist.
`getClient`, `resetClient`Der gemeinsame Client selbst, und eine Möglichkeit, ihn zu verwerfen, sodass der nächste Aufruf einen frischen erzeugt, genau das braucht ein Test zwischen zwei Fällen.
`createOpenEmail`, `createClient`, `OpenEmail`Ein eigenständiger Client. createOpenEmail liest alles, was Sie weglassen, aus der Umgebung (createClient ist dieselbe Funktion), und new OpenEmail (zugleich der Default-Export) nimmt nur das, was Sie übergeben.
`createTempMail`Ein Client für Wegwerf-Postfächer, der keinen API-Key mitführt, und der einzige Teil des Pakets, der im Browser läuft.
`OpenEmailApiError`, `OpenEmailNetworkError`Die beiden Fehlerklassen.
`verifyWebhookSignature`Konstante Laufzeit, mit einem Replay-Fenster. Löst mit dem geparsten Payload auf und wirft bei jedem Fehlschlag.
`toBase64`Gestückelt, für die Bytes von Anhängen.
`isApiKey`Ob ein String die Form oe_live_ oder oe_test_ hat. Eine Formprüfung, kein Beleg dafür, dass der Key noch funktioniert.
`isSealed`, `MESSAGE_ENCRYPTION_FORMATS`Ob der Body einer Nachricht Chiffretext ist, und die fünf Envelopes, die der Eingang benennen kann. isSealed ist false für die beiden SIGNED-Formate, deren Bodys im Klartext eintrafen, und genau deshalb wird es mitgeliefert, statt es einem Aufrufer zu überlassen, es aus der Union abzuleiten.
`LANGUAGES`, `resolveLanguage`, `languageByCode`, `isRtlLanguage`Die mitgelieferte Sprachtabelle und die Nachschlagefunktionen, die eine Sprachauswahl braucht.
`API_SCOPES`Das Scope-Vokabular, für einen Bildschirm zum Anlegen von Keys.
`WEBHOOK_EVENTS`, `WEBHOOK_SIGNATURE_HEADERS`Die Events, die ein Endpunkt abonnieren kann, und die Namen der Header, die eine Zustellung mitführt.
`RULE_FIELDS`, `RULE_OPERATORS`, `RULE_ACTIONS`Das Vokabular, aus dem die Bedingungen und Aktionen einer Regel aufgebaut werden.
`PAGE_LIMITS`Das größte und das voreingestellte limit einer paginierten Liste: 100 und 25.
`ERROR_TYPES`Das eingefrorene Fehlervokabular.
`VERSION`Die Version des Pakets.

Typen

Jeder Request und jede Antwort hat einen, und sie werden aus dem Paket-Root exportiert. Es gibt keine tiefen Imports, das Dateilayout bleibt also ein Implementierungsdetail, das sich ohne Major-Version verschieben lässt. …Resource ist, was die API zurückgibt, …Create, …Patch, …Input und …Send sind, was Sie übergeben, und …Options enthält Filter und Optionen pro Aufruf.

  • Client: ClientOptions, TempMailOptions, TransportOptions, RequestOptions, RequestScope, SendScope, InboxScope, ListOptions, Page, ApiKeyMode, FetchLike.
  • Fehler: ErrorType, ApiErrorPayload, ApiErrorProps.
  • E-Mails: EmailSend, EmailListOptions, EmailTranslate, EmailResource, SentEmailResource, EmailRecipientResource, EmailEventResource, EmailStatus, EmailSource, EmailTransport, EmailTrackingSummary, EmailTranslationResource, TranslationResource, RecipientStatus, BatchItemResource, BatchResultResource.
  • Vorlagen: TemplateCreate, TemplatePatch, TemplateContent, TemplateListOptions, TemplatePreviewInput, TemplateSend, TemplateResource, TemplateDetailResource, TemplateVersionResource, TemplatePreviewResource, SentTemplateEmailResource, DeletedTemplateResource, TemplateEngine, TemplateProp, TemplateSlot, TemplateStatus, TemplateValueKind.
  • Tracking: TrackingListOptions, TrackingStatsOptions, TrackingHitOptions, TrackingResource, TrackingSummary, TrackingRecipientResource, TrackingLinkResource, TrackingOpenResource, TrackingClickResource, TrackingStatsResource, TrackingGrain.
  • Threads und Entwürfe: ThreadListOptions, ThreadPatch, ThreadResource, ThreadSummaryResource, UpdatedThreadResource, TrashedThreadResource, SnoozedThreadResource, DraftInput, DraftListOptions, DraftResource, DraftSummaryResource, SavedDraftResource, DeletedDraftResource.
  • Labels, Kontakte, Domains und Adressen: LabelInput, LabelColor, LabelResource, SavedLabelResource, DeletedLabelResource, ContactCreate, ContactPatch, ContactListOptions, ContactSource, ContactResource, ContactDetailResource, ContactAudienceResource, DeletedContactResource, DomainPatch, DomainResource, DomainDetailResource, DomainSendingState, DomainTracking, DomainTrackingState, AddressBookResource, AddressResource, SendableDomainResource.
  • Regeln: RuleCreate, RulePatch, RuleListOptions, RuleRunListOptions, RuleTestInput, RuleResource, RuleRunResource, RuleTestResource, DeletedRuleResource, RuleCondition, RuleConditionInput, RuleAction, RuleActionType, RuleField, RuleOperator.
  • Webhooks: WebhookCreate, WebhookPatch, WebhookResource, CreatedWebhookResource, DeletedWebhookResource, WebhookDeliveryResource, WebhookTestResource, WebhookEvent, WebhookPayload, EmailOpenedData, EmailClickedData, EmailDownloadedData, VerifyWebhookProps, WebhookSignatureHeaders.
  • Kalender und Einstellungen: CalendarRangeOptions, CalendarOccurrenceResource, CalendarEventResource, CalendarAttendeeResource, SettingsPatch, SettingsResource.
  • Rollen, Mitglieder und Keys: RoleCreate, RolePatch, RoleDeleteOptions, RoleResource, DeletedRoleResource, PermissionResource, MemberAdd, MemberPatch, MemberAddressGrant, MemberResource, MemberAddressResource, RemovedMemberResource, MemberAccess, KeyResource, PingResource.
  • Wegwerf-Postfächer: TempInboxCreate, TempMessageListOptions, TempInboxResource, CreatedTempInboxResource, DeletedTempInboxResource, TempDomainResource, TempMessageResource, TempMessagesResource, TempMessageDetailResource, DeletedTempMessageResource.
  • Gemeinsam genutzt: RecipientInput, AttachmentInput, AttachmentResource, MessageResource, MessageEncryption, MessageEncryptionFormat, TrackingRequest, TranslateOptions, SendTranslateOptions, LanguageResource, ApiScope, Permission, BuiltinRole, HitKind.

Ein Endpunkt, den dies noch nicht kapselt

Ein SDK-Release sollte nie zwischen Ihnen und einem Endpunkt stehen, der bereits funktioniert. openemail.raw.request() nimmt einen Pfad und Optionen entgegen und löst mit dem geparsten Body auf, wobei Key, Basis-URL, Timeout und Retry-Policy des Clients angewendet werden.

escape-hatch.ts
const result = await openemail.raw.request<Whatever>('/something-new', {  method: 'POST',  query: { dryRun: true },  body: { name: 'Invoices' },  repeatable: true,})

Ein GET wird wie jeder andere Lesevorgang wiederholt. Jede andere Methode wird genau einmal gesendet, sofern Sie nicht repeatable: true übergeben, womit Sie zusichern, dass sie zweimal gesendet werden darf. query überspringt Werte, die undefined sind, und signal funktioniert wie bei jeder anderen Methode.

Was es bewusst nicht tut

  • Es validiert keinen Request-Body. Das Schema des Servers ist die einzige Kopie der Regeln, und eine zweite Kopie hier würde irgendwann eine Adresse ablehnen, die ein neuerer Server akzeptiert, in einer Version, die jemand vor zwei Jahren gepinnt hat.
  • Es liefert kein zod und überhaupt keine Laufzeitabhängigkeiten mit.
  • Es formt eine Antwort auf nur eine einzige Weise um: Das data-Array einer Collection wird aus seinem Envelope gehoben. Eine paginierte Liste gibt es als items neben hasMore und nextCursor zurück, emails.sendBatch als items neben sent und failed, tempMail.listMessages als items neben expiresAt und addresses.list als addresses neben unrestricted und domains. Überall sonst ist es ein einfaches Array. Jede darin enthaltene Ressource behält die dokumentierte HTTP-Form.

Der Parity-Check des Pakets hält das ehrlich. Er lässt den Build fehlschlagen, wenn eine dokumentierte Operation keine Methode hat, wenn eine Methode auf eine Operation zeigt, die das OpenAPI-Dokument nicht kennt, oder einen abweichenden Request sendet, und wenn eine Methode Scopes deklariert, die die Operation gar nicht verlangt.