@bolta-io/cli 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/CLAUDE.md +36 -9
  3. package/README.md +43 -9
  4. package/dist/bin/bolta.js +2 -0
  5. package/dist/bin/bolta.js.map +1 -1
  6. package/dist/src/client/bolta-client.d.ts +14 -10
  7. package/dist/src/client/bolta-client.d.ts.map +1 -1
  8. package/dist/src/client/bolta-client.js +119 -43
  9. package/dist/src/client/bolta-client.js.map +1 -1
  10. package/dist/src/commands/business-status/check.d.ts +3 -0
  11. package/dist/src/commands/business-status/check.d.ts.map +1 -0
  12. package/dist/src/commands/business-status/check.js +25 -0
  13. package/dist/src/commands/business-status/check.js.map +1 -0
  14. package/dist/src/commands/business-status/index.d.ts +3 -0
  15. package/dist/src/commands/business-status/index.d.ts.map +1 -0
  16. package/dist/src/commands/business-status/index.js +22 -0
  17. package/dist/src/commands/business-status/index.js.map +1 -0
  18. package/dist/src/commands/guide/index.d.ts.map +1 -1
  19. package/dist/src/commands/guide/index.js +67 -2
  20. package/dist/src/commands/guide/index.js.map +1 -1
  21. package/dist/src/commands/invoice/amend.d.ts.map +1 -1
  22. package/dist/src/commands/invoice/amend.js +19 -6
  23. package/dist/src/commands/invoice/amend.js.map +1 -1
  24. package/dist/src/commands/invoice/index.d.ts.map +1 -1
  25. package/dist/src/commands/invoice/index.js +9 -5
  26. package/dist/src/commands/invoice/index.js.map +1 -1
  27. package/dist/src/commands/invoice/issue-request.d.ts.map +1 -1
  28. package/dist/src/commands/invoice/issue-request.js +3 -1
  29. package/dist/src/commands/invoice/issue-request.js.map +1 -1
  30. package/dist/src/commands/invoice/issue.d.ts.map +1 -1
  31. package/dist/src/commands/invoice/issue.js +3 -1
  32. package/dist/src/commands/invoice/issue.js.map +1 -1
  33. package/dist/src/commands/invoice/reference-id.d.ts +2 -0
  34. package/dist/src/commands/invoice/reference-id.d.ts.map +1 -0
  35. package/dist/src/commands/invoice/reference-id.js +8 -0
  36. package/dist/src/commands/invoice/reference-id.js.map +1 -0
  37. package/dist/src/commands/invoice/status.d.ts.map +1 -1
  38. package/dist/src/commands/invoice/status.js +4 -1
  39. package/dist/src/commands/invoice/status.js.map +1 -1
  40. package/dist/src/types/api.d.ts +17 -0
  41. package/dist/src/types/api.d.ts.map +1 -1
  42. package/dist/src/utils/errors.d.ts +1 -1
  43. package/dist/src/utils/errors.d.ts.map +1 -1
  44. package/dist/src/utils/errors.js +2 -2
  45. package/dist/src/utils/errors.js.map +1 -1
  46. package/dist/src/validators/schemas.d.ts +8 -0
  47. package/dist/src/validators/schemas.d.ts.map +1 -1
  48. package/dist/src/validators/schemas.js +14 -0
  49. package/dist/src/validators/schemas.js.map +1 -1
  50. package/llms.txt +31 -9
  51. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @bolta-io/cli
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 4724e4c: 사업자등록번호 한 건의 등록 상태와 과세유형을 조회하는 `bolta business-status check` 명령과 `bolta guide business-status` 토픽을 추가합니다. 이 조회는 자동 재시도하지 않으며, 체크섬 불일치(`INVALID_BUSINESS_REGISTRATION_NUMBER`), 국세청 조회 불가(`LOOKUP_UNAVAILABLE`), 호출 한도 초과(`RATE_LIMITED`)에 맞는 안내를 붙입니다. 모든 요청에서 `Retry-After`가 30초를 넘으면 기다리지 않고 바로 429를 반환하고, 대기 시간은 `error.details.retryAfterSeconds`로 알려줍니다. `llms.txt`의 품목 최대 개수, 비고 길이, 설정 키 안내를 실제 검증 규칙에 맞췄습니다. 본문 없는 401 응답을 네트워크 오류로 오인해 재시도하던 문제를 고쳐, 잘못된 API 키가 `HTTP_401`(`config test`는 `AUTH_ERROR`)로 바로 실패합니다.
8
+
9
+ ## 0.3.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 5f12b82: 세금계산서 수정발행 3종에 선택형 `--reference-id`를 추가하고, 모든 세금계산서 명령에서 요청자 관리번호를 앞뒤 공백 없는 출력 가능한 ASCII 1~255자로 검증합니다. 관리번호를 사용한 요청은 자동 재전송하지 않습니다. 손상된 응답처럼 접수 결과를 확인하지 못한 경우에는 `NETWORK_ERROR`와 함께 `invoice status`로 접수 여부를 확인하도록 안내합니다.
14
+
3
15
  ## 0.2.0
4
16
 
5
17
  ### Minor Changes
package/CLAUDE.md CHANGED
@@ -46,7 +46,7 @@ bolta certificate status <issuerId>
46
46
 
