SDK Python
Le client Python officiel de l'API OpenEmail. Synchrone et asynchrone, entièrement typé, et une méthode pour chaque endpoint.
Ce que c'est
Un seul paquet pour toute l'API (envoi, modèles, suivi, fils, brouillons, libellés, contacts, audiences, formulaires d'inscription, diffusions, domaines, règles, webhooks, agenda, réglages, rôles, membres, suppressions, fichiers et boîtes jetables), avec un TypedDict pour chaque requête et chaque réponse, deux classes d'erreur, des nouvelles tentatives qui ne peuvent pas dupliquer un envoi et un vérificateur de signatures de webhooks. Il fonctionne sur Python 3.10 et plus récent, et ne dépend que de httpx, anyio et typing-extensions. Il porte une clé API d'espace de travail ou un jeton d'accès OAuth : sa place est donc sur un serveur ou dans un outil qui s'exécute sur votre propre machine, et les boîtes jetables sont la seule partie qui n'a besoin d'aucun identifiant.
pip install openemailimport os from openemail import init, openemail init(os.environ['OPENEMAIL_API_KEY']) openemail.emails.send({ 'from': 'Acme Billing <[email protected]>', 'to': '[email protected]', 'subject': 'Your September invoice', 'html': '<p>Invoice attached.</p>',})Synchrone et asynchrone
OpenEmail est synchrone, et AsyncOpenEmail est son équivalent asynchrone, avec les mêmes options et les mêmes méthodes, chacune appelée avec await. Il fonctionne sur asyncio et trio, et un iterate paginé devient un async for.
import asyncio from openemail import AsyncOpenEmail async def main() -> None: async with AsyncOpenEmail() as client: email = await client.emails.send({ 'from': 'Acme Billing <[email protected]>', 'to': '[email protected]', 'subject': 'Your September invoice', 'html': '<p>Invoice attached.</p>', }) async for thread in client.threads.iterate(folder='inbox'): print(thread['id']) print(email['id'], email['status']) asyncio.run(main())Le client openemail partagé est synchrone : construisez donc vous-même un AsyncOpenEmail, une seule fois, et fermez-le avec aclose() ou un bloc async with.
Où aller
Il enveloppe la même API que tous les autres clients
Tout ce qui est ici recouvre la même surface que celle documentée par la référence de l'API : lisez celle-ci pour savoir ce que fait un point de terminaison, et ceci pour savoir comment l'appeler. Il y a une méthode pour chaque opération documentée, et le contrôle de parité du paquet lit le document OpenAPI pour le prouver.
Chaque méthode TypeScript a son équivalent Python sous le même nom en snake_case, et le contrôle de parité exécute chaque paire avec les mêmes arguments et échoue à moins qu'elles n'envoient la même requête, ne réessaient de la même façon et ne renvoient la même valeur.