Znalostní báze
Typovaná SDK
Nejdřív TypeScript klient, pak zbytek.
Podrobnosti
- Publikováno na npm a v provozu. @openemail/sdk je kompletní TypeScript klient bez závislostí, publikovaný jako ESM i CommonJS, s jednou metodou pro každou zdokumentovanou operaci, kterou API obsluhuje, plus dva neautentizované meta endpointy, které generátor klientů potřebuje, s klíčem čteným z OPENEMAIL_API_KEY, 30sekundovým časovým limitem na každý pokus, dvěma opakováními, přepsáním apiKey pro jednotlivé volání kvůli procesu obsluhujícímu více pracovních prostorů a s emails.iterate() pro stránkování seznamu bez psaní smyčky nad kurzorem. Běží na Node 18 a novějším, Workers, Deno, Bun i v prohlížeči. Klíč se špatným prefixem vyhodí chybu už při vytváření klienta, místo aby vrátil 401 při prvním volání; kontroluje se jen prefix a nic víc, takže správně utvořený klíč, který byl odvolán, stejně selže až na drátě.
- U serveru ho drží kontrola parity, která při každém buildu čte dokument OpenAPI a selže, jakmile se oba rozejdou: metoda mířící na operaci, kterou specifikace nemá, zdokumentovaná operace bez metody, seznam oprávnění, který neodpovídá tomu, co operace vyžaduje, jmenný prostor s metodami a bez záznamu v referenci, nebo metoda, která neodesílá požadavek uvedený v jejím vlastním manifestu. Vypíše, co dokázala, a dnes to zní 116 metod SDK pokrývajících všech 104 zdokumentovaných operací. Vedle ní stojí dva generátorové skripty, které odmítnou vypsat operaci, jež je nezařazená nebo napsaná s dlouhou pomlčkou. Proto klient není obal dopsaný dodatečně. Nemůže se za API opozdit o jedno vydání.
- Chybí instalatérská práce kolem vydávání. Balíček je na npm, takže
bun add @openemail/sdkfunguje, ale neexistuje workflow pro vydání: publikování je ruční spuštění preflightu, buildu abun publish, což znamená, že verze dorazí na npm, když si někdo vzpomene, ne když změna přistane. API, na které klient ve výchozím stavu míří, je zapnuté a odpovídá. - TypeScript je jediný jazyk a dokument OpenAPI je pro zbytek záměrnou odpovědí namísto pěti ručně psaných klientů, kteří zaostávají každý jinou rychlostí. V repozitáři není žádný klient pro Python, Go ani Ruby a nebude, dokud právě ten dokument nebude tím, z čeho se generují.