47
47
  3. **세금계산서 정발행**:
48
48
  ```bash
49
- bolta invoice issue --data '{
49
+ bolta invoice issue --reference-id inv-2026-001 --data '{
50
50
  "date": "2026-03-25",
51
51
  "purpose": "CLAIM",
52
52
  "taxType": "TAXABLE",
@@ -71,7 +71,14 @@ bolta invoice issue --data '{
71
71
  }'
72
72
  ```
73
73
 
74
- 4. **발행 결과 확인**:
74
+ 4. **접수 여부 확인** (발행 응답을 받지 못한 경우):
75
+ ```bash
76
+ bolta invoice status --reference-id inv-2026-001
77
+ ```
78
+
79
+ 같은 요청을 다시 보내지 마세요. 같은 API 키의 세금계산서 발행 계열에서는 요청자 관리번호를 재사용할 수 없습니다. 중복이면 API가 `400 INVALID_REQUEST`를 반환합니다.
80
+
81
+ 5. **발행 결과 확인**:
75
82
  ```bash
76
83
  bolta invoice get <issuanceKey>
77
84
  ```
@@ -98,6 +105,19 @@ bolta cash-receipt status --reference-id cash-2026-001
98
105
 
99
106
  `202 Accepted`만으로 발행 성공으로 판단하지 마세요. `status`가 `ISSUED`인지 확인하세요.
100
107
 
108
+ ### 사업자 상태 조회
109
+
110
+ 거래처가 휴업이나 폐업 상태인지 발행 전에 확인할 때 씁니다. 발급자 등록과 인증서가 필요 없습니다.
111
+
112
+ ```bash
113
+ bolta business-status check 1000000014
114
+ ```
115
+
116
+ - `registration.status`: `ACTIVE`, `SUSPENDED`, `CLOSED`, `NOT_REGISTERED`, `UNKNOWN`
117
+ - `taxType`은 계속사업자일 때만 값이 있습니다(`GENERAL`, `SIMPLIFIED`, `TAX_FREE`, `NONPROFIT`, `OTHER_CORPORATION`). 세금계산서 요청의 `taxType`과 뜻이 다릅니다.
118
+ - 국세청 통신 실패는 `UNKNOWN`이 아니라 `503 LOOKUP_UNAVAILABLE`입니다.
119
+ - 라이브 키는 정상 조회 결과마다 포인트를 차감합니다. 테스트 키는 고정 번호 9개만 조회합니다(`bolta guide business-status`).
120
+
101
121
  ## 커맨드 빠른 참조
102
122
 
103
123
  | 커맨드 | 설명 | 데이터 필요 |
@@ -107,16 +127,17 @@ bolta cash-receipt status --reference-id cash-2026-001
107
127
  | `bolta certificate url <issuerId>` | 인증서 등록 URL | - |
108
128
  | `bolta certificate status <issuerId>` | 인증서 상태 | - |
109
129
  | `bolta certificate deregister <issuerId>` | 인증서 해제 | - |
110
- | `bolta invoice issue` | 세금계산서 정발행 | --data |
111
- | `bolta invoice issue-request` | 역발행 요청 | --data |
130
+ | `bolta invoice issue [--reference-id <id>]` | 세금계산서 정발행 | --data |
131
+ | `bolta invoice issue-request [--reference-id <id>]` | 역발행 요청 | --data |
112
132
  | `bolta invoice get <issuanceKey>` | 세금계산서 조회 | - |
113
133
  | `bolta invoice status --reference-id <id>` | 상태 조회 | - |
114
- | `bolta invoice amend termination <key> --date <date>` | 수정: 계약해제 | - |
115
- | `bolta invoice amend change-supply-cost <key>` | 수정: 가액변동 | --data |
116
- | `bolta invoice amend double-issuance <key>` | 수정: 착오 이중발급 | - |
134
+ | `bolta invoice amend termination <key> --date <date> [--reference-id <id>]` | 수정: 계약해제 | - |
135
+ | `bolta invoice amend change-supply-cost <key> [--reference-id <id>]` | 수정: 가액변동 | --data |
136
+ | `bolta invoice amend double-issuance <key> [--reference-id <id>]` | 수정: 착오 이중발급 | - |
117
137
  | `bolta cash-receipt issue --reference-id <id>` | 현금영수증 발행 | --data |
118
138
  | `bolta cash-receipt status --reference-id <id>` | 현금영수증 상태 조회 | - |
119
139
  | `bolta cash-receipt cancel <key> --reference-id <id>` | 현금영수증 전액 취소 | - |
140
+ | `bolta business-status check <사업자등록번호>` | 사업자 상태 조회 | - |
120
141
  | `bolta config set <key> <value>` | 설정 | - |
121
142
  | `bolta config show` | 설정 확인 | - |
122
143
  | `bolta config test` | 연결 테스트 | - |
@@ -146,11 +167,15 @@ bolta cash-receipt status --reference-id cash-2026-001
146
167
  | `AUTH_ERROR` | API 키 없음/잘못됨 | `bolta config set api-key <key>` |
147
168
  | `VALIDATION_ERROR` | 입력 데이터 오류 | `bolta schema <command>`로 스키마 확인 |
