@bolta-io/cli 0.0.13 → 0.0.15
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.
- package/CHANGELOG.md +17 -0
- package/CLAUDE.md +17 -13
- package/README.md +25 -15
- package/dist/bin/bolta.js +28 -4
- package/dist/bin/bolta.js.map +1 -1
- package/dist/src/client/bolta-client.d.ts +18 -13
- package/dist/src/client/bolta-client.d.ts.map +1 -1
- package/dist/src/client/bolta-client.js +43 -22
- package/dist/src/client/bolta-client.js.map +1 -1
- package/dist/src/commands/certificate/index.d.ts.map +1 -1
- package/dist/src/commands/certificate/index.js +24 -15
- package/dist/src/commands/certificate/index.js.map +1 -1
- package/dist/src/commands/config/index.d.ts.map +1 -1
- package/dist/src/commands/config/index.js +32 -11
- package/dist/src/commands/config/index.js.map +1 -1
- package/dist/src/commands/examples/index.d.ts.map +1 -1
- package/dist/src/commands/examples/index.js +58 -5
- package/dist/src/commands/examples/index.js.map +1 -1
- package/dist/src/commands/guide/index.d.ts.map +1 -1
- package/dist/src/commands/guide/index.js +22 -20
- package/dist/src/commands/guide/index.js.map +1 -1
- package/dist/src/commands/invoice/amend.js +10 -10
- package/dist/src/commands/invoice/amend.js.map +1 -1
- package/dist/src/commands/invoice/index.d.ts.map +1 -1
- package/dist/src/commands/invoice/index.js +8 -1
- package/dist/src/commands/invoice/index.js.map +1 -1
- package/dist/src/commands/invoice/issue-request.js +6 -6
- package/dist/src/commands/invoice/issue-request.js.map +1 -1
- package/dist/src/commands/invoice/issue.js +4 -4
- package/dist/src/commands/invoice/issue.js.map +1 -1
- package/dist/src/commands/schema/index.d.ts.map +1 -1
- package/dist/src/commands/schema/index.js +4 -2
- package/dist/src/commands/schema/index.js.map +1 -1
- package/dist/src/commands/{customer → supplier}/create.d.ts +1 -1
- package/dist/src/commands/{customer → supplier}/create.d.ts.map +1 -1
- package/dist/src/commands/{customer → supplier}/create.js +6 -6
- package/dist/src/commands/{customer → supplier}/create.js.map +1 -1
- package/dist/src/commands/{customer → supplier}/get.d.ts +1 -1
- package/dist/src/commands/{customer → supplier}/get.d.ts.map +1 -1
- package/dist/src/commands/{customer → supplier}/get.js +2 -2
- package/dist/src/commands/{customer → supplier}/get.js.map +1 -1
- package/dist/src/commands/supplier/index.d.ts +3 -0
- package/dist/src/commands/supplier/index.d.ts.map +1 -0
- package/dist/src/commands/supplier/index.js +56 -0
- package/dist/src/commands/supplier/index.js.map +1 -0
- package/dist/src/commands/supplier/legacy-customer.d.ts +5 -0
- package/dist/src/commands/supplier/legacy-customer.d.ts.map +1 -0
- package/dist/src/commands/supplier/legacy-customer.js +56 -0
- package/dist/src/commands/supplier/legacy-customer.js.map +1 -0
- package/dist/src/config/config-manager.d.ts +1 -1
- package/dist/src/config/config-manager.d.ts.map +1 -1
- package/dist/src/config/config-manager.js +23 -2
- package/dist/src/config/config-manager.js.map +1 -1
- package/dist/src/types/api.d.ts +38 -20
- package/dist/src/types/api.d.ts.map +1 -1
- package/dist/src/utils/output.d.ts +10 -0
- package/dist/src/utils/output.d.ts.map +1 -1
- package/dist/src/utils/output.js +23 -0
- package/dist/src/utils/output.js.map +1 -1
- package/dist/src/validators/schemas.d.ts +560 -179
- package/dist/src/validators/schemas.d.ts.map +1 -1
- package/dist/src/validators/schemas.js +156 -53
- package/dist/src/validators/schemas.js.map +1 -1
- package/llms.txt +33 -27
- package/package.json +6 -1
- package/dist/src/commands/customer/index.d.ts +0 -3
- package/dist/src/commands/customer/index.d.ts.map +0 -1
- package/dist/src/commands/customer/index.js +0 -29
- package/dist/src/commands/customer/index.js.map +0 -1
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# @bolta-io/cli
|
|
2
|
+
|
|
3
|
+
## 0.0.15
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 96f36e1: CLI 전반의 customer 개념을 supplier와 supplierKey 중심으로 정리했습니다. 기존 customer 명령과 `--customer-key`, `BOLTA_CUSTOMER_KEY`는 하위 호환성을 위해 deprecated 상태로 유지하며, 인증서와 세금계산서 명령은 Supplier Key 사용 흐름을 기준으로 안내합니다.
|
|
8
|
+
|
|
9
|
+
## 0.0.14
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- a3c92bf: 릴리스 자동화가 changeset 기반으로 전환됩니다. npm 패키지, 설치형 바이너리, GitHub Release, S3 최신 버전 메타데이터, Homebrew formula가 같은 버전으로 배포됩니다.
|
|
14
|
+
|
|
15
|
+
## 0.0.13
|
|
16
|
+
|
|
17
|
+
- README에 `guide`, `update`, `double-issuance` 명령 설명을 보강했습니다.
|
package/CLAUDE.md
CHANGED
|
@@ -7,22 +7,24 @@
|
|
|
7
7
|
```bash
|
|
8
8
|
# 인증 설정 (환경변수)
|
|
9
9
|
export BOLTA_API_KEY="test_your_key"
|
|
10
|
-
export
|
|
10
|
+
export BOLTA_SUPPLIER_KEY="SupplierKey_abc123"
|
|
11
11
|
|
|
12
12
|
# 또는 config 명령어로 설정
|
|
13
13
|
bolta config set api-key test_your_key
|
|
14
|
-
bolta config set
|
|
14
|
+
bolta config set supplier-key SupplierKey_abc123
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
## 핵심 개념:
|
|
17
|
+
## 핵심 개념: Supplier Key (중요!)
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
supplierKey는 세금계산서를 발행하는 **공급자 본인**을 식별하는 키입니다.
|
|
20
20
|
|
|
21
|
-
- 획득: 공급자의 사업자 정보로 `bolta
|
|
22
|
-
- 설정: `bolta config set
|
|
21
|
+
- 획득: 공급자의 사업자 정보로 `bolta supplier create` 호출 → 응답의 supplierKey
|
|
22
|
+
- 설정: `bolta config set supplier-key <값>` 또는 `BOLTA_SUPPLIER_KEY` 환경변수
|
|
23
23
|
- API 키 단위로 독립 관리 (test_/live_ 키별로 별도 생성 필요, 상호 호환 안 됨)
|
|
24
24
|
|
|
25
|
-
**주의:
|
|
25
|
+
**주의: Supplier-Key에 공급받는자의 키를 넣지 마세요.** 거래처(공급받는자) 정보는 세금계산서 JSON의 `supplied` 필드에 포함합니다.
|
|
26
|
+
|
|
27
|
+
> 구 명칭 `customer`(명령어·`--customer-key`·`BOLTA_CUSTOMER_KEY`·`config set customer-key`)는 deprecated이며 당분간 동작합니다(경고 출력).
|
|
26
28
|
|
|
27
29
|
## 요금 안내
|
|
28
30
|
|
|
@@ -36,14 +38,14 @@ Bolta API는 **사전 충전 포인트 차감 방식** 유료 서비스입니다
|
|
|
36
38
|
|
|
37
39
|
### 세금계산서 발행 (가장 일반적인 업무)
|
|
38
40
|
|
|
39
|
-
1.
|
|
41
|
+
1. **공급자 등록** (최초 1회):
|
|
40
42
|
```bash
|
|
41
|
-
bolta
|
|
43
|
+
bolta supplier create --data '{"identificationNumber":"1234567890","organizationName":"주식회사 테스트","representativeName":"홍길동"}'
|
|
42
44
|
```
|
|
43
45
|
|
|
44
46
|
2. **인증서 확인** (정발행 시 공급자 인증서 필요):
|
|
45
47
|
```bash
|
|
46
|
-
bolta certificate status
|
|
48
|
+
bolta certificate status SupplierKey_abc123
|
|
47
49
|
```
|
|
48
50
|
|
|
49
51
|
3. **세금계산서 정발행**:
|
|
@@ -81,8 +83,8 @@ bolta invoice get <issuanceKey>
|
|
|
81
83
|
|
|
82
84
|
| 커맨드 | 설명 | 데이터 필요 |
|
|
83
85
|
|--------|------|------------|
|
|
84
|
-
| `bolta
|
|
85
|
-
| `bolta
|
|
86
|
+
| `bolta supplier create` | 공급자 생성 | --data |
|
|
87
|
+
| `bolta supplier get <key>` | 공급자 조회 | - |
|
|
86
88
|
| `bolta certificate url <key>` | 인증서 등록 URL | - |
|
|
87
89
|
| `bolta certificate status <key>` | 인증서 상태 | - |
|
|
88
90
|
| `bolta certificate deregister <key>` | 인증서 해제 | - |
|
|
@@ -100,6 +102,8 @@ bolta invoice get <issuanceKey>
|
|
|
100
102
|
| `bolta schema [command]` | 입력 스키마 | - |
|
|
101
103
|
| `bolta guide [topic]` | 주요 개념 안내 | - |
|
|
102
104
|
|
|
105
|
+
> 인증서 명령의 `<key>`에는 신규 supplierKey를 쓰세요. deprecated `CustomerKey_` 키도 당분간 동작합니다.
|
|
106
|
+
|
|
103
107
|
## 입력 방법
|
|
104
108
|
|
|
105
109
|
데이터가 필요한 커맨드에서 3가지 방식 지원:
|
|
@@ -124,7 +128,7 @@ bolta invoice get <issuanceKey>
|
|
|
124
128
|
| `INPUT_ERROR` | 입력 방식 오류 | `--data`, `--file`, `--stdin` 중 하나 사용 |
|
|
125
129
|
| `HTTP_402` | 포인트 잔액 부족 | https://developers.bolta.io 에서 포인트 충전 |
|
|
126
130
|
| `HTTP_400` | 잘못된 요청 | error.message 확인, 필수 필드 누락 체크 |
|
|
127
|
-
| `HTTP_404` | 리소스 없음 | issuanceKey/
|
|
131
|
+
| `HTTP_404` | 리소스 없음 | issuanceKey/supplierKey 확인 |
|
|
128
132
|
| `HTTP_429` | 요청 제한 초과 | 자동 재시도 (최대 3회) |
|
|
129
133
|
| `NETWORK_ERROR` | 네트워크 오류 | 인터넷 연결 확인 |
|
|
130
134
|
|
package/README.md
CHANGED
|
@@ -35,11 +35,11 @@ Bolta API를 사용하려면 API 키가 필요합니다. 환경변수 또는 CLI
|
|
|
35
35
|
```bash
|
|
36
36
|
# 방법 1: 환경변수 (권장)
|
|
37
37
|
export BOLTA_API_KEY="test_your_key"
|
|
38
|
-
export
|
|
38
|
+
export BOLTA_SUPPLIER_KEY="SupplierKey_abc123"
|
|
39
39
|
|
|
40
40
|
# 방법 2: CLI 명령 (영구 저장 - ~/.bolta/config.json)
|
|
41
41
|
bolta config set api-key test_your_key
|
|
42
|
-
bolta config set
|
|
42
|
+
bolta config set supplier-key SupplierKey_abc123
|
|
43
43
|
|
|
44
44
|
# 연결 테스트
|
|
45
45
|
bolta config test
|
|
@@ -49,33 +49,37 @@ bolta config test
|
|
|
49
49
|
|
|
50
50
|
### 커맨드 전체 목록
|
|
51
51
|
|
|
52
|
-
####
|
|
52
|
+
#### 공급자 관리
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
#
|
|
56
|
-
bolta
|
|
55
|
+
# 공급자 생성
|
|
56
|
+
bolta supplier create --data '{
|
|
57
57
|
"identificationNumber": "1234567890",
|
|
58
58
|
"organizationName": "주식회사 테스트",
|
|
59
59
|
"representativeName": "홍길동"
|
|
60
60
|
}'
|
|
61
61
|
|
|
62
|
-
#
|
|
63
|
-
bolta
|
|
62
|
+
# 공급자 조회
|
|
63
|
+
bolta supplier get <supplierKey>
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
+
> 구 `customer` 명령(`bolta customer ...`)은 deprecated이며 당분간 동작합니다(경고 출력).
|
|
67
|
+
|
|
66
68
|
#### 인증서 관리
|
|
67
69
|
|
|
68
70
|
```bash
|
|
69
71
|
# 인증서 등록 URL 조회
|
|
70
|
-
bolta certificate url <
|
|
72
|
+
bolta certificate url <supplierKey>
|
|
71
73
|
|
|
72
74
|
# 인증서 등록 상태 조회
|
|
73
|
-
bolta certificate status <
|
|
75
|
+
bolta certificate status <supplierKey>
|
|
74
76
|
|
|
75
77
|
# 인증서 해제
|
|
76
|
-
bolta certificate deregister <
|
|
78
|
+
bolta certificate deregister <supplierKey>
|
|
77
79
|
```
|
|
78
80
|
|
|
81
|
+
> deprecated `CustomerKey_` 키도 인증서 명령에서 당분간 사용할 수 있습니다.
|
|
82
|
+
|
|
79
83
|
#### 세금계산서 발행/조회
|
|
80
84
|
|
|
81
85
|
```bash
|
|
@@ -103,7 +107,12 @@ bolta invoice issue --data '{
|
|
|
103
107
|
}]
|
|
104
108
|
}'
|
|
105
109
|
|
|
106
|
-
#
|
|
110
|
+
# 외국인등록번호 공급받는자는 정발행에서만 지원합니다.
|
|
111
|
+
# supplied.identificationNumber에 외국인등록번호 13자리를 넣고, 최상위 description은 빼거나 null로 둡니다.
|
|
112
|
+
# 여권번호는 아직 지원하지 않습니다.
|
|
113
|
+
bolta examples invoice-issue-foreign-supplied
|
|
114
|
+
|
|
115
|
+
# 세금계산서 역발행 요청 (공급받는자는 사업자등록번호만 허용)
|
|
107
116
|
bolta invoice issue-request --data '{...}'
|
|
108
117
|
|
|
109
118
|
# 세금계산서 조회
|
|
@@ -137,7 +146,7 @@ bolta invoice amend double-issuance <issuanceKey>
|
|
|
137
146
|
#### 설정
|
|
138
147
|
|
|
139
148
|
```bash
|
|
140
|
-
bolta config set <key> <value> # api-key,
|
|
149
|
+
bolta config set <key> <value> # api-key, supplier-key, base-url
|
|
141
150
|
bolta config show # 현재 설정 확인
|
|
142
151
|
bolta config test # API 연결 테스트
|
|
143
152
|
```
|
|
@@ -145,7 +154,7 @@ bolta config test # API 연결 테스트
|
|
|
145
154
|
#### 도움말
|
|
146
155
|
|
|
147
156
|
```bash
|
|
148
|
-
# 주요 개념 안내 (
|
|
157
|
+
# 주요 개념 안내 (supplier-key, payment, workflow, glossary)
|
|
149
158
|
bolta guide [topic]
|
|
150
159
|
|
|
151
160
|
# 바로 쓸 수 있는 샘플 JSON
|
|
@@ -185,7 +194,8 @@ cat invoice.json | bolta invoice issue --stdin
|
|
|
185
194
|
| 옵션 | 설명 |
|
|
186
195
|
|------|------|
|
|
187
196
|
| `--api-key <key>` | API 키 오버라이드 |
|
|
188
|
-
| `--
|
|
197
|
+
| `--supplier-key <key>` | Supplier Key 오버라이드 |
|
|
198
|
+
| `--customer-key <key>` | (deprecated) `--supplier-key`를 사용하세요 |
|
|
189
199
|
| `--verbose` | 상세 로그 출력 (stderr) |
|
|
190
200
|
| `--dry-run` | API 호출 없이 요청 데이터만 출력 |
|
|
191
201
|
|
|
@@ -210,7 +220,7 @@ cat invoice.json | bolta invoice issue --stdin
|
|
|
210
220
|
| `INPUT_ERROR` | 입력 방식 오류 | `--data`, `--file`, `--stdin` 중 하나 사용 |
|
|
211
221
|
| `HTTP_402` | 포인트 잔액 부족 | https://developers.bolta.io 에서 포인트 충전 |
|
|
212
222
|
| `HTTP_400` | 잘못된 요청 | error.message 확인 |
|
|
213
|
-
| `HTTP_404` | 리소스 없음 | issuanceKey/
|
|
223
|
+
| `HTTP_404` | 리소스 없음 | issuanceKey/supplierKey 확인 |
|
|
214
224
|
| `HTTP_429` | 요청 제한 초과 | 자동 재시도 (최대 3회) |
|
|
215
225
|
| `NETWORK_ERROR` | 네트워크 오류 | 인터넷 연결 확인 |
|
|
216
226
|
|
package/dist/bin/bolta.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
-
import {
|
|
3
|
+
import { registerSupplierCommands } from '../src/commands/supplier/index.js';
|
|
4
4
|
import { registerCertificateCommands } from '../src/commands/certificate/index.js';
|
|
5
5
|
import { registerInvoiceCommands } from '../src/commands/invoice/index.js';
|
|
6
6
|
import { registerConfigCommands } from '../src/commands/config/index.js';
|
|
@@ -8,7 +8,7 @@ import { registerExamplesCommand } from '../src/commands/examples/index.js';
|
|
|
8
8
|
import { registerSchemaCommand } from '../src/commands/schema/index.js';
|
|
9
9
|
import { registerUpdateCommands } from '../src/commands/update/index.js';
|
|
10
10
|
import { registerGuideCommand } from '../src/commands/guide/index.js';
|
|
11
|
-
import { outputError } from '../src/utils/output.js';
|
|
11
|
+
import { outputError, deprecationWarning } from '../src/utils/output.js';
|
|
12
12
|
import { getCurrentVersion, fetchLatestVersion, isUpdateAvailable } from '../src/utils/version.js';
|
|
13
13
|
import { loadConfig, saveConfig } from '../src/config/config-manager.js';
|
|
14
14
|
const program = new Command();
|
|
@@ -17,7 +17,8 @@ program
|
|
|
17
17
|
.description('Bolta API CLI - 전자세금계산서 발행/조회/관리 도구 (AI 에이전트 최적화)')
|
|
18
18
|
.version(getCurrentVersion())
|
|
19
19
|
.option('--api-key <key>', 'Bolta API 키 (환경변수 BOLTA_API_KEY 대체)')
|
|
20
|
-
.option('--
|
|
20
|
+
.option('--supplier-key <key>', 'Supplier Key (환경변수 BOLTA_SUPPLIER_KEY 대체)')
|
|
21
|
+
.option('--customer-key <key>', '(deprecated) --supplier-key를 사용하세요')
|
|
21
22
|
.option('--verbose', '상세 로그 출력 (stderr)', false)
|
|
22
23
|
.option('--dry-run', 'API 호출 없이 요청 데이터만 출력', false)
|
|
23
24
|
.hook('preAction', (thisCommand, actionCommand) => {
|
|
@@ -25,10 +26,11 @@ program
|
|
|
25
26
|
if (opts.verbose) {
|
|
26
27
|
process.env.BOLTA_VERBOSE = '1';
|
|
27
28
|
}
|
|
29
|
+
warnDeprecatedUsage();
|
|
28
30
|
checkFirstRun(actionCommand);
|
|
29
31
|
checkForUpdateInBackground(actionCommand);
|
|
30
32
|
});
|
|
31
|
-
|
|
33
|
+
registerSupplierCommands(program);
|
|
32
34
|
registerCertificateCommands(program);
|
|
33
35
|
registerInvoiceCommands(program);
|
|
34
36
|
registerConfigCommands(program);
|
|
@@ -36,6 +38,28 @@ registerExamplesCommand(program);
|
|
|
36
38
|
registerSchemaCommand(program);
|
|
37
39
|
registerUpdateCommands(program);
|
|
38
40
|
registerGuideCommand(program);
|
|
41
|
+
// 값을 받는 전역 옵션(공백 구분 형태일 때 다음 토큰을 값으로 소비)
|
|
42
|
+
const GLOBAL_VALUE_OPTIONS = new Set(['--api-key', '--supplier-key', '--customer-key']);
|
|
43
|
+
function warnDeprecatedUsage() {
|
|
44
|
+
// 구 명령어 'customer'를 alias로 사용한 경우 경고.
|
|
45
|
+
// 첫 번째 위치 인자(=명령어)만 검사해 데이터 값에 'customer'가 들어가도 오탐하지 않는다.
|
|
46
|
+
// (--customer-key 플래그/BOLTA_CUSTOMER_KEY/config customer-key는 resolveSupplierKey에서 경고)
|
|
47
|
+
const argv = process.argv.slice(2);
|
|
48
|
+
for (let i = 0; i < argv.length; i++) {
|
|
49
|
+
const token = argv[i];
|
|
50
|
+
if (GLOBAL_VALUE_OPTIONS.has(token)) {
|
|
51
|
+
i++; // 옵션 값 건너뛰기
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (token.startsWith('-'))
|
|
55
|
+
continue; // boolean 플래그(--verbose 등)
|
|
56
|
+
// 첫 위치 인자 = 명령어
|
|
57
|
+
if (token === 'customer') {
|
|
58
|
+
deprecationWarning("'customer' 명령어는 'supplier'로 변경되었습니다. 'bolta supplier ...'를 사용하세요.");
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
39
63
|
function checkFirstRun(actionCommand) {
|
|
40
64
|
const commandName = actionCommand.name();
|
|
41
65
|
const parentName = actionCommand.parent?.name();
|
package/dist/bin/bolta.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bolta.js","sourceRoot":"","sources":["../../bin/bolta.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"bolta.js","sourceRoot":"","sources":["../../bin/bolta.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +1,41 @@
|
|
|
1
|
-
import type { CreateTaxInvoiceRequest, IssuanceResponse, TaxInvoiceDetail, StatusResponse, AmendTerminationRequest, AmendChangeSupplyCostRequest, CreateCustomerRequest,
|
|
1
|
+
import type { CreateTaxInvoiceRequest, IssuanceResponse, TaxInvoiceDetail, StatusResponse, AmendTerminationRequest, AmendChangeSupplyCostRequest, CreateSupplierRequest, SupplierResponse, CreateCustomerRequest, LegacyCustomerResponse, CertificateUrlResponse } from '../types/api.js';
|
|
2
2
|
interface ClientConfig {
|
|
3
3
|
apiKey: string;
|
|
4
4
|
baseUrl: string;
|
|
5
|
-
|
|
5
|
+
supplierKey?: string;
|
|
6
6
|
timeout?: number;
|
|
7
7
|
maxRetries?: number;
|
|
8
8
|
}
|
|
9
9
|
export declare class BoltaClient {
|
|
10
10
|
private readonly baseUrl;
|
|
11
11
|
private readonly encodedApiKey;
|
|
12
|
-
private readonly
|
|
12
|
+
private readonly supplierKey?;
|
|
13
13
|
private readonly timeout;
|
|
14
14
|
private readonly maxRetries;
|
|
15
15
|
constructor(config: ClientConfig);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
createSupplier(data: CreateSupplierRequest): Promise<SupplierResponse>;
|
|
17
|
+
getSupplier(supplierKey: string): Promise<SupplierResponse>;
|
|
18
|
+
/** @deprecated 신규 코드에서는 createSupplier를 사용하세요. */
|
|
19
|
+
createCustomer(data: CreateCustomerRequest): Promise<LegacyCustomerResponse>;
|
|
20
|
+
/** @deprecated 신규 코드에서는 getSupplier를 사용하세요. */
|
|
21
|
+
getCustomer(customerKey: string): Promise<LegacyCustomerResponse>;
|
|
22
|
+
getCertificateUrl(supplierKey: string): Promise<CertificateUrlResponse>;
|
|
23
|
+
getCertificateStatus(supplierKey: string): Promise<unknown>;
|
|
24
|
+
deregisterCertificate(supplierKey: string): Promise<unknown>;
|
|
21
25
|
issueTaxInvoice(data: CreateTaxInvoiceRequest, options?: {
|
|
22
|
-
|
|
26
|
+
supplierKey?: string;
|
|
23
27
|
referenceId?: string;
|
|
24
28
|
}): Promise<IssuanceResponse>;
|
|
25
29
|
issueRequestTaxInvoice(data: CreateTaxInvoiceRequest, options?: {
|
|
26
|
-
|
|
30
|
+
supplierKey?: string;
|
|
27
31
|
referenceId?: string;
|
|
28
32
|
}): Promise<IssuanceResponse>;
|
|
29
33
|
getTaxInvoice(issuanceKey: string): Promise<TaxInvoiceDetail>;
|
|
30
34
|
getTaxInvoiceStatus(clientReferenceId: string): Promise<StatusResponse>;
|
|
31
|
-
amendTermination(issuanceKey: string, data: AmendTerminationRequest,
|
|
32
|
-
amendChangeSupplyCost(issuanceKey: string, data: AmendChangeSupplyCostRequest,
|
|
33
|
-
amendDoubleIssuance(issuanceKey: string,
|
|
35
|
+
amendTermination(issuanceKey: string, data: AmendTerminationRequest, supplierKey?: string): Promise<IssuanceResponse>;
|
|
36
|
+
amendChangeSupplyCost(issuanceKey: string, data: AmendChangeSupplyCostRequest, supplierKey?: string): Promise<IssuanceResponse>;
|
|
37
|
+
amendDoubleIssuance(issuanceKey: string, supplierKey?: string): Promise<IssuanceResponse>;
|
|
38
|
+
private certificatePath;
|
|
34
39
|
private request;
|
|
35
40
|
}
|
|
36
41
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bolta-client.d.ts","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"bolta-client.d.ts","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAOzB,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAUD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,YAAY;IAgB1B,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAItE,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQjE,kDAAkD;IAC5C,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIlF,+CAA+C;IACzC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAWjE,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOvE,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO3D,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5D,eAAe,CACnB,IAAI,EAAE,uBAAuB,EAC7B,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,gBAAgB,CAAC;IAUtB,sBAAsB,CAC1B,IAAI,EAAE,uBAAuB,EAC7B,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,gBAAgB,CAAC;IAUtB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAO7D,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAOvE,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,uBAAuB,EAC7B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAStB,qBAAqB,CACzB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,4BAA4B,EAClC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAStB,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,CAAC;IAY5B,OAAO,CAAC,eAAe;YAQT,OAAO;CAwGtB"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { BoltaApiError, BoltaAuthError, BoltaNetworkError } from '../utils/errors.js';
|
|
2
|
-
import { verbose } from '../utils/output.js';
|
|
2
|
+
import { deprecationWarning, verbose } from '../utils/output.js';
|
|
3
3
|
import { getCurrentVersion } from '../utils/version.js';
|
|
4
|
+
const DEPRECATED_CUSTOMER_KEY_PREFIX = 'CustomerKey_';
|
|
4
5
|
export class BoltaClient {
|
|
5
6
|
baseUrl;
|
|
6
7
|
encodedApiKey;
|
|
7
|
-
|
|
8
|
+
supplierKey;
|
|
8
9
|
timeout;
|
|
9
10
|
maxRetries;
|
|
10
11
|
constructor(config) {
|
|
@@ -13,38 +14,52 @@ export class BoltaClient {
|
|
|
13
14
|
}
|
|
14
15
|
this.baseUrl = config.baseUrl.replace(/\/+$/, '');
|
|
15
16
|
this.encodedApiKey = Buffer.from(`${config.apiKey}:`).toString('base64');
|
|
16
|
-
this.
|
|
17
|
+
this.supplierKey = config.supplierKey;
|
|
17
18
|
this.timeout = config.timeout ?? 30_000;
|
|
18
19
|
this.maxRetries = config.maxRetries ?? 3;
|
|
19
20
|
}
|
|
20
21
|
// ========================
|
|
21
|
-
//
|
|
22
|
+
// Supplier Methods
|
|
22
23
|
// ========================
|
|
24
|
+
async createSupplier(data) {
|
|
25
|
+
return this.request({ method: 'POST', path: '/suppliers', body: data });
|
|
26
|
+
}
|
|
27
|
+
async getSupplier(supplierKey) {
|
|
28
|
+
return this.request({ method: 'GET', path: `/suppliers/${encodeURIComponent(supplierKey)}` });
|
|
29
|
+
}
|
|
30
|
+
// ========================
|
|
31
|
+
// Legacy Customer Methods
|
|
32
|
+
// ========================
|
|
33
|
+
/** @deprecated 신규 코드에서는 createSupplier를 사용하세요. */
|
|
23
34
|
async createCustomer(data) {
|
|
24
35
|
return this.request({ method: 'POST', path: '/customers', body: data });
|
|
25
36
|
}
|
|
37
|
+
/** @deprecated 신규 코드에서는 getSupplier를 사용하세요. */
|
|
26
38
|
async getCustomer(customerKey) {
|
|
27
|
-
return this.request({
|
|
39
|
+
return this.request({
|
|
40
|
+
method: 'GET',
|
|
41
|
+
path: `/customers/${encodeURIComponent(customerKey)}`,
|
|
42
|
+
});
|
|
28
43
|
}
|
|
29
44
|
// ========================
|
|
30
45
|
// Certificate Methods
|
|
31
46
|
// ========================
|
|
32
|
-
async getCertificateUrl(
|
|
47
|
+
async getCertificateUrl(supplierKey) {
|
|
33
48
|
return this.request({
|
|
34
49
|
method: 'GET',
|
|
35
|
-
path:
|
|
50
|
+
path: this.certificatePath(supplierKey, '/url'),
|
|
36
51
|
});
|
|
37
52
|
}
|
|
38
|
-
async getCertificateStatus(
|
|
53
|
+
async getCertificateStatus(supplierKey) {
|
|
39
54
|
return this.request({
|
|
40
55
|
method: 'GET',
|
|
41
|
-
path:
|
|
56
|
+
path: this.certificatePath(supplierKey),
|
|
42
57
|
});
|
|
43
58
|
}
|
|
44
|
-
async deregisterCertificate(
|
|
59
|
+
async deregisterCertificate(supplierKey) {
|
|
45
60
|
return this.request({
|
|
46
61
|
method: 'DELETE',
|
|
47
|
-
path:
|
|
62
|
+
path: this.certificatePath(supplierKey),
|
|
48
63
|
});
|
|
49
64
|
}
|
|
50
65
|
// ========================
|
|
@@ -55,7 +70,7 @@ export class BoltaClient {
|
|
|
55
70
|
method: 'POST',
|
|
56
71
|
path: '/taxInvoices/issue',
|
|
57
72
|
body: data,
|
|
58
|
-
|
|
73
|
+
supplierKey: options?.supplierKey,
|
|
59
74
|
referenceId: options?.referenceId,
|
|
60
75
|
});
|
|
61
76
|
}
|
|
@@ -64,7 +79,7 @@ export class BoltaClient {
|
|
|
64
79
|
method: 'POST',
|
|
65
80
|
path: '/taxInvoices/issueRequest',
|
|
66
81
|
body: data,
|
|
67
|
-
|
|
82
|
+
supplierKey: options?.supplierKey,
|
|
68
83
|
referenceId: options?.referenceId,
|
|
69
84
|
});
|
|
70
85
|
}
|
|
@@ -80,32 +95,38 @@ export class BoltaClient {
|
|
|
80
95
|
path: `/taxInvoices/issue/status?clientReferenceId=${encodeURIComponent(clientReferenceId)}`,
|
|
81
96
|
});
|
|
82
97
|
}
|
|
83
|
-
async amendTermination(issuanceKey, data,
|
|
98
|
+
async amendTermination(issuanceKey, data, supplierKey) {
|
|
84
99
|
return this.request({
|
|
85
100
|
method: 'POST',
|
|
86
101
|
path: `/taxInvoices/${encodeURIComponent(issuanceKey)}/amend/termination`,
|
|
87
102
|
body: data,
|
|
88
|
-
|
|
103
|
+
supplierKey,
|
|
89
104
|
});
|
|
90
105
|
}
|
|
91
|
-
async amendChangeSupplyCost(issuanceKey, data,
|
|
106
|
+
async amendChangeSupplyCost(issuanceKey, data, supplierKey) {
|
|
92
107
|
return this.request({
|
|
93
108
|
method: 'POST',
|
|
94
109
|
path: `/taxInvoices/${encodeURIComponent(issuanceKey)}/amend/changeSupplyCost`,
|
|
95
110
|
body: data,
|
|
96
|
-
|
|
111
|
+
supplierKey,
|
|
97
112
|
});
|
|
98
113
|
}
|
|
99
|
-
async amendDoubleIssuance(issuanceKey,
|
|
114
|
+
async amendDoubleIssuance(issuanceKey, supplierKey) {
|
|
100
115
|
return this.request({
|
|
101
116
|
method: 'POST',
|
|
102
117
|
path: `/taxInvoices/${encodeURIComponent(issuanceKey)}/amend/doubleIssuance`,
|
|
103
|
-
|
|
118
|
+
supplierKey,
|
|
104
119
|
});
|
|
105
120
|
}
|
|
106
121
|
// ========================
|
|
107
122
|
// Internal Request Method
|
|
108
123
|
// ========================
|
|
124
|
+
certificatePath(key, suffix = '') {
|
|
125
|
+
if (key.startsWith(DEPRECATED_CUSTOMER_KEY_PREFIX)) {
|
|
126
|
+
deprecationWarning("'CustomerKey_' 키는 deprecated입니다. 신규 supplierKey를 사용하세요.");
|
|
127
|
+
}
|
|
128
|
+
return `/suppliers/${encodeURIComponent(key)}/certificates${suffix}`;
|
|
129
|
+
}
|
|
109
130
|
async request(options) {
|
|
110
131
|
const url = `${this.baseUrl}${options.path}`;
|
|
111
132
|
const headers = {
|
|
@@ -113,9 +134,9 @@ export class BoltaClient {
|
|
|
113
134
|
'Content-Type': 'application/json',
|
|
114
135
|
'User-Agent': `bolta-cli/${getCurrentVersion()}`,
|
|
115
136
|
};
|
|
116
|
-
const
|
|
117
|
-
if (
|
|
118
|
-
headers['
|
|
137
|
+
const sk = options.supplierKey || this.supplierKey;
|
|
138
|
+
if (sk)
|
|
139
|
+
headers['Supplier-Key'] = sk;
|
|
119
140
|
if (options.referenceId) {
|
|
120
141
|
headers['Bolta-Client-Reference-Id'] = options.referenceId;
|
|
121
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bolta-client.js","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bolta-client.js","sourceRoot":"","sources":["../../../src/client/bolta-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/certificate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/certificate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoElE"}
|
|
@@ -5,19 +5,22 @@ import { BoltaAuthError } from '../../utils/errors.js';
|
|
|
5
5
|
export function registerCertificateCommands(program) {
|
|
6
6
|
const cert = program.command('certificate').alias('cert').description('공동인증서 관리');
|
|
7
7
|
cert
|
|
8
|
-
.command('url <
|
|
9
|
-
.description('인증서 등록 URL 조회 (GET /v1/
|
|
8
|
+
.command('url <supplierKey>')
|
|
9
|
+
.description('인증서 등록 URL 조회 (GET /v1/suppliers/{supplierKey}/certificates/url)')
|
|
10
10
|
.addHelpText('after', `
|
|
11
|
+
Note:
|
|
12
|
+
deprecated customerKey(CustomerKey_*)도 당분간 사용할 수 있습니다.
|
|
13
|
+
|
|
11
14
|
Example:
|
|
12
|
-
bolta certificate url
|
|
13
|
-
.action(async (
|
|
15
|
+
bolta certificate url SupplierKey_bf8paz`)
|
|
16
|
+
.action(async (supplierKey, options, command) => {
|
|
14
17
|
try {
|
|
15
18
|
const globalOpts = command.optsWithGlobals();
|
|
16
19
|
const apiKey = resolveApiKey(globalOpts.apiKey);
|
|
17
20
|
if (!apiKey)
|
|
18
21
|
throw new BoltaAuthError('API 키가 설정되지 않았습니다.');
|
|
19
22
|
const client = new BoltaClient({ apiKey, baseUrl: resolveBaseUrl() });
|
|
20
|
-
const result = await client.getCertificateUrl(
|
|
23
|
+
const result = await client.getCertificateUrl(supplierKey);
|
|
21
24
|
outputSuccess(result);
|
|
22
25
|
}
|
|
23
26
|
catch (err) {
|
|
@@ -25,19 +28,22 @@ Example:
|
|
|
25
28
|
}
|
|
26
29
|
});
|
|
27
30
|
cert
|
|
28
|
-
.command('status <
|
|
29
|
-
.description('인증서 등록 내역 조회 (GET /v1/
|
|
31
|
+
.command('status <supplierKey>')
|
|
32
|
+
.description('인증서 등록 내역 조회 (GET /v1/suppliers/{supplierKey}/certificates)')
|
|
30
33
|
.addHelpText('after', `
|
|
34
|
+
Note:
|
|
35
|
+
deprecated customerKey(CustomerKey_*)도 당분간 사용할 수 있습니다.
|
|
36
|
+
|
|
31
37
|
Example:
|
|
32
|
-
bolta certificate status
|
|
33
|
-
.action(async (
|
|
38
|
+
bolta certificate status SupplierKey_bf8paz`)
|
|
39
|
+
.action(async (supplierKey, options, command) => {
|
|
34
40
|
try {
|
|
35
41
|
const globalOpts = command.optsWithGlobals();
|
|
36
42
|
const apiKey = resolveApiKey(globalOpts.apiKey);
|
|
37
43
|
if (!apiKey)
|
|
38
44
|
throw new BoltaAuthError('API 키가 설정되지 않았습니다.');
|
|
39
45
|
const client = new BoltaClient({ apiKey, baseUrl: resolveBaseUrl() });
|
|
40
|
-
const result = await client.getCertificateStatus(
|
|
46
|
+
const result = await client.getCertificateStatus(supplierKey);
|
|
41
47
|
outputSuccess(result);
|
|
42
48
|
}
|
|
43
49
|
catch (err) {
|
|
@@ -45,19 +51,22 @@ Example:
|
|
|
45
51
|
}
|
|
46
52
|
});
|
|
47
53
|
cert
|
|
48
|
-
.command('deregister <
|
|
49
|
-
.description('인증서 등록 해제 (DELETE /v1/
|
|
54
|
+
.command('deregister <supplierKey>')
|
|
55
|
+
.description('인증서 등록 해제 (DELETE /v1/suppliers/{supplierKey}/certificates)')
|
|
50
56
|
.addHelpText('after', `
|
|
57
|
+
Note:
|
|
58
|
+
deprecated customerKey(CustomerKey_*)도 당분간 사용할 수 있습니다.
|
|
59
|
+
|
|
51
60
|
Example:
|
|
52
|
-
bolta certificate deregister
|
|
53
|
-
.action(async (
|
|
61
|
+
bolta certificate deregister SupplierKey_bf8paz`)
|
|
62
|
+
.action(async (supplierKey, options, command) => {
|
|
54
63
|
try {
|
|
55
64
|
const globalOpts = command.optsWithGlobals();
|
|
56
65
|
const apiKey = resolveApiKey(globalOpts.apiKey);
|
|
57
66
|
if (!apiKey)
|
|
58
67
|
throw new BoltaAuthError('API 키가 설정되지 않았습니다.');
|
|
59
68
|
const client = new BoltaClient({ apiKey, baseUrl: resolveBaseUrl() });
|
|
60
|
-
const result = await client.deregisterCertificate(
|
|
69
|
+
const result = await client.deregisterCertificate(supplierKey);
|
|
61
70
|
outputSuccess(result ?? { message: '인증서가 해제되었습니다.' });
|
|
62
71
|
}
|
|
63
72
|
catch (err) {
|