@sayren/store-sdk 0.29.1 → 0.29.3
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.mts +687 -208
- package/dist/index.mjs +333 -24
- package/package.json +1 -1
- package/src/client.ts +9 -1
- package/src/schemas/claim.ts +18 -0
- package/src/schemas/collection.ts +258 -11
- package/src/schemas/order.ts +26 -0
- package/src/schemas/payment.ts +7 -1
- package/src/schemas/points.ts +111 -3
- package/src/schemas/promotion.ts +140 -4
- package/src/schemas/webhook-event.ts +26 -0
package/dist/index.mjs
CHANGED
|
@@ -838,6 +838,7 @@ const claimSchema = z.object({
|
|
|
838
838
|
claimDeliveryFee: z.number().int().describe("구매자가 부담하는 반품·교환 배송비. 원 단위"),
|
|
839
839
|
expectedRefundAmount: z.number().int().nullable().describe("접수 시점에 계산한 예상 환불액 — 수량 비율 상품 금액 − 반품 배송비 − 조건부 무료배송 미달 차감. **배송비 환불은 포함되지 않고 `expectedDeliveryFeeRefundAmount`로 따로 온다**(승인 시점의 배송 묶음 상태로 확정되기 때문이다). 교환은 환불이 없어 null이다"),
|
|
840
840
|
expectedDeliveryFeeRefundAmount: z.number().int().nullable().describe("접수 시점에 계산한 예상 배송비 환불액. 배송 묶음(같은 상품의 주문상품)이 모두 취소되거나 판매자 귀책일 때만 0보다 크다. 이 필드가 생기기 전에 접수된 클레임은 null이다"),
|
|
841
|
+
expectedPointRefundAmount: z.number().int().optional().default(0).describe("예상 반환 적립금 (원, #93) — 결제에 쓴 적립금 중 이 수량의 몫이다. 예상 환불액(현금)과 별개이고, 차감은 현금에서 먼저 뺀다. 교환·적립금을 쓰지 않은 주문은 0이다. 서버는 항상 싣는다"),
|
|
841
842
|
exchangeOption: z.object({
|
|
842
843
|
optionId: z.string(),
|
|
843
844
|
optionName: z.string()
|
|
@@ -900,6 +901,7 @@ const approveClaimResultSchema = z.object({
|
|
|
900
901
|
deliveryFeeChargeAmount: z.number().int().describe("환불액에서 뺀 **배송비** — 반품·교환 배송비 + 조건부 무료배송 미달 차감. 추가 차감(`deductAmount`)은 포함하지 않는다"),
|
|
901
902
|
couponChargeAmount: z.number().int().optional().default(0).describe("환불액에서 뺀 쿠폰 조건 미달 차감. 남은 주문상품이 쿠폰 조건을 잃었을 때만 0보다 크다. 서버는 항상 싣는다"),
|
|
902
903
|
couponChargeRefundAmount: z.number().int().optional().default(0).describe("환불액에 더한, 앞선 환불에서 뺀 쿠폰 차감을 되돌린 몫. 서버는 항상 싣는다"),
|
|
904
|
+
pointRefundAmount: z.number().int().optional().default(0).describe("돌려준 적립금 (원, #93) — 결제에 쓴 적립금 중 이번 취소·반품 수량의 몫이다. 현금 환불(`refundAmount`)과 별개다. 차감은 현금에서 먼저 빼고 모자란 몫만 여기서 뺀다. 적립금을 쓰지 않은 주문과 이 필드가 없는 이전 응답·이벤트는 0으로 읽는다"),
|
|
903
905
|
refundedAt: z.string()
|
|
904
906
|
});
|
|
905
907
|
//#endregion
|
|
@@ -1098,11 +1100,34 @@ const purchaseEarnPolicySchema = z.object({
|
|
|
1098
1100
|
enabled: z.boolean().describe("구매 적립 사용 여부"),
|
|
1099
1101
|
rateBp: pointEarnRateBpSchema.describe("상점 기본 구매 적립률(만분율, 100 = 1%). 0~3000. 상품의 `pointEarnRateBp`가 있으면 그 값이 우선한다")
|
|
1100
1102
|
});
|
|
1103
|
+
/** 사용 단위 — 1·10·100원 */
|
|
1104
|
+
const POINT_USE_UNITS = [
|
|
1105
|
+
1,
|
|
1106
|
+
10,
|
|
1107
|
+
100
|
|
1108
|
+
];
|
|
1109
|
+
/**
|
|
1110
|
+
* 적립금 사용 규칙(P3) — 주문서에서 결제 금액을 줄인다. 적용 순서는 즉시할인 → 쿠폰 → 적립금이고, 상품 금액(쿠폰 뒤)에 먼저 쓰고
|
|
1111
|
+
* 남으면 배송비에 쓴다(`includeDeliveryFee`). 결제 금액이 100원 아래로 내려가지 않게 적립금을 줄인다.
|
|
1112
|
+
*/
|
|
1113
|
+
const pointUsePolicySchema = z.object({
|
|
1114
|
+
enabled: z.boolean().describe("적립금 사용 여부. 꺼도 잔액은 남는다"),
|
|
1115
|
+
minBalance: z.number().int().min(0).max(1e7).describe("이 잔액 이상이어야 쓸 수 있다(원). 0이면 제한 없음"),
|
|
1116
|
+
minAmount: z.number().int().min(0).max(1e7).describe("한 번에 쓰는 최소 금액(원). 0이면 제한 없음"),
|
|
1117
|
+
unit: z.union([
|
|
1118
|
+
z.literal(1),
|
|
1119
|
+
z.literal(10),
|
|
1120
|
+
z.literal(100)
|
|
1121
|
+
]).describe("사용 단위(원). 요청 금액을 이 단위로 내린다"),
|
|
1122
|
+
maxRatioBp: z.number().int().min(1).max(1e4).describe("결제 기준 금액(쿠폰 뒤) 대비 최대 사용 비율(만분율, 10000 = 100%)"),
|
|
1123
|
+
includeDeliveryFee: z.boolean().describe("배송비에도 쓰는가. 끄면 상품 금액(쿠폰 뒤)에만 쓴다")
|
|
1124
|
+
});
|
|
1101
1125
|
const expiryDays = z.number().int().min(30).max(POINT_EXPIRY_DAYS_MAX).describe("적립금 유효 기간(일, 30~1825). 적립한 날로부터 이 기간이 지난 날의 끝(한국 시간 23:59:59)에 소멸한다. 바꿔도 이미 적립된 적립금의 유효 기간은 바뀌지 않는다");
|
|
1102
1126
|
/** 저장된 상점 정책(`stores.point_policy`) — 해석은 `resolvePointPolicy` */
|
|
1103
1127
|
const pointPolicySchema = z.object({
|
|
1104
1128
|
reviewReward: reviewRewardPolicySchema,
|
|
1105
1129
|
purchaseEarn: purchaseEarnPolicySchema,
|
|
1130
|
+
use: pointUsePolicySchema,
|
|
1106
1131
|
expiryDays: expiryDays.nullable().describe("적립금 유효 기간(일). 정하지 않았으면 null")
|
|
1107
1132
|
});
|
|
1108
1133
|
/** 정책이 없을 때 — 모두 끔 */
|
|
@@ -1116,6 +1141,14 @@ const POINT_POLICY_DEFAULTS = {
|
|
|
1116
1141
|
enabled: false,
|
|
1117
1142
|
rateBp: 0
|
|
1118
1143
|
},
|
|
1144
|
+
use: {
|
|
1145
|
+
enabled: false,
|
|
1146
|
+
minBalance: 0,
|
|
1147
|
+
minAmount: 0,
|
|
1148
|
+
unit: 10,
|
|
1149
|
+
maxRatioBp: 1e4,
|
|
1150
|
+
includeDeliveryFee: true
|
|
1151
|
+
},
|
|
1119
1152
|
expiryDays: null
|
|
1120
1153
|
};
|
|
1121
1154
|
/**
|
|
@@ -1127,10 +1160,12 @@ function resolvePointPolicy(stored) {
|
|
|
1127
1160
|
const raw = stored;
|
|
1128
1161
|
const review = reviewRewardPolicySchema.safeParse(raw.reviewReward);
|
|
1129
1162
|
const purchase = purchaseEarnPolicySchema.safeParse(raw.purchaseEarn);
|
|
1163
|
+
const use = pointUsePolicySchema.safeParse(raw.use);
|
|
1130
1164
|
const expiry = expiryDays.nullable().safeParse(raw.expiryDays ?? null);
|
|
1131
1165
|
return {
|
|
1132
1166
|
reviewReward: review.success ? review.data : POINT_POLICY_DEFAULTS.reviewReward,
|
|
1133
1167
|
purchaseEarn: purchase.success ? purchase.data : POINT_POLICY_DEFAULTS.purchaseEarn,
|
|
1168
|
+
use: use.success ? use.data : POINT_POLICY_DEFAULTS.use,
|
|
1134
1169
|
expiryDays: expiry.success ? expiry.data : null
|
|
1135
1170
|
};
|
|
1136
1171
|
}
|
|
@@ -1157,7 +1192,7 @@ function reviewRewardPointOf(policy, hasPhoto) {
|
|
|
1157
1192
|
if (!reviewReward.enabled) return 0;
|
|
1158
1193
|
return reviewReward.textPoint + (hasPhoto ? reviewReward.photoPoint : 0);
|
|
1159
1194
|
}
|
|
1160
|
-
const DAY_MS = 864e5;
|
|
1195
|
+
const DAY_MS$1 = 864e5;
|
|
1161
1196
|
const KST_OFFSET_MS = 324e5;
|
|
1162
1197
|
/**
|
|
1163
1198
|
* 적립 묶음의 만료 시각 — 적립 시각 + `days`일이 속한 한국 시간 날짜의 끝(23:59:59.999 KST). 구매자 안내가 날짜 단위라
|
|
@@ -1165,8 +1200,8 @@ const KST_OFFSET_MS = 324e5;
|
|
|
1165
1200
|
*/
|
|
1166
1201
|
function pointExpiresAtOf(earnedAt, days) {
|
|
1167
1202
|
if (days === null) return null;
|
|
1168
|
-
const shifted = earnedAt.getTime() + days * DAY_MS + KST_OFFSET_MS;
|
|
1169
|
-
const endOfDay = Math.floor(shifted / DAY_MS) * DAY_MS + DAY_MS - 1;
|
|
1203
|
+
const shifted = earnedAt.getTime() + days * DAY_MS$1 + KST_OFFSET_MS;
|
|
1204
|
+
const endOfDay = Math.floor(shifted / DAY_MS$1) * DAY_MS$1 + DAY_MS$1 - 1;
|
|
1170
1205
|
return /* @__PURE__ */ new Date(endOfDay - KST_OFFSET_MS);
|
|
1171
1206
|
}
|
|
1172
1207
|
/** 적립 묶음 출처 — 같은 출처 id에는 묶음이 하나뿐이다(DB 부분 유니크) */
|
|
@@ -1177,7 +1212,7 @@ const POINT_LOT_SOURCES = [
|
|
|
1177
1212
|
"REFUND_RESTORE",
|
|
1178
1213
|
"OPENING"
|
|
1179
1214
|
];
|
|
1180
|
-
/** 원장 항목
|
|
1215
|
+
/** 원장 항목 유형 */
|
|
1181
1216
|
const POINT_ENTRY_TYPES = [
|
|
1182
1217
|
"EARN_REVIEW",
|
|
1183
1218
|
"REVOKE_REVIEW",
|
|
@@ -1197,6 +1232,8 @@ const storePointPolicySchema = z.object({
|
|
|
1197
1232
|
configured: z.boolean().describe("셀러가 정책을 저장한 적이 있는가. false면 기본(모두 끔)이다"),
|
|
1198
1233
|
reviewReward: reviewRewardPolicySchema.describe("리뷰 적립. 정하지 않았으면 끔·0원"),
|
|
1199
1234
|
purchaseEarn: purchaseEarnPolicySchema.describe("구매 적립. 구매확정 때 주문상품 실결제 금액(배송비 제외) × 적립률을 준다. 정하지 않았으면 끔·0"),
|
|
1235
|
+
useAvailable: z.boolean().optional().default(false).describe("적립금 사용(결제에 쓰기)을 켤 수 있는가 (#93). false면 준비 중이라 `use.enabled`를 켜는 저장이 409 `POINTS_UNAVAILABLE`이다. 필드가 없는 이전 응답은 false로 읽는다"),
|
|
1236
|
+
use: pointUsePolicySchema.optional().default(POINT_POLICY_DEFAULTS.use).describe("적립금 사용 규칙. 적용 순서는 즉시할인 → 쿠폰 → 적립금이다. 정하지 않았으면 끔. 필드가 없는 이전 응답은 끔으로 읽는다"),
|
|
1200
1237
|
expiryDays: pointPolicySchema.shape.expiryDays,
|
|
1201
1238
|
notice: pointPolicyNoticeSchema
|
|
1202
1239
|
});
|
|
@@ -1207,10 +1244,11 @@ const storePointPolicySchema = z.object({
|
|
|
1207
1244
|
const updatePointPolicyRequestSchema = z.object({
|
|
1208
1245
|
reviewReward: reviewRewardPolicySchema.optional(),
|
|
1209
1246
|
purchaseEarn: purchaseEarnPolicySchema.optional(),
|
|
1247
|
+
use: pointUsePolicySchema.optional(),
|
|
1210
1248
|
expiryDays: expiryDays.optional()
|
|
1211
1249
|
});
|
|
1212
1250
|
/** 응답의 원장 유형 — 값이 추가될 수 있어 문자열로 받는다 */
|
|
1213
|
-
const responsePointEntryTypeSchema = z.union([z.enum(POINT_ENTRY_TYPES), z.string()]).describe("유형. `EARN_REVIEW` 리뷰 적립 · `REVOKE_REVIEW` 리뷰 삭제 회수 · `EARN_PURCHASE` 구매 적립 · `EXPIRE` 소멸 · `ADJUST` 셀러 지급·차감 · `OPENING` 기존 잔액
|
|
1251
|
+
const responsePointEntryTypeSchema = z.union([z.enum(POINT_ENTRY_TYPES), z.string()]).describe("유형. `EARN_REVIEW` 리뷰 적립 · `REVOKE_REVIEW` 리뷰 삭제 회수 · `EARN_PURCHASE` 구매 적립 · `EXPIRE` 소멸 · `ADJUST` 셀러 지급·차감 · `OPENING` 기존 잔액 이전 · `USE_RESERVE` 결제 사용(결제 시작 때 빠짐) · `USE_RELEASE` 결제가 실패·만료되어 되돌림 · `REFUND_RESTORE` 취소·반품 환불로 반환. 값이 추가될 수 있어 문자열로 받는다");
|
|
1214
1252
|
/** 원장 항목 — 셀러 조회용(사유·행위자 포함) */
|
|
1215
1253
|
const pointEntrySchema = z.object({
|
|
1216
1254
|
entryId: z.string(),
|
|
@@ -1227,7 +1265,7 @@ const pointEntrySchema = z.object({
|
|
|
1227
1265
|
/** 적립 묶음 요약 — 남은 금액이 있는 묶음 */
|
|
1228
1266
|
const pointLotSchema = z.object({
|
|
1229
1267
|
lotId: z.string(),
|
|
1230
|
-
source: z.union([z.enum(POINT_LOT_SOURCES), z.string()]).describe("출처. `REVIEW`·`PURCHASE`·`ADJUST`·`OPENING` 등"),
|
|
1268
|
+
source: z.union([z.enum(POINT_LOT_SOURCES), z.string()]).describe("출처. `REVIEW`·`PURCHASE`·`ADJUST`·`REFUND_RESTORE`·`OPENING` 등"),
|
|
1231
1269
|
amount: z.number().int().describe("적립한 금액"),
|
|
1232
1270
|
remaining: z.number().int().describe("남은 금액"),
|
|
1233
1271
|
expiresAt: z.string().nullable().describe("소멸 시각. null이면 소멸 없음"),
|
|
@@ -1267,6 +1305,37 @@ const pointAdjustmentResultSchema = z.object({
|
|
|
1267
1305
|
entry: pointEntrySchema,
|
|
1268
1306
|
balance: z.number().int().describe("조정 뒤 잔액")
|
|
1269
1307
|
});
|
|
1308
|
+
const RESTORE_GRACE_MS = 30 * DAY_MS$1;
|
|
1309
|
+
/**
|
|
1310
|
+
* 환불로 돌려주는 적립금의 만료 — 결제에 쓴 묶음 중 가장 늦은 만료이고, 그 시각이 이미 지났으면 지금 + 30일(KST 날짜 끝)이다.
|
|
1311
|
+
* 쓴 묶음 중 만료 없는 묶음(기존 잔액 등)이 있으면 만료 없음(null)이다. 쓴 기록이 없으면 지금 + 30일이다(사용자 결정 2026-10-02).
|
|
1312
|
+
*/
|
|
1313
|
+
function pointRestoreExpiresAtOf(usages, now) {
|
|
1314
|
+
if (usages.some((usage) => usage.expiresAt === null)) return null;
|
|
1315
|
+
const latest = usages.reduce((max, usage) => {
|
|
1316
|
+
const at = Date.parse(usage.expiresAt);
|
|
1317
|
+
return Number.isFinite(at) && (max === null || at > max) ? at : max;
|
|
1318
|
+
}, null);
|
|
1319
|
+
if (latest !== null && latest > now.getTime()) return new Date(latest);
|
|
1320
|
+
return pointExpiresAtOf(new Date(now.getTime() + RESTORE_GRACE_MS), 0);
|
|
1321
|
+
}
|
|
1322
|
+
/**
|
|
1323
|
+
* 환불 금액 나누기 — 현금 몫·적립금 몫에서 차감(반품 배송비·쿠폰 조건 미달·추가 차감)을 **현금에서 먼저** 빼고 모자란 몫만 적립금에서 뺀다.
|
|
1324
|
+
* 둘 다 모자라면 0에서 멈추고 못 받은 차감액(`uncollected`)을 돌려준다(호출부가 감사 로그에 남긴다).
|
|
1325
|
+
*/
|
|
1326
|
+
function splitRefund(input) {
|
|
1327
|
+
const cash = Math.max(0, input.cash);
|
|
1328
|
+
const points = Math.max(0, input.points);
|
|
1329
|
+
const charges = Math.max(0, input.charges);
|
|
1330
|
+
const fromCash = Math.min(cash, charges);
|
|
1331
|
+
const rest = charges - fromCash;
|
|
1332
|
+
const fromPoints = Math.min(points, rest);
|
|
1333
|
+
return {
|
|
1334
|
+
cashRefund: cash - fromCash,
|
|
1335
|
+
pointRefund: points - fromPoints,
|
|
1336
|
+
uncollected: rest - fromPoints
|
|
1337
|
+
};
|
|
1338
|
+
}
|
|
1270
1339
|
//#endregion
|
|
1271
1340
|
//#region src/schemas/refund-policy.ts
|
|
1272
1341
|
/**
|
|
@@ -1883,8 +1952,8 @@ const discountRequestSchema = z.object({
|
|
|
1883
1952
|
* 컬렉션 (이슈 #83) — 상품을 어디에 보여 줄지 정하는 묶음이다. 카테고리는 상품이 무엇인지를 정하고 상품당 하나지만, 컬렉션은
|
|
1884
1953
|
* 다대다다. 이벤트·기획전은 기간이 있는 직접 선택 컬렉션이다. 권한은 카테고리와 같다(`category:r`·`category:rw`).
|
|
1885
1954
|
*
|
|
1886
|
-
* 유형은 만들 때 정하고 바꿀 수 없다.
|
|
1887
|
-
* 응답의 `type`은 값이 늘 수 있어 문자열이다.
|
|
1955
|
+
* 유형은 만들 때 정하고 바꿀 수 없다. 직접 선택(`MANUAL`)은 셀러가 상품을 담고 순서를 정하고, 조건 자동(`AUTOMATIC`)은 조건(`rules`)을
|
|
1956
|
+
* 모두 만족하는 판매 중 상품을 조회할 때마다 계산한다(결과를 저장하지 않는다). 응답의 `type`은 값이 늘 수 있어 문자열이다.
|
|
1888
1957
|
*/
|
|
1889
1958
|
/** 상점당 컬렉션 최대 개수 — 넘으면 409 `COLLECTION_LIMIT_EXCEEDED` */
|
|
1890
1959
|
const MAX_COLLECTIONS = 200;
|
|
@@ -1898,7 +1967,7 @@ const MAX_COLLECTION_TITLE = 60;
|
|
|
1898
1967
|
const MAX_COLLECTION_DESCRIPTION = 500;
|
|
1899
1968
|
/** 주소(slug) 형식 — 영문 소문자·숫자·하이픈, 첫 글자는 영문 소문자나 숫자, 64자까지 */
|
|
1900
1969
|
const COLLECTION_SLUG_PATTERN = /^[a-z0-9][a-z0-9-]{0,63}$/;
|
|
1901
|
-
/** 유형 — `MANUAL`(직접 선택)·`AUTOMATIC`(조건
|
|
1970
|
+
/** 유형 — `MANUAL`(직접 선택)·`AUTOMATIC`(조건 자동) */
|
|
1902
1971
|
const COLLECTION_TYPES = ["MANUAL", "AUTOMATIC"];
|
|
1903
1972
|
/**
|
|
1904
1973
|
* 상품 정렬 — `MANUAL`은 직접 정한 순서(직접 선택 컬렉션만)다. `BEST_SELLING`(판매량순)은 판매량 집계가 열릴 때 받는다.
|
|
@@ -1938,6 +2007,136 @@ function collectionStateOf(collection, now) {
|
|
|
1938
2007
|
if (collection.endsAt && Date.parse(collection.endsAt) <= at) return "ENDED";
|
|
1939
2008
|
return "ACTIVE";
|
|
1940
2009
|
}
|
|
2010
|
+
/** 조건 자동 컬렉션의 조건 최대 개수 */
|
|
2011
|
+
const MAX_COLLECTION_RULES = 10;
|
|
2012
|
+
/** 카테고리 조건 하나에 넣는 카테고리 최대 개수 */
|
|
2013
|
+
const MAX_COLLECTION_RULE_CATEGORIES = 20;
|
|
2014
|
+
/** 등록일 조건의 최대 일수 */
|
|
2015
|
+
const MAX_COLLECTION_CREATED_WITHIN_DAYS = 365;
|
|
2016
|
+
/** 미리보기(`POST /v1/collections/preview`)가 싣는 상품 최대 개수 */
|
|
2017
|
+
const COLLECTION_PREVIEW_SIZE = 20;
|
|
2018
|
+
const createdWithinDaysRuleSchema = z.object({
|
|
2019
|
+
field: z.literal("createdWithinDays"),
|
|
2020
|
+
value: z.number().int().min(1).max(365).describe("등록한 지 N일 안의 상품(1~365). 조회 시각에서 N일을 뺀 시각 이후에 등록한 상품이다")
|
|
2021
|
+
});
|
|
2022
|
+
const categoryRuleSchema = z.object({
|
|
2023
|
+
field: z.literal("category"),
|
|
2024
|
+
categoryIds: z.array(z.string().min(1)).min(1).max(20).describe("카테고리 id(1~20개). 하위 카테고리의 상품도 포함한다. 상점에 없는 id는 400 `COLLECTION_CATEGORY_NOT_FOUND`다")
|
|
2025
|
+
});
|
|
2026
|
+
const priceRuleSchema = z.object({
|
|
2027
|
+
field: z.literal("price"),
|
|
2028
|
+
min: z.number().int().min(0).optional().describe("최저가(포함, 원)"),
|
|
2029
|
+
max: z.number().int().min(0).optional().describe("최고가(포함, 원)")
|
|
2030
|
+
});
|
|
2031
|
+
const discountedRuleSchema = z.object({
|
|
2032
|
+
field: z.literal("discounted"),
|
|
2033
|
+
value: z.literal(true).describe("즉시할인이 지금 적용되는 상품")
|
|
2034
|
+
});
|
|
2035
|
+
/**
|
|
2036
|
+
* 조건 하나 — `field`로 가른다. 가격은 즉시할인을 반영한 판매가(`discountedPrice ?? salePrice`)다.
|
|
2037
|
+
* 판매량 상위(`bestSelling`)는 판매량 집계가 열릴 때 더한다.
|
|
2038
|
+
*/
|
|
2039
|
+
const collectionRuleSchema = z.discriminatedUnion("field", [
|
|
2040
|
+
createdWithinDaysRuleSchema,
|
|
2041
|
+
categoryRuleSchema,
|
|
2042
|
+
priceRuleSchema,
|
|
2043
|
+
discountedRuleSchema
|
|
2044
|
+
]).superRefine((rule, ctx) => {
|
|
2045
|
+
if (rule.field !== "price") return;
|
|
2046
|
+
if (rule.min === void 0 && rule.max === void 0) ctx.addIssue({
|
|
2047
|
+
code: "custom",
|
|
2048
|
+
path: ["min"],
|
|
2049
|
+
message: "최저가나 최고가 중 하나는 있어야 합니다"
|
|
2050
|
+
});
|
|
2051
|
+
else if (rule.min !== void 0 && rule.max !== void 0 && rule.min > rule.max) ctx.addIssue({
|
|
2052
|
+
code: "custom",
|
|
2053
|
+
path: ["max"],
|
|
2054
|
+
message: "최고가는 최저가 이상이어야 합니다"
|
|
2055
|
+
});
|
|
2056
|
+
});
|
|
2057
|
+
/** 조건 목록 — 모두 만족해야 한다(AND). 같은 `field`는 한 번만 쓴다 */
|
|
2058
|
+
const collectionRulesSchema = z.array(collectionRuleSchema).min(1).max(10).superRefine((rules, ctx) => {
|
|
2059
|
+
const seen = /* @__PURE__ */ new Set();
|
|
2060
|
+
rules.forEach((rule, index) => {
|
|
2061
|
+
if (seen.has(rule.field)) ctx.addIssue({
|
|
2062
|
+
code: "custom",
|
|
2063
|
+
path: [index, "field"],
|
|
2064
|
+
message: "같은 조건을 두 번 쓸 수 없습니다"
|
|
2065
|
+
});
|
|
2066
|
+
seen.add(rule.field);
|
|
2067
|
+
});
|
|
2068
|
+
}).describe("조건 목록. 모두 만족하는 판매 중 상품이 컬렉션 상품이다(AND). 같은 조건(`field`)은 한 번만 쓴다");
|
|
2069
|
+
/**
|
|
2070
|
+
* 응답의 조건 — 이 SDK가 아는 조건이거나 뒤에 더해질 조건(`field`만 확인한다)이다. 새 조건이 생겨도 옛 SDK의 응답 검증이 깨지지 않는다.
|
|
2071
|
+
*/
|
|
2072
|
+
const collectionRuleViewSchema = z.union([
|
|
2073
|
+
createdWithinDaysRuleSchema,
|
|
2074
|
+
categoryRuleSchema,
|
|
2075
|
+
priceRuleSchema,
|
|
2076
|
+
discountedRuleSchema,
|
|
2077
|
+
z.looseObject({ field: z.string() })
|
|
2078
|
+
]);
|
|
2079
|
+
const DAY_MS = 864e5;
|
|
2080
|
+
/** 카테고리 자신 + 모든 하위 카테고리 id */
|
|
2081
|
+
function descendantCategoryIdsOf(roots, categories) {
|
|
2082
|
+
const ids = new Set(roots);
|
|
2083
|
+
const children = /* @__PURE__ */ new Map();
|
|
2084
|
+
for (const category of categories) {
|
|
2085
|
+
if (!category.parentId) continue;
|
|
2086
|
+
const list = children.get(category.parentId);
|
|
2087
|
+
if (list) list.push(category.categoryId);
|
|
2088
|
+
else children.set(category.parentId, [category.categoryId]);
|
|
2089
|
+
}
|
|
2090
|
+
const queue = [...roots];
|
|
2091
|
+
for (let next = queue.shift(); next !== void 0; next = queue.shift()) for (const child of children.get(next) ?? []) {
|
|
2092
|
+
if (ids.has(child)) continue;
|
|
2093
|
+
ids.add(child);
|
|
2094
|
+
queue.push(child);
|
|
2095
|
+
}
|
|
2096
|
+
return ids;
|
|
2097
|
+
}
|
|
2098
|
+
/**
|
|
2099
|
+
* 조건 판정 함수를 만든다 — 모든 조건을 만족해야 true다(AND). 카테고리 트리는 여기서 한 번만 푼다.
|
|
2100
|
+
* 알 수 없는 조건(`field`)은 만족하지 않는 것으로 본다. 모르는 조건을 건너뛰면 상품이 예고 없이 늘어난다.
|
|
2101
|
+
* 판매 상태는 보지 않는다. 판매 중만 거르는 것은 호출부다.
|
|
2102
|
+
*/
|
|
2103
|
+
function collectionRulesPredicate(rules, context) {
|
|
2104
|
+
const checks = rules.map((rule) => {
|
|
2105
|
+
const known = collectionRuleSchema.safeParse(rule);
|
|
2106
|
+
if (!known.success) return () => false;
|
|
2107
|
+
const parsed = known.data;
|
|
2108
|
+
switch (parsed.field) {
|
|
2109
|
+
case "createdWithinDays": {
|
|
2110
|
+
const since = context.now.getTime() - parsed.value * DAY_MS;
|
|
2111
|
+
return (product) => Date.parse(product.createdAt) >= since;
|
|
2112
|
+
}
|
|
2113
|
+
case "category": {
|
|
2114
|
+
const ids = descendantCategoryIdsOf(parsed.categoryIds, context.categories);
|
|
2115
|
+
return (product) => product.categoryId !== null && ids.has(product.categoryId);
|
|
2116
|
+
}
|
|
2117
|
+
case "price": return (product) => {
|
|
2118
|
+
const price = product.discountedPrice ?? product.salePrice;
|
|
2119
|
+
return (parsed.min === void 0 || price >= parsed.min) && (parsed.max === void 0 || price <= parsed.max);
|
|
2120
|
+
};
|
|
2121
|
+
case "discounted": return (product) => product.discountedPrice !== null && product.discountedPrice < product.salePrice;
|
|
2122
|
+
default: return () => false;
|
|
2123
|
+
}
|
|
2124
|
+
});
|
|
2125
|
+
return (product) => checks.length > 0 && checks.every((check) => check(product));
|
|
2126
|
+
}
|
|
2127
|
+
/** 상품 하나가 조건을 모두 만족하는가 — 여러 상품을 판정할 때는 `collectionRulesPredicate`를 한 번 만들어 쓴다 */
|
|
2128
|
+
function matchesCollectionRules(product, rules, context) {
|
|
2129
|
+
return collectionRulesPredicate(rules, context)(product);
|
|
2130
|
+
}
|
|
2131
|
+
/** 조건이 참조하는 카테고리 id — 카테고리 삭제의 참조 검사에 쓴다 */
|
|
2132
|
+
function collectionRuleCategoryIds(rules) {
|
|
2133
|
+
const ids = [];
|
|
2134
|
+
for (const rule of rules) {
|
|
2135
|
+
const parsed = categoryRuleSchema.safeParse(rule);
|
|
2136
|
+
if (parsed.success) ids.push(...parsed.data.categoryIds);
|
|
2137
|
+
}
|
|
2138
|
+
return ids;
|
|
2139
|
+
}
|
|
1941
2140
|
const collectionSchema = z.object({
|
|
1942
2141
|
collectionId: z.string(),
|
|
1943
2142
|
type: z.string().describe("유형. 현재 값은 `MANUAL`·`AUTOMATIC`이고 값이 늘 수 있어 문자열이다"),
|
|
@@ -1946,6 +2145,7 @@ const collectionSchema = z.object({
|
|
|
1946
2145
|
description: z.string(),
|
|
1947
2146
|
imageUrl: z.string().nullable().describe("대표 이미지 주소"),
|
|
1948
2147
|
productSort: z.string().describe("스토어프론트 상품 기본 정렬"),
|
|
2148
|
+
rules: z.array(collectionRuleViewSchema).nullable().describe("조건 자동 컬렉션의 조건(AND). 직접 선택 컬렉션은 null"),
|
|
1949
2149
|
visible: z.boolean().describe("노출 여부. false면 기간과 무관하게 스토어프론트에 보이지 않는다"),
|
|
1950
2150
|
startsAt: z.string().nullable().describe("노출 시작 시각. null이면 바로 노출한다"),
|
|
1951
2151
|
endsAt: z.string().nullable().describe("노출 종료 시각. null이면 끝나지 않는다"),
|
|
@@ -1953,7 +2153,7 @@ const collectionSchema = z.object({
|
|
|
1953
2153
|
metaTitle: z.string().nullable(),
|
|
1954
2154
|
metaDescription: z.string().nullable(),
|
|
1955
2155
|
state: collectionStateSchema.describe("지금 노출 상태"),
|
|
1956
|
-
productCount: z.number().int().describe("담긴 상품 수(판매 상태 무관)"),
|
|
2156
|
+
productCount: z.number().int().describe("상품 수. 직접 선택은 담긴 상품 수(판매 상태 무관), 조건 자동은 지금 조건을 만족하는 판매 중 상품 수"),
|
|
1957
2157
|
revision: z.number().int().describe("수정 번호. 쓰기마다 1씩 오른다. 수정 본문에 주면 그 사이 다른 수정이 있을 때 409다"),
|
|
1958
2158
|
createdAt: z.string(),
|
|
1959
2159
|
updatedAt: z.string()
|
|
@@ -1980,16 +2180,18 @@ const periodRefine = (body, ctx) => {
|
|
|
1980
2180
|
});
|
|
1981
2181
|
};
|
|
1982
2182
|
/**
|
|
1983
|
-
* `POST /v1/collections` —
|
|
1984
|
-
* `productIds
|
|
2183
|
+
* `POST /v1/collections` — 컬렉션을 만든다. `slug`를 생략하면 `c-{id 뒤 8자}`로 만든다.
|
|
2184
|
+
* 직접 선택(`MANUAL`)은 `productIds`가 처음 담을 상품과 순서다. 조건 자동(`AUTOMATIC`)은 `rules`가 있어야 하고 `productIds`를 받지 않는다.
|
|
2185
|
+
* `productSort`를 생략하면 직접 선택은 `MANUAL`, 조건 자동은 `LATEST`다. 조건 자동은 `MANUAL`을 쓸 수 없다.
|
|
1985
2186
|
*/
|
|
1986
2187
|
const collectionCreateRequestSchema = z.object({
|
|
1987
2188
|
title: z.string().trim().min(1).max(60).describe("제목"),
|
|
1988
2189
|
slug: slugField.optional(),
|
|
1989
|
-
type: z.enum(
|
|
2190
|
+
type: z.enum(COLLECTION_TYPES).default("MANUAL").describe("유형. `MANUAL`(직접 선택)·`AUTOMATIC`(조건 자동). 만든 뒤 바꿀 수 없다"),
|
|
2191
|
+
rules: collectionRulesSchema.optional().describe("조건 자동 컬렉션의 조건(AND). 조건 자동이면 필수, 직접 선택이면 줄 수 없다"),
|
|
1990
2192
|
description: commonFields.description.default(""),
|
|
1991
2193
|
imageUrl: commonFields.imageUrl.optional(),
|
|
1992
|
-
productSort: commonFields.productSort.
|
|
2194
|
+
productSort: commonFields.productSort.optional().describe("스토어프론트 상품 기본 정렬. 생략하면 직접 선택은 `MANUAL`, 조건 자동은 `LATEST`다. 조건 자동은 `MANUAL`을 쓸 수 없다"),
|
|
1993
2195
|
visible: commonFields.visible.default(true),
|
|
1994
2196
|
startsAt: commonFields.startsAt,
|
|
1995
2197
|
endsAt: commonFields.endsAt,
|
|
@@ -2006,6 +2208,7 @@ const collectionPatchRequestSchema = z.object({
|
|
|
2006
2208
|
title: z.string().trim().min(1).max(60).optional(),
|
|
2007
2209
|
slug: slugField.optional(),
|
|
2008
2210
|
type: z.string().optional().describe("바꿀 수 없다. 주면 400 `COLLECTION_TYPE_IMMUTABLE`"),
|
|
2211
|
+
rules: collectionRulesSchema.optional().describe("조건 자동 컬렉션의 조건을 통째로 바꾼다. 직접 선택 컬렉션에 주면 400 `COLLECTION_RULES_NOT_ALLOWED`"),
|
|
2009
2212
|
description: commonFields.description.optional(),
|
|
2010
2213
|
imageUrl: commonFields.imageUrl.optional(),
|
|
2011
2214
|
productSort: commonFields.productSort.optional(),
|
|
@@ -2031,8 +2234,8 @@ const collectionProductSchema = z.object({
|
|
|
2031
2234
|
thumbnailUrl: z.string().nullable(),
|
|
2032
2235
|
status: z.string().describe("판매 상태. 스토어프론트에는 `SALE`만 보인다"),
|
|
2033
2236
|
salePrice: z.number().int(),
|
|
2034
|
-
position: z.number().int().describe("
|
|
2035
|
-
addedAt: z.string()
|
|
2237
|
+
position: z.number().int().describe("순서(1부터). 직접 선택은 셀러가 정한 순서, 조건 자동은 컬렉션 기본 정렬의 순위"),
|
|
2238
|
+
addedAt: z.string().describe("담은 시각. 조건 자동은 상품 등록 시각")
|
|
2036
2239
|
});
|
|
2037
2240
|
const collectionStateCountsSchema = z.object({
|
|
2038
2241
|
ALL: z.number().int(),
|
|
@@ -2059,6 +2262,16 @@ const collectionProductListQuerySchema = z.object({ ...pageQueryShape({
|
|
|
2059
2262
|
defaultSize: 100,
|
|
2060
2263
|
maxSize: MAX_COLLECTION_PRODUCTS
|
|
2061
2264
|
}) });
|
|
2265
|
+
/** `POST /v1/collections/preview` — 저장하지 않고 조건으로 나오는 상품을 본다 */
|
|
2266
|
+
const collectionPreviewRequestSchema = z.object({
|
|
2267
|
+
rules: collectionRulesSchema,
|
|
2268
|
+
productSort: collectionProductSortRequestSchema.optional().describe("미리보기 순서. 생략하거나 `MANUAL`이면 `LATEST`다")
|
|
2269
|
+
});
|
|
2270
|
+
/** 미리보기 응답 — 조건을 만족하는 판매 중 상품 수와 앞 20개 */
|
|
2271
|
+
const collectionPreviewSchema = z.object({
|
|
2272
|
+
count: z.number().int().describe("조건을 만족하는 판매 중 상품 수(조회 시각 기준)"),
|
|
2273
|
+
products: z.array(collectionProductSchema).describe("앞 20개(정렬 순)")
|
|
2274
|
+
});
|
|
2062
2275
|
//#endregion
|
|
2063
2276
|
//#region src/schemas/promotion.ts
|
|
2064
2277
|
/**
|
|
@@ -2389,7 +2602,8 @@ function quotePricing(input) {
|
|
|
2389
2602
|
const deliveryBundles = input.delivery?.bundles ?? [];
|
|
2390
2603
|
const bundles = deliveryBundles.map((bundle) => ({
|
|
2391
2604
|
bundleKey: bundle.bundleKey,
|
|
2392
|
-
couponDiscount: 0
|
|
2605
|
+
couponDiscount: 0,
|
|
2606
|
+
pointAllocation: 0
|
|
2393
2607
|
}));
|
|
2394
2608
|
let deliverySlot = false;
|
|
2395
2609
|
let deliveryDiscountAmount = 0;
|
|
@@ -2421,11 +2635,33 @@ function quotePricing(input) {
|
|
|
2421
2635
|
lineId: entry.line.lineId,
|
|
2422
2636
|
amount: entry.line.amount,
|
|
2423
2637
|
couponDiscount: entry.allocations.reduce((sum, a) => sum + a.amount, 0),
|
|
2424
|
-
allocations: entry.allocations
|
|
2638
|
+
allocations: entry.allocations,
|
|
2639
|
+
pointAllocation: 0
|
|
2425
2640
|
}));
|
|
2426
2641
|
const productAmount = lines.reduce((sum, entry) => sum + entry.line.amount, 0);
|
|
2427
2642
|
const couponDiscountAmount = lineResults.reduce((sum, line) => sum + line.couponDiscount, 0);
|
|
2428
2643
|
const deliveryFee = deliveryBundles.reduce((sum, bundle) => sum + bundle.fee + bundle.remoteSurcharge, 0);
|
|
2644
|
+
const beforePoints = productAmount - couponDiscountAmount + deliveryFee - deliveryDiscountAmount;
|
|
2645
|
+
const productWeights = lineResults.map((line) => Math.max(0, line.amount - line.couponDiscount));
|
|
2646
|
+
const bundleWeights = deliveryBundles.map((bundle, index) => Math.max(0, bundle.fee + bundle.remoteSurcharge - (bundles[index]?.couponDiscount ?? 0)));
|
|
2647
|
+
const points = pointUseOf(input.points ?? null, {
|
|
2648
|
+
productPaid: productWeights.reduce((sum, w) => sum + w, 0),
|
|
2649
|
+
deliveryPaid: bundleWeights.reduce((sum, w) => sum + w, 0),
|
|
2650
|
+
total: beforePoints
|
|
2651
|
+
});
|
|
2652
|
+
if (points.amount > 0) {
|
|
2653
|
+
const productPaid = productWeights.reduce((sum, w) => sum + w, 0);
|
|
2654
|
+
const toLines = Math.min(points.amount, productPaid);
|
|
2655
|
+
allocateByWeight(toLines, productWeights).forEach((share, i) => {
|
|
2656
|
+
const line = lineResults[i];
|
|
2657
|
+
if (line) line.pointAllocation = share;
|
|
2658
|
+
});
|
|
2659
|
+
const toBundles = points.amount - toLines;
|
|
2660
|
+
if (toBundles > 0) allocateByWeight(toBundles, bundleWeights).forEach((share, i) => {
|
|
2661
|
+
const bundle = bundles[i];
|
|
2662
|
+
if (bundle) bundle.pointAllocation = share;
|
|
2663
|
+
});
|
|
2664
|
+
}
|
|
2429
2665
|
return {
|
|
2430
2666
|
lines: lineResults,
|
|
2431
2667
|
coupons: results,
|
|
@@ -2434,7 +2670,64 @@ function quotePricing(input) {
|
|
|
2434
2670
|
couponDiscountAmount,
|
|
2435
2671
|
deliveryFee,
|
|
2436
2672
|
deliveryDiscountAmount,
|
|
2437
|
-
|
|
2673
|
+
pointAmount: points.amount,
|
|
2674
|
+
pointMaxUsable: points.maxUsable,
|
|
2675
|
+
pointAdjustReason: points.adjustReason,
|
|
2676
|
+
pointRejectReason: points.rejectReason,
|
|
2677
|
+
totalAmount: beforePoints - points.amount
|
|
2678
|
+
};
|
|
2679
|
+
}
|
|
2680
|
+
/**
|
|
2681
|
+
* 사용 적립금 금액(순수) — 요청·잔액·최대 비율·「결제 금액 100원 남기기」 중 작은 값을 단위로 내린다.
|
|
2682
|
+
* 최소 보유액·최소 사용액에 못 미치면 0이다. 결제 금액이 0원이 되는 사용(적립금 전액 결제)은 아직 받지 않는다(P4).
|
|
2683
|
+
*/
|
|
2684
|
+
function pointUseOf(points, amounts) {
|
|
2685
|
+
const none = {
|
|
2686
|
+
amount: 0,
|
|
2687
|
+
maxUsable: 0,
|
|
2688
|
+
adjustReason: null,
|
|
2689
|
+
rejectReason: null
|
|
2690
|
+
};
|
|
2691
|
+
if (!points) return none;
|
|
2692
|
+
const { rules } = points;
|
|
2693
|
+
const unit = Math.max(1, Math.floor(rules.unit));
|
|
2694
|
+
const base = amounts.productPaid + (rules.includeDeliveryFee ? amounts.deliveryPaid : 0);
|
|
2695
|
+
const byRatio = Math.floor(base * rules.maxRatioBp / 1e4);
|
|
2696
|
+
const byPayment = Math.max(0, amounts.total - 100);
|
|
2697
|
+
const balance = Math.max(0, points.balance);
|
|
2698
|
+
const floorUnit = (value) => Math.floor(Math.max(0, value) / unit) * unit;
|
|
2699
|
+
const eligible = balance >= rules.minBalance;
|
|
2700
|
+
const ceiling = Math.min(balance, byRatio, byPayment);
|
|
2701
|
+
const maxUsable = eligible && floorUnit(ceiling) >= rules.minAmount ? floorUnit(ceiling) : 0;
|
|
2702
|
+
const requested = Math.max(0, Math.floor(points.requested));
|
|
2703
|
+
if (requested === 0) return {
|
|
2704
|
+
...none,
|
|
2705
|
+
maxUsable
|
|
2706
|
+
};
|
|
2707
|
+
if (!eligible) return {
|
|
2708
|
+
amount: 0,
|
|
2709
|
+
maxUsable,
|
|
2710
|
+
adjustReason: null,
|
|
2711
|
+
rejectReason: "MIN_BALANCE"
|
|
2712
|
+
};
|
|
2713
|
+
const amount = floorUnit(Math.min(requested, balance, byRatio, byPayment));
|
|
2714
|
+
if (amount <= 0) return {
|
|
2715
|
+
amount: 0,
|
|
2716
|
+
maxUsable,
|
|
2717
|
+
adjustReason: null,
|
|
2718
|
+
rejectReason: "NOT_PAYABLE"
|
|
2719
|
+
};
|
|
2720
|
+
if (amount < rules.minAmount) return {
|
|
2721
|
+
amount: 0,
|
|
2722
|
+
maxUsable,
|
|
2723
|
+
adjustReason: null,
|
|
2724
|
+
rejectReason: "MIN_AMOUNT"
|
|
2725
|
+
};
|
|
2726
|
+
return {
|
|
2727
|
+
amount,
|
|
2728
|
+
maxUsable,
|
|
2729
|
+
adjustReason: floorUnit(Math.min(requested, balance, byRatio)) > amount ? "MIN_PAYMENT" : null,
|
|
2730
|
+
rejectReason: null
|
|
2438
2731
|
};
|
|
2439
2732
|
}
|
|
2440
2733
|
const NO_COUPON_SETTLEMENT = {
|
|
@@ -2567,7 +2860,14 @@ function settleCouponShortfall(input) {
|
|
|
2567
2860
|
* 바로 나누면 몫이 항상 0 이상이고 전량 취소의 합이 실결제 금액과 정확히 같다.
|
|
2568
2861
|
*/
|
|
2569
2862
|
function proratedPaidRefundBase(item, settledQuantity, cancelQuantity) {
|
|
2570
|
-
return proratedRefundBase(Math.max(0, item.totalPrice - (item.couponDiscountAmount ?? 0)), item.quantity, settledQuantity, cancelQuantity);
|
|
2863
|
+
return proratedRefundBase(Math.max(0, item.totalPrice - (item.couponDiscountAmount ?? 0) - (item.pointAllocation ?? 0)), item.quantity, settledQuantity, cancelQuantity);
|
|
2864
|
+
}
|
|
2865
|
+
/**
|
|
2866
|
+
* 주문상품의 사용 적립금 중 이번 취소 수량의 몫(#93 P3) — 누적 내림의 차분이라 나눠 취소해도 합이 배분액과 같다.
|
|
2867
|
+
* 현금 환불(`proratedPaidRefundBase`)과 따로 돌려준다(`pointRefundAmount`).
|
|
2868
|
+
*/
|
|
2869
|
+
function proratedPointRefund(item, settledQuantity, cancelQuantity) {
|
|
2870
|
+
return proratedRefundBase(item.pointAllocation ?? 0, item.quantity, settledQuantity, cancelQuantity);
|
|
2571
2871
|
}
|
|
2572
2872
|
//#endregion
|
|
2573
2873
|
//#region src/schemas/coupon.ts
|
|
@@ -3623,7 +3923,8 @@ const paymentAttemptRecordSchema = z.object({
|
|
|
3623
3923
|
});
|
|
3624
3924
|
const paymentRefundRecordSchema = z.object({
|
|
3625
3925
|
refundId: z.string(),
|
|
3626
|
-
amount: z.number().int(),
|
|
3926
|
+
amount: z.number().int().describe("PG로 돌려준 현금"),
|
|
3927
|
+
pointRefundAmount: z.number().int().optional().default(0).describe("같은 환불에서 돌려준 적립금 (#93). 적립금을 쓰지 않은 결제는 0"),
|
|
3627
3928
|
reason: z.string().describe("환불 사유 코드"),
|
|
3628
3929
|
kind: z.string().describe("환불 원인 — SELLER_CANCEL·CLAIM·COMPENSATION·DUPLICATE. 새 값이 추가될 수 있다"),
|
|
3629
3930
|
status: z.string().describe("SUCCEEDED·FAILED"),
|
|
@@ -3701,6 +4002,7 @@ const orderItemSchema = z.object({
|
|
|
3701
4002
|
discountAmount: z.number().int(),
|
|
3702
4003
|
totalPrice: z.number().int().describe("주문상품 금액 (즉시할인 반영 단가 × 주문 수량). 쿠폰 할인 전 금액이다"),
|
|
3703
4004
|
couponDiscountAmount: z.number().int().optional().default(0).describe("이 주문상품에 배분된 쿠폰 할인 — 상품 쿠폰 + 주문 쿠폰 배분. 실결제 금액은 `totalPrice − couponDiscountAmount`이고 취소·반품 환불은 실결제 금액을 수량 비율로 나눈다. 쿠폰이 없으면 0. 서버는 항상 싣는다"),
|
|
4005
|
+
pointAllocation: z.number().int().optional().default(0).describe("이 주문상품에 배분된 사용 적립금 (원, #93). 현금 실결제는 `totalPrice − couponDiscountAmount − pointAllocation`이고 취소·반품은 현금과 적립금을 따로 수량 비율로 돌려준다. 적립금을 쓰지 않았으면 0. 서버는 항상 싣는다"),
|
|
3704
4006
|
hold: z.object({
|
|
3705
4007
|
reason: z.string(),
|
|
3706
4008
|
expectedDispatchDate: z.string()
|
|
@@ -3747,6 +4049,7 @@ const orderSchema = z.object({
|
|
|
3747
4049
|
discountAmount: z.number().int().describe("즉시할인 합 (정가 − 할인 단가) × 수량. 쿠폰 할인은 `couponDiscountAmount`로 따로 온다"),
|
|
3748
4050
|
couponDiscountAmount: z.number().int().optional().default(0).describe("상품·주문 쿠폰 할인 합계. 쿠폰이 없으면 0. 서버는 항상 싣는다"),
|
|
3749
4051
|
deliveryDiscountAmount: z.number().int().optional().default(0).describe("배송비 쿠폰 할인. 쿠폰이 없으면 0. 서버는 항상 싣는다"),
|
|
4052
|
+
pointAmount: z.number().int().optional().default(0).describe("사용 적립금 (원, #93) — 쿠폰 뒤 금액에서 뺐다. `totalAmount`는 적립금을 뺀 결제(현금) 금액이다. 적립금을 쓰지 않았으면 0. 서버는 항상 싣는다"),
|
|
3750
4053
|
discounts: z.array(orderDiscountSchema).optional().default([]).describe("주문이 받은 쿠폰. 쿠폰이 없으면 빈 배열. 서버는 항상 싣는다"),
|
|
3751
4054
|
totalAmount: z.number().int().describe("결제 금액 = productAmount + deliveryFee − couponDiscountAmount − deliveryDiscountAmount. 쿠폰이 없는 주문은 productAmount + deliveryFee다"),
|
|
3752
4055
|
paidAt: z.string().nullable(),
|
|
@@ -3893,6 +4196,7 @@ const cancelBySellerResultSchema = z.object({
|
|
|
3893
4196
|
deliveryFeeChargeAmount: z.number().int().describe("조건부 무료배송 기준 미달로 환불액에서 뺀 배송비. 정책이 꺼져 있으면 항상 0이다"),
|
|
3894
4197
|
couponChargeAmount: z.number().int().optional().default(0).describe("쿠폰 조건 미달 차감. 판매자 취소는 차감하지 않으므로 늘 0이다. 서버는 항상 싣는다"),
|
|
3895
4198
|
couponChargeRefundAmount: z.number().int().optional().default(0).describe("환불액에 더한, 앞선 환불에서 뺀 쿠폰 차감을 되돌린 몫. 서버는 항상 싣는다"),
|
|
4199
|
+
pointRefundAmount: z.number().int().optional().default(0).describe("돌려준 적립금 (원, #93) — 결제에 쓴 적립금 중 이번 취소·반품 수량의 몫이다. 현금 환불(`refundAmount`)과 별개다. 차감은 현금에서 먼저 빼고 모자란 몫만 여기서 뺀다. 적립금을 쓰지 않은 주문과 이 필드가 없는 이전 응답·이벤트는 0으로 읽는다"),
|
|
3896
4200
|
refundedAt: z.string()
|
|
3897
4201
|
});
|
|
3898
4202
|
/** `PUT /v1/order-items/{orderItemId}/memo` 응답 — 빈 문자열로 저장하면 메모가 지워져 `null`이다 */
|
|
@@ -5954,13 +6258,15 @@ function createStoreClient(options) {
|
|
|
5954
6258
|
create: (body) => storeHttp.request("POST", "/collections", collectionSchema, { body: collectionCreateRequestSchema.parse(body) }),
|
|
5955
6259
|
update: (collectionId, body) => storeHttp.request("PATCH", path`/collections/${collectionId}`, collectionSchema, { body: collectionPatchRequestSchema.parse(body) }),
|
|
5956
6260
|
remove: (collectionId) => storeHttp.requestVoid("DELETE", path`/collections/${collectionId}`),
|
|
5957
|
-
/** 담긴 상품 — 직접 정한
|
|
6261
|
+
/** 담긴 상품 — 직접 선택은 정한 순서, 조건 자동은 지금 조건을 만족하는 판매 중 상품(기본 정렬 순) */
|
|
5958
6262
|
listProducts: (collectionId, params) => storeHttp.request("GET", path`/collections/${collectionId}/products`, pageSchema(collectionProductSchema), { query: params }),
|
|
5959
6263
|
/** 담긴 상품을 통째로 바꾼다(순서 포함) */
|
|
5960
6264
|
replaceProducts: (collectionId, body) => storeHttp.request("PUT", path`/collections/${collectionId}/products`, collectionSchema, { body: collectionProductsReplaceRequestSchema.parse(body) }),
|
|
5961
6265
|
/** 뒤에 붙인다. 이미 담긴 상품은 그 자리에 둔다 */
|
|
5962
6266
|
addProducts: (collectionId, body) => storeHttp.request("POST", path`/collections/${collectionId}/products`, collectionSchema, { body: collectionProductsAddRequestSchema.parse(body) }),
|
|
5963
|
-
removeProduct: (collectionId, productId) => storeHttp.requestVoid("DELETE", path`/collections/${collectionId}/products/${productId}`)
|
|
6267
|
+
removeProduct: (collectionId, productId) => storeHttp.requestVoid("DELETE", path`/collections/${collectionId}/products/${productId}`),
|
|
6268
|
+
/** 조건 자동 미리보기 — 저장하지 않고 조건을 만족하는 판매 중 상품 수와 앞 20개를 본다 */
|
|
6269
|
+
preview: (body) => storeHttp.request("POST", "/collections/preview", collectionPreviewSchema, { body: collectionPreviewRequestSchema.parse(body) })
|
|
5964
6270
|
},
|
|
5965
6271
|
categories: {
|
|
5966
6272
|
list: (params) => storeHttp.request("GET", "/categories", z.array(categorySchema), { query: params }),
|
|
@@ -6763,6 +7069,7 @@ const orderWebhookEventDataSchema = z.object({
|
|
|
6763
7069
|
status: orderItemStatusSchema.describe("이벤트 발생 시점의 주문 대표 상태"),
|
|
6764
7070
|
testPayment: z.boolean().optional().default(false).describe("테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지 않았다. 이 필드가 없는 이전 이벤트는 false로 읽는다"),
|
|
6765
7071
|
couponDiscountAmount: z.number().int().optional().default(0).describe("주문이 받은 상품·주문 쿠폰 할인 합계 (원). 즉시할인(`discountAmount`)과 별개다. 쿠폰이 없거나 이 필드가 없는 이전 이벤트는 0으로 읽는다"),
|
|
7072
|
+
pointAmount: z.number().int().optional().default(0).describe("주문에 쓴 적립금 (원, #93). 적립금을 쓰지 않았거나 이 필드가 없는 이전 이벤트는 0으로 읽는다"),
|
|
6766
7073
|
orderItemId: z.string().optional().describe("이벤트를 만든 주문상품 ID. 배송 없는 상품 제공으로 보내는 `ORDER.DELIVERED`에만 실린다. 택배 배송완료와 그 밖의 주문 이벤트에는 없다"),
|
|
6767
7074
|
fulfillmentSnapshot: orderItemFulfillmentSnapshotResponseSchema.optional().describe("이벤트를 만든 주문상품의 주문 시점 이행 스냅샷(주문상품 응답의 `fulfillmentSnapshot`과 같다, 이슈 #57). 배송 없는 상품의 제공 완료는 `ORDER.DELIVERED`로도 오고 `type`이 `MANUAL`이다. `orderItemId`가 있는 이벤트에만 실린다"),
|
|
6768
7075
|
itemOptions: z.array(z.object({
|
|
@@ -6802,6 +7109,7 @@ const orderCanceledWebhookEventDataSchema = z.object({
|
|
|
6802
7109
|
deliveryFeeChargeAmount: z.number().int().describe("환불액에서 뺀 배송비 (원) — 조건부 무료배송 기준 미달 차감"),
|
|
6803
7110
|
couponChargeAmount: z.number().int().optional().default(0).describe("환불액에서 뺀 쿠폰 조건 미달 차감 (원). 판매자 취소는 차감하지 않으므로 늘 0이다. 이 필드가 없는 이전 이벤트는 0으로 읽는다"),
|
|
6804
7111
|
couponChargeRefundAmount: z.number().int().optional().default(0).describe("환불액에 더한 금액 (원) — 앞선 환불에서 뺀 쿠폰 조건 미달 차감을 되돌린 몫이다. 전량 취소면 누적 차감이 모두 되돌아간다. 이 필드가 없는 이전 이벤트는 0으로 읽는다"),
|
|
7112
|
+
pointRefundAmount: z.number().int().optional().default(0).describe("돌려준 적립금 (원, #93) — 결제에 쓴 적립금 중 이번 취소·반품 수량의 몫이다. 현금 환불(`refundAmount`)과 별개다. 차감은 현금에서 먼저 빼고 모자란 몫만 여기서 뺀다. 적립금을 쓰지 않은 주문과 이 필드가 없는 이전 응답·이벤트는 0으로 읽는다"),
|
|
6805
7113
|
testPayment: z.boolean().describe("테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지 않았다")
|
|
6806
7114
|
});
|
|
6807
7115
|
const claimWebhookEventDataSchema = z.object({
|
|
@@ -6817,6 +7125,7 @@ const claimWebhookEventDataSchema = z.object({
|
|
|
6817
7125
|
deductAmount: z.number().int().optional().default(0).describe("환불액에서 뺀 추가 차감 (원) — 셀러가 클레임 승인에 넣은 금액이다(상품 훼손 등). 배송비 차감과 별개이므로 `deliveryFeeChargeAmount`와 더해서 뺀다. 접수 이벤트와 이 필드가 없는 이전 이벤트는 0이다"),
|
|
6818
7126
|
couponChargeAmount: z.number().int().optional().default(0).describe("환불액에서 뺀 쿠폰 조건 미달 차감 (원) — 일부 취소·반품으로 남은 주문상품이 쿠폰 조건(최소 주문 금액 등)을 잃어 남은 주문상품이 받던 할인을 뺀 금액이다. 배송비 차감·추가 차감과 별개다. 접수 이벤트는 예상값이다. 이 필드가 없는 이전 이벤트는 0으로 읽는다"),
|
|
6819
7127
|
couponChargeRefundAmount: z.number().int().optional().default(0).describe("환불액에 더한 금액 (원) — 앞선 환불에서 뺀 쿠폰 조건 미달 차감을 되돌린 몫이다. 접수 이벤트는 예상값이다. 이 필드가 없는 이전 이벤트는 0으로 읽는다"),
|
|
7128
|
+
pointRefundAmount: z.number().int().optional().default(0).describe("돌려준 적립금 (원, #93) — 결제에 쓴 적립금 중 이번 취소·반품 수량의 몫이다. 현금 환불(`refundAmount`)과 별개다. 차감은 현금에서 먼저 빼고 모자란 몫만 여기서 뺀다. 적립금을 쓰지 않은 주문과 이 필드가 없는 이전 응답·이벤트는 0으로 읽는다"),
|
|
6820
7129
|
testPayment: z.boolean().optional().default(false).describe("테스트 결제(샌드박스 결제) 주문의 클레임인가. 이 필드가 없는 이전 이벤트는 false로 읽는다")
|
|
6821
7130
|
});
|
|
6822
7131
|
const inquiryWebhookEventDataSchema = z.object({
|
|
@@ -7069,4 +7378,4 @@ function createStoreSession(options) {
|
|
|
7069
7378
|
};
|
|
7070
7379
|
}
|
|
7071
7380
|
//#endregion
|
|
7072
|
-
export { APPROVAL_ALREADY_DECIDED_CODE, APPROVAL_REQUIRED_CODE, ApiError, ApprovalPendingError, BUSINESS_INFO_MAX_LENGTH, BUSINESS_NUMBER_PATTERN, CASH_RECEIPT_STATUS_VALUES, COLLECTION_PRODUCT_SORTS, COLLECTION_SLUG_PATTERN, COLLECTION_TYPES, COUPON_CODE_PATTERN, COUPON_CONDITIONS_DEFAULTS, COUPON_TARGET_ALL, COUPON_TARGET_LIST_MAX, CUSTOM_INPUT_FORBIDDEN_WORDS, FULFILLMENT_RULES, MAX_ADDON_GROUPS, MAX_ANALYTICS_ALLOWED_ORIGINS, MAX_AUTO_TRANSITION_DAYS, MAX_COLLECTIONS, MAX_COLLECTION_DESCRIPTION, MAX_COLLECTION_PRODUCTS, MAX_COLLECTION_PRODUCTS_PER_ADD, MAX_COLLECTION_TITLE, MAX_CUSTOM_INPUTS, MAX_CUSTOM_INPUT_LENGTH, MAX_OPTION_GROUPS, MAX_PRODUCT_IMAGES, MAX_SAVED_OPTION_SETS, MAX_SAVED_OPTION_SET_NAME, MAX_VALUES_PER_GROUP, MAX_VARIANTS, MCP_TELEMETRY_MAX_RESULTS, MIN_PAYMENT_AMOUNT, NO_COUPON_SETTLEMENT, NO_SHIPPING_BUNDLE_KEY, PAYMENT_ROUTING_EXCLUSION_CODES, POINT_ADJUSTMENT_MAX, POINT_EARN_RATE_BP_MAX, POINT_ENTRY_TYPES, POINT_EXPIRY_DAYS_MAX, POINT_EXPIRY_DAYS_MIN, POINT_LOT_SOURCES, POINT_POLICY_DEFAULTS, POINT_REVIEW_REWARD_MAX, PORTONE_CHANNEL_NAME_MAX_LENGTH, PORTONE_MAX_CHANNELS, PORTONE_MIN_CHANNELS, REFUND_POLICY_DEFAULTS, REFUND_POLICY_DELIVERY_FEE_KEYS, REMOTE_AREA_ZIP_RANGES, RESERVED_STOREFRONT_SLUGS, RESERVED_STORE_CODES, SHIPPING_POLICY_DEFAULTS, STOREFRONT_BLOCKED_PATH_SEGMENTS, STOREFRONT_BUILD_STAGES, STOREFRONT_BUILD_TERMINAL_STATUSES, STOREFRONT_CHECK_TERMINAL_STATUSES, STOREFRONT_CUSTOM_DOMAIN_LIMIT_DEFAULT, STOREFRONT_DOMAIN_DNS_GRACE_DAYS, STOREFRONT_DOMAIN_DNS_WAIT_DAYS, STOREFRONT_DOMAIN_TXT_LABEL, STOREFRONT_EDIT_ACTIVITY_TIMEOUT_MINUTES, STOREFRONT_EDIT_CAPACITY, STOREFRONT_EDIT_IDLE_MINUTES, STOREFRONT_EDIT_PREVIEW_SUFFIX, STOREFRONT_EDIT_START_STAGES, STOREFRONT_FILE_BATCH_MAX, STOREFRONT_FILE_MAX_BYTES, STOREFRONT_PATH_SEGMENT_PATTERN, STOREFRONT_PLATFORM_DOMAINS, STOREFRONT_PUBLIC_SUFFIXES, STOREFRONT_SEARCH_REGEX_MAX_LENGTH, STOREFRONT_SHOWCASE_SLUG_PREFIX, STOREFRONT_SITE_CREATE_LIMIT, STOREFRONT_SLUG_CHANGE_LIMIT, STOREFRONT_SLUG_CHANGE_WINDOW_DAYS, STOREFRONT_SLUG_HOLD_DAYS, STOREFRONT_SLUG_PATTERN, STOREFRONT_SOURCE_BLOB_BATCH_MAX, STOREFRONT_SOURCE_PART_BYTES, STOREFRONT_WORKSPACE_MAX_BYTES, STOREFRONT_WORKSPACE_MAX_FILES, STORE_CODE_PATTERN, STORE_ROLE_SCOPES, STORE_SCOPE_RESOURCES, STORE_SESSION_KEYS, TOSS_WIDGET_CLIENT_KEY_PATTERN, TOSS_WIDGET_KEY_MESSAGE, TOSS_WIDGET_SECRET_KEY_PATTERN, UPLOAD_PURPOSE_LIMITS, VARIANT_COUNT_WARNING, VARIANT_STOCK_EXCLUSIVE_MESSAGE, WEBHOOK_DEFAULT_TOLERANCE_SEC, WEBHOOK_DELIVERY_ID_HEADER, WEBHOOK_EVENT_ID_HEADER, WEBHOOK_EVENT_TYPE_HEADER, WEBHOOK_FAILURE_REASONS, WEBHOOK_HEADERS, WEBHOOK_PAYLOAD_EXCERPT_MAX_BYTES, WEBHOOK_RESOURCE_TYPES, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_USER_AGENT, addStorefrontDomainRequestSchema, addonGroupRequestSchema, addonGroupSchema, addonValueRequestSchema, addonValueSchema, addressChangeRequestListSchema, addressTypeSchema, agentPolicyDecisionSchema, allocateByWeight, analyticsChannelSchema, analyticsCheckoutOutcomeSchema, analyticsCheckoutSchema, analyticsDeviceRowSchema, analyticsDevicesSchema, analyticsFunnelStepSchema, analyticsOriginSchema, analyticsOverviewSchema, analyticsPagesQuerySchema, analyticsPagesSchema, analyticsProductRowSchema, analyticsProductSortSchema, analyticsProductsQuerySchema, analyticsProductsSchema, analyticsRangeQuerySchema, analyticsRealtimeSchema, analyticsSearchQuerySchema, analyticsSearchSchema, analyticsSourceGroupBySchema, analyticsSourceRowSchema, analyticsSourcesQuerySchema, analyticsSourcesSchema, analyticsTotalsSchema, apiLogErrorSchema, apiLogListQuerySchema, apiLogPageSchema, apiLogPrincipalSchema, apiLogPrincipalTypeSchema, apiLogSchema, apiLogStatusFilterSchema, apiLogSummarySchema, approvalDecisionRequestSchema, approvalListQuerySchema, approvalPageSchema, approvalRequestSchema, approvalStatusSchema, approveClaimResultSchema, auditActorSchema, auditActorTypeSchema, auditLogListQuerySchema, auditLogOutcomeSchema, auditLogPageSchema, auditLogSchema, auditLogSourceSchema, buildAuthorizeUrl, buildQuery, bulkResultSchema, businessInfoPatchShape, businessInfoResponseShape, businessNumberSchema, cancelBySellerRequestSchema, cancelBySellerResultSchema, carrierSchema, cashReceiptSchema, categoryAttributeSchema, categoryCreateRequestSchema, categoryDeleteQuerySchema, categoryDeleteStrategySchema, categoryListQuerySchema, categoryPatchRequestSchema, categoryProductSortSchema, categorySchema, categorySearchResultSchema, categoryTreeNodeSchema, categoryWithPathSchema, changeStorefrontSlugRequestSchema, changeStorefrontTemplateRequestSchema, changeTypeSchema, claimDetailSchema, claimHoldResultSchema, claimListQuerySchema, claimReasonSchema, claimReturnAddressSchema, claimSchema, claimStatusSchema, claimTypeSchema, claimWebhookEventDataSchema, claimWebhookEventSchema, collectionCreateRequestSchema, collectionListQuerySchema, collectionPageSchema, collectionPatchRequestSchema, collectionProductListQuerySchema, collectionProductSchema, collectionProductSortRequestSchema, collectionProductsAddRequestSchema, collectionProductsReplaceRequestSchema, collectionSchema, collectionStateCountsSchema, collectionStateOf, collectionStateSchema, consentActionSchema, consentKindSchema, consentSourceSchema, couponBenefitSchema, couponConditionsInputSchema, couponConditionsSchema, couponDiscountOf, couponIssueListQuerySchema, couponIssueMethodSchema, couponIssueSchema, couponIssueStatusSchema, couponKindSchema, couponListQuerySchema, couponRedemptionListQuerySchema, couponRedemptionSchema, couponRejectReasonSchema, couponRuleSchema, couponSchema, couponStatsSchema, couponStatusSchema, couponTargetInputSchema, couponTargetSchema, createCouponRequestSchema, createPkcePair, createStoreClient, createStoreSession, createStorefrontEditPreviewLinkRequestSchema, createStorefrontPreviewLinkRequestSchema, createStorefrontSiteRequestSchema, createStorefrontVersionRequestSchema, customInputLabelForbiddenWord, customInputRequestSchema, customInputSchema, customInputValueSchema, customerAddressSchema, customerConsentListQuerySchema, customerConsentSchema, customerConsentStateSchema, customerConsentsSchema, customerCouponSchema, customerDelegationRequestSchema, customerDelegationSchema, customerDetailSchema, customerInquiryCategorySchema, customerInquiryListQuerySchema, customerListQuerySchema, customerOrderSchema, customerPointsSchema, customerSortSchema, customerStatsSchema, customerSummarySchema, customerWithdrawalBlockedDetailsSchema, deleteStorefrontFileRequestSchema, deliveryBundleKeyOf, deliveryFeeWaiverSchema, deliveryInfoSchema, deliveryMethodSchema, deliveryStatusSchema, deliveryTypeSchema, disableStorefrontHostingRequestSchema, discountRequestSchema, discountSchema, dispatchRequestSchema, easyPayProviderResponseSchema, easyPayProviderSchema, eventTypeSchema, exchangeAuthorizationCode, fulfillBulkRequestSchema, fulfillRequestSchema, fulfillmentRuleOf, fulfillmentTypeOf, fulfillmentTypeResponseSchema, fulfillmentTypeSchema, holdOrderItemRequestSchema, inquiryListQuerySchema, inquirySchema, inquiryWebhookEventDataSchema, inquiryWebhookEventSchema, invitationDeliveryStatusSchema, invitationListQuerySchema, invitationSchema, inviteMemberRequestSchema, isCouponTargetLine, isEditableStorefrontPath, isReservedStoreCode, isReservedStorefrontSlug, isShowcaseStorefrontSlug, isStoreScope, isWebOrigin, issueCouponRequestSchema, issueCouponResultSchema, liveGateConditionCodeSchema, liveGateConditionSchema, liveGateErrorDetailsSchema, liveGateSchema, loginProviderSchema, loginProviderStatusSchema, loginProviderTestSchema, loginSettingsSchema, maskedSecretSchema, mcpRuleResultSchema, mcpToolEventSchema, moveStorefrontFileRequestSchema, myAccountSchema, myStoreSchema, normalizeBusinessNumber, normalizeCouponCode, normalizeStorefrontHostname, normalizeStorefrontPath, oauthTokenResponseSchema, openFulfillmentUnion, optionGroupKindSchema, optionGroupRequestSchema, optionGroupSchema, optionModelRequestSchema, optionModelSchema, optionSelectionSchema, optionSortSchema, optionValueRequestSchema, optionValueSchema, orderCanceledWebhookEventDataSchema, orderCanceledWebhookEventSchema, orderDiscountSchema, orderFulfilledWebhookEventDataSchema, orderFulfilledWebhookEventSchema, orderItemFulfillmentSchema, orderItemFulfillmentSnapshotResponseSchema, orderItemFulfillmentSnapshotSchema, orderItemListQuerySchema, orderItemMemoResultSchema, orderItemPageSchema, orderItemSchema, orderItemStatusSchema, orderListQuerySchema, orderSchema, orderSummaryPageSchema, orderSummarySchema, orderWebhookEventDataSchema, orderWebhookEventSchema, pageInfoSchema, pageQueryShape, pageSchema, paymentAttemptRecordSchema, paymentAttemptStatusSchema, paymentCredentialSetSchema, paymentFailureWarningSchema, paymentListQuerySchema, paymentProviderSchema, paymentProviderVerificationSchema, paymentRecordDetailSchema, paymentRecordPageSchema, paymentRecordSchema, paymentRecordStatusSchema, paymentRefundRecordSchema, paymentSettingsSchema, pgEnvironmentSchema, pgPaymentMethodSchema, pgProviderSchema, pgVerificationResultSchema, planCodeSchema, planEntitlementsSchema, planErrorDetailsSchema, pointAdjustmentRequestSchema, pointAdjustmentResultSchema, pointEarnOf, pointEarnRateBpSchema, pointEarningEnabled, pointEntrySchema, pointExpiresAtOf, pointHistoryQuerySchema, pointLotSchema, pointPolicyNoticeSchema, pointPolicySchema, policyDocumentUrlSchema, policyVersionSchema, portOneChannelSchema, portOneCredentialsInputSchema, productCreateRequestSchema, productFulfillmentCreateSchema, productFulfillmentResponseSchema, productFulfillmentSchema, productFulfillmentUpdateSchema, productImageRejection, productImageUrlSchema, productListQuerySchema, productOutOfStockWebhookEventDataSchema, productOutOfStockWebhookEventSchema, productPatchRequestSchema, productRefundPolicyOverride, productRefundPolicyPatchSchema, productReplaceRequestSchema, productSchema, productSortSchema, productStatusSchema, productSummarySchema, productVariantRequestSchema, productVariantSchema, proratedPaidRefundBase, proratedRefundBase, publicPlanSchema, publicPlansSchema, publishStorefrontVersionRequestSchema, purchaseDecisionExtendResultSchema, purchaseDecisionRequestResultSchema, purchaseEarnPolicySchema, purchaseEarnRateOf, quoteDelivery, quotePricing, refreshUserToken, refundPolicyPatchSchema, refundPolicySchema, rejectClaimRequestSchema, remoteAreaLabelOf, remoteAreaOf, remoteAreaSchema, remoteSurchargeOf, replaceStorefrontSourceRequestSchema, requiresCollection, requiresShipping, resolvePointPolicy, resolveRefundPolicy, resolveShippingPolicy, responsePlanCodeSchema, responsePointEntryTypeSchema, reviewListQuerySchema, reviewReportResultSchema, reviewRewardPointOf, reviewRewardPolicySchema, reviewSchema, reviewSortSchema, reviewWebhookEventDataSchema, reviewWebhookEventSchema, rollbackStorefrontRequestSchema, runStorefrontCheckRequestSchema, salesReportGroupBySchema, salesReportQuerySchema, salesReportRowSchema, salesReportSchema, salesTotalsSchema, saveLoginProviderRequestSchema, savedCustomInputRequestSchema, savedCustomInputSchema, savedOptionGroupRequestSchema, savedOptionGroupSchema, savedOptionSetCompositionSchema, savedOptionSetFromProductRequestSchema, savedOptionSetFromProductResultSchema, savedOptionSetListQuerySchema, savedOptionSetRequestSchema, savedOptionSetSchema, savedOptionSetSortSchema, savedOptionValueRequestSchema, savedOptionValueSchema, scopeAccessSchema, searchStorefrontFilesRequestSchema, sellerAddressListQuerySchema, sellerAddressRequestSchema, sellerAddressSchema, sellerCustomerInquirySchema, setStorefrontVisibilityRequestSchema, settleCouponShortfall, settlementDetailQuerySchema, settlementDetailSchema, settlementListQuerySchema, settlementStatusSchema, settlementSummarySchema, settlementWithDetailsSchema, shippingAddressSchema, shippingPolicyPatchSchema, shippingPolicySchema, storeCodeSchema, storeMemberRoleUpdatedSchema, storeMemberSchema, storePointPolicySchema, storeRoleSchema, storeSchema, storeScopeResourceSchema, storeSubscriptionSchema, storefrontBuildDependenciesSchema, storefrontBuildListQuerySchema, storefrontBuildSchema, storefrontBuildStatusSchema, storefrontCheckSchema, storefrontCheckStatusSchema, storefrontCustomDomainStatusSchema, storefrontCustomHostnameProblem, storefrontDependencyFindingSchema, storefrontDeploymentLogSchema, storefrontDeploymentSchema, storefrontDeploymentStepSchema, storefrontDnsRecordSchema, storefrontDomainSchema, storefrontDomainTxtNameOf, storefrontEditPreviewLabelOf, storefrontEditPreviewSchema, storefrontEditSessionSchema, storefrontEditSessionStatusSchema, storefrontEditingSchema, storefrontFileConflictDetailsSchema, storefrontFileContentQuerySchema, storefrontFileContentSchema, storefrontFileDeleteResultSchema, storefrontFileEncodingSchema, storefrontFileEntrySchema, storefrontFileHashSchema, storefrontFileListQuerySchema, storefrontFileListSchema, storefrontFileMoveResultSchema, storefrontFilePathSchema, storefrontFileSearchResultSchema, storefrontFileWriteResultSchema, storefrontHostingSchema, storefrontPreviewLinkSchema, storefrontProvisioningSchema, storefrontRuleResultSchema, storefrontRuleSeveritySchema, storefrontSiteDomainSchema, storefrontSiteDomainsSchema, storefrontSiteSchema, storefrontSiteStatusSchema, storefrontSlugAvailabilityQuerySchema, storefrontSlugAvailabilitySchema, storefrontSlugSchema, storefrontSourceArchivePartSchema, storefrontSourceArchiveQuerySchema, storefrontSourceBlobsResultSchema, storefrontSourceModeSchema, storefrontSourceRefSchema, storefrontSourceReplacedSchema, storefrontSourceSchema, storefrontSuspensionSchema, storefrontTemplateSchema, storefrontVerifyReportSchema, storefrontVersionCreatedSchema, storefrontVersionSchema, storefrontVersionStatusSchema, storefrontVisibilitySchema, subscriptionLimitsSchema, subscriptionStatusSchema, subscriptionUsageSchema, tossPaymentsCredentialsInputSchema, trackingStageResponseSchema, trackingUpdateResultSchema, updateCouponRequestSchema, updateLoginProviderRequestSchema, updateLoginSettingsRequestSchema, updateMemberRoleRequestSchema, updatePaymentProviderRequestSchema, updatePaymentSettingsRequestSchema, updatePointPolicyRequestSchema, updateStoreRequestSchema, uploadExtensionOf, uploadPurposeSchema, uploadRejection, uploadRequestSchema, uploadStorefrontSourceBlobsRequestSchema, uploadTicketSchema, upsertPortOneProviderRequestSchema, upsertTossPaymentsProviderRequestSchema, variantStockRequestSchema, variantStockSchema, verifyPaymentProviderRequestSchema, webhookCreatedSchema, webhookDeliveryDetailSchema, webhookDeliveryErrorCodeSchema, webhookDeliveryListQuerySchema, webhookDeliveryResourceSchema, webhookDeliverySchema, webhookDeliveryStatusSchema, webhookEventSchema, webhookFailureReasonSchema, webhookRedeliverFailedResultSchema, webhookRequestHeaderSchema, webhookRequestSchema, webhookResourceTypeSchema, webhookSchema, webhookSecretRotatedSchema, webhookStatusSchema, webhookTestRequestSchema, webhookTestResultSchema, withdrawCustomerRequestSchema, writeDryRunResultSchema, writePreviewSchema, writeStorefrontFilesRequestSchema };
|
|
7381
|
+
export { APPROVAL_ALREADY_DECIDED_CODE, APPROVAL_REQUIRED_CODE, ApiError, ApprovalPendingError, BUSINESS_INFO_MAX_LENGTH, BUSINESS_NUMBER_PATTERN, CASH_RECEIPT_STATUS_VALUES, COLLECTION_PREVIEW_SIZE, COLLECTION_PRODUCT_SORTS, COLLECTION_SLUG_PATTERN, COLLECTION_TYPES, COUPON_CODE_PATTERN, COUPON_CONDITIONS_DEFAULTS, COUPON_TARGET_ALL, COUPON_TARGET_LIST_MAX, CUSTOM_INPUT_FORBIDDEN_WORDS, FULFILLMENT_RULES, MAX_ADDON_GROUPS, MAX_ANALYTICS_ALLOWED_ORIGINS, MAX_AUTO_TRANSITION_DAYS, MAX_COLLECTIONS, MAX_COLLECTION_CREATED_WITHIN_DAYS, MAX_COLLECTION_DESCRIPTION, MAX_COLLECTION_PRODUCTS, MAX_COLLECTION_PRODUCTS_PER_ADD, MAX_COLLECTION_RULES, MAX_COLLECTION_RULE_CATEGORIES, MAX_COLLECTION_TITLE, MAX_CUSTOM_INPUTS, MAX_CUSTOM_INPUT_LENGTH, MAX_OPTION_GROUPS, MAX_PRODUCT_IMAGES, MAX_SAVED_OPTION_SETS, MAX_SAVED_OPTION_SET_NAME, MAX_VALUES_PER_GROUP, MAX_VARIANTS, MCP_TELEMETRY_MAX_RESULTS, MIN_PAYMENT_AMOUNT, NO_COUPON_SETTLEMENT, NO_SHIPPING_BUNDLE_KEY, PAYMENT_ROUTING_EXCLUSION_CODES, POINT_ADJUSTMENT_MAX, POINT_EARN_RATE_BP_MAX, POINT_ENTRY_TYPES, POINT_EXPIRY_DAYS_MAX, POINT_EXPIRY_DAYS_MIN, POINT_LOT_SOURCES, POINT_POLICY_DEFAULTS, POINT_REVIEW_REWARD_MAX, POINT_USE_UNITS, PORTONE_CHANNEL_NAME_MAX_LENGTH, PORTONE_MAX_CHANNELS, PORTONE_MIN_CHANNELS, REFUND_POLICY_DEFAULTS, REFUND_POLICY_DELIVERY_FEE_KEYS, REMOTE_AREA_ZIP_RANGES, RESERVED_STOREFRONT_SLUGS, RESERVED_STORE_CODES, SHIPPING_POLICY_DEFAULTS, STOREFRONT_BLOCKED_PATH_SEGMENTS, STOREFRONT_BUILD_STAGES, STOREFRONT_BUILD_TERMINAL_STATUSES, STOREFRONT_CHECK_TERMINAL_STATUSES, STOREFRONT_CUSTOM_DOMAIN_LIMIT_DEFAULT, STOREFRONT_DOMAIN_DNS_GRACE_DAYS, STOREFRONT_DOMAIN_DNS_WAIT_DAYS, STOREFRONT_DOMAIN_TXT_LABEL, STOREFRONT_EDIT_ACTIVITY_TIMEOUT_MINUTES, STOREFRONT_EDIT_CAPACITY, STOREFRONT_EDIT_IDLE_MINUTES, STOREFRONT_EDIT_PREVIEW_SUFFIX, STOREFRONT_EDIT_START_STAGES, STOREFRONT_FILE_BATCH_MAX, STOREFRONT_FILE_MAX_BYTES, STOREFRONT_PATH_SEGMENT_PATTERN, STOREFRONT_PLATFORM_DOMAINS, STOREFRONT_PUBLIC_SUFFIXES, STOREFRONT_SEARCH_REGEX_MAX_LENGTH, STOREFRONT_SHOWCASE_SLUG_PREFIX, STOREFRONT_SITE_CREATE_LIMIT, STOREFRONT_SLUG_CHANGE_LIMIT, STOREFRONT_SLUG_CHANGE_WINDOW_DAYS, STOREFRONT_SLUG_HOLD_DAYS, STOREFRONT_SLUG_PATTERN, STOREFRONT_SOURCE_BLOB_BATCH_MAX, STOREFRONT_SOURCE_PART_BYTES, STOREFRONT_WORKSPACE_MAX_BYTES, STOREFRONT_WORKSPACE_MAX_FILES, STORE_CODE_PATTERN, STORE_ROLE_SCOPES, STORE_SCOPE_RESOURCES, STORE_SESSION_KEYS, TOSS_WIDGET_CLIENT_KEY_PATTERN, TOSS_WIDGET_KEY_MESSAGE, TOSS_WIDGET_SECRET_KEY_PATTERN, UPLOAD_PURPOSE_LIMITS, VARIANT_COUNT_WARNING, VARIANT_STOCK_EXCLUSIVE_MESSAGE, WEBHOOK_DEFAULT_TOLERANCE_SEC, WEBHOOK_DELIVERY_ID_HEADER, WEBHOOK_EVENT_ID_HEADER, WEBHOOK_EVENT_TYPE_HEADER, WEBHOOK_FAILURE_REASONS, WEBHOOK_HEADERS, WEBHOOK_PAYLOAD_EXCERPT_MAX_BYTES, WEBHOOK_RESOURCE_TYPES, WEBHOOK_SIGNATURE_HEADER, WEBHOOK_USER_AGENT, addStorefrontDomainRequestSchema, addonGroupRequestSchema, addonGroupSchema, addonValueRequestSchema, addonValueSchema, addressChangeRequestListSchema, addressTypeSchema, agentPolicyDecisionSchema, allocateByWeight, analyticsChannelSchema, analyticsCheckoutOutcomeSchema, analyticsCheckoutSchema, analyticsDeviceRowSchema, analyticsDevicesSchema, analyticsFunnelStepSchema, analyticsOriginSchema, analyticsOverviewSchema, analyticsPagesQuerySchema, analyticsPagesSchema, analyticsProductRowSchema, analyticsProductSortSchema, analyticsProductsQuerySchema, analyticsProductsSchema, analyticsRangeQuerySchema, analyticsRealtimeSchema, analyticsSearchQuerySchema, analyticsSearchSchema, analyticsSourceGroupBySchema, analyticsSourceRowSchema, analyticsSourcesQuerySchema, analyticsSourcesSchema, analyticsTotalsSchema, apiLogErrorSchema, apiLogListQuerySchema, apiLogPageSchema, apiLogPrincipalSchema, apiLogPrincipalTypeSchema, apiLogSchema, apiLogStatusFilterSchema, apiLogSummarySchema, approvalDecisionRequestSchema, approvalListQuerySchema, approvalPageSchema, approvalRequestSchema, approvalStatusSchema, approveClaimResultSchema, auditActorSchema, auditActorTypeSchema, auditLogListQuerySchema, auditLogOutcomeSchema, auditLogPageSchema, auditLogSchema, auditLogSourceSchema, buildAuthorizeUrl, buildQuery, bulkResultSchema, businessInfoPatchShape, businessInfoResponseShape, businessNumberSchema, cancelBySellerRequestSchema, cancelBySellerResultSchema, carrierSchema, cashReceiptSchema, categoryAttributeSchema, categoryCreateRequestSchema, categoryDeleteQuerySchema, categoryDeleteStrategySchema, categoryListQuerySchema, categoryPatchRequestSchema, categoryProductSortSchema, categorySchema, categorySearchResultSchema, categoryTreeNodeSchema, categoryWithPathSchema, changeStorefrontSlugRequestSchema, changeStorefrontTemplateRequestSchema, changeTypeSchema, claimDetailSchema, claimHoldResultSchema, claimListQuerySchema, claimReasonSchema, claimReturnAddressSchema, claimSchema, claimStatusSchema, claimTypeSchema, claimWebhookEventDataSchema, claimWebhookEventSchema, collectionCreateRequestSchema, collectionListQuerySchema, collectionPageSchema, collectionPatchRequestSchema, collectionPreviewRequestSchema, collectionPreviewSchema, collectionProductListQuerySchema, collectionProductSchema, collectionProductSortRequestSchema, collectionProductsAddRequestSchema, collectionProductsReplaceRequestSchema, collectionRuleCategoryIds, collectionRuleSchema, collectionRuleViewSchema, collectionRulesPredicate, collectionRulesSchema, collectionSchema, collectionStateCountsSchema, collectionStateOf, collectionStateSchema, consentActionSchema, consentKindSchema, consentSourceSchema, couponBenefitSchema, couponConditionsInputSchema, couponConditionsSchema, couponDiscountOf, couponIssueListQuerySchema, couponIssueMethodSchema, couponIssueSchema, couponIssueStatusSchema, couponKindSchema, couponListQuerySchema, couponRedemptionListQuerySchema, couponRedemptionSchema, couponRejectReasonSchema, couponRuleSchema, couponSchema, couponStatsSchema, couponStatusSchema, couponTargetInputSchema, couponTargetSchema, createCouponRequestSchema, createPkcePair, createStoreClient, createStoreSession, createStorefrontEditPreviewLinkRequestSchema, createStorefrontPreviewLinkRequestSchema, createStorefrontSiteRequestSchema, createStorefrontVersionRequestSchema, customInputLabelForbiddenWord, customInputRequestSchema, customInputSchema, customInputValueSchema, customerAddressSchema, customerConsentListQuerySchema, customerConsentSchema, customerConsentStateSchema, customerConsentsSchema, customerCouponSchema, customerDelegationRequestSchema, customerDelegationSchema, customerDetailSchema, customerInquiryCategorySchema, customerInquiryListQuerySchema, customerListQuerySchema, customerOrderSchema, customerPointsSchema, customerSortSchema, customerStatsSchema, customerSummarySchema, customerWithdrawalBlockedDetailsSchema, deleteStorefrontFileRequestSchema, deliveryBundleKeyOf, deliveryFeeWaiverSchema, deliveryInfoSchema, deliveryMethodSchema, deliveryStatusSchema, deliveryTypeSchema, descendantCategoryIdsOf, disableStorefrontHostingRequestSchema, discountRequestSchema, discountSchema, dispatchRequestSchema, easyPayProviderResponseSchema, easyPayProviderSchema, eventTypeSchema, exchangeAuthorizationCode, fulfillBulkRequestSchema, fulfillRequestSchema, fulfillmentRuleOf, fulfillmentTypeOf, fulfillmentTypeResponseSchema, fulfillmentTypeSchema, holdOrderItemRequestSchema, inquiryListQuerySchema, inquirySchema, inquiryWebhookEventDataSchema, inquiryWebhookEventSchema, invitationDeliveryStatusSchema, invitationListQuerySchema, invitationSchema, inviteMemberRequestSchema, isCouponTargetLine, isEditableStorefrontPath, isReservedStoreCode, isReservedStorefrontSlug, isShowcaseStorefrontSlug, isStoreScope, isWebOrigin, issueCouponRequestSchema, issueCouponResultSchema, liveGateConditionCodeSchema, liveGateConditionSchema, liveGateErrorDetailsSchema, liveGateSchema, loginProviderSchema, loginProviderStatusSchema, loginProviderTestSchema, loginSettingsSchema, maskedSecretSchema, matchesCollectionRules, mcpRuleResultSchema, mcpToolEventSchema, moveStorefrontFileRequestSchema, myAccountSchema, myStoreSchema, normalizeBusinessNumber, normalizeCouponCode, normalizeStorefrontHostname, normalizeStorefrontPath, oauthTokenResponseSchema, openFulfillmentUnion, optionGroupKindSchema, optionGroupRequestSchema, optionGroupSchema, optionModelRequestSchema, optionModelSchema, optionSelectionSchema, optionSortSchema, optionValueRequestSchema, optionValueSchema, orderCanceledWebhookEventDataSchema, orderCanceledWebhookEventSchema, orderDiscountSchema, orderFulfilledWebhookEventDataSchema, orderFulfilledWebhookEventSchema, orderItemFulfillmentSchema, orderItemFulfillmentSnapshotResponseSchema, orderItemFulfillmentSnapshotSchema, orderItemListQuerySchema, orderItemMemoResultSchema, orderItemPageSchema, orderItemSchema, orderItemStatusSchema, orderListQuerySchema, orderSchema, orderSummaryPageSchema, orderSummarySchema, orderWebhookEventDataSchema, orderWebhookEventSchema, pageInfoSchema, pageQueryShape, pageSchema, paymentAttemptRecordSchema, paymentAttemptStatusSchema, paymentCredentialSetSchema, paymentFailureWarningSchema, paymentListQuerySchema, paymentProviderSchema, paymentProviderVerificationSchema, paymentRecordDetailSchema, paymentRecordPageSchema, paymentRecordSchema, paymentRecordStatusSchema, paymentRefundRecordSchema, paymentSettingsSchema, pgEnvironmentSchema, pgPaymentMethodSchema, pgProviderSchema, pgVerificationResultSchema, planCodeSchema, planEntitlementsSchema, planErrorDetailsSchema, pointAdjustmentRequestSchema, pointAdjustmentResultSchema, pointEarnOf, pointEarnRateBpSchema, pointEarningEnabled, pointEntrySchema, pointExpiresAtOf, pointHistoryQuerySchema, pointLotSchema, pointPolicyNoticeSchema, pointPolicySchema, pointRestoreExpiresAtOf, pointUseOf, pointUsePolicySchema, policyDocumentUrlSchema, policyVersionSchema, portOneChannelSchema, portOneCredentialsInputSchema, productCreateRequestSchema, productFulfillmentCreateSchema, productFulfillmentResponseSchema, productFulfillmentSchema, productFulfillmentUpdateSchema, productImageRejection, productImageUrlSchema, productListQuerySchema, productOutOfStockWebhookEventDataSchema, productOutOfStockWebhookEventSchema, productPatchRequestSchema, productRefundPolicyOverride, productRefundPolicyPatchSchema, productReplaceRequestSchema, productSchema, productSortSchema, productStatusSchema, productSummarySchema, productVariantRequestSchema, productVariantSchema, proratedPaidRefundBase, proratedPointRefund, proratedRefundBase, publicPlanSchema, publicPlansSchema, publishStorefrontVersionRequestSchema, purchaseDecisionExtendResultSchema, purchaseDecisionRequestResultSchema, purchaseEarnPolicySchema, purchaseEarnRateOf, quoteDelivery, quotePricing, refreshUserToken, refundPolicyPatchSchema, refundPolicySchema, rejectClaimRequestSchema, remoteAreaLabelOf, remoteAreaOf, remoteAreaSchema, remoteSurchargeOf, replaceStorefrontSourceRequestSchema, requiresCollection, requiresShipping, resolvePointPolicy, resolveRefundPolicy, resolveShippingPolicy, responsePlanCodeSchema, responsePointEntryTypeSchema, reviewListQuerySchema, reviewReportResultSchema, reviewRewardPointOf, reviewRewardPolicySchema, reviewSchema, reviewSortSchema, reviewWebhookEventDataSchema, reviewWebhookEventSchema, rollbackStorefrontRequestSchema, runStorefrontCheckRequestSchema, salesReportGroupBySchema, salesReportQuerySchema, salesReportRowSchema, salesReportSchema, salesTotalsSchema, saveLoginProviderRequestSchema, savedCustomInputRequestSchema, savedCustomInputSchema, savedOptionGroupRequestSchema, savedOptionGroupSchema, savedOptionSetCompositionSchema, savedOptionSetFromProductRequestSchema, savedOptionSetFromProductResultSchema, savedOptionSetListQuerySchema, savedOptionSetRequestSchema, savedOptionSetSchema, savedOptionSetSortSchema, savedOptionValueRequestSchema, savedOptionValueSchema, scopeAccessSchema, searchStorefrontFilesRequestSchema, sellerAddressListQuerySchema, sellerAddressRequestSchema, sellerAddressSchema, sellerCustomerInquirySchema, setStorefrontVisibilityRequestSchema, settleCouponShortfall, settlementDetailQuerySchema, settlementDetailSchema, settlementListQuerySchema, settlementStatusSchema, settlementSummarySchema, settlementWithDetailsSchema, shippingAddressSchema, shippingPolicyPatchSchema, shippingPolicySchema, splitRefund, storeCodeSchema, storeMemberRoleUpdatedSchema, storeMemberSchema, storePointPolicySchema, storeRoleSchema, storeSchema, storeScopeResourceSchema, storeSubscriptionSchema, storefrontBuildDependenciesSchema, storefrontBuildListQuerySchema, storefrontBuildSchema, storefrontBuildStatusSchema, storefrontCheckSchema, storefrontCheckStatusSchema, storefrontCustomDomainStatusSchema, storefrontCustomHostnameProblem, storefrontDependencyFindingSchema, storefrontDeploymentLogSchema, storefrontDeploymentSchema, storefrontDeploymentStepSchema, storefrontDnsRecordSchema, storefrontDomainSchema, storefrontDomainTxtNameOf, storefrontEditPreviewLabelOf, storefrontEditPreviewSchema, storefrontEditSessionSchema, storefrontEditSessionStatusSchema, storefrontEditingSchema, storefrontFileConflictDetailsSchema, storefrontFileContentQuerySchema, storefrontFileContentSchema, storefrontFileDeleteResultSchema, storefrontFileEncodingSchema, storefrontFileEntrySchema, storefrontFileHashSchema, storefrontFileListQuerySchema, storefrontFileListSchema, storefrontFileMoveResultSchema, storefrontFilePathSchema, storefrontFileSearchResultSchema, storefrontFileWriteResultSchema, storefrontHostingSchema, storefrontPreviewLinkSchema, storefrontProvisioningSchema, storefrontRuleResultSchema, storefrontRuleSeveritySchema, storefrontSiteDomainSchema, storefrontSiteDomainsSchema, storefrontSiteSchema, storefrontSiteStatusSchema, storefrontSlugAvailabilityQuerySchema, storefrontSlugAvailabilitySchema, storefrontSlugSchema, storefrontSourceArchivePartSchema, storefrontSourceArchiveQuerySchema, storefrontSourceBlobsResultSchema, storefrontSourceModeSchema, storefrontSourceRefSchema, storefrontSourceReplacedSchema, storefrontSourceSchema, storefrontSuspensionSchema, storefrontTemplateSchema, storefrontVerifyReportSchema, storefrontVersionCreatedSchema, storefrontVersionSchema, storefrontVersionStatusSchema, storefrontVisibilitySchema, subscriptionLimitsSchema, subscriptionStatusSchema, subscriptionUsageSchema, tossPaymentsCredentialsInputSchema, trackingStageResponseSchema, trackingUpdateResultSchema, updateCouponRequestSchema, updateLoginProviderRequestSchema, updateLoginSettingsRequestSchema, updateMemberRoleRequestSchema, updatePaymentProviderRequestSchema, updatePaymentSettingsRequestSchema, updatePointPolicyRequestSchema, updateStoreRequestSchema, uploadExtensionOf, uploadPurposeSchema, uploadRejection, uploadRequestSchema, uploadStorefrontSourceBlobsRequestSchema, uploadTicketSchema, upsertPortOneProviderRequestSchema, upsertTossPaymentsProviderRequestSchema, variantStockRequestSchema, variantStockSchema, verifyPaymentProviderRequestSchema, webhookCreatedSchema, webhookDeliveryDetailSchema, webhookDeliveryErrorCodeSchema, webhookDeliveryListQuerySchema, webhookDeliveryResourceSchema, webhookDeliverySchema, webhookDeliveryStatusSchema, webhookEventSchema, webhookFailureReasonSchema, webhookRedeliverFailedResultSchema, webhookRequestHeaderSchema, webhookRequestSchema, webhookResourceTypeSchema, webhookSchema, webhookSecretRotatedSchema, webhookStatusSchema, webhookTestRequestSchema, webhookTestResultSchema, withdrawCustomerRequestSchema, writeDryRunResultSchema, writePreviewSchema, writeStorefrontFilesRequestSchema };
|