148
169
  | `INPUT_ERROR` | 명령어·옵션·입력 방식 오류 | `bolta --help` 또는 하위 명령의 `--help`로 사용법 확인 |
170
+ | `INVALID_REQUEST` | 세금계산서 요청 검증 실패 또는 요청자 관리번호 중복 | `error.message` 확인. 중복이면 `invoice status`로 기존 요청 확인 |
149
171
  | `HTTP_402` | 포인트 잔액 부족 | https://developers.bolta.io 에서 포인트 충전 |
150
172
  | `HTTP_400` | 잘못된 요청 | error.message 확인, 필수 필드 누락 체크 |
151
173
  | `HTTP_404` | 리소스 없음 | issuanceKey/issuerId 확인 |
152
- | `HTTP_429` | 요청 제한 초과 | 자동 재시도 (최대 3회) |
153
- | `NETWORK_ERROR` | 네트워크 오류 | 인터넷 연결 확인 |
174
+ | `HTTP_429` | 요청 제한 초과 | 일반 요청은 자동 재시도(Retry-After 30초 이하). 관리번호가 있는 세금계산서 요청은 `invoice status`로 접수 여부 확인 |
175
+ | `RATE_LIMITED` | 사업자 상태 조회 24시간 한도 초과 | `error.details.retryAfterSeconds`초 다시 실행 |
176
+ | `INVALID_BUSINESS_REGISTRATION_NUMBER` | 사업자등록번호 체크섬 불일치 | 번호 확인 |
177
+ | `LOOKUP_UNAVAILABLE` | 국세청 사업자 상태 확인 불가 (포인트 미차감) | 잠시 후 다시 실행 |
178
+ | `NETWORK_ERROR` | 네트워크 오류 또는 응답 본문 읽기 실패 | 인터넷 연결 확인. 세금계산서 관리번호를 사용했다면 재전송하지 말고 `invoice status`로 접수 여부 확인 |
154
179
 
155
180
  ## 개발 명령어
156
181
 
@@ -172,4 +197,6 @@ npm test # 테스트 실행
172
197
  - `taxType`이 TAX_FREE이면 모든 품목의 `tax`를 null로 설정하고, ZERO_RATE이면 0으로 설정
173
198
  - 사업자등록번호는 하이픈 있어도 되고 없어도 됨 (자동 변환)
174
199
  - 계약 해제(`amend termination`)는 원본 세금계산서의 품목 공급가액이 음수인 경우 사용 불가
200
+ - 세금계산서 `--reference-id`는 선택 사항이며 앞뒤 공백 없는 출력 가능한 ASCII 1~255자. 같은 API 키의 정발행·역발행·수정발행에서 재사용 불가
201
+ - 관리번호를 넣은 세금계산서 요청은 CLI가 자동 재전송하지 않음. 응답을 받지 못했거나 본문을 읽지 못하면 `invoice status`로 확인
175
202
  - `--dry-run` 옵션으로 실제 API 호출 없이 요청 데이터 확인 가능
package/README.md CHANGED
@@ -80,7 +80,7 @@ bolta certificate deregister <issuerId>
80
80
 
81
81
  ```bash
82
82
  # 세금계산서 정발행
83
- bolta invoice issue --data '{
83
+ bolta invoice issue --reference-id inv-2026-001 --data '{
84
84
  "date": "2026-03-25",
85
85
  "purpose": "CLAIM",
86
86
  "taxType": "TAXABLE",
@@ -110,23 +110,27 @@ bolta invoice issue --data '{
110
110
  bolta examples invoice-issue-foreign-supplied
111
111
 
112
112
  # 세금계산서 역발행 요청 (공급받는자는 사업자등록번호만 허용)
113
- bolta invoice issue-request --data '{...}'
113
+ bolta invoice issue-request --reference-id inv-2026-002 --data '{...}'
114
114
 
115
115
  # 세금계산서 조회
116
116
  bolta invoice get <issuanceKey>
117
117
 
118
- # Client-Reference-Id로 상태 조회
118
+ # Bolta-Client-Reference-Id로 상태 조회
119
119
  bolta invoice status --reference-id <id>
120
120
  ```
121
121
 
122
+ 세금계산서의 `--reference-id`는 선택 사항입니다. 앞뒤 공백 없는 출력 가능한 ASCII 1~255자를 입력하세요. 같은 API 키의 정발행·역발행·수정발행에서 이미 사용한 값은 요청 내용이나 명령이 달라도 다시 사용할 수 없습니다. 중복이면 API가 `400 INVALID_REQUEST`를 반환합니다.
123
+
124
+ 응답을 받지 못했거나 응답 본문을 읽지 못했다면 같은 요청을 다시 보내지 마세요. 요청에 사용한 값으로 `bolta invoice status --reference-id <id>`를 실행해 접수 여부를 확인하세요. 새 발행 요청에는 사용하지 않은 값을 입력합니다.
125
+
122
126
  #### 수정발행
123
127
 
