Java
헬퍼와 상수
클라이언트의 메서드 외에 패키지가 정의하는 것.
정적 메서드
| 메서드 | 설명 |
|---|---|
| new OpenEmail(), OpenEmail.builder() | 클라이언트입니다. 둘 다 생략한 값을 환경에서 읽습니다. |
| OpenEmail.createTempMail() | API 키를 담지 않는 일회용 받은편지함 클라이언트. |
| OpenEmail.verifyWebhookSignature() | 전달의 서명을 상수 시간으로 확인하고 이벤트를 반환합니다. 5분의 허용 시간은 Duration으로 바꿀 수 있습니다. |
| OpenEmail.toBase64() | 첨부 파일의 바이트를 나타내는 base64 텍스트. |
| OpenEmail.isApiKey() | 값이 oe_live_ 또는 oe_test_ 형태인지 확인합니다. 형태 검사일 뿐, 키가 아직 유효하다는 증거는 아닙니다. |
| OpenEmail.isAccessToken() | 값이 OAuth 액세스 토큰의 형태인지 여부입니다: 1~512자이고 oe_로 시작하지 않아야 합니다. |
| OpenEmail.isSealed() | 메시지의 본문이 암호문인지 여부입니다. 두 서명 형식에서는 본문이 평문으로 도착했으므로 false입니다. |
| OpenEmail.resolveLanguage(), OpenEmail.languageByCode(), OpenEmail.isRtlLanguage() | 언어 선택기에 필요한 조회 기능으로, 함께 제공되는 Languages.ALL 표를 사용합니다. |
| client.raw().request() | 아직 메서드가 없는 경로를 클라이언트의 자격 증명과 재시도 정책으로 호출합니다. |
상수
TypeScript SDK가 내보내는 모든 값 집합은 uk.openemail.constants의 final 클래스이며, 멤버마다 같은 이름의 상수가 하나씩 있습니다. 그래서 WebhookEvents.EMAIL_DELIVERED는 email.delivered입니다. values()는 집합 전체를 반환하므로, 외부에서 들어온 값을 확인하는 데에도 쓸 수 있습니다.
List<String> events = WebhookEvents.values();List<String> scopes = List.of(ApiScopes.EMAILS_SEND, ApiScopes.THREADS_READ);boolean known = events.contains("email.delivered"); System.out.println(events.size() + " " + String.join(",", scopes) + " " + PageLimits.MAX_LIMIT + " " + known);| 상수 | 담긴 내용 |
|---|---|
| OpenEmail.VERSION | 패키지 버전입니다. |
| ApiScopes | 키 생성 화면에서 쓸 스코프 어휘입니다. |
| WebhookEvents, WebhookSignatureHeaders | 엔드포인트가 구독할 수 있는 이벤트와, 전달 요청에 담기는 헤더 이름입니다. |
| ErrorTypes | ApiException.type()이 반환하는 오류 어휘. |
| PageLimits | 대부분의 페이지 목록에서 limit의 최댓값과 기본값인 MAX_LIMIT과 DEFAULT_LIMIT: 100과 25. 몇몇 목록은 더 많이 받으며, 각 메서드의 참조에 나와 있습니다. |
| RuleFields, RuleOperators, RuleActions | 규칙의 조건과 동작을 구성하는 어휘입니다. |
| MessageEncryptionFormats | 수신 처리가 식별할 수 있는 다섯 가지 봉투. 그중 셋은 봉인되어 있습니다. |
| CredentialKinds, StepUpMethods, StepUpErrorCodes | me().get과 me().ping이 설명하는 자격 증명의 종류, 인증 코드를 확인하는 방식, 그리고 확인이 실패할 때의 코드. |
| ThreadSorts, PeopleSorts, FileSorts와 그 밖의 *Sorts | 목록을 정렬할 수 있는 순서. |
| FormStatuses, BroadcastStatuses, SuppressionReasons와 그 밖의 집합 | 리소스의 필드가 가질 수 있는 값. 각 집합은 담고 있는 것의 이름을 따릅니다. |
| Languages.ALL | 번역 발송이나 미리보기가 받는 모든 언어이며, 각각의 코드, 이름, 쓰기 방향이 함께 있습니다. |
객체
응답은 디코딩된 JSON인 Map<String, Object>입니다. 패키지는 응답의 모양을 다듬는 경우에만 자체 타입을 만듭니다. 각각은 uk.openemail.result의 불변 record이며, for 루프로 행을 순회할 수 있습니다.
| 클래스 | 담는 것 |
|---|---|
| Page | items, hasMore, nextCursor. 페이지로 나뉘는 모든 list에서 옵니다. |
| PeoplePage | 같은 내용에 seen이 더해진 것으로, contacts().listPeople이 반환합니다. |
| TempMessagesPage | 같은 내용에 expiresAt이 더해진 것으로, tempMail().listMessages가 반환합니다. |
| AddressBookPage, AddressBook | unrestricted, addresses, domains이며, addresses().list(hasMore와 nextCursor 포함)와 addresses().listAll이 반환합니다. |
| BatchResult | items, sent, failed이며, emails().sendBatch가 반환합니다. |
| TemplateSends | items, total, page, pageSize이며, templates().listSends가 반환합니다. |
| PagedIterable | 모든 페이지에 대한 순회로, 각 iterate가 반환합니다. for 루프, stream(), toList()로 사용합니다. |
| Body, RequestOptions | 호출이 받는 것: 순서를 유지하고 null 값도 받는 요청 본문과, 한 번의 호출에 대한 옵션. |
패키지가 던지는 모든 예외는 OpenEmailException입니다. ApiException과 그 하위 클래스, NetworkException, WebhookSignatureException이 있습니다. 호출 자체의 실수는 아무것도 보내기 전에 IllegalArgumentException을 던집니다.
의도적으로 하지 않는 것
- 요청 본문을 검증하지 않습니다. 규칙의 사본은 서버 스키마 하나뿐이며, 여기에 두 번째 사본을 두면 언젠가는 2년 전에 고정해 둔 버전에서 최신 서버라면 받아들일 주소를 거부하게 됩니다.
- 응답의 모양을 바꾸는 경우는 하나뿐입니다. 컬렉션의
data목록을 봉투에서 꺼내 위의 타입 중 하나에 담습니다. 그 밖의 응답은 API의 camelCase 키 그대로, API가 보낸 대로 돌아옵니다. - 비동기 메서드는 없습니다. 호출은 응답이 올 때까지 스레드를 차단하지만, 가상 스레드에서는 그 비용이 작습니다.