타입이 있는 SDK
API를 타입이 있는 메서드로.
@openemail/sdk는 OpenEmail API용 의존성 없는 TypeScript 클라이언트로, 빌드마다 API의 OpenAPI 문서와 대조됩니다.
한마디로
SDK란 무엇인가요?
SDK(소프트웨어 개발 키트)는 HTTP API를 한 언어의 함수와 타입으로 감싼 것입니다. 요청을 직접 만드는 대신 메서드를 호출하고, 무엇이든 보내기 전에 에디터가 인수를 검사합니다.
0
런타임 의존성
30초
시도당 타임아웃
2
반복 가능한 호출의 재시도
작동 방식
빌드마다 API와 대조
일치 검사가 OpenAPI 문서를 읽고, 어긋나면 빌드를 실패시킵니다. 빠진 메서드, 작업이 없는 메서드, 잘못된 스코프가 대상입니다.
커서 루프 없이 페이지 넘기기
iterate()는 커서를 따라가며 루프가 도달할 때만 각 페이지를 가져오므로, break 하면 요청도 멈춥니다.
두 번 보내지 않는 재시도
반복 가능한 호출은 백오프를 두고 최대 두 번까지 재시도합니다. 발송은 모든 시도에 같은 멱등성 키를 쓰므로, 재시도하면 원래 메시지가 반환됩니다.
첫 이메일 보내기
bun add @openemail/sdk로 설치하고, OPENEMAIL_API_KEY에 설정, API 키에서 받은 키를 넣으세요.
import { init, openemail } from '@openemail/sdk' init({ apiKey: process.env.OPENEMAIL_API_KEY }) const email = await openemail.emails.send({ from: 'Acme Billing <[email protected]>', to: '[email protected]', subject: 'Your September invoice', html: '<p>Invoice attached.</p>',}) console.log(email.id, email.status)제공 기능
지금 제품에 있는 것
Node, Bun, Deno
Node 20 이상, ESM 또는 CommonJS를 지원하며, 직접 만든 fetch도 받습니다.
키를 먼저 검사
접두사가 틀린 키는 401이 아니라 생성 시점에 예외를 던집니다.
클라이언트 하나, 워크스페이스 여럿
호출 하나에 apiKey를 넘기면 다른 워크스페이스를 대신해 작업합니다.
분기할 수 있는 오류
OpenEmailApiError는 status, code, requestId에 더해 isRateLimited와 isNotFound를 담습니다.
활용 팁
제대로 활용하기
- 01
키는 환경 변수에
OPENEMAIL_API_KEY를 설정하고 공유 클라이언트가 읽게 하면, 소스 코드에 키가 남지 않습니다.
- 02
클라이언트는 하나만
클라이언트는 전용 모듈에서 한 번만 만들고, 다른 곳에서는 import 하세요.
- 03
상태를 확인하세요
resolve된 발송도 대기 중, 예약됨, 실패 상태일 수 있으니, 전달됐다고 보기 전에 status를 확인하세요.
현재 상황
알아두면 좋은 점
- 릴리스 자동화
- 배포는 수동이라, 버전은 변경이 반영될 때가 아니라 누군가 실행할 때 npm에 올라갑니다.
- 다른 언어
- TypeScript만 있습니다. Python, Go, Ruby 클라이언트는 아직 없습니다.
질문
자주 묻는 질문
더 보기