124
128
  ```bash
125
129
  # 수정발행: 계약 해제
126
- bolta invoice amend termination <issuanceKey> --date 2026-03-25
130
+ bolta invoice amend termination <issuanceKey> --date 2026-03-25 --reference-id amend-2026-001
127
131
 
128
132
  # 수정발행: 공급가액 변동
129
- bolta invoice amend change-supply-cost <issuanceKey> --data '{
133
+ bolta invoice amend change-supply-cost <issuanceKey> --reference-id amend-2026-002 --data '{
130
134
  "date": "2026-03-25",
131
135
  "taxType": "TAXABLE",
132
136
  "items": [{
@@ -138,7 +142,7 @@ bolta invoice amend change-supply-cost <issuanceKey> --data '{
138
142
  }'
139
143
 
140
144
  # 수정발행: 착오에 의한 이중발급 (입력 데이터 불필요)
141
- bolta invoice amend double-issuance <issuanceKey>
145
+ bolta invoice amend double-issuance <issuanceKey> --reference-id amend-2026-003
142
146
  ```
143
147
 
144
148
  #### 현금영수증
@@ -178,6 +182,32 @@ bolta cash-receipt status --reference-id cash-2026-001-cancel
178
182
 
179
183
  `PENDING`과 `REQUEST_SUCCESS`는 처리 중입니다. `ISSUED` 또는 `CANCELED` 상태를 확인한 뒤 성공으로 처리하세요. 부분 취소는 지원하지 않습니다.
180
184
 
185
+ #### 사업자 상태 조회
186
+
187
+ 사업자등록번호 한 건의 등록 상태와 과세유형을 조회합니다. 발급자 등록과 공동인증서가 필요 없습니다.
188
+
189
+ ```bash
190
+ bolta business-status check 1000000014
191
+ bolta business-status check 100-00-00014 # 하이픈 허용
192
+ ```
193
+
194
+ ```json
195
+ {
196
+ "success": true,
197
+ "data": {
198
+ "businessRegistrationNumber": "1000000014",
199
+ "registration": { "status": "ACTIVE", "closedOn": null },
200
+ "taxType": "GENERAL"
201
+ }
202
+ }
203
+ ```
204
+
205
+ - `registration.status`: `ACTIVE`(계속), `SUSPENDED`(휴업), `CLOSED`(폐업), `NOT_REGISTERED`(미등록), `UNKNOWN`(국세청이 준 기타 상태)
206
+ - `registration.closedOn`: 폐업자만 `YYYY-MM-DD`, 나머지는 `null`
207
+ - `taxType`: 계속사업자만 `GENERAL`, `SIMPLIFIED`, `TAX_FREE`, `NONPROFIT`, `OTHER_CORPORATION` 중 하나이고 나머지는 `null`입니다. 세금계산서 요청의 `taxType`과 뜻이 다릅니다.
208
+
209
+ 국세청 통신 실패는 `UNKNOWN`이 아니라 `503 LOOKUP_UNAVAILABLE`입니다. 라이브 키는 정상 조회 결과마다 포인트를 차감하고, 호출 한도는 API 키 모드별 24시간 10,000회입니다. CLI는 이 조회를 자동 재시도하지 않습니다. 테스트 키로 조회할 수 있는 고정 번호는 `bolta guide business-status`로 확인하세요.
210
+
181
211
  #### 설정
182
212
 
183
213
  ```bash
@@ -189,7 +219,7 @@ bolta config test # API 연결 테스트
189
219
  #### 도움말
190
220
 
191
221
  ```bash
192
- # 주요 개념 안내 (issuer, payment, workflow, cash-receipt, glossary)
222
+ # 주요 개념 안내 (issuer, payment, workflow, cash-receipt, business-status, glossary)
193
223
  bolta guide [topic]
194
224
 
195
225
  # 바로 쓸 수 있는 샘플 JSON
@@ -255,11 +285,15 @@ cat invoice.json | bolta invoice issue --stdin
255
285
  | `AUTH_ERROR` | API 키 없음/잘못됨 | `bolta config set api-key <key>` |
256
286
  | `VALIDATION_ERROR` | 입력 데이터 오류 | `bolta schema <command>`로 스키마 확인 |
257
287
  | `INPUT_ERROR` | 명령어·옵션·입력 방식 오류 | `bolta --help` 또는 하위 명령의 `--help`로 사용법 확인 |
288
+ | `INVALID_REQUEST` | 세금계산서 요청 검증 실패 또는 요청자 관리번호 중복 | `error.message` 확인. 중복이면 `invoice status`로 기존 요청 확인 |
258
289
  | `HTTP_402` | 포인트 잔액 부족 | https://developers.bolta.io 에서 포인트 충전 |
259
290
  | `HTTP_400` | 잘못된 요청 | error.message 확인 |
260
291
  | `HTTP_404` | 리소스 없음 | issuanceKey/issuerId 확인 |
