@runlot/api 0.1.0-rc.41 → 0.1.0-rc.43
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/dist/index.d.ts +54 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +77 -0
- package/dist/index.js.map +1 -1
- package/dist/schema.d.ts +871 -12
- package/dist/schema.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/schema.d.ts
CHANGED
|
@@ -196,6 +196,55 @@ export interface paths {
|
|
|
196
196
|
patch?: never;
|
|
197
197
|
trace?: never;
|
|
198
198
|
};
|
|
199
|
+
"/v1/orgs/{orgSlug}": {
|
|
200
|
+
parameters: {
|
|
201
|
+
query?: never;
|
|
202
|
+
header?: never;
|
|
203
|
+
path: {
|
|
204
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
205
|
+
};
|
|
206
|
+
cookie?: never;
|
|
207
|
+
};
|
|
208
|
+
get?: never;
|
|
209
|
+
put?: never;
|
|
210
|
+
post?: never;
|
|
211
|
+
/**
|
|
212
|
+
* 조직을 지운다 (`runlot org delete`)
|
|
213
|
+
* @description admin 이상. **되돌릴 수 없다.**
|
|
214
|
+
*
|
|
215
|
+
* `confirm` 에 조직 슬러그를 그대로 실어야 한다 (앞뒤 공백은 다듬는다).
|
|
216
|
+
* 확인이 API 에 있는 이유는 이 표면을 부르는 곳이 화면·CLI·스크립트
|
|
217
|
+
* 셋이기 때문이다 — 셋이 각자 구현하면 하나가 빠진 것을 아무도 못 본다.
|
|
218
|
+
*
|
|
219
|
+
* **비어 있을 때만 지워진다.** 프로젝트·도메인·저장소·DNS 존이 남아
|
|
220
|
+
* 있으면 409 `org_not_empty` 이고, 봉투의 `details.holdings` 에 종류별
|
|
221
|
+
* 개수와 이름 몇 개가 실린다. 근거는 스키마다 (0044·0020·0032 의
|
|
222
|
+
* RESTRICT): 행을 지워도 노드의 데이터는 남고, 가리키는 것이 없어진
|
|
223
|
+
* 데이터는 지울 방법도 청구할 근거도 없다.
|
|
224
|
+
*
|
|
225
|
+
* 그 밖의 거절 둘 — 개인 조직은 `personal_org` (첫 로그인이 만든 조직이고
|
|
226
|
+
* 다시 만들어 주지 않는다), 유료 구독이 살아 있으면 `active_subscription`
|
|
227
|
+
* (조직만 사라지고 카드에서는 계속 빠져나가는 것을 막는다).
|
|
228
|
+
*
|
|
229
|
+
* 감사 `org.delete` 는 **조직보다 오래 산다** — `audit_events.org_id` 는
|
|
230
|
+
* ON DELETE SET NULL 이고 슬러그는 `target` 에 남는다.
|
|
231
|
+
*/
|
|
232
|
+
delete: operations["deleteOrg"];
|
|
233
|
+
options?: never;
|
|
234
|
+
head?: never;
|
|
235
|
+
/**
|
|
236
|
+
* 조직 표시 이름을 바꾼다 (`runlot org rename`)
|
|
237
|
+
* @description admin 이상. 감사 `org.rename`.
|
|
238
|
+
*
|
|
239
|
+
* **슬러그는 이 표면에 없다.** 슬러그는 주소가 되는 이름이라
|
|
240
|
+
* (`<project>.<slug>.runlot.app`, 인증서 SAN, clone 주소, 고객 저장소에
|
|
241
|
+
* 커밋된 `runlot.json` 의 `"org"`) 바꾸려면 옛 이름을 한동안 살려 둬야
|
|
242
|
+
* 하고, 그 별칭이 정확히 0027 이 만들고 0037 이 없앤 것이다
|
|
243
|
+
* (docs/org-settings.md §2).
|
|
244
|
+
*/
|
|
245
|
+
patch: operations["updateOrg"];
|
|
246
|
+
trace?: never;
|
|
247
|
+
};
|
|
199
248
|
"/v1/orgs/{orgSlug}/projects": {
|
|
200
249
|
parameters: {
|
|
201
250
|
query?: never;
|
|
@@ -236,6 +285,43 @@ export interface paths {
|
|
|
236
285
|
get: operations["getProject"];
|
|
237
286
|
put?: never;
|
|
238
287
|
post?: never;
|
|
288
|
+
/**
|
|
289
|
+
* 프로젝트를 종결한다 (`runlot project delete`)
|
|
290
|
+
* @description admin 이상. **되돌릴 수 없고 복구 세대를 남기지 않는다.** 돌아갈
|
|
291
|
+
* 프로젝트가 없으므로 pre-delete 세대는 아무도 못 쓰는 blob 이 된다.
|
|
292
|
+
* 필요한 데이터는 먼저 `runlot pg export` 로 받아 둬야 한다.
|
|
293
|
+
*
|
|
294
|
+
* `confirm` 에 프로젝트 이름을 그대로 실어야 한다. 서버가 확인하는 이유는
|
|
295
|
+
* 조직 삭제와 같다 — 화면·CLI·스크립트 셋이 이 표면을 부른다.
|
|
296
|
+
*
|
|
297
|
+
* 라우팅 → 진행 중 요청·커밋 → 노드 데이터와 객체 저장소 → git 저장소·
|
|
298
|
+
* backup → 메타데이터 순으로 종결한다. 202 는 시작했다는 뜻이고,
|
|
299
|
+
* `GET /v1/orgs/{orgSlug}/operations/{opId}` 로 끝을 본다.
|
|
300
|
+
*/
|
|
301
|
+
delete: operations["deleteProject"];
|
|
302
|
+
options?: never;
|
|
303
|
+
head?: never;
|
|
304
|
+
patch?: never;
|
|
305
|
+
trace?: never;
|
|
306
|
+
};
|
|
307
|
+
"/v1/orgs/{orgSlug}/operations/{opId}": {
|
|
308
|
+
parameters: {
|
|
309
|
+
query?: never;
|
|
310
|
+
header?: never;
|
|
311
|
+
path: {
|
|
312
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
313
|
+
opId: string;
|
|
314
|
+
};
|
|
315
|
+
cookie?: never;
|
|
316
|
+
};
|
|
317
|
+
/**
|
|
318
|
+
* 조직 안의 연산 진행을 본다
|
|
319
|
+
* @description viewer 이상. 프로젝트가 사라진 뒤에도 종결 연산의 완료를 볼 수 있는
|
|
320
|
+
* 경로다. project 아래에 두면 성공하는 순간 그 경로 자체가 404 가 된다.
|
|
321
|
+
*/
|
|
322
|
+
get: operations["getOrgOperation"];
|
|
323
|
+
put?: never;
|
|
324
|
+
post?: never;
|
|
239
325
|
delete?: never;
|
|
240
326
|
options?: never;
|
|
241
327
|
head?: never;
|
|
@@ -883,6 +969,218 @@ export interface paths {
|
|
|
883
969
|
patch?: never;
|
|
884
970
|
trace?: never;
|
|
885
971
|
};
|
|
972
|
+
"/v1/ai/models": {
|
|
973
|
+
parameters: {
|
|
974
|
+
query?: never;
|
|
975
|
+
header?: never;
|
|
976
|
+
path?: never;
|
|
977
|
+
cookie?: never;
|
|
978
|
+
};
|
|
979
|
+
/**
|
|
980
|
+
* AI 모델 카탈로그 (`runlot ai models`)
|
|
981
|
+
* @description `env.ai` 가 부를 수 있는 모델의 전부다 (docs/ai.md §2.3). **로그인만 하면
|
|
982
|
+
* 볼 수 있다** — 무엇을 살 수 있는지는 org 의 비밀이 아니고, 이 목록이 곧
|
|
983
|
+
* 가격표다.
|
|
984
|
+
*
|
|
985
|
+
* 차선이 둘이다. `frontier` 는 프로바이더 **정가 그대로** 통과시킨다
|
|
986
|
+
* (`listPrice: true`, 마진 0) — 그래서 모델 id 에 프로바이더 이름이 그대로
|
|
987
|
+
* 있고 `provider` 도 실린다. `value` 는 우리가 도매로 사서 우리 값으로 파는
|
|
988
|
+
* 가성비 모델이라 `provider` 를 **안 싣는다**: 그 값은 우리가 언제든 갈아끼운다.
|
|
989
|
+
*
|
|
990
|
+
* 단가는 100 만 토큰당 **마이크로센트** 정수다 (1 µ¢ = 1e-8 USD). 소수
|
|
991
|
+
* 자리를 서버가 정하지 않는 것이 요점이다 — 작은 호출이 센트로 반올림하면
|
|
992
|
+
* 0 이 되고 (docs/ai.md §3.1), 그 사실이 포맷 문자열 하나에 묶이면 안 된다.
|
|
993
|
+
*
|
|
994
|
+
* 목록에 없는 모델 id 는 호출에서 400 이다. **임의 모델 패스스루는 없다.**
|
|
995
|
+
*/
|
|
996
|
+
get: operations["listAIModels"];
|
|
997
|
+
put?: never;
|
|
998
|
+
post?: never;
|
|
999
|
+
delete?: never;
|
|
1000
|
+
options?: never;
|
|
1001
|
+
head?: never;
|
|
1002
|
+
patch?: never;
|
|
1003
|
+
trace?: never;
|
|
1004
|
+
};
|
|
1005
|
+
"/v1/orgs/{orgSlug}/projects/{projectName}/ai": {
|
|
1006
|
+
parameters: {
|
|
1007
|
+
query?: never;
|
|
1008
|
+
header?: never;
|
|
1009
|
+
path: {
|
|
1010
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
1011
|
+
projectName: components["parameters"]["ProjectName"];
|
|
1012
|
+
};
|
|
1013
|
+
cookie?: never;
|
|
1014
|
+
};
|
|
1015
|
+
/**
|
|
1016
|
+
* AI 상태 (`runlot ai usage`)
|
|
1017
|
+
* @description 부여 여부·상한 넷·org 잔액·최근 24 시간 사용량 (docs/ai.md §6). 부여가
|
|
1018
|
+
* 없어도 상한은 채워 온다 — "켜면 이런 상한이 됩니다" 의 재료이고,
|
|
1019
|
+
* `granted` 가 진짜 상태다.
|
|
1020
|
+
*
|
|
1021
|
+
* `maxOutputTokens`·`maxInputTokens` 의 `0` 은 **"모델이 정한다"** 다.
|
|
1022
|
+
*
|
|
1023
|
+
* `spentMicroCents24h` 는 `usage_hourly` 에서 못 만드는 수라 원장에서 따로
|
|
1024
|
+
* 읽는다 — 단가가 시점의 함수이기 때문이고, 그것이 0046 이 표를 둘로 가른
|
|
1025
|
+
* 이유다.
|
|
1026
|
+
*
|
|
1027
|
+
* viewer 이상.
|
|
1028
|
+
*/
|
|
1029
|
+
get: operations["getAI"];
|
|
1030
|
+
put?: never;
|
|
1031
|
+
/**
|
|
1032
|
+
* AI 를 켠다 (배포가 `"ai": true` 를 읽고 부른다)
|
|
1033
|
+
* @description **멱등이다.** 요청 본문이 없다 — 상한도 모델 목록도 사용자가 정하는 값이
|
|
1034
|
+
* 아니다.
|
|
1035
|
+
*
|
|
1036
|
+
* 켜지면 노드가 다음 수렴에서 `env.ai` 를 연결한다. **번들도 `"ai": true`
|
|
1037
|
+
* 여야 실린다** — 부여는 CP 의 것이고 어떤 시스템 워커를 띄울지는 번들의
|
|
1038
|
+
* 것이다.
|
|
1039
|
+
*
|
|
1040
|
+
* 노드 자격 검사가 **없다**: 상류(Bedrock·Vertex)는 노드 site.env 의 값이라
|
|
1041
|
+
* 그 사실이 CP 에 등록돼 있지 않다. 자격 없는 노드에서는 부여가 통과하고
|
|
1042
|
+
* 호출이 503 이다 (docs/ai.md §9 의 열린 것).
|
|
1043
|
+
*
|
|
1044
|
+
* member 이상. 감사 `ai.grant`.
|
|
1045
|
+
*/
|
|
1046
|
+
post: operations["grantAI"];
|
|
1047
|
+
/**
|
|
1048
|
+
* AI 를 끈다 (`runlot ai delete`)
|
|
1049
|
+
* @description 다음 배포부터 `env.ai` 가 없다. 멱등이다.
|
|
1050
|
+
*
|
|
1051
|
+
* **원장은 안 지운다** — 이미 지불한 돈의 기록이다. 크레딧 잔액도 그대로다:
|
|
1052
|
+
* 잔액은 org 의 것이고 이 부여는 프로젝트의 것이다.
|
|
1053
|
+
*
|
|
1054
|
+
* admin. 감사 `ai.revoke`.
|
|
1055
|
+
*/
|
|
1056
|
+
delete: operations["revokeAI"];
|
|
1057
|
+
options?: never;
|
|
1058
|
+
head?: never;
|
|
1059
|
+
patch?: never;
|
|
1060
|
+
trace?: never;
|
|
1061
|
+
};
|
|
1062
|
+
"/v1/orgs/{orgSlug}/ai/credit": {
|
|
1063
|
+
parameters: {
|
|
1064
|
+
query?: never;
|
|
1065
|
+
header?: never;
|
|
1066
|
+
path: {
|
|
1067
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
1068
|
+
};
|
|
1069
|
+
cookie?: never;
|
|
1070
|
+
};
|
|
1071
|
+
/**
|
|
1072
|
+
* AI 크레딧 잔액과 자동 충전 설정 (`runlot ai credit`)
|
|
1073
|
+
* @description 잔액은 **마이크로센트**이고 음수일 수 있다 (docs/ai.md §3.3 — 잔액 검사는
|
|
1074
|
+
* 호출 전이고 차감은 뒤라 시작한 호출 하나가 잔액을 넘길 수 있다).
|
|
1075
|
+
*
|
|
1076
|
+
* `hasPaymentMethod` 가 거짓이면 자동 충전을 켤 수 없다 — 저장된 카드가
|
|
1077
|
+
* 없기 때문이고, **첫 충전은 반드시 수동이다** (그것이 카드를 저장한다).
|
|
1078
|
+
*
|
|
1079
|
+
* `autoTopupsToday` 와 `autoTopupPerDay` 를 같이 준다. 그 상한이 곧 하루
|
|
1080
|
+
* 지출 천장이라 화면이 둘을 같이 보여야 "왜 안 충전됐지" 에 답이 된다.
|
|
1081
|
+
*
|
|
1082
|
+
* member 이상.
|
|
1083
|
+
*/
|
|
1084
|
+
get: operations["getAICredit"];
|
|
1085
|
+
put?: never;
|
|
1086
|
+
post?: never;
|
|
1087
|
+
delete?: never;
|
|
1088
|
+
options?: never;
|
|
1089
|
+
head?: never;
|
|
1090
|
+
patch?: never;
|
|
1091
|
+
trace?: never;
|
|
1092
|
+
};
|
|
1093
|
+
"/v1/orgs/{orgSlug}/ai/ledger": {
|
|
1094
|
+
parameters: {
|
|
1095
|
+
query?: never;
|
|
1096
|
+
header?: never;
|
|
1097
|
+
path: {
|
|
1098
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
1099
|
+
};
|
|
1100
|
+
cookie?: never;
|
|
1101
|
+
};
|
|
1102
|
+
/**
|
|
1103
|
+
* AI 원장
|
|
1104
|
+
* @description 금액의 정본이다 (0046). `kind` 는 `call`(음수)·`topup`(양수)·`adjust`.
|
|
1105
|
+
* 커서는 `ledger_id` — 시각으로 자르면 같은 밀리초의 행 둘이 페이지 경계에서
|
|
1106
|
+
* 갈린다.
|
|
1107
|
+
*
|
|
1108
|
+
* member 이상.
|
|
1109
|
+
*/
|
|
1110
|
+
get: operations["listAILedger"];
|
|
1111
|
+
put?: never;
|
|
1112
|
+
post?: never;
|
|
1113
|
+
delete?: never;
|
|
1114
|
+
options?: never;
|
|
1115
|
+
head?: never;
|
|
1116
|
+
patch?: never;
|
|
1117
|
+
trace?: never;
|
|
1118
|
+
};
|
|
1119
|
+
"/v1/orgs/{orgSlug}/ai/credit/checkout": {
|
|
1120
|
+
parameters: {
|
|
1121
|
+
query?: never;
|
|
1122
|
+
header?: never;
|
|
1123
|
+
path: {
|
|
1124
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
1125
|
+
};
|
|
1126
|
+
cookie?: never;
|
|
1127
|
+
};
|
|
1128
|
+
get?: never;
|
|
1129
|
+
put?: never;
|
|
1130
|
+
/**
|
|
1131
|
+
* 크레딧 충전 체크아웃
|
|
1132
|
+
* @description 임베드 체크아웃 URL 을 준다 (docs/billing.md §3.1 과 같은 모양 — 대시보드가
|
|
1133
|
+
* iframe 으로 띄운다).
|
|
1134
|
+
*
|
|
1135
|
+
* **돌아온 브라우저는 증거가 아니다.** 잔액을 올리는 것은 `order.paid` 웹훅
|
|
1136
|
+
* 하나이고, 화면은 성공 사건 뒤에 잔액을 폴링한다.
|
|
1137
|
+
*
|
|
1138
|
+
* `microCents` 는 열거된 티어 중 하나여야 한다 — 자동 충전이 같은 목록을
|
|
1139
|
+
* 쓰므로 (사람 없는 자리에서 도는 청구라 금액이 열거된 값이어야 한다) 수동만
|
|
1140
|
+
* 자유롭게 두면 표가 둘이 된다.
|
|
1141
|
+
*
|
|
1142
|
+
* admin.
|
|
1143
|
+
*/
|
|
1144
|
+
post: operations["createAICreditCheckout"];
|
|
1145
|
+
delete?: never;
|
|
1146
|
+
options?: never;
|
|
1147
|
+
head?: never;
|
|
1148
|
+
patch?: never;
|
|
1149
|
+
trace?: never;
|
|
1150
|
+
};
|
|
1151
|
+
"/v1/orgs/{orgSlug}/ai/autotopup": {
|
|
1152
|
+
parameters: {
|
|
1153
|
+
query?: never;
|
|
1154
|
+
header?: never;
|
|
1155
|
+
path: {
|
|
1156
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
1157
|
+
};
|
|
1158
|
+
cookie?: never;
|
|
1159
|
+
};
|
|
1160
|
+
get?: never;
|
|
1161
|
+
/**
|
|
1162
|
+
* 자동 충전을 켜거나 끈다
|
|
1163
|
+
* @description **켜는 것은 명시 동의다** (docs/ai.md §3.5). 화면이 "잔액이 X 아래로
|
|
1164
|
+
* 내려가면 저장된 카드에 Y 를 자동으로 청구합니다. 하루 최대 N 회" 를 그대로
|
|
1165
|
+
* 보여 주고 체크를 받는다 — off-session 청구는 카드사 규정이 사전 동의를
|
|
1166
|
+
* 요구하고, 그 문장이 곧 동의의 내용이다.
|
|
1167
|
+
*
|
|
1168
|
+
* 서버가 보는 것 셋: 저장된 결제 수단이 있는가 (없으면 409), 금액이 티어
|
|
1169
|
+
* 목록에 있는가, 그리고 기준이 **0 보다 크고 충전 금액보다 작은가**. 기준이
|
|
1170
|
+
* 0 이면 충전이 비동기인 그 창 전부가 402 이고, 기준이 충전액 이상이면 한 번
|
|
1171
|
+
* 충전해도 여전히 기준 아래라 하루 상한까지 계속 충전한다 — 설정이 아니라
|
|
1172
|
+
* 함정이다.
|
|
1173
|
+
*
|
|
1174
|
+
* admin. 감사 `ai.autotopup.on` / `ai.autotopup.off`.
|
|
1175
|
+
*/
|
|
1176
|
+
put: operations["setAIAutoTopup"];
|
|
1177
|
+
post?: never;
|
|
1178
|
+
delete?: never;
|
|
1179
|
+
options?: never;
|
|
1180
|
+
head?: never;
|
|
1181
|
+
patch?: never;
|
|
1182
|
+
trace?: never;
|
|
1183
|
+
};
|
|
886
1184
|
"/v1/orgs/{orgSlug}/projects/{projectName}/email": {
|
|
887
1185
|
parameters: {
|
|
888
1186
|
query?: never;
|
|
@@ -3041,7 +3339,7 @@ export interface components {
|
|
|
3041
3339
|
projectId: string;
|
|
3042
3340
|
opId: string;
|
|
3043
3341
|
/** @enum {string} */
|
|
3044
|
-
kind: "restore_generation" | "delete_database" | "evict" | "restore";
|
|
3342
|
+
kind: "restore_generation" | "delete_database" | "delete_project" | "evict" | "restore";
|
|
3045
3343
|
/** Format: int64 */
|
|
3046
3344
|
epoch: number;
|
|
3047
3345
|
node?: string;
|
|
@@ -3192,6 +3490,14 @@ export interface components {
|
|
|
3192
3490
|
/** Format: date-time */
|
|
3193
3491
|
addedAt: string;
|
|
3194
3492
|
};
|
|
3493
|
+
/** @description 조직이 아직 들고 있는 것 한 종류 (`org_not_empty` 의 details). */
|
|
3494
|
+
OrgHolding: {
|
|
3495
|
+
/** @enum {string} */
|
|
3496
|
+
kind: "projects" | "domains" | "repos" | "zones";
|
|
3497
|
+
count: number;
|
|
3498
|
+
/** @description 앞의 몇 개만. 전부 실으면 오류 메시지가 화면을 넘긴다. */
|
|
3499
|
+
names?: string[];
|
|
3500
|
+
};
|
|
3195
3501
|
/**
|
|
3196
3502
|
* @description `expired` 는 시각 비교의 결과이지 열이 아니다 — 초대는 만료되었다고
|
|
3197
3503
|
* 표시되지 않고, 만료 시각이 지났을 뿐이다.
|
|
@@ -3354,6 +3660,124 @@ export interface components {
|
|
|
3354
3660
|
*/
|
|
3355
3661
|
mailIn: number;
|
|
3356
3662
|
};
|
|
3663
|
+
/** @description 카탈로그 한 줄 (docs/ai.md §2.3). */
|
|
3664
|
+
AIModel: {
|
|
3665
|
+
/** @description `env.ai.run()` 에 적는 문자열. 프론티어는 `<provider>/<model>`, 가성비 모델은 `@runlot/<model>` */
|
|
3666
|
+
id: string;
|
|
3667
|
+
/** @enum {string} */
|
|
3668
|
+
lane: "frontier" | "value";
|
|
3669
|
+
display: string;
|
|
3670
|
+
/** @description 모델을 만든 곳 (Anthropic·Google·Meta…) */
|
|
3671
|
+
vendor: string;
|
|
3672
|
+
/**
|
|
3673
|
+
* @description 우리가 부르는 곳. **프론티어에서만 실린다** — 가성비 모델은 우리가
|
|
3674
|
+
* 갈아끼우는 값이라 계약이 아니다.
|
|
3675
|
+
*/
|
|
3676
|
+
provider?: string;
|
|
3677
|
+
/** @description 모델 자체의 컨텍스트 */
|
|
3678
|
+
contextTokens: number;
|
|
3679
|
+
/**
|
|
3680
|
+
* @description Runlot 이 이 모델에 허용하는 입력 상한. 대부분 contextTokens 와 같고,
|
|
3681
|
+
* GPT-5.6 Terra 는 272,000 — 그 뒤는 요청 전체가 장문 단가로 바뀌므로
|
|
3682
|
+
* 표준 단가 하나만 광고하는 카탈로그가 그 앞에서 자른다.
|
|
3683
|
+
*/
|
|
3684
|
+
maxInputTokens: number;
|
|
3685
|
+
maxOutputTokens: number;
|
|
3686
|
+
/**
|
|
3687
|
+
* Format: int64
|
|
3688
|
+
* @description 100 만 입력 토큰당 마이크로센트
|
|
3689
|
+
*/
|
|
3690
|
+
inPerMTok: number;
|
|
3691
|
+
/** Format: int64 */
|
|
3692
|
+
outPerMTok: number;
|
|
3693
|
+
/**
|
|
3694
|
+
* Format: int64
|
|
3695
|
+
* @description 캐시된 입력의 단가. 없으면 캐시 할인이 없는 모델이고 캐시된 토큰도 정가다
|
|
3696
|
+
*/
|
|
3697
|
+
cachedInPerMTok?: number;
|
|
3698
|
+
/**
|
|
3699
|
+
* @description 참이면 프로바이더 **정가 그대로**다 (마진 0). 화면이 그 사실을 말하는
|
|
3700
|
+
* 것이 이 제품의 문장 하나이고, 말하지 않으면 사용자는 마크업을 가정한다.
|
|
3701
|
+
*/
|
|
3702
|
+
listPrice: boolean;
|
|
3703
|
+
};
|
|
3704
|
+
AIStatus: {
|
|
3705
|
+
granted: boolean;
|
|
3706
|
+
/** @description 프로젝트마다 분당 호출 상한 */
|
|
3707
|
+
perMinute: number;
|
|
3708
|
+
/** @description 프로젝트마다 동시 호출 상한 */
|
|
3709
|
+
concurrent: number;
|
|
3710
|
+
/** @description 0 이면 모델이 정한다 */
|
|
3711
|
+
maxOutputTokens?: number;
|
|
3712
|
+
/** @description 0 이면 모델이 정한다 */
|
|
3713
|
+
maxInputTokens?: number;
|
|
3714
|
+
/**
|
|
3715
|
+
* Format: int64
|
|
3716
|
+
* @description org 잔액 (음수 가능)
|
|
3717
|
+
*/
|
|
3718
|
+
creditMicroCents: number;
|
|
3719
|
+
/**
|
|
3720
|
+
* Format: int64
|
|
3721
|
+
* @description 가성비 모델에만 주는 하루치
|
|
3722
|
+
*/
|
|
3723
|
+
freeDailyMicroCents?: number;
|
|
3724
|
+
/** Format: int64 */
|
|
3725
|
+
calls24h?: number;
|
|
3726
|
+
/** Format: int64 */
|
|
3727
|
+
tokensIn24h?: number;
|
|
3728
|
+
/** Format: int64 */
|
|
3729
|
+
tokensOut24h?: number;
|
|
3730
|
+
/**
|
|
3731
|
+
* Format: int64
|
|
3732
|
+
* @description 최근 24 시간 원장의 합 (양수 = 쓴 금액). usage_hourly 에서는 못 만드는 수다
|
|
3733
|
+
*/
|
|
3734
|
+
spentMicroCents24h?: number;
|
|
3735
|
+
};
|
|
3736
|
+
AIAutoTopup: {
|
|
3737
|
+
/** Format: int64 */
|
|
3738
|
+
belowMicroCents: number;
|
|
3739
|
+
/** Format: int64 */
|
|
3740
|
+
microCents: number;
|
|
3741
|
+
};
|
|
3742
|
+
AICredit: {
|
|
3743
|
+
/** @description 거짓이면 이 배치에 크레딧 상품이 없다 — 충전 끝점은 501 */
|
|
3744
|
+
enabled: boolean;
|
|
3745
|
+
sandbox: boolean;
|
|
3746
|
+
/**
|
|
3747
|
+
* Format: int64
|
|
3748
|
+
* @description 잔액 (음수 가능)
|
|
3749
|
+
*/
|
|
3750
|
+
microCents: number;
|
|
3751
|
+
/** Format: int64 */
|
|
3752
|
+
lowMicroCents?: number;
|
|
3753
|
+
/** Format: int64 */
|
|
3754
|
+
freeDailyMicroCents?: number;
|
|
3755
|
+
/** @description 충전 단위. 자동 충전이 **같은 목록**을 쓴다 */
|
|
3756
|
+
tiers: number[];
|
|
3757
|
+
/** @description 거짓이면 자동 충전을 못 켠다 — 첫 충전이 카드를 저장한다 */
|
|
3758
|
+
hasPaymentMethod: boolean;
|
|
3759
|
+
autoTopup?: components["schemas"]["AIAutoTopup"];
|
|
3760
|
+
autoTopupsToday: number;
|
|
3761
|
+
/** @description 이 수가 곧 하루 지출 천장이다 */
|
|
3762
|
+
autoTopupPerDay: number;
|
|
3763
|
+
};
|
|
3764
|
+
AILedgerRow: {
|
|
3765
|
+
/** @enum {string} */
|
|
3766
|
+
kind: "call" | "topup" | "adjust";
|
|
3767
|
+
model?: string;
|
|
3768
|
+
project?: string;
|
|
3769
|
+
/** Format: int64 */
|
|
3770
|
+
tokensIn?: number;
|
|
3771
|
+
/** Format: int64 */
|
|
3772
|
+
tokensOut?: number;
|
|
3773
|
+
/**
|
|
3774
|
+
* Format: int64
|
|
3775
|
+
* @description `call` 은 음수
|
|
3776
|
+
*/
|
|
3777
|
+
microCents: number;
|
|
3778
|
+
/** Format: date-time */
|
|
3779
|
+
at: string;
|
|
3780
|
+
};
|
|
3357
3781
|
/** @description 프로젝트의 이메일 상태다 (docs/email.md §5). */
|
|
3358
3782
|
EmailStatus: {
|
|
3359
3783
|
/** @description 켜졌는가. `project_email` 행의 존재가 유일한 표현이다 (0038). */
|
|
@@ -4227,7 +4651,7 @@ export interface operations {
|
|
|
4227
4651
|
409: components["responses"]["Conflict"];
|
|
4228
4652
|
};
|
|
4229
4653
|
};
|
|
4230
|
-
|
|
4654
|
+
deleteOrg: {
|
|
4231
4655
|
parameters: {
|
|
4232
4656
|
query?: never;
|
|
4233
4657
|
header?: never;
|
|
@@ -4236,24 +4660,37 @@ export interface operations {
|
|
|
4236
4660
|
};
|
|
4237
4661
|
cookie?: never;
|
|
4238
4662
|
};
|
|
4239
|
-
requestBody
|
|
4663
|
+
requestBody: {
|
|
4664
|
+
content: {
|
|
4665
|
+
"application/json": {
|
|
4666
|
+
/** @description 조직 슬러그를 그대로. */
|
|
4667
|
+
confirm: string;
|
|
4668
|
+
};
|
|
4669
|
+
};
|
|
4670
|
+
};
|
|
4240
4671
|
responses: {
|
|
4241
|
-
/** @description
|
|
4242
|
-
|
|
4672
|
+
/** @description 지웠다 */
|
|
4673
|
+
204: {
|
|
4243
4674
|
headers: {
|
|
4244
4675
|
[name: string]: unknown;
|
|
4245
4676
|
};
|
|
4246
|
-
content
|
|
4247
|
-
"application/json": {
|
|
4248
|
-
projects: components["schemas"]["Project"][];
|
|
4249
|
-
};
|
|
4250
|
-
};
|
|
4677
|
+
content?: never;
|
|
4251
4678
|
};
|
|
4679
|
+
400: components["responses"]["BadRequest"];
|
|
4252
4680
|
403: components["responses"]["Forbidden"];
|
|
4253
4681
|
404: components["responses"]["NotFound"];
|
|
4682
|
+
/** @description 비어 있지 않다 (`org_not_empty`) · 개인 조직 (`personal_org`) · 유료 구독 (`active_subscription`) */
|
|
4683
|
+
409: {
|
|
4684
|
+
headers: {
|
|
4685
|
+
[name: string]: unknown;
|
|
4686
|
+
};
|
|
4687
|
+
content: {
|
|
4688
|
+
"application/json": components["schemas"]["Error"];
|
|
4689
|
+
};
|
|
4690
|
+
};
|
|
4254
4691
|
};
|
|
4255
4692
|
};
|
|
4256
|
-
|
|
4693
|
+
updateOrg: {
|
|
4257
4694
|
parameters: {
|
|
4258
4695
|
query?: never;
|
|
4259
4696
|
header?: never;
|
|
@@ -4265,7 +4702,64 @@ export interface operations {
|
|
|
4265
4702
|
requestBody: {
|
|
4266
4703
|
content: {
|
|
4267
4704
|
"application/json": {
|
|
4268
|
-
name:
|
|
4705
|
+
name: string;
|
|
4706
|
+
};
|
|
4707
|
+
};
|
|
4708
|
+
};
|
|
4709
|
+
responses: {
|
|
4710
|
+
/** @description 바뀐 조직 */
|
|
4711
|
+
200: {
|
|
4712
|
+
headers: {
|
|
4713
|
+
[name: string]: unknown;
|
|
4714
|
+
};
|
|
4715
|
+
content: {
|
|
4716
|
+
"application/json": components["schemas"]["OrgMembership"];
|
|
4717
|
+
};
|
|
4718
|
+
};
|
|
4719
|
+
400: components["responses"]["BadRequest"];
|
|
4720
|
+
403: components["responses"]["Forbidden"];
|
|
4721
|
+
404: components["responses"]["NotFound"];
|
|
4722
|
+
};
|
|
4723
|
+
};
|
|
4724
|
+
listProjects: {
|
|
4725
|
+
parameters: {
|
|
4726
|
+
query?: never;
|
|
4727
|
+
header?: never;
|
|
4728
|
+
path: {
|
|
4729
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
4730
|
+
};
|
|
4731
|
+
cookie?: never;
|
|
4732
|
+
};
|
|
4733
|
+
requestBody?: never;
|
|
4734
|
+
responses: {
|
|
4735
|
+
/** @description 조직의 프로젝트 */
|
|
4736
|
+
200: {
|
|
4737
|
+
headers: {
|
|
4738
|
+
[name: string]: unknown;
|
|
4739
|
+
};
|
|
4740
|
+
content: {
|
|
4741
|
+
"application/json": {
|
|
4742
|
+
projects: components["schemas"]["Project"][];
|
|
4743
|
+
};
|
|
4744
|
+
};
|
|
4745
|
+
};
|
|
4746
|
+
403: components["responses"]["Forbidden"];
|
|
4747
|
+
404: components["responses"]["NotFound"];
|
|
4748
|
+
};
|
|
4749
|
+
};
|
|
4750
|
+
createProject: {
|
|
4751
|
+
parameters: {
|
|
4752
|
+
query?: never;
|
|
4753
|
+
header?: never;
|
|
4754
|
+
path: {
|
|
4755
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
4756
|
+
};
|
|
4757
|
+
cookie?: never;
|
|
4758
|
+
};
|
|
4759
|
+
requestBody: {
|
|
4760
|
+
content: {
|
|
4761
|
+
"application/json": {
|
|
4762
|
+
name: components["schemas"]["Slug"];
|
|
4269
4763
|
};
|
|
4270
4764
|
};
|
|
4271
4765
|
};
|
|
@@ -4324,6 +4818,72 @@ export interface operations {
|
|
|
4324
4818
|
404: components["responses"]["NotFound"];
|
|
4325
4819
|
};
|
|
4326
4820
|
};
|
|
4821
|
+
deleteProject: {
|
|
4822
|
+
parameters: {
|
|
4823
|
+
query?: never;
|
|
4824
|
+
header?: never;
|
|
4825
|
+
path: {
|
|
4826
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
4827
|
+
projectName: components["parameters"]["ProjectName"];
|
|
4828
|
+
};
|
|
4829
|
+
cookie?: never;
|
|
4830
|
+
};
|
|
4831
|
+
requestBody: {
|
|
4832
|
+
content: {
|
|
4833
|
+
"application/json": {
|
|
4834
|
+
confirm: string;
|
|
4835
|
+
};
|
|
4836
|
+
};
|
|
4837
|
+
};
|
|
4838
|
+
responses: {
|
|
4839
|
+
/** @description 종결 연산을 시작했다 */
|
|
4840
|
+
202: {
|
|
4841
|
+
headers: {
|
|
4842
|
+
[name: string]: unknown;
|
|
4843
|
+
};
|
|
4844
|
+
content: {
|
|
4845
|
+
"application/json": components["schemas"]["OperationStarted"];
|
|
4846
|
+
};
|
|
4847
|
+
};
|
|
4848
|
+
400: components["responses"]["BadRequest"];
|
|
4849
|
+
403: components["responses"]["Forbidden"];
|
|
4850
|
+
404: components["responses"]["NotFound"];
|
|
4851
|
+
/** @description 다른 연산이 진행 중이다 (`op_in_flight`) */
|
|
4852
|
+
409: {
|
|
4853
|
+
headers: {
|
|
4854
|
+
[name: string]: unknown;
|
|
4855
|
+
};
|
|
4856
|
+
content: {
|
|
4857
|
+
"application/json": components["schemas"]["Error"];
|
|
4858
|
+
};
|
|
4859
|
+
};
|
|
4860
|
+
};
|
|
4861
|
+
};
|
|
4862
|
+
getOrgOperation: {
|
|
4863
|
+
parameters: {
|
|
4864
|
+
query?: never;
|
|
4865
|
+
header?: never;
|
|
4866
|
+
path: {
|
|
4867
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
4868
|
+
opId: string;
|
|
4869
|
+
};
|
|
4870
|
+
cookie?: never;
|
|
4871
|
+
};
|
|
4872
|
+
requestBody?: never;
|
|
4873
|
+
responses: {
|
|
4874
|
+
/** @description 연산 */
|
|
4875
|
+
200: {
|
|
4876
|
+
headers: {
|
|
4877
|
+
[name: string]: unknown;
|
|
4878
|
+
};
|
|
4879
|
+
content: {
|
|
4880
|
+
"application/json": components["schemas"]["Operation"];
|
|
4881
|
+
};
|
|
4882
|
+
};
|
|
4883
|
+
403: components["responses"]["Forbidden"];
|
|
4884
|
+
404: components["responses"]["NotFound"];
|
|
4885
|
+
};
|
|
4886
|
+
};
|
|
4327
4887
|
getProjectOverview: {
|
|
4328
4888
|
parameters: {
|
|
4329
4889
|
query?: never;
|
|
@@ -5216,6 +5776,305 @@ export interface operations {
|
|
|
5216
5776
|
};
|
|
5217
5777
|
};
|
|
5218
5778
|
};
|
|
5779
|
+
listAIModels: {
|
|
5780
|
+
parameters: {
|
|
5781
|
+
query?: never;
|
|
5782
|
+
header?: never;
|
|
5783
|
+
path?: never;
|
|
5784
|
+
cookie?: never;
|
|
5785
|
+
};
|
|
5786
|
+
requestBody?: never;
|
|
5787
|
+
responses: {
|
|
5788
|
+
/** @description 카탈로그 */
|
|
5789
|
+
200: {
|
|
5790
|
+
headers: {
|
|
5791
|
+
[name: string]: unknown;
|
|
5792
|
+
};
|
|
5793
|
+
content: {
|
|
5794
|
+
"application/json": {
|
|
5795
|
+
models: components["schemas"]["AIModel"][];
|
|
5796
|
+
/**
|
|
5797
|
+
* Format: int64
|
|
5798
|
+
* @description org 마다 하루 무료분 (마이크로센트). **가성비 모델에만** 쓴다
|
|
5799
|
+
*/
|
|
5800
|
+
freeDailyMicroCents: number;
|
|
5801
|
+
/**
|
|
5802
|
+
* Format: int64
|
|
5803
|
+
* @description "잔액이 낮다" 의 선 — 화면이 하드코딩하면 표가 둘이 된다
|
|
5804
|
+
*/
|
|
5805
|
+
lowMicroCents: number;
|
|
5806
|
+
};
|
|
5807
|
+
};
|
|
5808
|
+
};
|
|
5809
|
+
401: components["responses"]["Unauthorized"];
|
|
5810
|
+
};
|
|
5811
|
+
};
|
|
5812
|
+
getAI: {
|
|
5813
|
+
parameters: {
|
|
5814
|
+
query?: never;
|
|
5815
|
+
header?: never;
|
|
5816
|
+
path: {
|
|
5817
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
5818
|
+
projectName: components["parameters"]["ProjectName"];
|
|
5819
|
+
};
|
|
5820
|
+
cookie?: never;
|
|
5821
|
+
};
|
|
5822
|
+
requestBody?: never;
|
|
5823
|
+
responses: {
|
|
5824
|
+
/** @description AI 상태 */
|
|
5825
|
+
200: {
|
|
5826
|
+
headers: {
|
|
5827
|
+
[name: string]: unknown;
|
|
5828
|
+
};
|
|
5829
|
+
content: {
|
|
5830
|
+
"application/json": components["schemas"]["AIStatus"];
|
|
5831
|
+
};
|
|
5832
|
+
};
|
|
5833
|
+
403: components["responses"]["Forbidden"];
|
|
5834
|
+
404: components["responses"]["NotFound"];
|
|
5835
|
+
/** @description `no_core` */
|
|
5836
|
+
503: {
|
|
5837
|
+
headers: {
|
|
5838
|
+
[name: string]: unknown;
|
|
5839
|
+
};
|
|
5840
|
+
content: {
|
|
5841
|
+
"application/json": components["schemas"]["Error"];
|
|
5842
|
+
};
|
|
5843
|
+
};
|
|
5844
|
+
};
|
|
5845
|
+
};
|
|
5846
|
+
grantAI: {
|
|
5847
|
+
parameters: {
|
|
5848
|
+
query?: never;
|
|
5849
|
+
header?: never;
|
|
5850
|
+
path: {
|
|
5851
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
5852
|
+
projectName: components["parameters"]["ProjectName"];
|
|
5853
|
+
};
|
|
5854
|
+
cookie?: never;
|
|
5855
|
+
};
|
|
5856
|
+
requestBody?: never;
|
|
5857
|
+
responses: {
|
|
5858
|
+
/** @description 부여 상태 (이미 있었으면 기존 값) */
|
|
5859
|
+
200: {
|
|
5860
|
+
headers: {
|
|
5861
|
+
[name: string]: unknown;
|
|
5862
|
+
};
|
|
5863
|
+
content: {
|
|
5864
|
+
"application/json": components["schemas"]["AIStatus"];
|
|
5865
|
+
};
|
|
5866
|
+
};
|
|
5867
|
+
403: components["responses"]["Forbidden"];
|
|
5868
|
+
404: components["responses"]["NotFound"];
|
|
5869
|
+
/** @description `no_core` */
|
|
5870
|
+
503: {
|
|
5871
|
+
headers: {
|
|
5872
|
+
[name: string]: unknown;
|
|
5873
|
+
};
|
|
5874
|
+
content: {
|
|
5875
|
+
"application/json": components["schemas"]["Error"];
|
|
5876
|
+
};
|
|
5877
|
+
};
|
|
5878
|
+
};
|
|
5879
|
+
};
|
|
5880
|
+
revokeAI: {
|
|
5881
|
+
parameters: {
|
|
5882
|
+
query?: never;
|
|
5883
|
+
header?: never;
|
|
5884
|
+
path: {
|
|
5885
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
5886
|
+
projectName: components["parameters"]["ProjectName"];
|
|
5887
|
+
};
|
|
5888
|
+
cookie?: never;
|
|
5889
|
+
};
|
|
5890
|
+
requestBody?: never;
|
|
5891
|
+
responses: {
|
|
5892
|
+
/** @description 껐다 */
|
|
5893
|
+
204: {
|
|
5894
|
+
headers: {
|
|
5895
|
+
[name: string]: unknown;
|
|
5896
|
+
};
|
|
5897
|
+
content?: never;
|
|
5898
|
+
};
|
|
5899
|
+
403: components["responses"]["Forbidden"];
|
|
5900
|
+
404: components["responses"]["NotFound"];
|
|
5901
|
+
/** @description `no_core` */
|
|
5902
|
+
503: {
|
|
5903
|
+
headers: {
|
|
5904
|
+
[name: string]: unknown;
|
|
5905
|
+
};
|
|
5906
|
+
content: {
|
|
5907
|
+
"application/json": components["schemas"]["Error"];
|
|
5908
|
+
};
|
|
5909
|
+
};
|
|
5910
|
+
};
|
|
5911
|
+
};
|
|
5912
|
+
getAICredit: {
|
|
5913
|
+
parameters: {
|
|
5914
|
+
query?: never;
|
|
5915
|
+
header?: never;
|
|
5916
|
+
path: {
|
|
5917
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
5918
|
+
};
|
|
5919
|
+
cookie?: never;
|
|
5920
|
+
};
|
|
5921
|
+
requestBody?: never;
|
|
5922
|
+
responses: {
|
|
5923
|
+
/** @description 크레딧 상태 */
|
|
5924
|
+
200: {
|
|
5925
|
+
headers: {
|
|
5926
|
+
[name: string]: unknown;
|
|
5927
|
+
};
|
|
5928
|
+
content: {
|
|
5929
|
+
"application/json": components["schemas"]["AICredit"];
|
|
5930
|
+
};
|
|
5931
|
+
};
|
|
5932
|
+
403: components["responses"]["Forbidden"];
|
|
5933
|
+
};
|
|
5934
|
+
};
|
|
5935
|
+
listAILedger: {
|
|
5936
|
+
parameters: {
|
|
5937
|
+
query?: {
|
|
5938
|
+
limit?: number;
|
|
5939
|
+
/** @description 이 ledger_id 보다 앞의 행 */
|
|
5940
|
+
before?: number;
|
|
5941
|
+
};
|
|
5942
|
+
header?: never;
|
|
5943
|
+
path: {
|
|
5944
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
5945
|
+
};
|
|
5946
|
+
cookie?: never;
|
|
5947
|
+
};
|
|
5948
|
+
requestBody?: never;
|
|
5949
|
+
responses: {
|
|
5950
|
+
/** @description 원장 */
|
|
5951
|
+
200: {
|
|
5952
|
+
headers: {
|
|
5953
|
+
[name: string]: unknown;
|
|
5954
|
+
};
|
|
5955
|
+
content: {
|
|
5956
|
+
"application/json": {
|
|
5957
|
+
rows: components["schemas"]["AILedgerRow"][];
|
|
5958
|
+
/** Format: int64 */
|
|
5959
|
+
nextBefore?: number;
|
|
5960
|
+
};
|
|
5961
|
+
};
|
|
5962
|
+
};
|
|
5963
|
+
403: components["responses"]["Forbidden"];
|
|
5964
|
+
};
|
|
5965
|
+
};
|
|
5966
|
+
createAICreditCheckout: {
|
|
5967
|
+
parameters: {
|
|
5968
|
+
query?: never;
|
|
5969
|
+
header?: never;
|
|
5970
|
+
path: {
|
|
5971
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
5972
|
+
};
|
|
5973
|
+
cookie?: never;
|
|
5974
|
+
};
|
|
5975
|
+
requestBody: {
|
|
5976
|
+
content: {
|
|
5977
|
+
"application/json": {
|
|
5978
|
+
/** Format: int64 */
|
|
5979
|
+
microCents: number;
|
|
5980
|
+
returnTo: string;
|
|
5981
|
+
};
|
|
5982
|
+
};
|
|
5983
|
+
};
|
|
5984
|
+
responses: {
|
|
5985
|
+
/** @description 체크아웃 */
|
|
5986
|
+
200: {
|
|
5987
|
+
headers: {
|
|
5988
|
+
[name: string]: unknown;
|
|
5989
|
+
};
|
|
5990
|
+
content: {
|
|
5991
|
+
"application/json": {
|
|
5992
|
+
url: string;
|
|
5993
|
+
checkoutId?: string;
|
|
5994
|
+
};
|
|
5995
|
+
};
|
|
5996
|
+
};
|
|
5997
|
+
/** @description 충전 단위가 목록에 없다 · returnTo 가 허용된 주소가 아니다 */
|
|
5998
|
+
400: {
|
|
5999
|
+
headers: {
|
|
6000
|
+
[name: string]: unknown;
|
|
6001
|
+
};
|
|
6002
|
+
content: {
|
|
6003
|
+
"application/json": components["schemas"]["Error"];
|
|
6004
|
+
};
|
|
6005
|
+
};
|
|
6006
|
+
403: components["responses"]["Forbidden"];
|
|
6007
|
+
/** @description `billing_off` — 이 배치에 크레딧 상품이 없다 */
|
|
6008
|
+
501: {
|
|
6009
|
+
headers: {
|
|
6010
|
+
[name: string]: unknown;
|
|
6011
|
+
};
|
|
6012
|
+
content: {
|
|
6013
|
+
"application/json": components["schemas"]["Error"];
|
|
6014
|
+
};
|
|
6015
|
+
};
|
|
6016
|
+
};
|
|
6017
|
+
};
|
|
6018
|
+
setAIAutoTopup: {
|
|
6019
|
+
parameters: {
|
|
6020
|
+
query?: never;
|
|
6021
|
+
header?: never;
|
|
6022
|
+
path: {
|
|
6023
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
6024
|
+
};
|
|
6025
|
+
cookie?: never;
|
|
6026
|
+
};
|
|
6027
|
+
requestBody: {
|
|
6028
|
+
content: {
|
|
6029
|
+
"application/json": {
|
|
6030
|
+
enabled: boolean;
|
|
6031
|
+
/** Format: int64 */
|
|
6032
|
+
belowMicroCents?: number;
|
|
6033
|
+
/** Format: int64 */
|
|
6034
|
+
microCents?: number;
|
|
6035
|
+
};
|
|
6036
|
+
};
|
|
6037
|
+
};
|
|
6038
|
+
responses: {
|
|
6039
|
+
/** @description 켰다 */
|
|
6040
|
+
200: {
|
|
6041
|
+
headers: {
|
|
6042
|
+
[name: string]: unknown;
|
|
6043
|
+
};
|
|
6044
|
+
content: {
|
|
6045
|
+
"application/json": {
|
|
6046
|
+
autoTopup?: components["schemas"]["AIAutoTopup"];
|
|
6047
|
+
};
|
|
6048
|
+
};
|
|
6049
|
+
};
|
|
6050
|
+
/** @description 껐다 */
|
|
6051
|
+
204: {
|
|
6052
|
+
headers: {
|
|
6053
|
+
[name: string]: unknown;
|
|
6054
|
+
};
|
|
6055
|
+
content?: never;
|
|
6056
|
+
};
|
|
6057
|
+
/** @description 금액이 티어에 없다 · 기준이 0 이하 · 기준이 충전 금액 이상 */
|
|
6058
|
+
400: {
|
|
6059
|
+
headers: {
|
|
6060
|
+
[name: string]: unknown;
|
|
6061
|
+
};
|
|
6062
|
+
content: {
|
|
6063
|
+
"application/json": components["schemas"]["Error"];
|
|
6064
|
+
};
|
|
6065
|
+
};
|
|
6066
|
+
403: components["responses"]["Forbidden"];
|
|
6067
|
+
/** @description `no_payment_method` — 저장된 카드가 없다. 먼저 한 번 수동으로 충전한다 */
|
|
6068
|
+
409: {
|
|
6069
|
+
headers: {
|
|
6070
|
+
[name: string]: unknown;
|
|
6071
|
+
};
|
|
6072
|
+
content: {
|
|
6073
|
+
"application/json": components["schemas"]["Error"];
|
|
6074
|
+
};
|
|
6075
|
+
};
|
|
6076
|
+
};
|
|
6077
|
+
};
|
|
5219
6078
|
getEmail: {
|
|
5220
6079
|
parameters: {
|
|
5221
6080
|
query?: never;
|