261
- | `HTTP_429` | 요청 제한 초과 | 자동 재시도 (최대 3회) |
262
- | `NETWORK_ERROR` | 네트워크 오류 | 인터넷 연결 확인 |
292
+ | `HTTP_429` | 요청 제한 초과 | 일반 요청은 자동 재시도(Retry-After 30초 이하). 관리번호가 있는 세금계산서 요청은 `invoice status`로 접수 여부 확인 |
293
+ | `RATE_LIMITED` | 사업자 상태 조회 24시간 한도 초과 | `error.details.retryAfterSeconds`초 다시 실행 |
294
+ | `INVALID_BUSINESS_REGISTRATION_NUMBER` | 사업자등록번호 체크섬 불일치 | 번호 확인 |
295
+ | `LOOKUP_UNAVAILABLE` | 국세청 사업자 상태 확인 불가 (포인트 미차감) | 잠시 후 다시 실행 |
296
+ | `NETWORK_ERROR` | 네트워크 오류 또는 응답 본문 읽기 실패 | 인터넷 연결 확인. 세금계산서 관리번호를 사용했다면 재전송하지 말고 `invoice status`로 접수 여부 확인 |
263
297
 
264
298
  ---
265
299
 
package/dist/bin/bolta.js CHANGED
@@ -11,6 +11,7 @@ import { registerUpdateCommands } from '../src/commands/update/index.js';
11
11
  import { maybeNudgeUpdate, refreshUpdateCache, UPDATE_CACHE_COMMAND, } from '../src/commands/update/nudge.js';
12
12
  import { registerGuideCommand } from '../src/commands/guide/index.js';
13
13
  import { registerCashReceiptCommands } from '../src/commands/cash-receipt/index.js';
14
+ import { registerBusinessStatusCommands } from '../src/commands/business-status/index.js';
14
15
  import { legacyIssuerWarning, outputError } from '../src/utils/output.js';
15
16
  import { BoltaInputError } from '../src/utils/errors.js';
16
17
  import { getCurrentVersion } from '../src/utils/version.js';
@@ -53,6 +54,7 @@ registerLegacyIssuerCommands(program);
53
54
  registerCertificateCommands(program);
54
55
  registerInvoiceCommands(program);
55
56
  registerCashReceiptCommands(program);
57
+ registerBusinessStatusCommands(program);
56
58
  registerConfigCommands(program);
57
59
  registerExamplesCommand(program);
58
60
  registerSchemaCommand(program);
@@ -1 +1 @@
1
- {"version":3,"file":"bolta.js","sourceRoot":"","sources":["../../bin/bolta.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bolta.js","sourceRoot":"","sources":["../../bin/bolta.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { CreateTaxInvoiceRequest, IssuanceResponse, TaxInvoiceDetail, StatusResponse, AmendTerminationRequest, AmendChangeSupplyCostRequest, CreateIssuerRequest, IssuerResponse, CreateSupplierRequest, LegacySupplierResponse, CreateCustomerRequest, LegacyCustomerResponse, CertificateUrlResponse, CertificateStatusResponse, CreateCashReceiptRequest, CashReceiptCancellationResponse, CashReceiptStatusResponse } from '../types/api.js';
1
+ import type { CreateTaxInvoiceRequest, IssuanceResponse, TaxInvoiceDetail, StatusResponse, AmendTerminationRequest, AmendChangeSupplyCostRequest, CreateIssuerRequest, IssuerResponse, CreateSupplierRequest, LegacySupplierResponse, CreateCustomerRequest, LegacyCustomerResponse, CertificateUrlResponse, CertificateStatusResponse, CreateCashReceiptRequest, CashReceiptCancellationResponse, CashReceiptStatusResponse, BusinessRegistrationStatusCheckRequest, BusinessRegistrationStatusResponse } from '../types/api.js';
2
2
  import { type LegacyIssuerHeader } from '../utils/legacy-issuer.js';
3
3
  interface ClientConfig {
4
4
  apiKey: string;
@@ -8,6 +8,9 @@ interface ClientConfig {
8
8
  timeout?: number;
9
9
  maxRetries?: number;
10
10
  }
11
+ export interface TaxInvoiceRequestOptions {
12
+ referenceId?: string;
13
+ }
11
14
  export declare class BoltaClient {
12
15
  private readonly baseUrl;
13
16
  private readonly encodedApiKey;
@@ -28,17 +31,13 @@ export declare class BoltaClient {
28
31
  getCertificateUrl(issuerId: string): Promise<CertificateUrlResponse>;
29
32
  getCertificateStatus(issuerId: string): Promise<CertificateStatusResponse>;
30
33
  deregisterCertificate(issuerId: string): Promise<unknown>;
31
- issueTaxInvoice(data: CreateTaxInvoiceRequest, options?: {
32
- referenceId?: string;
33
- }): Promise<IssuanceResponse>;
34
- issueRequestTaxInvoice(data: CreateTaxInvoiceRequest, options?: {
35
- referenceId?: string;
36
- }): Promise<IssuanceResponse>;
34
+ issueTaxInvoice(data: CreateTaxInvoiceRequest, options?: TaxInvoiceRequestOptions): Promise<IssuanceResponse>;
35
+ issueRequestTaxInvoice(data: CreateTaxInvoiceRequest, options?: TaxInvoiceRequestOptions): Promise<IssuanceResponse>;
37
36
  getTaxInvoice(issuanceKey: string): Promise<TaxInvoiceDetail>;
38
37
  getTaxInvoiceStatus(clientReferenceId: string): Promise<StatusResponse>;
39
- amendTermination(issuanceKey: string, data: AmendTerminationRequest): Promise<IssuanceResponse>;
40
- amendChangeSupplyCost(issuanceKey: string, data: AmendChangeSupplyCostRequest): Promise<IssuanceResponse>;
41
- amendDoubleIssuance(issuanceKey: string): Promise<IssuanceResponse>;
38
+ amendTermination(issuanceKey: string, data: AmendTerminationRequest, options?: TaxInvoiceRequestOptions): Promise<IssuanceResponse>;
39
+ amendChangeSupplyCost(issuanceKey: string, data: AmendChangeSupplyCostRequest, options?: TaxInvoiceRequestOptions): Promise<IssuanceResponse>;
40
+ amendDoubleIssuance(issuanceKey: string, options?: TaxInvoiceRequestOptions): Promise<IssuanceResponse>;
42
41
  issueCashReceipt(data: CreateCashReceiptRequest, options: {
43
42
  referenceId: string;
44
43
  }): Promise<IssuanceResponse>;
@@ -46,6 +45,11 @@ export declare class BoltaClient {
46
45
  cancelCashReceipt(issuanceKey: string, options: {
47
46
  referenceId: string;
48
47
  }): Promise<CashReceiptCancellationResponse>;
48
+ /**
49
+ * 429는 24시간 한도, 503 LOOKUP_UNAVAILABLE은 국세청 조회 차단 상태라 즉시 재시도해도 결과가 같다.
50
+ * 조회는 다시 실행하면 되므로 한 번만 시도하고 실패를 바로 돌려준다.
51
+ */
52
+ checkBusinessRegistrationStatus(data: BusinessRegistrationStatusCheckRequest): Promise<BusinessRegistrationStatusResponse>;
49
53
  private request;
50
54
  }
51
55
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"bolta-client.d.ts","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bolta-client.d.ts","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import { BoltaApiError, BoltaAuthError, BoltaNetworkError } from '../utils/error
2
2
  import { verbose, maskSecret } from '../utils/output.js';
3
3
  import { getCurrentVersion } from '../utils/version.js';
4
4
  import { describeLegacyIssuerKeySource, } from '../utils/legacy-issuer.js';
5
+ /** Retry-After가 이보다 길면 기다리지 않고 바로 실패를 돌려준다. */
6
+ const MAX_RETRY_AFTER_MS = 30_000;
5
7
  export class BoltaClient {
6
8
  baseUrl;
7
9
  encodedApiKey;
@@ -81,7 +83,7 @@ export class BoltaClient {
81
83
  method: 'POST',
82
84
  path: '/taxInvoices/issue',
83
85
  body: data,
84
- referenceId: options?.referenceId,
86
+ ...taxInvoiceRequestPolicy(options),
85
87
  });
86
88
  }
87
89
  async issueRequestTaxInvoice(data, options) {
@@ -89,7 +91,7 @@ export class BoltaClient {
89
91
  method: 'POST',
90
92
  path: '/taxInvoices/issueRequest',
91
93
  body: data,
92
- referenceId: options?.referenceId,
94
+ ...taxInvoiceRequestPolicy(options),
93
95
  });
94
96
  }
95
97
  async getTaxInvoice(issuanceKey) {
@@ -104,24 +106,27 @@ export class BoltaClient {
104
106
  path: `/taxInvoices/issue/status?clientReferenceId=${encodeURIComponent(clientReferenceId)}`,
105
107
  });
106
108
  }
107
- async amendTermination(issuanceKey, data) {
109
+ async amendTermination(issuanceKey, data, options) {
108
110
  return this.request({
109
111
  method: 'POST',
110
112
  path: `/taxInvoices/${encodeURIComponent(issuanceKey)}/amend/termination`,
111
113
  body: data,
114
+ ...taxInvoiceRequestPolicy(options),
112
115
  });
113
116
  }
114
- async amendChangeSupplyCost(issuanceKey, data) {
117
+ async amendChangeSupplyCost(issuanceKey, data, options) {
115
118
  return this.request({
116
119
  method: 'POST',
117
120
  path: `/taxInvoices/${encodeURIComponent(issuanceKey)}/amend/changeSupplyCost`,
118
121
  body: data,
122
+ ...taxInvoiceRequestPolicy(options),
119
123
  });
120
124
  }
121
- async amendDoubleIssuance(issuanceKey) {
125
+ async amendDoubleIssuance(issuanceKey, options) {
122
126
  return this.request({
123
127
  method: 'POST',
124
128
  path: `/taxInvoices/${encodeURIComponent(issuanceKey)}/amend/doubleIssuance`,
129
+ ...taxInvoiceRequestPolicy(options),
125
130
  });
126
131
  }
127
132
  // ========================
@@ -149,6 +154,21 @@ export class BoltaClient {
149
154
  });
150
155
  }
151
156
  // ========================
157
+ // Business Registration Status Methods
158
+ // ========================
159
+ /**
160
+ * 429는 24시간 한도, 503 LOOKUP_UNAVAILABLE은 국세청 조회 차단 상태라 즉시 재시도해도 결과가 같다.
161
+ * 조회는 다시 실행하면 되므로 한 번만 시도하고 실패를 바로 돌려준다.
162
+ */
163
+ async checkBusinessRegistrationStatus(data) {
164
+ return this.request({
165
+ method: 'POST',
166
+ path: '/businessRegistrationStatuses:check',
167
+ body: data,
168
+ retry: 'none',
169
+ });
170
+ }
171
+ // ========================
152
172
  // Internal Request Method
153
173
  // ========================
154
174
  async request(options) {
@@ -167,15 +187,19 @@ export class BoltaClient {
167
187
  source: legacyIssuer.source,
168
188
  });
169
189
  }
170
- if (options.referenceId) {
190
+ if (options.referenceId !== undefined) {
171
191
  headers['Bolta-Client-Reference-Id'] = options.referenceId;
172
192
  }
193
+ const maxAttempts = options.retry === 'none' ? 1 : this.maxRetries;
194
+ const statusSuggestion = options.failureSuggestion;
173
195
  const legacyIssuerDetails = legacyIssuer
174
196
  ? { legacyIssuerKey: maskedLegacyIssuerKey, source: legacyIssuer.source, legacyHeader: true }
175
197
  : undefined;
176
- const makeApiError = (status, code, message) => new BoltaApiError(message, code, status, getSuggestion(status, code, { legacyIssuer }), status === 403 ? legacyIssuerDetails : undefined);
198
+ const makeApiError = (status, code, message, retryAfterSeconds) => new BoltaApiError(message, code, status, getSuggestion(status, code, { legacyIssuer, statusSuggestion, retryAfterSeconds }), status === 403
199
+ ? legacyIssuerDetails
200
+ : retryAfterSeconds !== undefined ? { retryAfterSeconds } : undefined);
177
201
  let lastError = null;
178
- for (let attempt = 1; attempt <= this.maxRetries; attempt++) {
202
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
179
203
  try {
180
204
  verbose(`${options.method} ${url}`, { attempt, ...(options.body ? { body: '...' } : {}) });
181
205
  const controller = new AbortController();
@@ -188,49 +212,60 @@ export class BoltaClient {
188
212
  });
189
213
  clearTimeout(timeoutId);
190
214
  verbose(`Response ${response.status}`, { attempt });
215
+ // 재시도 지연과 오류 details에 같은 값을 쓴다.
216
+ const retryAfterSeconds = response.status === 429
217
+ ? parseRetryAfterSeconds(response.headers.get('Retry-After'))
218
+ : undefined;
219
+ // 재시도할 응답은 본문이 손상됐더라도 먼저 재시도한다.
220
+ if (response.status === 429 && attempt < maxAttempts) {
221
+ const delay = retryAfterSeconds !== undefined ? retryAfterSeconds * 1000 : backoff(attempt);
222
+ if (delay <= MAX_RETRY_AFTER_MS) {
223
+ await response.body?.cancel().catch(() => undefined);
224
+ verbose(`Rate limited, retrying after ${delay}ms`);
225
+ await sleep(delay);
226
+ continue;
227
+ }
228
+ verbose(`Rate limited, Retry-After ${delay}ms exceeds ${MAX_RETRY_AFTER_MS}ms, not retrying`);
229
+ }
230
+ if (response.status >= 500 && attempt < maxAttempts) {
231
+ const delay = backoff(attempt);
232
+ await response.body?.cancel().catch(() => undefined);
233
+ verbose(`Server error ${response.status}, retrying after ${delay}ms`);
234
+ await sleep(delay);
235
+ continue;
236
+ }
191
237
  // Parse response
192
238
  let responseData;
193
239
  const contentType = response.headers.get('content-type');
194
- if (response.status === 204) {
195
- responseData = null;
196
- }
197
- else if (contentType?.includes('application/json')) {
198
- responseData = await response.json();
240
+ try {
241
+ if (response.status === 204) {
242
+ responseData = null;
243
+ }
244
+ else if (contentType?.includes('application/json')) {
245
+ responseData = await response.json();
246
+ }
247
+ else {
248
+ const text = await response.text();
249
+ responseData = text ? { message: text } : null;
250
+ }
199
251
  }
200
- else {
201
- const text = await response.text();
202
- responseData = text ? { message: text } : null;
252
+ catch (error) {
253
+ const reason = error instanceof Error ? `: ${error.message}` : '';
254
+ throw new BoltaNetworkError(`응답 본문을 읽지 못했습니다${reason}`, statusSuggestion);
203
255
  }
204
256
  if (response.ok) {
205
257
  return responseData;
206
258
  }
207
259
  // Handle errors
208
- const errBody = responseData;
260
+ // 401은 본문 없이 오므로 responseData가 null일 수 있다. 여기서 던지면 TypeError가 네트워크 오류로 오인된다.
261
+ const errBody = typeof responseData === 'object' && responseData !== null ? responseData : {};
209
262
  const code = errBody.code || `HTTP_${response.status}`;
210
263
  const message = errBody.message || response.statusText || '알 수 없는 오류';
211
264
  // Don't retry 4xx (except 429)
212
265
  if (response.status >= 400 && response.status < 500 && response.status !== 429) {
213
- throw makeApiError(response.status, code, message);
214
- }
215
- // 429: respect Retry-After
216
- if (response.status === 429) {
217
- const retryAfter = response.headers.get('Retry-After');
218
- const parsed = retryAfter ? parseInt(retryAfter) : NaN;
219
- const delay = Number.isFinite(parsed) ? parsed * 1000 : backoff(attempt);
220
- if (attempt < this.maxRetries) {
221
- verbose(`Rate limited, retrying after ${delay}ms`);
222
- await sleep(delay);
223
- continue;
224
- }
225
- }
226
- // 5xx: retry with backoff
227
- if (response.status >= 500 && attempt < this.maxRetries) {
228
- const delay = backoff(attempt);
229
- verbose(`Server error ${response.status}, retrying after ${delay}ms`);
230
- await sleep(delay);
231
- continue;
266
+ throw makeApiError(response.status, code, message, retryAfterSeconds);
232
267
  }
233
- throw makeApiError(response.status, code, message);
268
+ throw makeApiError(response.status, code, message, retryAfterSeconds);
234
269
  }
235
270
  catch (error) {
236
271
  if (error instanceof BoltaApiError)
@@ -239,8 +274,8 @@ export class BoltaClient {
239
274
  const msg = error instanceof Error && error.name === 'AbortError'
240
275
  ? `요청 시간 초과 (${this.timeout}ms)`
241
276
  : `네트워크 오류: ${error.message}`;
242
- lastError = new BoltaNetworkError(msg);
243
- if (attempt < this.maxRetries) {
277
+ lastError = new BoltaNetworkError(msg, statusSuggestion);
278
+ if (attempt < maxAttempts) {
244
279
  await sleep(backoff(attempt));
245
280
  continue;
246
281
  }
@@ -257,6 +292,12 @@ function backoff(attempt) {
257
292
  const jitter = Math.random() * 0.1 * base;
258
293
  return Math.min(base + jitter, 30_000);
259
294
  }
295
+ /** Retry-After의 초 단위 값만 인정한다. HTTP-date 형식은 undefined로 둔다. */
296
+ function parseRetryAfterSeconds(header) {
297
+ if (header === null || !/^\s*\d+\s*$/.test(header))
298
+ return undefined;
299
+ return Number(header.trim());
300
+ }
260
301
  function sleep(ms) {
261
302
  return new Promise((resolve) => setTimeout(resolve, ms));
262
303
  }
@@ -276,10 +317,45 @@ function getSuggestion(status, code, ctx) {
276
317
  }
277
318
  if (status === 404)
278
319
  return '요청한 리소스를 찾을 수 없습니다. ID/키를 확인하세요.';
279
- if (status === 429)
280
- return '요청 횟수 제한에 도달했습니다. 잠시 후 다시 시도하세요.';
281
- if (status >= 500)
282
- return 'Bolta 서버 오류입니다. 잠시 후 다시 시도하세요.';
320
+ if (code === 'INVALID_REQUEST' && ctx?.statusSuggestion) {
321
+ return `error.message를 확인하세요. 관리번호 중복이면 ${ctx.statusSuggestion}`;
322
+ }
323
+ if (code === 'INVALID_BUSINESS_REGISTRATION_NUMBER') {
324
+ return '사업자등록번호 체크섬이 맞지 않습니다. 번호를 다시 확인하세요.';
325
+ }
326
+ if (code === 'LOOKUP_UNAVAILABLE') {
327
+ return '국세청 사업자 상태를 지금 확인할 수 없습니다. 포인트는 차감되지 않았습니다. 잠시 후 다시 시도하세요.';
328
+ }
329
+ if (status === 429) {
330
+ if (ctx?.statusSuggestion)
331
+ return ctx.statusSuggestion;
332
+ const retryAfterSeconds = ctx?.retryAfterSeconds;
333
+ const when = retryAfterSeconds !== undefined
334
+ ? `${retryAfterSeconds}초 뒤(error.details.retryAfterSeconds)`
335
+ : '잠시 후';
336
+ if (code === 'RATE_LIMITED') {
337
+ return `호출 한도를 모두 사용했습니다. ${when} 다시 시도하세요.`;
338
+ }
339
+ return `요청 횟수 제한에 도달했습니다. ${when} 다시 시도하세요.`;
340
+ }
341
+ if (status >= 500) {
342
+ return ctx?.statusSuggestion ?? 'Bolta 서버 오류입니다. 잠시 후 다시 시도하세요.';
343
+ }
283
344
  return `API 오류가 발생했습니다 (${code}).`;
284
345
  }
346
+ /**
347
+ * 관리번호가 있는 세금계산서 요청은 중복 발행을 막기 위해 재전송하지 않고, 실패 시 상태 조회를 안내한다.
348
+ */
349
+ function taxInvoiceRequestPolicy(options) {
350
+ if (options?.referenceId === undefined)
351
+ return {};
352
+ return {
353
+ referenceId: options.referenceId,
354
+ retry: 'none',
355
+ failureSuggestion: getTaxInvoiceStatusSuggestion(),
356
+ };
357
+ }
358
+ function getTaxInvoiceStatusSuggestion() {
359
+ return "같은 요청을 다시 보내지 마세요. 'bolta invoice status --reference-id <id>'에 요청에 사용한 관리번호를 입력해 접수 여부를 확인하세요. 새 발행 요청에는 사용하지 않은 reference-id를 사용하세요.";
360
+ }
285
361
  //# sourceMappingURL=bolta-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bolta-client.js","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bolta-client.js","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"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"}