@sayren/store-sdk 0.34.0 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +196 -5
- package/dist/index.mjs +140 -8
- package/package.json +1 -1
- package/src/client.ts +44 -0
- package/src/index.ts +2 -0
- package/src/schemas/category.ts +25 -0
- package/src/schemas/locale.ts +39 -0
- package/src/schemas/market.ts +24 -0
- package/src/schemas/order.ts +9 -2
- package/src/schemas/product-localization.ts +76 -0
- package/src/schemas/store.ts +11 -0
package/dist/index.d.mts
CHANGED
|
@@ -166,8 +166,8 @@ export declare const auditLogPageSchema: z.ZodObject<{
|
|
|
166
166
|
export type AuditLogPage = z.infer<typeof auditLogPageSchema>;
|
|
167
167
|
export declare const agentPolicyDecisionSchema: z.ZodEnum<{
|
|
168
168
|
DENIED: "DENIED";
|
|
169
|
-
APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
|
|
170
169
|
ALLOW: "ALLOW";
|
|
170
|
+
APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
|
|
171
171
|
}>;
|
|
172
172
|
export type AgentPolicyDecision = z.infer<typeof agentPolicyDecisionSchema>;
|
|
173
173
|
export declare const writePreviewSchema: z.ZodObject<{
|
|
@@ -192,8 +192,8 @@ export declare const writeDryRunResultSchema: z.ZodObject<{
|
|
|
192
192
|
dryRun: z.ZodLiteral<true>;
|
|
193
193
|
decision: z.ZodEnum<{
|
|
194
194
|
DENIED: "DENIED";
|
|
195
|
-
APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
|
|
196
195
|
ALLOW: "ALLOW";
|
|
196
|
+
APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
|
|
197
197
|
}>;
|
|
198
198
|
reason: z.ZodNullable<z.ZodString>;
|
|
199
199
|
preview: z.ZodObject<{
|
|
@@ -5610,6 +5610,27 @@ export declare const categoryDeleteQuerySchema: z.ZodObject<{
|
|
|
5610
5610
|
cascade: "cascade";
|
|
5611
5611
|
}>>;
|
|
5612
5612
|
}, z.core.$strip>;
|
|
5613
|
+
/**
|
|
5614
|
+
* 카테고리 번역 (이슈 #134) — 언어 하나의 이름·SEO. 카테고리 필드(`name`·`meta*`)는 상점 기본 언어 값이고 번역 레코드가 언어별 값이다.
|
|
5615
|
+
* 비운 칸(null)은 스토어프론트가 기본 언어 값으로 대체한다(칸 단위 대체).
|
|
5616
|
+
*/
|
|
5617
|
+
export declare const categoryLocalizationSchema: z.ZodObject<{
|
|
5618
|
+
locale: z.ZodString;
|
|
5619
|
+
name: z.ZodNullable<z.ZodString>;
|
|
5620
|
+
metaTitle: z.ZodNullable<z.ZodString>;
|
|
5621
|
+
metaDescription: z.ZodNullable<z.ZodString>;
|
|
5622
|
+
metaKeywords: z.ZodNullable<z.ZodString>;
|
|
5623
|
+
updatedAt: z.ZodString;
|
|
5624
|
+
}, z.core.$strip>;
|
|
5625
|
+
export type CategoryLocalization = z.infer<typeof categoryLocalizationSchema>;
|
|
5626
|
+
/** `PUT /v1/categories/{categoryId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 빠진 칸은 null(기본 언어 값으로 대체)이다 */
|
|
5627
|
+
export declare const categoryLocalizationRequestSchema: z.ZodObject<{
|
|
5628
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
5629
|
+
metaTitle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
5630
|
+
metaDescription: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
5631
|
+
metaKeywords: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
5632
|
+
}, z.core.$strict>;
|
|
5633
|
+
export type CategoryLocalizationRequest = z.infer<typeof categoryLocalizationRequestSchema>;
|
|
5613
5634
|
//#endregion
|
|
5614
5635
|
//#region src/schemas/common.d.ts
|
|
5615
5636
|
export declare const pageInfoSchema: z.ZodObject<{
|
|
@@ -8123,6 +8144,7 @@ export declare const marketSchema: z.ZodObject<{
|
|
|
8123
8144
|
couponsEnabled: z.ZodBoolean;
|
|
8124
8145
|
pointsEnabled: z.ZodBoolean;
|
|
8125
8146
|
archivedAt: z.ZodNullable<z.ZodString>;
|
|
8147
|
+
locales: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
8126
8148
|
}, z.core.$strip>;
|
|
8127
8149
|
export type Market = z.infer<typeof marketSchema>;
|
|
8128
8150
|
export declare const createMarketRequestSchema: z.ZodObject<{
|
|
@@ -8149,6 +8171,7 @@ export declare const createMarketRequestSchema: z.ZodObject<{
|
|
|
8149
8171
|
domains: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
|
|
8150
8172
|
couponsEnabled: z.ZodOptional<z.ZodBoolean>;
|
|
8151
8173
|
pointsEnabled: z.ZodOptional<z.ZodBoolean>;
|
|
8174
|
+
locales: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
|
|
8152
8175
|
}, z.core.$strict>;
|
|
8153
8176
|
export type CreateMarketRequest = z.infer<typeof createMarketRequestSchema>;
|
|
8154
8177
|
export type CreateMarketRequestInput = z.input<typeof createMarketRequestSchema>;
|
|
@@ -8158,6 +8181,7 @@ export declare const updateMarketRequestSchema: z.ZodObject<{
|
|
|
8158
8181
|
domains: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
|
|
8159
8182
|
couponsEnabled: z.ZodOptional<z.ZodBoolean>;
|
|
8160
8183
|
pointsEnabled: z.ZodOptional<z.ZodBoolean>;
|
|
8184
|
+
locales: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>>;
|
|
8161
8185
|
}, z.core.$strict>;
|
|
8162
8186
|
export type UpdateMarketRequest = z.infer<typeof updateMarketRequestSchema>;
|
|
8163
8187
|
export type UpdateMarketRequestInput = z.input<typeof updateMarketRequestSchema>;
|
|
@@ -9050,6 +9074,7 @@ export declare const orderSchema: z.ZodObject<{
|
|
|
9050
9074
|
}, z.core.$strip>;
|
|
9051
9075
|
currency: z.ZodOptional<z.ZodString>;
|
|
9052
9076
|
testPayment: z.ZodBoolean;
|
|
9077
|
+
locale: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
9053
9078
|
items: z.ZodArray<z.ZodObject<{
|
|
9054
9079
|
orderItemId: z.ZodString;
|
|
9055
9080
|
orderItemNo: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
@@ -9320,7 +9345,7 @@ export declare const orderItemPageSchema: z.ZodObject<{
|
|
|
9320
9345
|
export type OrderItemPage = z.infer<typeof orderItemPageSchema>;
|
|
9321
9346
|
/**
|
|
9322
9347
|
* `GET /v1/orders` 쿼리 — OpenAPI 문서용 형태(값은 쿼리 문자열). 검증 규칙은 서버가 적용한다:
|
|
9323
|
-
* `orderNo` 없이 `orderedFrom` 누락 400 `MISSING_PARAMETER`, 날짜·`orderNo` 형식 오류 400 `INVALID_PARAMETER`,
|
|
9348
|
+
* `orderNo` 없이 `orderedFrom` 누락 400 `MISSING_PARAMETER`, 날짜·`orderNo` 형식 오류 400 `INVALID_PARAMETER`, 366일 초과 400 `RANGE_TOO_WIDE`,
|
|
9324
9349
|
* `testPayment`가 `true`·`false`가 아니면 400 `INVALID_PARAMETER`
|
|
9325
9350
|
*/
|
|
9326
9351
|
export declare const orderListQuerySchema: z.ZodObject<{
|
|
@@ -12672,9 +12697,9 @@ export type ProductPatchRequest = z.infer<typeof productPatchRequestSchema>;
|
|
|
12672
12697
|
export declare const productSortSchema: z.ZodEnum<{
|
|
12673
12698
|
"createdAt.desc": "createdAt.desc";
|
|
12674
12699
|
"createdAt.asc": "createdAt.asc";
|
|
12675
|
-
"updatedAt.desc": "updatedAt.desc";
|
|
12676
12700
|
"salePrice.asc": "salePrice.asc";
|
|
12677
12701
|
"salePrice.desc": "salePrice.desc";
|
|
12702
|
+
"updatedAt.desc": "updatedAt.desc";
|
|
12678
12703
|
}>;
|
|
12679
12704
|
export type ProductSort = z.infer<typeof productSortSchema>;
|
|
12680
12705
|
export interface ProductListParams extends PageParams {
|
|
@@ -12703,9 +12728,9 @@ export declare const productListQuerySchema: z.ZodObject<{
|
|
|
12703
12728
|
sort: z.ZodOptional<z.ZodEnum<{
|
|
12704
12729
|
"createdAt.desc": "createdAt.desc";
|
|
12705
12730
|
"createdAt.asc": "createdAt.asc";
|
|
12706
|
-
"updatedAt.desc": "updatedAt.desc";
|
|
12707
12731
|
"salePrice.asc": "salePrice.asc";
|
|
12708
12732
|
"salePrice.desc": "salePrice.desc";
|
|
12733
|
+
"updatedAt.desc": "updatedAt.desc";
|
|
12709
12734
|
}>>;
|
|
12710
12735
|
}, z.core.$strip>;
|
|
12711
12736
|
export declare const discountRequestSchema: z.ZodObject<{
|
|
@@ -12860,6 +12885,75 @@ export declare const infoSectionRequestSchema: z.ZodObject<{
|
|
|
12860
12885
|
export type InfoSectionRequest = z.infer<typeof infoSectionRequestSchema>;
|
|
12861
12886
|
export type InfoSectionRequestInput = z.input<typeof infoSectionRequestSchema>;
|
|
12862
12887
|
//#endregion
|
|
12888
|
+
//#region src/schemas/product-localization.d.ts
|
|
12889
|
+
/**
|
|
12890
|
+
* 조회 응답 — 지금 상품의 옵션명·값·직접 입력 항목을 모두 싣고 번역하지 않은 칸은 null이다.
|
|
12891
|
+
* `optionGroups`는 조합 옵션, `addonGroups`는 추가 선택이다(상품 응답과 같은 구분)
|
|
12892
|
+
*/
|
|
12893
|
+
export declare const productLocalizationSchema: z.ZodObject<{
|
|
12894
|
+
locale: z.ZodString;
|
|
12895
|
+
name: z.ZodNullable<z.ZodString>;
|
|
12896
|
+
description: z.ZodNullable<z.ZodString>;
|
|
12897
|
+
descriptionJson: z.ZodNullable<z.ZodString>;
|
|
12898
|
+
images: z.ZodNullable<z.ZodArray<z.ZodString>>;
|
|
12899
|
+
optionGroups: z.ZodArray<z.ZodObject<{
|
|
12900
|
+
groupId: z.ZodString;
|
|
12901
|
+
name: z.ZodNullable<z.ZodString>;
|
|
12902
|
+
values: z.ZodArray<z.ZodObject<{
|
|
12903
|
+
valueId: z.ZodString;
|
|
12904
|
+
name: z.ZodNullable<z.ZodString>;
|
|
12905
|
+
}, z.core.$strip>>;
|
|
12906
|
+
}, z.core.$strip>>;
|
|
12907
|
+
addonGroups: z.ZodArray<z.ZodObject<{
|
|
12908
|
+
groupId: z.ZodString;
|
|
12909
|
+
name: z.ZodNullable<z.ZodString>;
|
|
12910
|
+
values: z.ZodArray<z.ZodObject<{
|
|
12911
|
+
valueId: z.ZodString;
|
|
12912
|
+
name: z.ZodNullable<z.ZodString>;
|
|
12913
|
+
}, z.core.$strip>>;
|
|
12914
|
+
}, z.core.$strip>>;
|
|
12915
|
+
customInputs: z.ZodArray<z.ZodObject<{
|
|
12916
|
+
inputId: z.ZodString;
|
|
12917
|
+
label: z.ZodNullable<z.ZodString>;
|
|
12918
|
+
placeholder: z.ZodNullable<z.ZodString>;
|
|
12919
|
+
}, z.core.$strip>>;
|
|
12920
|
+
updatedAt: z.ZodString;
|
|
12921
|
+
}, z.core.$strip>;
|
|
12922
|
+
export type ProductLocalization = z.infer<typeof productLocalizationSchema>;
|
|
12923
|
+
/**
|
|
12924
|
+
* `PUT /v1/products/{productId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 빠진 칸은 null(기본 언어 값으로 대체)이다.
|
|
12925
|
+
* 옵션은 번역할 id만 보낸다. 상품에 없는 id는 400 `PRODUCT_LOCALIZATION_TARGET_NOT_FOUND`다.
|
|
12926
|
+
* 번역한 옵션명·값 이름도 기본 언어와 같은 규칙(대소문자·앞뒤 공백 무시 유일)이고 겹치면 400 `INVALID_OPTION_MODEL`이다
|
|
12927
|
+
*/
|
|
12928
|
+
export declare const productLocalizationRequestSchema: z.ZodObject<{
|
|
12929
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12930
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12931
|
+
descriptionJson: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12932
|
+
images: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodURL>>>;
|
|
12933
|
+
optionGroups: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12934
|
+
groupId: z.ZodString;
|
|
12935
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12936
|
+
values: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12937
|
+
valueId: z.ZodString;
|
|
12938
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12939
|
+
}, z.core.$strict>>>;
|
|
12940
|
+
}, z.core.$strict>>>;
|
|
12941
|
+
addonGroups: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12942
|
+
groupId: z.ZodString;
|
|
12943
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12944
|
+
values: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12945
|
+
valueId: z.ZodString;
|
|
12946
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12947
|
+
}, z.core.$strict>>>;
|
|
12948
|
+
}, z.core.$strict>>>;
|
|
12949
|
+
customInputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12950
|
+
inputId: z.ZodString;
|
|
12951
|
+
label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12952
|
+
placeholder: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12953
|
+
}, z.core.$strict>>>;
|
|
12954
|
+
}, z.core.$strict>;
|
|
12955
|
+
export type ProductLocalizationRequest = z.infer<typeof productLocalizationRequestSchema>;
|
|
12956
|
+
//#endregion
|
|
12863
12957
|
//#region src/schemas/saved-option-set.d.ts
|
|
12864
12958
|
/**
|
|
12865
12959
|
* 저장 옵션 (이슈 #59) — 자주 쓰는 옵션 구성을 이름 붙여 두고 상품 등록에서 불러온다.
|
|
@@ -13292,6 +13386,7 @@ export declare const updateStoreRequestSchema: z.ZodObject<{
|
|
|
13292
13386
|
privacyVersion: z.ZodOptional<z.ZodString>;
|
|
13293
13387
|
termsUrl: z.ZodOptional<z.ZodNullable<z.ZodURL>>;
|
|
13294
13388
|
privacyUrl: z.ZodOptional<z.ZodNullable<z.ZodURL>>;
|
|
13389
|
+
defaultLocale: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
|
|
13295
13390
|
businessName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
13296
13391
|
representativeName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
13297
13392
|
businessNumber: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
@@ -13376,6 +13471,7 @@ export declare const storeSchema: z.ZodObject<{
|
|
|
13376
13471
|
termsUrl: z.ZodNullable<z.ZodString>;
|
|
13377
13472
|
privacyUrl: z.ZodNullable<z.ZodString>;
|
|
13378
13473
|
memberCount: z.ZodNumber;
|
|
13474
|
+
defaultLocale: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
13379
13475
|
createdAt: z.ZodString;
|
|
13380
13476
|
businessName: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
13381
13477
|
representativeName: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
|
|
@@ -15703,6 +15799,68 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
15703
15799
|
}>;
|
|
15704
15800
|
patch: (productId: string, body: ProductPatchRequest) => Promise<void>;
|
|
15705
15801
|
remove: (productId: string) => Promise<void>;
|
|
15802
|
+
/** 번역(이슈 #134) — 언어별 상품명·상세설명·이미지·옵션 이름 */
|
|
15803
|
+
localizations: {
|
|
15804
|
+
list: (productId: string) => Promise<{
|
|
15805
|
+
locale: string;
|
|
15806
|
+
name: string | null;
|
|
15807
|
+
description: string | null;
|
|
15808
|
+
descriptionJson: string | null;
|
|
15809
|
+
images: string[] | null;
|
|
15810
|
+
optionGroups: {
|
|
15811
|
+
groupId: string;
|
|
15812
|
+
name: string | null;
|
|
15813
|
+
values: {
|
|
15814
|
+
valueId: string;
|
|
15815
|
+
name: string | null;
|
|
15816
|
+
}[];
|
|
15817
|
+
}[];
|
|
15818
|
+
addonGroups: {
|
|
15819
|
+
groupId: string;
|
|
15820
|
+
name: string | null;
|
|
15821
|
+
values: {
|
|
15822
|
+
valueId: string;
|
|
15823
|
+
name: string | null;
|
|
15824
|
+
}[];
|
|
15825
|
+
}[];
|
|
15826
|
+
customInputs: {
|
|
15827
|
+
inputId: string;
|
|
15828
|
+
label: string | null;
|
|
15829
|
+
placeholder: string | null;
|
|
15830
|
+
}[];
|
|
15831
|
+
updatedAt: string;
|
|
15832
|
+
}[]>;
|
|
15833
|
+
put: (productId: string, locale: string, body: ProductLocalizationRequest) => Promise<{
|
|
15834
|
+
locale: string;
|
|
15835
|
+
name: string | null;
|
|
15836
|
+
description: string | null;
|
|
15837
|
+
descriptionJson: string | null;
|
|
15838
|
+
images: string[] | null;
|
|
15839
|
+
optionGroups: {
|
|
15840
|
+
groupId: string;
|
|
15841
|
+
name: string | null;
|
|
15842
|
+
values: {
|
|
15843
|
+
valueId: string;
|
|
15844
|
+
name: string | null;
|
|
15845
|
+
}[];
|
|
15846
|
+
}[];
|
|
15847
|
+
addonGroups: {
|
|
15848
|
+
groupId: string;
|
|
15849
|
+
name: string | null;
|
|
15850
|
+
values: {
|
|
15851
|
+
valueId: string;
|
|
15852
|
+
name: string | null;
|
|
15853
|
+
}[];
|
|
15854
|
+
}[];
|
|
15855
|
+
customInputs: {
|
|
15856
|
+
inputId: string;
|
|
15857
|
+
label: string | null;
|
|
15858
|
+
placeholder: string | null;
|
|
15859
|
+
}[];
|
|
15860
|
+
updatedAt: string;
|
|
15861
|
+
}>;
|
|
15862
|
+
remove: (productId: string, locale: string) => Promise<void>;
|
|
15863
|
+
};
|
|
15706
15864
|
bulkUpdateStatus: (productIds: string[], status: ProductStatus, idempotencyKey?: string) => Promise<{
|
|
15707
15865
|
succeeded: string[];
|
|
15708
15866
|
failed: {
|
|
@@ -16571,6 +16729,26 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
16571
16729
|
remove: (categoryId: string, opts?: {
|
|
16572
16730
|
strategy?: CategoryDeleteStrategy;
|
|
16573
16731
|
}) => Promise<void>;
|
|
16732
|
+
/** 번역(이슈 #134) — 언어별 이름·SEO */
|
|
16733
|
+
localizations: {
|
|
16734
|
+
list: (categoryId: string) => Promise<{
|
|
16735
|
+
locale: string;
|
|
16736
|
+
name: string | null;
|
|
16737
|
+
metaTitle: string | null;
|
|
16738
|
+
metaDescription: string | null;
|
|
16739
|
+
metaKeywords: string | null;
|
|
16740
|
+
updatedAt: string;
|
|
16741
|
+
}[]>;
|
|
16742
|
+
put: (categoryId: string, locale: string, body: CategoryLocalizationRequest) => Promise<{
|
|
16743
|
+
locale: string;
|
|
16744
|
+
name: string | null;
|
|
16745
|
+
metaTitle: string | null;
|
|
16746
|
+
metaDescription: string | null;
|
|
16747
|
+
metaKeywords: string | null;
|
|
16748
|
+
updatedAt: string;
|
|
16749
|
+
}>;
|
|
16750
|
+
remove: (categoryId: string, locale: string) => Promise<void>;
|
|
16751
|
+
};
|
|
16574
16752
|
};
|
|
16575
16753
|
orders: {
|
|
16576
16754
|
/**
|
|
@@ -16740,6 +16918,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
16740
16918
|
}[];
|
|
16741
16919
|
progressStatus?: "PAID" | "CANCELED" | "PAYMENT_WAITING" | "CONFIRMED" | "DISPATCHED" | "DELIVERING" | "DELIVERED" | "PURCHASE_DECIDED" | undefined;
|
|
16742
16920
|
currency?: string | undefined;
|
|
16921
|
+
locale?: string | null | undefined;
|
|
16743
16922
|
}>;
|
|
16744
16923
|
/**
|
|
16745
16924
|
* `POST /v1/orders/{orderId}/cash-receipt/reissue` — 실패했거나 재시도 대기 중인 현금영수증을 지금 다시 발급·취소한다.
|
|
@@ -21987,6 +22166,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
21987
22166
|
couponsEnabled: boolean;
|
|
21988
22167
|
pointsEnabled: boolean;
|
|
21989
22168
|
archivedAt: string | null;
|
|
22169
|
+
locales: string[];
|
|
21990
22170
|
}[]>;
|
|
21991
22171
|
get: (marketId: string) => Promise<{
|
|
21992
22172
|
marketId: string;
|
|
@@ -21998,6 +22178,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
21998
22178
|
couponsEnabled: boolean;
|
|
21999
22179
|
pointsEnabled: boolean;
|
|
22000
22180
|
archivedAt: string | null;
|
|
22181
|
+
locales: string[];
|
|
22001
22182
|
}>;
|
|
22002
22183
|
create: (body: CreateMarketRequestInput) => Promise<{
|
|
22003
22184
|
marketId: string;
|
|
@@ -22009,6 +22190,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
22009
22190
|
couponsEnabled: boolean;
|
|
22010
22191
|
pointsEnabled: boolean;
|
|
22011
22192
|
archivedAt: string | null;
|
|
22193
|
+
locales: string[];
|
|
22012
22194
|
}>;
|
|
22013
22195
|
update: (marketId: string, body: UpdateMarketRequestInput) => Promise<{
|
|
22014
22196
|
marketId: string;
|
|
@@ -22020,6 +22202,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
22020
22202
|
couponsEnabled: boolean;
|
|
22021
22203
|
pointsEnabled: boolean;
|
|
22022
22204
|
archivedAt: string | null;
|
|
22205
|
+
locales: string[];
|
|
22023
22206
|
}>;
|
|
22024
22207
|
archive: (marketId: string) => Promise<void>;
|
|
22025
22208
|
};
|
|
@@ -23621,6 +23804,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
23621
23804
|
termsUrl: string | null;
|
|
23622
23805
|
privacyUrl: string | null;
|
|
23623
23806
|
memberCount: number;
|
|
23807
|
+
defaultLocale: string;
|
|
23624
23808
|
createdAt: string;
|
|
23625
23809
|
businessName: string | null;
|
|
23626
23810
|
representativeName: string | null;
|
|
@@ -23678,6 +23862,7 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
23678
23862
|
termsUrl: string | null;
|
|
23679
23863
|
privacyUrl: string | null;
|
|
23680
23864
|
memberCount: number;
|
|
23865
|
+
defaultLocale: string;
|
|
23681
23866
|
createdAt: string;
|
|
23682
23867
|
businessName: string | null;
|
|
23683
23868
|
representativeName: string | null;
|
|
@@ -24277,6 +24462,12 @@ export declare const customerDelegationSchema: z.ZodObject<{
|
|
|
24277
24462
|
}, z.core.$strip>;
|
|
24278
24463
|
export type CustomerDelegation = z.infer<typeof customerDelegationSchema>;
|
|
24279
24464
|
//#endregion
|
|
24465
|
+
//#region src/schemas/locale.d.ts
|
|
24466
|
+
export declare function normalizeLocale(value: string | null | undefined): string | null;
|
|
24467
|
+
/** 상점 기본 언어 — 옛 상점과 언어를 정하지 않은 상점의 값이다 */
|
|
24468
|
+
export declare const DEFAULT_STORE_LOCALE = "ko";
|
|
24469
|
+
export declare const localeCodeSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
|
|
24470
|
+
//#endregion
|
|
24280
24471
|
//#region src/schemas/promotion.d.ts
|
|
24281
24472
|
/** 쿠폰 종류 */
|
|
24282
24473
|
export declare const couponKindSchema: z.ZodEnum<{
|
package/dist/index.mjs
CHANGED
|
@@ -357,6 +357,36 @@ const myAccountSchema = z.object({
|
|
|
357
357
|
createdAt: z.string()
|
|
358
358
|
});
|
|
359
359
|
//#endregion
|
|
360
|
+
//#region src/schemas/locale.ts
|
|
361
|
+
/**
|
|
362
|
+
* 언어 코드 (이슈 #134) — BCP 47의 언어[-문자][-지역]까지 받는다(`ko`·`en`·`en-US`·`zh-Hant-TW`).
|
|
363
|
+
* 대소문자는 표준 표기로 맞춘다(언어 소문자, 문자 첫 글자 대문자, 지역 대문자). 맞지 않으면 null이다.
|
|
364
|
+
*/
|
|
365
|
+
const LOCALE_PATTERN = /^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}))?$/;
|
|
366
|
+
function normalizeLocale(value) {
|
|
367
|
+
const match = value?.trim().replace(/_/g, "-").toLowerCase().match(LOCALE_PATTERN);
|
|
368
|
+
if (!match) return null;
|
|
369
|
+
const [, language, script, region] = match;
|
|
370
|
+
return [
|
|
371
|
+
language,
|
|
372
|
+
script ? `${script[0]?.toUpperCase()}${script.slice(1)}` : null,
|
|
373
|
+
region ? region.toUpperCase() : null
|
|
374
|
+
].filter(Boolean).join("-");
|
|
375
|
+
}
|
|
376
|
+
/** 상점 기본 언어 — 옛 상점과 언어를 정하지 않은 상점의 값이다 */
|
|
377
|
+
const DEFAULT_STORE_LOCALE = "ko";
|
|
378
|
+
const localeCodeSchema = z.string().max(35).transform((value, ctx) => {
|
|
379
|
+
const normalized = normalizeLocale(value);
|
|
380
|
+
if (normalized === null) {
|
|
381
|
+
ctx.addIssue({
|
|
382
|
+
code: "custom",
|
|
383
|
+
message: "언어는 BCP 47 언어 코드입니다(예: ko·en·en-US)"
|
|
384
|
+
});
|
|
385
|
+
return z.NEVER;
|
|
386
|
+
}
|
|
387
|
+
return normalized;
|
|
388
|
+
}).describe("언어(BCP 47, 예: ko·en·en-US·zh-Hant-TW)");
|
|
389
|
+
//#endregion
|
|
360
390
|
//#region src/schemas/currency.ts
|
|
361
391
|
const INT4_MAX = 2147483647;
|
|
362
392
|
/** Stripe 카드 외 결제 상한이 8자리(999,999.99)라 2자리 통화는 이 값이 int4보다 먼저 걸린다 */
|
|
@@ -1680,7 +1710,8 @@ const updateStoreRequestSchema = z.object({
|
|
|
1680
1710
|
termsVersion: policyVersionSchema.optional().describe("이용약관 버전. 올리면 이 약관에 동의한 구매자에게 재동의를 요구한다(`GET /storefront/v1/me`의 `reconsentRequired`)"),
|
|
1681
1711
|
privacyVersion: policyVersionSchema.optional().describe("개인정보 수집이용 동의 버전. 올리면 구매자에게 재동의를 요구한다"),
|
|
1682
1712
|
termsUrl: policyDocumentUrlSchema.optional().describe("이용약관 문서 주소(https). 동의 시점의 값이 동의 이력에 복사된다. `null`을 주면 지운다"),
|
|
1683
|
-
privacyUrl: policyDocumentUrlSchema.optional().describe("개인정보 수집이용 동의 문서 주소(https). `null`을 주면 지운다")
|
|
1713
|
+
privacyUrl: policyDocumentUrlSchema.optional().describe("개인정보 수집이용 동의 문서 주소(https). `null`을 주면 지운다"),
|
|
1714
|
+
defaultLocale: localeCodeSchema.optional().describe("상점 기본 언어(이슈 #134). 상품·카테고리 필드가 이 언어 값이고 번역이 없는 칸은 이 값으로 보인다. 바꿔도 저장된 값은 그대로다")
|
|
1684
1715
|
}).refine((value) => Object.values(value).some((v) => v !== void 0), { message: "최소 1개 필드가 필요합니다" });
|
|
1685
1716
|
const storeSchema = z.object({
|
|
1686
1717
|
storeId: z.string(),
|
|
@@ -1711,6 +1742,7 @@ const storeSchema = z.object({
|
|
|
1711
1742
|
termsUrl: z.string().nullable().describe("이용약관 문서 주소. 정하지 않았으면 null이고 동의 이력에도 주소가 남지 않는다"),
|
|
1712
1743
|
privacyUrl: z.string().nullable().describe("개인정보 수집이용 동의 문서 주소"),
|
|
1713
1744
|
memberCount: z.number().int(),
|
|
1745
|
+
defaultLocale: z.string().optional().default("ko").describe("상점 기본 언어(이슈 #134, BCP 47). 서버는 항상 싣는다"),
|
|
1714
1746
|
createdAt: z.string()
|
|
1715
1747
|
});
|
|
1716
1748
|
const storeMemberSchema = z.object({
|
|
@@ -6674,6 +6706,25 @@ const categoryListQuerySchema = z.object({
|
|
|
6674
6706
|
});
|
|
6675
6707
|
/** `DELETE /v1/categories/{categoryId}` 쿼리 — OpenAPI 문서용 형태 */
|
|
6676
6708
|
const categoryDeleteQuerySchema = z.object({ strategy: categoryDeleteStrategySchema.optional().describe("하위 카테고리·연결 상품 처리 방식. 생략하면 둘 중 하나라도 있을 때 409 `CATEGORY_NOT_EMPTY`다. `reparent`는 직계 자식을 삭제할 카테고리의 부모로 옮기고, `cascade`는 서브트리를 삭제하고 연결 상품을 미분류로 둔다") });
|
|
6709
|
+
/**
|
|
6710
|
+
* 카테고리 번역 (이슈 #134) — 언어 하나의 이름·SEO. 카테고리 필드(`name`·`meta*`)는 상점 기본 언어 값이고 번역 레코드가 언어별 값이다.
|
|
6711
|
+
* 비운 칸(null)은 스토어프론트가 기본 언어 값으로 대체한다(칸 단위 대체).
|
|
6712
|
+
*/
|
|
6713
|
+
const categoryLocalizationSchema = z.object({
|
|
6714
|
+
locale: z.string().describe("언어(BCP 47)"),
|
|
6715
|
+
name: z.string().nullable().describe("이름. null이면 기본 언어 이름"),
|
|
6716
|
+
metaTitle: z.string().nullable(),
|
|
6717
|
+
metaDescription: z.string().nullable(),
|
|
6718
|
+
metaKeywords: z.string().nullable(),
|
|
6719
|
+
updatedAt: z.string()
|
|
6720
|
+
});
|
|
6721
|
+
/** `PUT /v1/categories/{categoryId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 빠진 칸은 null(기본 언어 값으로 대체)이다 */
|
|
6722
|
+
const categoryLocalizationRequestSchema = z.strictObject({
|
|
6723
|
+
name: z.string().trim().min(1).max(100).nullable().optional(),
|
|
6724
|
+
metaTitle: z.string().max(100).nullable().optional(),
|
|
6725
|
+
metaDescription: z.string().max(300).nullable().optional(),
|
|
6726
|
+
metaKeywords: z.string().max(200).nullable().optional()
|
|
6727
|
+
});
|
|
6677
6728
|
//#endregion
|
|
6678
6729
|
//#region src/schemas/collection.ts
|
|
6679
6730
|
/**
|
|
@@ -8629,6 +8680,8 @@ const loginProviderTestSchema = z.object({
|
|
|
8629
8680
|
*
|
|
8630
8681
|
* 스토어프론트는 요청마다 도메인(`X-Storefront-Host`) → 구매자 국가(`X-Buyer-Country`) → 기본 권역 순으로 권역을 고르고, 주문서가 그 권역·통화를 굳힌다.
|
|
8631
8682
|
* 외화 권역은 적립금을 켤 수 없다(적립금은 기본 통화 단위다).
|
|
8683
|
+
*
|
|
8684
|
+
* 권역은 언어도 정한다(이슈 #134). `locales`는 이 권역 스토어프론트가 내는 언어이고 첫 언어가 대표 언어다. 비어 있으면 상점 기본 언어 하나다.
|
|
8632
8685
|
*/
|
|
8633
8686
|
const countryCodeSchema = z.string().regex(/^[A-Za-z]{2}$/, "국가는 ISO 3166-1 alpha-2 두 글자입니다").transform((value) => value.toUpperCase()).describe("국가(ISO 3166-1 alpha-2, 예: KR·US·JP)");
|
|
8634
8687
|
const hostnameSchema = z.string().min(1).max(253).regex(/^[A-Za-z0-9.-]+$/, "도메인은 호스트 이름만 입력합니다(예: shop.example.com)").transform((value) => value.toLowerCase().replace(/\.$/, "")).describe("연결 도메인(호스트 이름). 셀러가 직접 호스팅하는 스토어프론트가 `X-Storefront-Host`로 보낸다");
|
|
@@ -8641,7 +8694,8 @@ const marketSchema = z.object({
|
|
|
8641
8694
|
domains: z.array(z.string()).describe("이 권역에 연결한 도메인"),
|
|
8642
8695
|
couponsEnabled: z.boolean().describe("이 권역 주문서에서 쿠폰을 쓸 수 있는가"),
|
|
8643
8696
|
pointsEnabled: z.boolean().describe("이 권역 주문서에서 적립금을 쓸 수 있는가. 외화 권역은 늘 false다"),
|
|
8644
|
-
archivedAt: z.string().nullable().describe("보관 시각. 보관한 권역은 판정에서 빠지고 그 국가·도메인은 풀린다")
|
|
8697
|
+
archivedAt: z.string().nullable().describe("보관 시각. 보관한 권역은 판정에서 빠지고 그 국가·도메인은 풀린다"),
|
|
8698
|
+
locales: z.array(z.string()).optional().default([]).describe("이 권역 언어(이슈 #134). 첫 언어가 대표 언어다. 비어 있으면 상점 기본 언어 하나다. 서버는 항상 싣는다")
|
|
8645
8699
|
});
|
|
8646
8700
|
const createMarketRequestSchema = z.strictObject({
|
|
8647
8701
|
name: z.string().trim().min(1).max(50),
|
|
@@ -8649,14 +8703,16 @@ const createMarketRequestSchema = z.strictObject({
|
|
|
8649
8703
|
countries: z.array(countryCodeSchema).min(1).max(250),
|
|
8650
8704
|
domains: z.array(hostnameSchema).max(20).optional(),
|
|
8651
8705
|
couponsEnabled: z.boolean().optional().describe("기본 false"),
|
|
8652
|
-
pointsEnabled: z.boolean().optional().describe("기본 false. 외화 권역은 true로 둘 수 없다")
|
|
8706
|
+
pointsEnabled: z.boolean().optional().describe("기본 false. 외화 권역은 true로 둘 수 없다"),
|
|
8707
|
+
locales: z.array(localeCodeSchema).max(20).optional().describe("이 권역 언어(이슈 #134). 주면 목록 전체를 바꾼다. 첫 언어가 대표 언어다. 비우면 상점 기본 언어 하나다")
|
|
8653
8708
|
});
|
|
8654
8709
|
const updateMarketRequestSchema = z.strictObject({
|
|
8655
8710
|
name: z.string().trim().min(1).max(50).optional(),
|
|
8656
8711
|
countries: z.array(countryCodeSchema).max(250).optional().describe("주면 국가 목록 전체를 바꾼다. 다른 권역의 국가는 그 권역에서 먼저 빼야 한다"),
|
|
8657
8712
|
domains: z.array(hostnameSchema).max(20).optional().describe("주면 도메인 목록 전체를 바꾼다"),
|
|
8658
8713
|
couponsEnabled: z.boolean().optional(),
|
|
8659
|
-
pointsEnabled: z.boolean().optional().describe("외화 권역은 true로 둘 수 없다")
|
|
8714
|
+
pointsEnabled: z.boolean().optional().describe("외화 권역은 true로 둘 수 없다"),
|
|
8715
|
+
locales: z.array(localeCodeSchema).max(20).optional().describe("이 권역 언어(이슈 #134). 주면 목록 전체를 바꾼다. 첫 언어가 대표 언어다. 비우면 상점 기본 언어 하나다")
|
|
8660
8716
|
});
|
|
8661
8717
|
//#endregion
|
|
8662
8718
|
//#region src/schemas/payment.ts
|
|
@@ -9253,6 +9309,7 @@ const orderSchema = z.object({
|
|
|
9253
9309
|
}),
|
|
9254
9310
|
currency: z.string().optional().describe("주문 통화(ISO 4217, 이슈 #130). 금액 필드는 모두 이 통화의 최소 단위다. 외화 주문이 생기면 이 값을 확인한다. 없으면 KRW다. 서버는 항상 싣는다"),
|
|
9255
9311
|
testPayment: z.boolean().describe("테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지 않았습니다. 상품을 발송하지 않도록 주의하십시오"),
|
|
9312
|
+
locale: z.string().nullable().optional().describe("구매 언어(이슈 #134, BCP 47). 주문상품의 상품명·옵션 이름은 구매자가 이 언어로 본 값이다. null이면 상점 기본 언어다(언어 기능 이전 주문 포함)"),
|
|
9256
9313
|
items: z.array(orderItemSchema)
|
|
9257
9314
|
});
|
|
9258
9315
|
/** 주문 목록 응답 — `GET /v1/orders` */
|
|
@@ -9263,12 +9320,12 @@ const testPaymentQuery = z.enum(["true", "false"]).optional().describe("테스
|
|
|
9263
9320
|
const pageQuery = { page: z.string().optional().describe("페이지 번호 (1부터, 기본 1)") };
|
|
9264
9321
|
/**
|
|
9265
9322
|
* `GET /v1/orders` 쿼리 — OpenAPI 문서용 형태(값은 쿼리 문자열). 검증 규칙은 서버가 적용한다:
|
|
9266
|
-
* `orderNo` 없이 `orderedFrom` 누락 400 `MISSING_PARAMETER`, 날짜·`orderNo` 형식 오류 400 `INVALID_PARAMETER`,
|
|
9323
|
+
* `orderNo` 없이 `orderedFrom` 누락 400 `MISSING_PARAMETER`, 날짜·`orderNo` 형식 오류 400 `INVALID_PARAMETER`, 366일 초과 400 `RANGE_TOO_WIDE`,
|
|
9267
9324
|
* `testPayment`가 `true`·`false`가 아니면 400 `INVALID_PARAMETER`
|
|
9268
9325
|
*/
|
|
9269
9326
|
const orderListQuerySchema = z.object({
|
|
9270
9327
|
orderedFrom: z.string().optional().describe("조회 시작 시각 (ISO 8601 날짜 또는 일시, 포함). `orderNo`가 없으면 필수"),
|
|
9271
|
-
orderedTo: z.string().optional().describe("조회 끝 시각 (ISO 8601, 포함). 생략하면 orderedFrom부터 31일. 기간은 최대
|
|
9328
|
+
orderedTo: z.string().optional().describe("조회 끝 시각 (ISO 8601, 포함). 생략하면 orderedFrom부터 31일. 기간은 최대 366일"),
|
|
9272
9329
|
status: orderItemStatusSchema.optional().describe("주문상품 상태 필터 — 이 상태의 주문상품이 하나라도 있는 주문"),
|
|
9273
9330
|
keyword: z.string().optional().describe("주문 id·주문번호(일치, 하이픈 허용)·주문자명·수령인명(포함) 검색"),
|
|
9274
9331
|
orderNo: z.string().optional().describe("주문번호 조회(이슈 #107) — 숫자 14자리, 하이픈 허용(`2610-0284-7315-92`). 주면 기간 조건 없이 그 주문만 찾습니다. 형식이 아니면 400 `INVALID_PARAMETER`"),
|
|
@@ -9433,6 +9490,69 @@ const purchaseDecisionExtendResultSchema = z.object({
|
|
|
9433
9490
|
*/
|
|
9434
9491
|
const addressChangeRequestListSchema = z.array(z.record(z.string(), z.unknown())).describe("배송지 변경 요청 목록 (현재 항상 빈 배열)");
|
|
9435
9492
|
//#endregion
|
|
9493
|
+
//#region src/schemas/product-localization.ts
|
|
9494
|
+
/**
|
|
9495
|
+
* 상품 번역 (이슈 #134) — 언어 하나의 상품명·상세설명·이미지·옵션 이름. 상품 필드는 상점 기본 언어 값이고 번역 레코드가 언어별 값이다.
|
|
9496
|
+
* 비운 칸(null)은 스토어프론트가 기본 언어 값으로 대체한다(칸 단위 대체). 이미지는 목록 통째로 대체한다.
|
|
9497
|
+
* 옵션은 id가 원천이다 — 값 id·추가금·재고는 언어와 무관하고 이름만 언어별이다.
|
|
9498
|
+
*/
|
|
9499
|
+
const translatedOptionValueSchema = z.object({
|
|
9500
|
+
valueId: z.string(),
|
|
9501
|
+
name: z.string().nullable().describe("값 이름. null이면 기본 언어 이름")
|
|
9502
|
+
});
|
|
9503
|
+
const translatedOptionGroupSchema = z.object({
|
|
9504
|
+
groupId: z.string(),
|
|
9505
|
+
name: z.string().nullable().describe("옵션명. null이면 기본 언어 이름"),
|
|
9506
|
+
values: z.array(translatedOptionValueSchema)
|
|
9507
|
+
});
|
|
9508
|
+
const translatedCustomInputSchema = z.object({
|
|
9509
|
+
inputId: z.string(),
|
|
9510
|
+
label: z.string().nullable().describe("항목명. null이면 기본 언어 항목명"),
|
|
9511
|
+
placeholder: z.string().nullable().describe("입력 안내. null이면 기본 언어 안내")
|
|
9512
|
+
});
|
|
9513
|
+
/**
|
|
9514
|
+
* 조회 응답 — 지금 상품의 옵션명·값·직접 입력 항목을 모두 싣고 번역하지 않은 칸은 null이다.
|
|
9515
|
+
* `optionGroups`는 조합 옵션, `addonGroups`는 추가 선택이다(상품 응답과 같은 구분)
|
|
9516
|
+
*/
|
|
9517
|
+
const productLocalizationSchema = z.object({
|
|
9518
|
+
locale: z.string().describe("언어(BCP 47)"),
|
|
9519
|
+
name: z.string().nullable().describe("상품명. null이면 기본 언어 상품명"),
|
|
9520
|
+
description: z.string().nullable().describe("상세설명(HTML). null이면 기본 언어 상세설명"),
|
|
9521
|
+
descriptionJson: z.string().nullable().describe("상세설명 에디터 상태(재편집 복원용)"),
|
|
9522
|
+
images: z.array(z.string()).nullable().describe("이미지 목록. null이면 기본 언어 목록"),
|
|
9523
|
+
optionGroups: z.array(translatedOptionGroupSchema),
|
|
9524
|
+
addonGroups: z.array(translatedOptionGroupSchema),
|
|
9525
|
+
customInputs: z.array(translatedCustomInputSchema),
|
|
9526
|
+
updatedAt: z.string()
|
|
9527
|
+
});
|
|
9528
|
+
const translatedNameSchema = z.string().trim().min(1).max(50).nullable().optional();
|
|
9529
|
+
const translatedOptionGroupRequestSchema = z.strictObject({
|
|
9530
|
+
groupId: z.string(),
|
|
9531
|
+
name: translatedNameSchema,
|
|
9532
|
+
values: z.array(z.strictObject({
|
|
9533
|
+
valueId: z.string(),
|
|
9534
|
+
name: translatedNameSchema
|
|
9535
|
+
})).optional()
|
|
9536
|
+
});
|
|
9537
|
+
/**
|
|
9538
|
+
* `PUT /v1/products/{productId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 빠진 칸은 null(기본 언어 값으로 대체)이다.
|
|
9539
|
+
* 옵션은 번역할 id만 보낸다. 상품에 없는 id는 400 `PRODUCT_LOCALIZATION_TARGET_NOT_FOUND`다.
|
|
9540
|
+
* 번역한 옵션명·값 이름도 기본 언어와 같은 규칙(대소문자·앞뒤 공백 무시 유일)이고 겹치면 400 `INVALID_OPTION_MODEL`이다
|
|
9541
|
+
*/
|
|
9542
|
+
const productLocalizationRequestSchema = z.strictObject({
|
|
9543
|
+
name: z.string().trim().min(1).max(100).nullable().optional(),
|
|
9544
|
+
description: z.string().nullable().optional(),
|
|
9545
|
+
descriptionJson: z.string().nullable().optional(),
|
|
9546
|
+
images: z.array(productImageUrlSchema).min(1).max(10).nullable().optional(),
|
|
9547
|
+
optionGroups: z.array(translatedOptionGroupRequestSchema).optional(),
|
|
9548
|
+
addonGroups: z.array(translatedOptionGroupRequestSchema).optional(),
|
|
9549
|
+
customInputs: z.array(z.strictObject({
|
|
9550
|
+
inputId: z.string(),
|
|
9551
|
+
label: z.string().trim().min(1).max(30).nullable().optional(),
|
|
9552
|
+
placeholder: z.string().trim().min(1).max(100).nullable().optional()
|
|
9553
|
+
})).optional()
|
|
9554
|
+
});
|
|
9555
|
+
//#endregion
|
|
9436
9556
|
//#region src/schemas/saved-option-set.ts
|
|
9437
9557
|
/**
|
|
9438
9558
|
* 저장 옵션 (이슈 #59) — 자주 쓰는 옵션 구성을 이름 붙여 두고 상품 등록에서 불러온다.
|
|
@@ -9925,6 +10045,12 @@ function createStoreClient(options) {
|
|
|
9925
10045
|
update: (productId, body) => storeHttp.request("PUT", path`/products/${productId}`, productSchema, { body: productReplaceRequestSchema.parse(body) }),
|
|
9926
10046
|
patch: (productId, body) => storeHttp.requestVoid("PATCH", path`/products/${productId}`, { body: productPatchRequestSchema.parse(body) }),
|
|
9927
10047
|
remove: (productId) => storeHttp.requestVoid("DELETE", path`/products/${productId}`),
|
|
10048
|
+
/** 번역(이슈 #134) — 언어별 상품명·상세설명·이미지·옵션 이름 */
|
|
10049
|
+
localizations: {
|
|
10050
|
+
list: (productId) => storeHttp.request("GET", path`/products/${productId}/localizations`, z.array(productLocalizationSchema)),
|
|
10051
|
+
put: (productId, locale, body) => storeHttp.request("PUT", path`/products/${productId}/localizations/${locale}`, productLocalizationSchema, { body: productLocalizationRequestSchema.parse(body) }),
|
|
10052
|
+
remove: (productId, locale) => storeHttp.requestVoid("DELETE", path`/products/${productId}/localizations/${locale}`)
|
|
10053
|
+
},
|
|
9928
10054
|
bulkUpdateStatus: (productIds, status, idempotencyKey) => storeHttp.request("POST", "/products/bulk/status", bulkResultSchema, {
|
|
9929
10055
|
body: {
|
|
9930
10056
|
productIds,
|
|
@@ -10013,7 +10139,13 @@ function createStoreClient(options) {
|
|
|
10013
10139
|
headers: idempotency(idempotencyKey)
|
|
10014
10140
|
}),
|
|
10015
10141
|
update: (categoryId, body) => storeHttp.request("PATCH", path`/categories/${categoryId}`, categorySchema, { body: categoryPatchRequestSchema.parse(body) }),
|
|
10016
|
-
remove: (categoryId, opts) => storeHttp.requestVoid("DELETE", path`/categories/${categoryId}`, { query: opts?.strategy ? { strategy: opts.strategy } : {} })
|
|
10142
|
+
remove: (categoryId, opts) => storeHttp.requestVoid("DELETE", path`/categories/${categoryId}`, { query: opts?.strategy ? { strategy: opts.strategy } : {} }),
|
|
10143
|
+
/** 번역(이슈 #134) — 언어별 이름·SEO */
|
|
10144
|
+
localizations: {
|
|
10145
|
+
list: (categoryId) => storeHttp.request("GET", path`/categories/${categoryId}/localizations`, z.array(categoryLocalizationSchema)),
|
|
10146
|
+
put: (categoryId, locale, body) => storeHttp.request("PUT", path`/categories/${categoryId}/localizations/${locale}`, categoryLocalizationSchema, { body: categoryLocalizationRequestSchema.parse(body) }),
|
|
10147
|
+
remove: (categoryId, locale) => storeHttp.requestVoid("DELETE", path`/categories/${categoryId}/localizations/${locale}`)
|
|
10148
|
+
}
|
|
10017
10149
|
},
|
|
10018
10150
|
orders: {
|
|
10019
10151
|
/**
|
|
@@ -11112,4 +11244,4 @@ function createStoreSession(options) {
|
|
|
11112
11244
|
};
|
|
11113
11245
|
}
|
|
11114
11246
|
//#endregion
|
|
11115
|
-
export { AI_AGENT_NOTES_DIR, AI_AGENT_PHASES, AI_DESIGN_BOARDS_MAX, AI_DESIGN_BOARD_FILE_PATTERN, AI_DESIGN_BOARD_KINDS, AI_DESIGN_CANVAS_PATH, AI_DESIGN_CONFIRM_APPROVE, AI_DESIGN_DIR, AI_DESIGN_VIEWPORTS, AI_MESSAGE_MAX_ATTACHMENTS, AI_MESSAGE_MAX_CHARS, AI_RUN_ACTIVE_STATUSES, AI_RUN_FILE_CHANGES_RETENTION_DAYS, AI_SETUP_CONFIRM_APPROVE, AI_TODOS_MAX, AI_TODO_STATUSES, APPROVAL_ALREADY_DECIDED_CODE, APPROVAL_REQUIRED_CODE, APP_CAPABILITIES, APP_DEPLOY_KEY_PATTERN, APP_DEPLOY_KEY_PREFIX, APP_EVENTS_MAX, APP_EVENT_SCOPES, APP_EVENT_TYPES, APP_FLOW_EVENT_PATTERN, APP_FLOW_ITEMS_MAX, APP_FLOW_NOTIFICATION_PATTERN, APP_HANDLE_PATTERN, APP_HTTP_KEY_PATTERN, APP_ICON_CONTENT_TYPES, APP_ICON_MAX_BYTES, APP_ICON_MIN_PX, APP_LIFECYCLE_EVENT_TYPES, APP_NETWORK_DENIED_SUFFIXES, APP_NETWORK_HOSTS_MAX, APP_PUBLIC_HTTP_MAX, APP_README_MAX_BYTES, APP_RESERVED_HANDLES, APP_SCHEDULES_MAX, APP_SCHEDULE_INTERVALS, APP_SCHEDULE_NAME_PATTERN, APP_SECRETS_MAX, APP_SECRET_NAME_PATTERN, APP_SECRET_PATTERNS, APP_SERVER_BUNDLE_MAX_GZIP_BYTES, APP_SETTINGS_MAX_FIELDS, APP_SETTING_FIELD_TYPES, APP_SETTING_KEY_PATTERN, APP_STORAGE_KEY_PATTERN, APP_STORAGE_MAX_BYTES, APP_STORAGE_MAX_KEYS, APP_TOOL_NAME_PATTERN, APP_UI_MAX_BYTES, APP_UI_MAX_FILES, ApiError, ApprovalPendingError, BASE_CURRENCY, BRAND_BRIEF_MAX_REFERENCES, BUSINESS_INFO_MAX_LENGTH, BUSINESS_NUMBER_PATTERN, CASH_RECEIPT_STATUS_VALUES, CERTIFICATION_STATUSES, COLLECTION_BEST_SELLING_DAYS, COLLECTION_PREVIEW_SIZE, COLLECTION_PRODUCT_SORTS, COLLECTION_SALES_SORT_DEFAULT_DAYS, COLLECTION_SLUG_PATTERN, COLLECTION_TYPES, COUPON_CODE_PATTERN, COUPON_CONDITIONS_DEFAULTS, COUPON_TARGET_ALL, COUPON_TARGET_LIST_MAX, CURRENCIES, CURRENCY_CODES, CUSTOM_INPUT_FORBIDDEN_WORDS, CUSTOM_INPUT_TYPES, DEDICATED_EASY_PAY_PROVIDER, FULFILLMENT_METHODS, FULFILLMENT_METHODS_BY_TYPE, FULFILLMENT_METHOD_RULES, FULFILLMENT_RULES, INSTALLABLE_SCOPES, InvalidPriceUnitError, KAKAOPAY_TEST_CID, KNOWN_WEBHOOK_EVENT_TYPES, KRW_MONEY_RULES, MAX_ADDON_GROUPS, MAX_ANALYTICS_ALLOWED_ORIGINS, MAX_AUTO_TRANSITION_DAYS, MAX_CALENDAR_DAYS, MAX_CERTIFICATION_ITEMS, MAX_COLLECTIONS, MAX_COLLECTION_BEST_SELLING_TOP, 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_INFO_SECTION_TITLE, MAX_INVENTORY_OPERATION_LINES, MAX_NOTICE_VALUE_LENGTH, MAX_OPTION_GROUPS, MAX_PICKUP_LOCATIONS, MAX_PRODUCT_IMAGES, MAX_PRODUCT_INFO_SECTIONS, MAX_SAVED_OPTION_SETS, MAX_SAVED_OPTION_SET_NAME, MAX_STAY_NIGHTS, MAX_VALUES_PER_GROUP, MAX_VARIANTS, MCP_TELEMETRY_MAX_RESULTS, MIN_PAYMENT_AMOUNT, NON_INSTALLABLE_SCOPES, NO_COUPON_SETTLEMENT, NO_SHIPPING_BUNDLE_KEY, PAYMENT_ROUTING_EXCLUSION_CODES, PAYPAL_CURRENCIES, PLATFORM_CODE_SETS, 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, SCOPE_DESCRIPTIONS, SHIPPING_POLICY_DEFAULTS, STARTER_SELLER_TASKS, STARTER_STAGES, STOREFRONT_BLOCKED_PATH_SEGMENTS, STOREFRONT_BUILD_STAGES, STOREFRONT_BUILD_TERMINAL_STATUSES, STOREFRONT_CHECK_TERMINAL_STATUSES, STOREFRONT_CLOSED_SITE_HOLD_DAYS, 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_DRAFT_ATTACHMENT_MAX_BYTES, STORE_DRAFT_MAX_ATTACHMENTS, STORE_DRAFT_RETENTION_DAYS, STORE_ROLE_SCOPES, STORE_SCOPE_RESOURCES, STORE_SESSION_KEYS, STORE_SHOP_TYPES, TEMPLATE_STORE_LOCKED_BUSINESS_FIELDS, 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, additionalCurrencyPriceSchema, additionalCurrencyPricesSchema, addonGroupRequestSchema, addonGroupSchema, addonValueRequestSchema, addonValueSchema, addressChangeRequestListSchema, addressTypeSchema, agentPolicyDecisionSchema, aiActivitySchema, aiAgentPhaseSchema, aiAttachmentSchema, aiChoiceOptionSchema, aiConversationFileChangesSchema, aiConversationSchema, aiConversationSummarySchema, aiDesignBoardSchema, aiDesignCanvasSchema, aiDesignConfirmBoardSchema, aiDesignSelectionSchema, aiFileChangeKindSchema, aiFocusAreaSchema, aiFocusSchema, aiMessagePartSchema, aiMessageSchema, aiPreviewSelectionSchema, aiRunChangesSchema, aiRunChangesStatusSchema, aiRunFileDiffSchema, aiRunRevertConflictDetailsSchema, aiRunRevertResultSchema, aiRunSchema, aiRunStatusSchema, aiSetupConfirmItemSchema, aiStreamAccessSchema, aiStreamEventSchema, aiStreamRecordSchema, aiTodoSchema, aiToolChangeSchema, 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, appArtifactUploadSchema, appBuildSchema, appBuildStageSchema, appCapabilitiesOf, appDeployKeyCreateSchema, appDeployKeyCreatedSchema, appDeployKeySchema, appDevTokenSchema, appDistributionSchema, appEventTypeSchema, appFlowEventSchema, appFlowEventSummarySchema, appFlowNotificationSchema, appFlowNotificationSummarySchema, appFlowParamSchema, appFlowSummaryOf, appHandleSchema, appHttpKeyMatches, appIconProblem, appInstallRequestSchema, appInstallationActivitySchema, appInstallationAppSchema, appInstallationRunSchema, appInstallationSchema, appInstallationSelfSchema, appInstallationSettingsSchema, appInstallationSettingsUpdateSchema, appInstallationStatusSchema, appInvocationSchema, appListingReviewSchema, appListingReviewStatusSchema, appListingSchema, appManifestProblems, appManifestSchema, appManifestWidens, appNetworkHostProblem, appNetworkHostSchema, appReleaseResultSchema, appRuntimeSchema, appScheduleIntervalLabel, appScheduleListOf, appScheduleSummarySchema, appScopeSchema, appSecretSummarySchema, appSessionSchema, appSettingFieldSchema, appStatusSchema, appStorageEntrySchema, appStorageKeysSchema, appStorageListQuerySchema, appStoragePutSchema, appToolCallSchema, appToolInputSchema, appToolListOf, appToolResultSchema, appToolSchema, appToolSummarySchema, appVersionSchema, appVersionStatusSchema, appVisibilitySchema, approvalDecisionRequestSchema, approvalListQuerySchema, approvalPageSchema, approvalRequestSchema, approvalStatusSchema, approveClaimResultSchema, assertSaleUnit, auditActorSchema, auditActorTypeSchema, auditLogListQuerySchema, auditLogOutcomeSchema, auditLogPageSchema, auditLogSchema, auditLogSourceSchema, bestSellingRuleOf, brandBriefProductSourceSchema, brandBriefReferenceSchema, brandBriefSchema, brandBriefViewSchema, buildAuthorizeUrl, buildQuery, bulkResultSchema, businessInfoPatchShape, businessInfoResponseShape, businessNumberSchema, calendarDateSchema, calendarDaySchema, calendarQuerySchema, cancelBySellerRequestSchema, cancelBySellerResultSchema, carrierSchema, cashReceiptSchema, categoryAttributeSchema, categoryCreateRequestSchema, categoryDeleteQuerySchema, categoryDeleteStrategySchema, categoryListQuerySchema, categoryPatchRequestSchema, categoryProductSortSchema, categorySchema, categorySearchResultSchema, categoryTreeNodeSchema, categoryWithPathSchema, changeStorefrontSlugRequestSchema, changeStorefrontTemplateRequestSchema, changeTypeSchema, claimCollectCompleteRequestSchema, claimDetailSchema, claimHoldResultSchema, claimListQuerySchema, claimReasonSchema, claimRedeliveryRequestSchema, 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, commerceFlowCheckSchema, commerceFlowSchema, commerceFlowSummarySchema, commerceFlowVersionViewSchema, commerceNumberField, compareBySales, consentActionSchema, consentKindSchema, consentSourceSchema, couponBenefitSchema, couponConditionsInputSchema, couponConditionsSchema, couponDiscountOf, couponIssueListQuerySchema, couponIssueMethodSchema, couponIssueSchema, couponIssueStatusSchema, couponKindSchema, couponListQuerySchema, couponRedemptionListQuerySchema, couponRedemptionSchema, couponRejectReasonSchema, couponRuleSchema, couponSchema, couponStatsSchema, couponStatusSchema, couponTargetInputSchema, couponTargetSchema, createAiConversationRequestSchema, createAiConversationResponseSchema, createCommerceFlowRequestSchema, createCouponRequestSchema, createMarketRequestSchema, createPkcePair, createStoreClient, createStoreDraftRequestSchema, createStoreDraftResponseSchema, createStoreSession, createStorefrontEditPreviewLinkRequestSchema, createStorefrontPreviewLinkRequestSchema, createStorefrontSiteRequestSchema, createStorefrontVersionRequestSchema, currencyCodeSchema, currencyRefundFeesSchema, currencyShippingPolicySchema, currencySpecOf, customInputLabelForbiddenWord, customInputRequestSchema, customInputSchema, customInputValueSchema, customerAddressSchema, customerConsentListQuerySchema, customerConsentSchema, customerConsentStateSchema, customerConsentsSchema, customerCouponSchema, customerDelegationRequestSchema, customerDelegationSchema, customerDetailSchema, customerInquiryCategorySchema, customerInquiryListQuerySchema, customerListQuerySchema, customerOrderSchema, customerPointsSchema, customerSortSchema, customerStatsSchema, customerSummarySchema, customerWithdrawalBlockedDetailsSchema, defaultFulfillmentMethodOf, deleteStorefrontFileRequestSchema, deliveryBundleKeyOf, deliveryFeeWaiverSchema, deliveryInfoSchema, deliveryMethodSchema, deliveryStatusSchema, deliveryTypeSchema, descendantCategoryIdsOf, describeScope, devStoreSchema, developerAppCreateSchema, developerAppSchema, developerInstallationSchema, developerOrgSchema, developerStoreSchema, disableStorefrontHostingRequestSchema, discountRequestSchema, discountSchema, dispatchRequestSchema, easyPayProviderResponseSchema, easyPayProviderSchema, eventTypeSchema, exchangeAuthorizationCode, floorToSaleUnit, flowActionRequestSchema, flowActionResultSchema, flowActionSchema, flowFieldValueSchema, flowInputFieldSchema, flowNodeTypesSchema, flowNotificationWebhookEventDataSchema, flowNotificationWebhookEventSchema, flowPresetDetailSchema, flowPresetSummarySchema, flowRunSchema, flowRunStepSchema, flowSecretNameSchema, flowSecretSchema, flowStateChangedWebhookEventDataSchema, flowStateChangedWebhookEventSchema, flowStateSchema, formatOrderNo, fromDecimalString, fulfillBulkRequestSchema, fulfillRequestSchema, fulfillmentMethodOf, fulfillmentMethodSchema, fulfillmentMethodsOf, fulfillmentRuleOf, fulfillmentTypeOf, fulfillmentTypeResponseSchema, fulfillmentTypeSchema, holdOrderItemRequestSchema, infoFieldSourceSchema, infoSchemaFieldSchema, infoSchemaSchema, infoSectionRequestSchema, infoSectionSchema, inquiryListQuerySchema, inquirySchema, inquiryWebhookEventDataSchema, inquiryWebhookEventSchema, inventoryAdjustmentLineSchema, inventoryAdjustmentReasonSchema, inventoryAdjustmentRequestSchema, inventoryChangedWebhookEventDataSchema, inventoryChangedWebhookEventSchema, inventoryLevelListQuerySchema, inventoryLevelPageSchema, inventoryLevelSchema, inventoryLocationRequestSchema, inventoryLocationSchema, inventoryModeSchema, inventoryMovementKindSchema, inventoryMovementListQuerySchema, inventoryMovementPageSchema, inventoryMovementSchema, inventoryOperationResultSchema, inventoryTransferRequestSchema, invitationDeliveryStatusSchema, invitationListQuerySchema, invitationSchema, inviteMemberRequestSchema, isAiAgentNotesPath, isAiDesignPath, isCouponTargetLine, isCurrencyCode, isEditableStorefrontPath, isInstallableScope, isReservedStoreCode, isReservedStorefrontSlug, isSaleUnitPrice, isShowcaseStorefrontSlug, isStoreScope, isWebOrigin, issueCouponRequestSchema, issueCouponResultSchema, kakaoPayCredentialsInputSchema, liveGateConditionCodeSchema, liveGateConditionSchema, liveGateErrorDetailsSchema, liveGateSchema, loginProviderSchema, loginProviderStatusSchema, loginProviderTestSchema, loginSettingsSchema, marketSchema, maskedSecretSchema, matchesCollectionRules, mcpRuleResultSchema, mcpToolEventSchema, migrateFlowVersionRequestSchema, migrateFlowVersionResultSchema, minPaymentOf, minorToMajor, moneyRulesOf, moveFlowStateRequestSchema, moveStorefrontFileRequestSchema, myAccountSchema, myStoreSchema, naverPayCredentialsInputSchema, nightsOf, normalizeBusinessNumber, normalizeCouponCode, normalizeStorefrontHostname, normalizeStorefrontPath, oauthTokenResponseSchema, openFulfillmentUnion, optionGroupKindSchema, optionGroupRequestSchema, optionGroupSchema, optionModelRequestSchema, optionModelSchema, optionSelectionSchema, optionSortSchema, optionValueRequestSchema, optionValueSchema, orderCanceledWebhookEventDataSchema, orderCanceledWebhookEventSchema, orderDiscountSchema, orderFlowActionResultSchema, orderFulfilledWebhookEventDataSchema, orderFulfilledWebhookEventSchema, orderItemFlowSchema, orderItemFulfillmentSchema, orderItemFulfillmentSnapshotResponseSchema, orderItemFulfillmentSnapshotSchema, orderItemListQuerySchema, orderItemMemoResultSchema, orderItemPageSchema, orderItemSchema, orderItemStatusSchema, orderListQuerySchema, orderSchema, orderSummaryPageSchema, orderSummarySchema, orderWebhookEventDataSchema, orderWebhookEventSchema, pageInfoSchema, pageQueryShape, pageSchema, parseOrderNo, parseWebhookEvent, payPalCredentialsInputSchema, paymentAttemptRecordSchema, paymentAttemptStatusSchema, paymentCredentialSetSchema, paymentFailureWarningSchema, paymentListQuerySchema, paymentProviderSchema, paymentProviderVerificationSchema, paymentRecordDetailSchema, paymentRecordPageSchema, paymentRecordSchema, paymentRecordStatusSchema, paymentRefundRecordSchema, paymentSettingsSchema, paymentStatusProviderSchema, paymentStatusSchema, pgEnvironmentSchema, pgPaymentMethodSchema, pgProviderResponseSchema, pgProviderSchema, pgVerificationResultSchema, pickupLocationRequestSchema, pickupLocationSchema, pickupLocationSnapshotSchema, planCodeSchema, planEntitlementsSchema, planErrorDetailsSchema, platformCodeSchema, pointAdjustmentRequestSchema, pointAdjustmentResultSchema, pointEarnOf, pointEarnRateBpSchema, pointEarningEnabled, pointEntrySchema, pointExpiresAtOf, pointHistoryQuerySchema, pointLotSchema, pointPolicyNoticeSchema, pointPolicySchema, pointRestoreExpiresAtOf, pointUseOf, pointUsePolicySchema, policyDocumentUrlSchema, policyVersionSchema, portOneChannelSchema, portOneCredentialsInputSchema, productCertificationsRequestSchema, productCertificationsSchema, productCreateRequestSchema, productCurrencyPriceSchema, productCurrencyPricesSchema, productFulfillmentCreateSchema, productFulfillmentResponseSchema, productFulfillmentSchema, productFulfillmentUpdateSchema, productImageRejection, productImageUrlSchema, productListQuerySchema, productNoticeRequestSchema, productNoticeSchema, productOutOfStockWebhookEventDataSchema, productOutOfStockWebhookEventSchema, productPatchRequestSchema, productRefundPolicyOverride, productRefundPolicyPatchSchema, productReplaceRequestSchema, productSchema, productSortSchema, productStatusSchema, productSummarySchema, productVariantRequestSchema, productVariantSchema, proratedPaidRefundBase, proratedPointRefund, proratedRefundBase, publicPlanSchema, publicPlansSchema, publishStorefrontVersionRequestSchema, purchaseDecisionExtendResultSchema, purchaseDecisionRequestResultSchema, purchaseEarnPolicySchema, purchaseEarnRateOf, putBrandBriefRequestSchema, quoteDelivery, quotePricing, rankBestSelling, refreshUserToken, refundPolicyPatchSchema, refundPolicySchema, rejectClaimRequestSchema, remoteAreaLabelOf, remoteAreaOf, remoteAreaSchema, remoteSurchargeOf, replaceStorefrontSourceRequestSchema, replayFlowRequestSchema, replayFlowResultSchema, requiresCollection, requiresShipping, resolvePointPolicy, resolveRefundPolicy, resolveShippingPolicy, resolvedFlowSchema, responsePlanCodeSchema, responsePointEntryTypeSchema, reviewListQuerySchema, reviewReportResultSchema, reviewRewardPointOf, reviewRewardPolicySchema, reviewSchema, reviewSortSchema, reviewWebhookEventDataSchema, reviewWebhookEventSchema, rollbackStorefrontRequestSchema, runStorefrontCheckRequestSchema, salesReportCurrencySchema, salesReportGroupBySchema, salesReportQuerySchema, salesReportRowSchema, salesReportSchema, salesTotalsSchema, saveFlowDraftRequestSchema, saveFlowSecretRequestSchema, saveLoginProviderRequestSchema, savedCustomInputRequestSchema, savedCustomInputSchema, savedOptionGroupRequestSchema, savedOptionGroupSchema, savedOptionSetCompositionSchema, savedOptionSetFromProductRequestSchema, savedOptionSetFromProductResultSchema, savedOptionSetListQuerySchema, savedOptionSetRequestSchema, savedOptionSetSchema, savedOptionSetSortSchema, savedOptionValueRequestSchema, savedOptionValueSchema, scopeAccessSchema, scopesCoverEvent, searchStorefrontFilesRequestSchema, sellerAddressListQuerySchema, sellerAddressRequestSchema, sellerAddressSchema, sellerCancelPreviewSchema, sellerCustomerInquirySchema, sendAiMessageRequestSchema, sendAiMessageResponseSchema, setCalendarRequestSchema, setPlatformTestKeysRequestSchema, setStorefrontVisibilityRequestSchema, settleCouponShortfall, settlementDetailQuerySchema, settlementDetailSchema, settlementListQuerySchema, settlementStatusSchema, settlementSummarySchema, settlementWithDetailsSchema, shippingAddressSchema, shippingCurrencyPriceSchema, shippingCurrencyPricesSchema, shippingPolicyPatchSchema, shippingPolicySchema, simulateFlowRequestSchema, simulateFlowResultSchema, simulationStepSchema, splitRefund, starterSellerTaskSchema, starterStageSchema, starterStatusSchema, starterStoreInfoFieldSchema, stayRangeSchema, staySnapshotSchema, storeAppDetailSchema, storeAppSchema, storeCodeSchema, storeDraftPreviewSchema, storeDraftSchema, storeIndustrySchema, storeMemberRoleUpdatedSchema, storeMemberSchema, storePointPolicySchema, storeRoleSchema, storeSchema, storeScopeResourceSchema, storeSetupBriefSchema, storeShopTypeSchema, storeSubscriptionSchema, storeTemplateSchema, storedAdditionalCurrencyPriceSchema, storedProductCurrencyPriceSchema, storedShippingCurrencyPriceSchema, storefrontBuildDependenciesSchema, storefrontBuildListQuerySchema, storefrontBuildSchema, storefrontBuildStatusSchema, storefrontCheckSchema, storefrontCheckStatusSchema, storefrontCustomDomainStatusSchema, storefrontCustomHostnameProblem, storefrontDependencyFindingSchema, storefrontDeploymentLogSchema, storefrontDeploymentSchema, storefrontDeploymentStepSchema, storefrontDevLogsSchema, 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, storefrontSiteSnapshotSchema, storefrontSiteStatusSchema, storefrontSlugAvailabilityQuerySchema, storefrontSlugAvailabilitySchema, storefrontSlugSchema, storefrontSourceArchivePartSchema, storefrontSourceArchiveQuerySchema, storefrontSourceBlobsResultSchema, storefrontSourceModeSchema, storefrontSourceRefSchema, storefrontSourceReplacedSchema, storefrontSourceSchema, storefrontSuspensionSchema, storefrontTemplateSchema, storefrontVerifyReportSchema, storefrontVersionCreatedSchema, storefrontVersionPreviewLabelOf, storefrontVersionSchema, storefrontVersionStatusSchema, storefrontVisibilitySchema, subscriptionLimitsSchema, subscriptionStatusSchema, subscriptionUsageSchema, toDecimalString, toMinor, tossPaymentsCredentialsInputSchema, trackingStageResponseSchema, trackingUpdateResultSchema, unknownWebhookEventSchema, updateCouponRequestSchema, updateLoginProviderRequestSchema, updateLoginSettingsRequestSchema, updateMarketRequestSchema, updateMemberRoleRequestSchema, updatePaymentProviderRequestSchema, updatePaymentSettingsRequestSchema, updatePointPolicyRequestSchema, updateStoreRequestSchema, updateStoreTemplateRequestSchema, uploadExtensionOf, uploadPurposeSchema, uploadRejection, uploadRequestSchema, uploadStorefrontSourceBlobsRequestSchema, uploadTicketSchema, upsertKakaoPayProviderRequestSchema, upsertNaverPayProviderRequestSchema, upsertPayPalProviderRequestSchema, 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 };
|
|
11247
|
+
export { AI_AGENT_NOTES_DIR, AI_AGENT_PHASES, AI_DESIGN_BOARDS_MAX, AI_DESIGN_BOARD_FILE_PATTERN, AI_DESIGN_BOARD_KINDS, AI_DESIGN_CANVAS_PATH, AI_DESIGN_CONFIRM_APPROVE, AI_DESIGN_DIR, AI_DESIGN_VIEWPORTS, AI_MESSAGE_MAX_ATTACHMENTS, AI_MESSAGE_MAX_CHARS, AI_RUN_ACTIVE_STATUSES, AI_RUN_FILE_CHANGES_RETENTION_DAYS, AI_SETUP_CONFIRM_APPROVE, AI_TODOS_MAX, AI_TODO_STATUSES, APPROVAL_ALREADY_DECIDED_CODE, APPROVAL_REQUIRED_CODE, APP_CAPABILITIES, APP_DEPLOY_KEY_PATTERN, APP_DEPLOY_KEY_PREFIX, APP_EVENTS_MAX, APP_EVENT_SCOPES, APP_EVENT_TYPES, APP_FLOW_EVENT_PATTERN, APP_FLOW_ITEMS_MAX, APP_FLOW_NOTIFICATION_PATTERN, APP_HANDLE_PATTERN, APP_HTTP_KEY_PATTERN, APP_ICON_CONTENT_TYPES, APP_ICON_MAX_BYTES, APP_ICON_MIN_PX, APP_LIFECYCLE_EVENT_TYPES, APP_NETWORK_DENIED_SUFFIXES, APP_NETWORK_HOSTS_MAX, APP_PUBLIC_HTTP_MAX, APP_README_MAX_BYTES, APP_RESERVED_HANDLES, APP_SCHEDULES_MAX, APP_SCHEDULE_INTERVALS, APP_SCHEDULE_NAME_PATTERN, APP_SECRETS_MAX, APP_SECRET_NAME_PATTERN, APP_SECRET_PATTERNS, APP_SERVER_BUNDLE_MAX_GZIP_BYTES, APP_SETTINGS_MAX_FIELDS, APP_SETTING_FIELD_TYPES, APP_SETTING_KEY_PATTERN, APP_STORAGE_KEY_PATTERN, APP_STORAGE_MAX_BYTES, APP_STORAGE_MAX_KEYS, APP_TOOL_NAME_PATTERN, APP_UI_MAX_BYTES, APP_UI_MAX_FILES, ApiError, ApprovalPendingError, BASE_CURRENCY, BRAND_BRIEF_MAX_REFERENCES, BUSINESS_INFO_MAX_LENGTH, BUSINESS_NUMBER_PATTERN, CASH_RECEIPT_STATUS_VALUES, CERTIFICATION_STATUSES, COLLECTION_BEST_SELLING_DAYS, COLLECTION_PREVIEW_SIZE, COLLECTION_PRODUCT_SORTS, COLLECTION_SALES_SORT_DEFAULT_DAYS, COLLECTION_SLUG_PATTERN, COLLECTION_TYPES, COUPON_CODE_PATTERN, COUPON_CONDITIONS_DEFAULTS, COUPON_TARGET_ALL, COUPON_TARGET_LIST_MAX, CURRENCIES, CURRENCY_CODES, CUSTOM_INPUT_FORBIDDEN_WORDS, CUSTOM_INPUT_TYPES, DEDICATED_EASY_PAY_PROVIDER, DEFAULT_STORE_LOCALE, FULFILLMENT_METHODS, FULFILLMENT_METHODS_BY_TYPE, FULFILLMENT_METHOD_RULES, FULFILLMENT_RULES, INSTALLABLE_SCOPES, InvalidPriceUnitError, KAKAOPAY_TEST_CID, KNOWN_WEBHOOK_EVENT_TYPES, KRW_MONEY_RULES, MAX_ADDON_GROUPS, MAX_ANALYTICS_ALLOWED_ORIGINS, MAX_AUTO_TRANSITION_DAYS, MAX_CALENDAR_DAYS, MAX_CERTIFICATION_ITEMS, MAX_COLLECTIONS, MAX_COLLECTION_BEST_SELLING_TOP, 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_INFO_SECTION_TITLE, MAX_INVENTORY_OPERATION_LINES, MAX_NOTICE_VALUE_LENGTH, MAX_OPTION_GROUPS, MAX_PICKUP_LOCATIONS, MAX_PRODUCT_IMAGES, MAX_PRODUCT_INFO_SECTIONS, MAX_SAVED_OPTION_SETS, MAX_SAVED_OPTION_SET_NAME, MAX_STAY_NIGHTS, MAX_VALUES_PER_GROUP, MAX_VARIANTS, MCP_TELEMETRY_MAX_RESULTS, MIN_PAYMENT_AMOUNT, NON_INSTALLABLE_SCOPES, NO_COUPON_SETTLEMENT, NO_SHIPPING_BUNDLE_KEY, PAYMENT_ROUTING_EXCLUSION_CODES, PAYPAL_CURRENCIES, PLATFORM_CODE_SETS, 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, SCOPE_DESCRIPTIONS, SHIPPING_POLICY_DEFAULTS, STARTER_SELLER_TASKS, STARTER_STAGES, STOREFRONT_BLOCKED_PATH_SEGMENTS, STOREFRONT_BUILD_STAGES, STOREFRONT_BUILD_TERMINAL_STATUSES, STOREFRONT_CHECK_TERMINAL_STATUSES, STOREFRONT_CLOSED_SITE_HOLD_DAYS, 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_DRAFT_ATTACHMENT_MAX_BYTES, STORE_DRAFT_MAX_ATTACHMENTS, STORE_DRAFT_RETENTION_DAYS, STORE_ROLE_SCOPES, STORE_SCOPE_RESOURCES, STORE_SESSION_KEYS, STORE_SHOP_TYPES, TEMPLATE_STORE_LOCKED_BUSINESS_FIELDS, 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, additionalCurrencyPriceSchema, additionalCurrencyPricesSchema, addonGroupRequestSchema, addonGroupSchema, addonValueRequestSchema, addonValueSchema, addressChangeRequestListSchema, addressTypeSchema, agentPolicyDecisionSchema, aiActivitySchema, aiAgentPhaseSchema, aiAttachmentSchema, aiChoiceOptionSchema, aiConversationFileChangesSchema, aiConversationSchema, aiConversationSummarySchema, aiDesignBoardSchema, aiDesignCanvasSchema, aiDesignConfirmBoardSchema, aiDesignSelectionSchema, aiFileChangeKindSchema, aiFocusAreaSchema, aiFocusSchema, aiMessagePartSchema, aiMessageSchema, aiPreviewSelectionSchema, aiRunChangesSchema, aiRunChangesStatusSchema, aiRunFileDiffSchema, aiRunRevertConflictDetailsSchema, aiRunRevertResultSchema, aiRunSchema, aiRunStatusSchema, aiSetupConfirmItemSchema, aiStreamAccessSchema, aiStreamEventSchema, aiStreamRecordSchema, aiTodoSchema, aiToolChangeSchema, 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, appArtifactUploadSchema, appBuildSchema, appBuildStageSchema, appCapabilitiesOf, appDeployKeyCreateSchema, appDeployKeyCreatedSchema, appDeployKeySchema, appDevTokenSchema, appDistributionSchema, appEventTypeSchema, appFlowEventSchema, appFlowEventSummarySchema, appFlowNotificationSchema, appFlowNotificationSummarySchema, appFlowParamSchema, appFlowSummaryOf, appHandleSchema, appHttpKeyMatches, appIconProblem, appInstallRequestSchema, appInstallationActivitySchema, appInstallationAppSchema, appInstallationRunSchema, appInstallationSchema, appInstallationSelfSchema, appInstallationSettingsSchema, appInstallationSettingsUpdateSchema, appInstallationStatusSchema, appInvocationSchema, appListingReviewSchema, appListingReviewStatusSchema, appListingSchema, appManifestProblems, appManifestSchema, appManifestWidens, appNetworkHostProblem, appNetworkHostSchema, appReleaseResultSchema, appRuntimeSchema, appScheduleIntervalLabel, appScheduleListOf, appScheduleSummarySchema, appScopeSchema, appSecretSummarySchema, appSessionSchema, appSettingFieldSchema, appStatusSchema, appStorageEntrySchema, appStorageKeysSchema, appStorageListQuerySchema, appStoragePutSchema, appToolCallSchema, appToolInputSchema, appToolListOf, appToolResultSchema, appToolSchema, appToolSummarySchema, appVersionSchema, appVersionStatusSchema, appVisibilitySchema, approvalDecisionRequestSchema, approvalListQuerySchema, approvalPageSchema, approvalRequestSchema, approvalStatusSchema, approveClaimResultSchema, assertSaleUnit, auditActorSchema, auditActorTypeSchema, auditLogListQuerySchema, auditLogOutcomeSchema, auditLogPageSchema, auditLogSchema, auditLogSourceSchema, bestSellingRuleOf, brandBriefProductSourceSchema, brandBriefReferenceSchema, brandBriefSchema, brandBriefViewSchema, buildAuthorizeUrl, buildQuery, bulkResultSchema, businessInfoPatchShape, businessInfoResponseShape, businessNumberSchema, calendarDateSchema, calendarDaySchema, calendarQuerySchema, cancelBySellerRequestSchema, cancelBySellerResultSchema, carrierSchema, cashReceiptSchema, categoryAttributeSchema, categoryCreateRequestSchema, categoryDeleteQuerySchema, categoryDeleteStrategySchema, categoryListQuerySchema, categoryLocalizationRequestSchema, categoryLocalizationSchema, categoryPatchRequestSchema, categoryProductSortSchema, categorySchema, categorySearchResultSchema, categoryTreeNodeSchema, categoryWithPathSchema, changeStorefrontSlugRequestSchema, changeStorefrontTemplateRequestSchema, changeTypeSchema, claimCollectCompleteRequestSchema, claimDetailSchema, claimHoldResultSchema, claimListQuerySchema, claimReasonSchema, claimRedeliveryRequestSchema, 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, commerceFlowCheckSchema, commerceFlowSchema, commerceFlowSummarySchema, commerceFlowVersionViewSchema, commerceNumberField, compareBySales, consentActionSchema, consentKindSchema, consentSourceSchema, couponBenefitSchema, couponConditionsInputSchema, couponConditionsSchema, couponDiscountOf, couponIssueListQuerySchema, couponIssueMethodSchema, couponIssueSchema, couponIssueStatusSchema, couponKindSchema, couponListQuerySchema, couponRedemptionListQuerySchema, couponRedemptionSchema, couponRejectReasonSchema, couponRuleSchema, couponSchema, couponStatsSchema, couponStatusSchema, couponTargetInputSchema, couponTargetSchema, createAiConversationRequestSchema, createAiConversationResponseSchema, createCommerceFlowRequestSchema, createCouponRequestSchema, createMarketRequestSchema, createPkcePair, createStoreClient, createStoreDraftRequestSchema, createStoreDraftResponseSchema, createStoreSession, createStorefrontEditPreviewLinkRequestSchema, createStorefrontPreviewLinkRequestSchema, createStorefrontSiteRequestSchema, createStorefrontVersionRequestSchema, currencyCodeSchema, currencyRefundFeesSchema, currencyShippingPolicySchema, currencySpecOf, customInputLabelForbiddenWord, customInputRequestSchema, customInputSchema, customInputValueSchema, customerAddressSchema, customerConsentListQuerySchema, customerConsentSchema, customerConsentStateSchema, customerConsentsSchema, customerCouponSchema, customerDelegationRequestSchema, customerDelegationSchema, customerDetailSchema, customerInquiryCategorySchema, customerInquiryListQuerySchema, customerListQuerySchema, customerOrderSchema, customerPointsSchema, customerSortSchema, customerStatsSchema, customerSummarySchema, customerWithdrawalBlockedDetailsSchema, defaultFulfillmentMethodOf, deleteStorefrontFileRequestSchema, deliveryBundleKeyOf, deliveryFeeWaiverSchema, deliveryInfoSchema, deliveryMethodSchema, deliveryStatusSchema, deliveryTypeSchema, descendantCategoryIdsOf, describeScope, devStoreSchema, developerAppCreateSchema, developerAppSchema, developerInstallationSchema, developerOrgSchema, developerStoreSchema, disableStorefrontHostingRequestSchema, discountRequestSchema, discountSchema, dispatchRequestSchema, easyPayProviderResponseSchema, easyPayProviderSchema, eventTypeSchema, exchangeAuthorizationCode, floorToSaleUnit, flowActionRequestSchema, flowActionResultSchema, flowActionSchema, flowFieldValueSchema, flowInputFieldSchema, flowNodeTypesSchema, flowNotificationWebhookEventDataSchema, flowNotificationWebhookEventSchema, flowPresetDetailSchema, flowPresetSummarySchema, flowRunSchema, flowRunStepSchema, flowSecretNameSchema, flowSecretSchema, flowStateChangedWebhookEventDataSchema, flowStateChangedWebhookEventSchema, flowStateSchema, formatOrderNo, fromDecimalString, fulfillBulkRequestSchema, fulfillRequestSchema, fulfillmentMethodOf, fulfillmentMethodSchema, fulfillmentMethodsOf, fulfillmentRuleOf, fulfillmentTypeOf, fulfillmentTypeResponseSchema, fulfillmentTypeSchema, holdOrderItemRequestSchema, infoFieldSourceSchema, infoSchemaFieldSchema, infoSchemaSchema, infoSectionRequestSchema, infoSectionSchema, inquiryListQuerySchema, inquirySchema, inquiryWebhookEventDataSchema, inquiryWebhookEventSchema, inventoryAdjustmentLineSchema, inventoryAdjustmentReasonSchema, inventoryAdjustmentRequestSchema, inventoryChangedWebhookEventDataSchema, inventoryChangedWebhookEventSchema, inventoryLevelListQuerySchema, inventoryLevelPageSchema, inventoryLevelSchema, inventoryLocationRequestSchema, inventoryLocationSchema, inventoryModeSchema, inventoryMovementKindSchema, inventoryMovementListQuerySchema, inventoryMovementPageSchema, inventoryMovementSchema, inventoryOperationResultSchema, inventoryTransferRequestSchema, invitationDeliveryStatusSchema, invitationListQuerySchema, invitationSchema, inviteMemberRequestSchema, isAiAgentNotesPath, isAiDesignPath, isCouponTargetLine, isCurrencyCode, isEditableStorefrontPath, isInstallableScope, isReservedStoreCode, isReservedStorefrontSlug, isSaleUnitPrice, isShowcaseStorefrontSlug, isStoreScope, isWebOrigin, issueCouponRequestSchema, issueCouponResultSchema, kakaoPayCredentialsInputSchema, liveGateConditionCodeSchema, liveGateConditionSchema, liveGateErrorDetailsSchema, liveGateSchema, localeCodeSchema, loginProviderSchema, loginProviderStatusSchema, loginProviderTestSchema, loginSettingsSchema, marketSchema, maskedSecretSchema, matchesCollectionRules, mcpRuleResultSchema, mcpToolEventSchema, migrateFlowVersionRequestSchema, migrateFlowVersionResultSchema, minPaymentOf, minorToMajor, moneyRulesOf, moveFlowStateRequestSchema, moveStorefrontFileRequestSchema, myAccountSchema, myStoreSchema, naverPayCredentialsInputSchema, nightsOf, normalizeBusinessNumber, normalizeCouponCode, normalizeLocale, normalizeStorefrontHostname, normalizeStorefrontPath, oauthTokenResponseSchema, openFulfillmentUnion, optionGroupKindSchema, optionGroupRequestSchema, optionGroupSchema, optionModelRequestSchema, optionModelSchema, optionSelectionSchema, optionSortSchema, optionValueRequestSchema, optionValueSchema, orderCanceledWebhookEventDataSchema, orderCanceledWebhookEventSchema, orderDiscountSchema, orderFlowActionResultSchema, orderFulfilledWebhookEventDataSchema, orderFulfilledWebhookEventSchema, orderItemFlowSchema, orderItemFulfillmentSchema, orderItemFulfillmentSnapshotResponseSchema, orderItemFulfillmentSnapshotSchema, orderItemListQuerySchema, orderItemMemoResultSchema, orderItemPageSchema, orderItemSchema, orderItemStatusSchema, orderListQuerySchema, orderSchema, orderSummaryPageSchema, orderSummarySchema, orderWebhookEventDataSchema, orderWebhookEventSchema, pageInfoSchema, pageQueryShape, pageSchema, parseOrderNo, parseWebhookEvent, payPalCredentialsInputSchema, paymentAttemptRecordSchema, paymentAttemptStatusSchema, paymentCredentialSetSchema, paymentFailureWarningSchema, paymentListQuerySchema, paymentProviderSchema, paymentProviderVerificationSchema, paymentRecordDetailSchema, paymentRecordPageSchema, paymentRecordSchema, paymentRecordStatusSchema, paymentRefundRecordSchema, paymentSettingsSchema, paymentStatusProviderSchema, paymentStatusSchema, pgEnvironmentSchema, pgPaymentMethodSchema, pgProviderResponseSchema, pgProviderSchema, pgVerificationResultSchema, pickupLocationRequestSchema, pickupLocationSchema, pickupLocationSnapshotSchema, planCodeSchema, planEntitlementsSchema, planErrorDetailsSchema, platformCodeSchema, pointAdjustmentRequestSchema, pointAdjustmentResultSchema, pointEarnOf, pointEarnRateBpSchema, pointEarningEnabled, pointEntrySchema, pointExpiresAtOf, pointHistoryQuerySchema, pointLotSchema, pointPolicyNoticeSchema, pointPolicySchema, pointRestoreExpiresAtOf, pointUseOf, pointUsePolicySchema, policyDocumentUrlSchema, policyVersionSchema, portOneChannelSchema, portOneCredentialsInputSchema, productCertificationsRequestSchema, productCertificationsSchema, productCreateRequestSchema, productCurrencyPriceSchema, productCurrencyPricesSchema, productFulfillmentCreateSchema, productFulfillmentResponseSchema, productFulfillmentSchema, productFulfillmentUpdateSchema, productImageRejection, productImageUrlSchema, productListQuerySchema, productLocalizationRequestSchema, productLocalizationSchema, productNoticeRequestSchema, productNoticeSchema, productOutOfStockWebhookEventDataSchema, productOutOfStockWebhookEventSchema, productPatchRequestSchema, productRefundPolicyOverride, productRefundPolicyPatchSchema, productReplaceRequestSchema, productSchema, productSortSchema, productStatusSchema, productSummarySchema, productVariantRequestSchema, productVariantSchema, proratedPaidRefundBase, proratedPointRefund, proratedRefundBase, publicPlanSchema, publicPlansSchema, publishStorefrontVersionRequestSchema, purchaseDecisionExtendResultSchema, purchaseDecisionRequestResultSchema, purchaseEarnPolicySchema, purchaseEarnRateOf, putBrandBriefRequestSchema, quoteDelivery, quotePricing, rankBestSelling, refreshUserToken, refundPolicyPatchSchema, refundPolicySchema, rejectClaimRequestSchema, remoteAreaLabelOf, remoteAreaOf, remoteAreaSchema, remoteSurchargeOf, replaceStorefrontSourceRequestSchema, replayFlowRequestSchema, replayFlowResultSchema, requiresCollection, requiresShipping, resolvePointPolicy, resolveRefundPolicy, resolveShippingPolicy, resolvedFlowSchema, responsePlanCodeSchema, responsePointEntryTypeSchema, reviewListQuerySchema, reviewReportResultSchema, reviewRewardPointOf, reviewRewardPolicySchema, reviewSchema, reviewSortSchema, reviewWebhookEventDataSchema, reviewWebhookEventSchema, rollbackStorefrontRequestSchema, runStorefrontCheckRequestSchema, salesReportCurrencySchema, salesReportGroupBySchema, salesReportQuerySchema, salesReportRowSchema, salesReportSchema, salesTotalsSchema, saveFlowDraftRequestSchema, saveFlowSecretRequestSchema, saveLoginProviderRequestSchema, savedCustomInputRequestSchema, savedCustomInputSchema, savedOptionGroupRequestSchema, savedOptionGroupSchema, savedOptionSetCompositionSchema, savedOptionSetFromProductRequestSchema, savedOptionSetFromProductResultSchema, savedOptionSetListQuerySchema, savedOptionSetRequestSchema, savedOptionSetSchema, savedOptionSetSortSchema, savedOptionValueRequestSchema, savedOptionValueSchema, scopeAccessSchema, scopesCoverEvent, searchStorefrontFilesRequestSchema, sellerAddressListQuerySchema, sellerAddressRequestSchema, sellerAddressSchema, sellerCancelPreviewSchema, sellerCustomerInquirySchema, sendAiMessageRequestSchema, sendAiMessageResponseSchema, setCalendarRequestSchema, setPlatformTestKeysRequestSchema, setStorefrontVisibilityRequestSchema, settleCouponShortfall, settlementDetailQuerySchema, settlementDetailSchema, settlementListQuerySchema, settlementStatusSchema, settlementSummarySchema, settlementWithDetailsSchema, shippingAddressSchema, shippingCurrencyPriceSchema, shippingCurrencyPricesSchema, shippingPolicyPatchSchema, shippingPolicySchema, simulateFlowRequestSchema, simulateFlowResultSchema, simulationStepSchema, splitRefund, starterSellerTaskSchema, starterStageSchema, starterStatusSchema, starterStoreInfoFieldSchema, stayRangeSchema, staySnapshotSchema, storeAppDetailSchema, storeAppSchema, storeCodeSchema, storeDraftPreviewSchema, storeDraftSchema, storeIndustrySchema, storeMemberRoleUpdatedSchema, storeMemberSchema, storePointPolicySchema, storeRoleSchema, storeSchema, storeScopeResourceSchema, storeSetupBriefSchema, storeShopTypeSchema, storeSubscriptionSchema, storeTemplateSchema, storedAdditionalCurrencyPriceSchema, storedProductCurrencyPriceSchema, storedShippingCurrencyPriceSchema, storefrontBuildDependenciesSchema, storefrontBuildListQuerySchema, storefrontBuildSchema, storefrontBuildStatusSchema, storefrontCheckSchema, storefrontCheckStatusSchema, storefrontCustomDomainStatusSchema, storefrontCustomHostnameProblem, storefrontDependencyFindingSchema, storefrontDeploymentLogSchema, storefrontDeploymentSchema, storefrontDeploymentStepSchema, storefrontDevLogsSchema, 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, storefrontSiteSnapshotSchema, storefrontSiteStatusSchema, storefrontSlugAvailabilityQuerySchema, storefrontSlugAvailabilitySchema, storefrontSlugSchema, storefrontSourceArchivePartSchema, storefrontSourceArchiveQuerySchema, storefrontSourceBlobsResultSchema, storefrontSourceModeSchema, storefrontSourceRefSchema, storefrontSourceReplacedSchema, storefrontSourceSchema, storefrontSuspensionSchema, storefrontTemplateSchema, storefrontVerifyReportSchema, storefrontVersionCreatedSchema, storefrontVersionPreviewLabelOf, storefrontVersionSchema, storefrontVersionStatusSchema, storefrontVisibilitySchema, subscriptionLimitsSchema, subscriptionStatusSchema, subscriptionUsageSchema, toDecimalString, toMinor, tossPaymentsCredentialsInputSchema, trackingStageResponseSchema, trackingUpdateResultSchema, unknownWebhookEventSchema, updateCouponRequestSchema, updateLoginProviderRequestSchema, updateLoginSettingsRequestSchema, updateMarketRequestSchema, updateMemberRoleRequestSchema, updatePaymentProviderRequestSchema, updatePaymentSettingsRequestSchema, updatePointPolicyRequestSchema, updateStoreRequestSchema, updateStoreTemplateRequestSchema, uploadExtensionOf, uploadPurposeSchema, uploadRejection, uploadRequestSchema, uploadStorefrontSourceBlobsRequestSchema, uploadTicketSchema, upsertKakaoPayProviderRequestSchema, upsertNaverPayProviderRequestSchema, upsertPayPalProviderRequestSchema, 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 };
|
package/package.json
CHANGED
package/src/client.ts
CHANGED
|
@@ -63,9 +63,12 @@ import { myAccountSchema, myStoreSchema } from "./schemas/auth";
|
|
|
63
63
|
import {
|
|
64
64
|
type CategoryCreateRequest,
|
|
65
65
|
type CategoryDeleteStrategy,
|
|
66
|
+
type CategoryLocalizationRequest,
|
|
66
67
|
type CategoryPatchRequest,
|
|
67
68
|
categoryAttributeSchema,
|
|
68
69
|
categoryCreateRequestSchema,
|
|
70
|
+
categoryLocalizationRequestSchema,
|
|
71
|
+
categoryLocalizationSchema,
|
|
69
72
|
categoryPatchRequestSchema,
|
|
70
73
|
categorySchema,
|
|
71
74
|
categorySearchResultSchema,
|
|
@@ -314,6 +317,11 @@ import {
|
|
|
314
317
|
infoSectionSchema,
|
|
315
318
|
platformCodeSchema,
|
|
316
319
|
} from "./schemas/product-info";
|
|
320
|
+
import {
|
|
321
|
+
type ProductLocalizationRequest,
|
|
322
|
+
productLocalizationRequestSchema,
|
|
323
|
+
productLocalizationSchema,
|
|
324
|
+
} from "./schemas/product-localization";
|
|
317
325
|
import {
|
|
318
326
|
type SavedOptionSetFromProductRequestInput,
|
|
319
327
|
type SavedOptionSetListParams,
|
|
@@ -592,6 +600,24 @@ export function createStoreClient(options: StoreClientOptions) {
|
|
|
592
600
|
body: productPatchRequestSchema.parse(body),
|
|
593
601
|
}),
|
|
594
602
|
remove: (productId: string) => storeHttp.requestVoid("DELETE", path`/products/${productId}`),
|
|
603
|
+
/** 번역(이슈 #134) — 언어별 상품명·상세설명·이미지·옵션 이름 */
|
|
604
|
+
localizations: {
|
|
605
|
+
list: (productId: string) =>
|
|
606
|
+
storeHttp.request(
|
|
607
|
+
"GET",
|
|
608
|
+
path`/products/${productId}/localizations`,
|
|
609
|
+
z.array(productLocalizationSchema),
|
|
610
|
+
),
|
|
611
|
+
put: (productId: string, locale: string, body: ProductLocalizationRequest) =>
|
|
612
|
+
storeHttp.request(
|
|
613
|
+
"PUT",
|
|
614
|
+
path`/products/${productId}/localizations/${locale}`,
|
|
615
|
+
productLocalizationSchema,
|
|
616
|
+
{ body: productLocalizationRequestSchema.parse(body) },
|
|
617
|
+
),
|
|
618
|
+
remove: (productId: string, locale: string) =>
|
|
619
|
+
storeHttp.requestVoid("DELETE", path`/products/${productId}/localizations/${locale}`),
|
|
620
|
+
},
|
|
595
621
|
bulkUpdateStatus: (productIds: string[], status: ProductStatus, idempotencyKey?: string) =>
|
|
596
622
|
storeHttp.request("POST", "/products/bulk/status", bulkResultSchema, {
|
|
597
623
|
body: { productIds, status: productStatusSchema.parse(status) },
|
|
@@ -796,6 +822,24 @@ export function createStoreClient(options: StoreClientOptions) {
|
|
|
796
822
|
storeHttp.requestVoid("DELETE", path`/categories/${categoryId}`, {
|
|
797
823
|
query: (opts?.strategy ? { strategy: opts.strategy } : {}) as Query,
|
|
798
824
|
}),
|
|
825
|
+
/** 번역(이슈 #134) — 언어별 이름·SEO */
|
|
826
|
+
localizations: {
|
|
827
|
+
list: (categoryId: string) =>
|
|
828
|
+
storeHttp.request(
|
|
829
|
+
"GET",
|
|
830
|
+
path`/categories/${categoryId}/localizations`,
|
|
831
|
+
z.array(categoryLocalizationSchema),
|
|
832
|
+
),
|
|
833
|
+
put: (categoryId: string, locale: string, body: CategoryLocalizationRequest) =>
|
|
834
|
+
storeHttp.request(
|
|
835
|
+
"PUT",
|
|
836
|
+
path`/categories/${categoryId}/localizations/${locale}`,
|
|
837
|
+
categoryLocalizationSchema,
|
|
838
|
+
{ body: categoryLocalizationRequestSchema.parse(body) },
|
|
839
|
+
),
|
|
840
|
+
remove: (categoryId: string, locale: string) =>
|
|
841
|
+
storeHttp.requestVoid("DELETE", path`/categories/${categoryId}/localizations/${locale}`),
|
|
842
|
+
},
|
|
799
843
|
},
|
|
800
844
|
|
|
801
845
|
orders: {
|
package/src/index.ts
CHANGED
|
@@ -36,6 +36,7 @@ export * from "./schemas/customer";
|
|
|
36
36
|
export * from "./schemas/customer-delegation";
|
|
37
37
|
export * from "./schemas/fulfillment";
|
|
38
38
|
export * from "./schemas/inventory";
|
|
39
|
+
export * from "./schemas/locale";
|
|
39
40
|
export * from "./schemas/login";
|
|
40
41
|
export * from "./schemas/market";
|
|
41
42
|
export * from "./schemas/misc";
|
|
@@ -44,6 +45,7 @@ export * from "./schemas/payment";
|
|
|
44
45
|
export * from "./schemas/points";
|
|
45
46
|
export * from "./schemas/product";
|
|
46
47
|
export * from "./schemas/product-info";
|
|
48
|
+
export * from "./schemas/product-localization";
|
|
47
49
|
export * from "./schemas/promotion";
|
|
48
50
|
export * from "./schemas/refund-policy";
|
|
49
51
|
export * from "./schemas/saved-option-set";
|
package/src/schemas/category.ts
CHANGED
|
@@ -146,3 +146,28 @@ export const categoryDeleteQuerySchema = z.object({
|
|
|
146
146
|
"`reparent`는 직계 자식을 삭제할 카테고리의 부모로 옮기고, `cascade`는 서브트리를 삭제하고 연결 상품을 미분류로 둔다",
|
|
147
147
|
),
|
|
148
148
|
});
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* 카테고리 번역 (이슈 #134) — 언어 하나의 이름·SEO. 카테고리 필드(`name`·`meta*`)는 상점 기본 언어 값이고 번역 레코드가 언어별 값이다.
|
|
152
|
+
* 비운 칸(null)은 스토어프론트가 기본 언어 값으로 대체한다(칸 단위 대체).
|
|
153
|
+
*/
|
|
154
|
+
export const categoryLocalizationSchema = z.object({
|
|
155
|
+
locale: z.string().describe("언어(BCP 47)"),
|
|
156
|
+
name: z.string().nullable().describe("이름. null이면 기본 언어 이름"),
|
|
157
|
+
metaTitle: z.string().nullable(),
|
|
158
|
+
metaDescription: z.string().nullable(),
|
|
159
|
+
metaKeywords: z.string().nullable(),
|
|
160
|
+
updatedAt: z.string(),
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
export type CategoryLocalization = z.infer<typeof categoryLocalizationSchema>;
|
|
164
|
+
|
|
165
|
+
/** `PUT /v1/categories/{categoryId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 빠진 칸은 null(기본 언어 값으로 대체)이다 */
|
|
166
|
+
export const categoryLocalizationRequestSchema = z.strictObject({
|
|
167
|
+
name: z.string().trim().min(1).max(100).nullable().optional(),
|
|
168
|
+
metaTitle: z.string().max(100).nullable().optional(),
|
|
169
|
+
metaDescription: z.string().max(300).nullable().optional(),
|
|
170
|
+
metaKeywords: z.string().max(200).nullable().optional(),
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
export type CategoryLocalizationRequest = z.infer<typeof categoryLocalizationRequestSchema>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 언어 코드 (이슈 #134) — BCP 47의 언어[-문자][-지역]까지 받는다(`ko`·`en`·`en-US`·`zh-Hant-TW`).
|
|
5
|
+
* 대소문자는 표준 표기로 맞춘다(언어 소문자, 문자 첫 글자 대문자, 지역 대문자). 맞지 않으면 null이다.
|
|
6
|
+
*/
|
|
7
|
+
const LOCALE_PATTERN = /^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}))?$/;
|
|
8
|
+
|
|
9
|
+
export function normalizeLocale(value: string | null | undefined): string | null {
|
|
10
|
+
const match = value?.trim().replace(/_/g, "-").toLowerCase().match(LOCALE_PATTERN);
|
|
11
|
+
if (!match) return null;
|
|
12
|
+
const [, language, script, region] = match;
|
|
13
|
+
return [
|
|
14
|
+
language,
|
|
15
|
+
script ? `${script[0]?.toUpperCase()}${script.slice(1)}` : null,
|
|
16
|
+
region ? region.toUpperCase() : null,
|
|
17
|
+
]
|
|
18
|
+
.filter(Boolean)
|
|
19
|
+
.join("-");
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** 상점 기본 언어 — 옛 상점과 언어를 정하지 않은 상점의 값이다 */
|
|
23
|
+
export const DEFAULT_STORE_LOCALE = "ko";
|
|
24
|
+
|
|
25
|
+
export const localeCodeSchema = z
|
|
26
|
+
.string()
|
|
27
|
+
.max(35)
|
|
28
|
+
.transform((value, ctx) => {
|
|
29
|
+
const normalized = normalizeLocale(value);
|
|
30
|
+
if (normalized === null) {
|
|
31
|
+
ctx.addIssue({
|
|
32
|
+
code: "custom",
|
|
33
|
+
message: "언어는 BCP 47 언어 코드입니다(예: ko·en·en-US)",
|
|
34
|
+
});
|
|
35
|
+
return z.NEVER;
|
|
36
|
+
}
|
|
37
|
+
return normalized;
|
|
38
|
+
})
|
|
39
|
+
.describe("언어(BCP 47, 예: ko·en·en-US·zh-Hant-TW)");
|
package/src/schemas/market.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { currencyCodeSchema } from "./currency";
|
|
3
|
+
import { localeCodeSchema } from "./locale";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* 판매 권역 (이슈 #130) — 상점이 어느 국가에 어느 통화로 파는지를 정한다.
|
|
@@ -9,6 +10,8 @@ import { currencyCodeSchema } from "./currency";
|
|
|
9
10
|
*
|
|
10
11
|
* 스토어프론트는 요청마다 도메인(`X-Storefront-Host`) → 구매자 국가(`X-Buyer-Country`) → 기본 권역 순으로 권역을 고르고, 주문서가 그 권역·통화를 굳힌다.
|
|
11
12
|
* 외화 권역은 적립금을 켤 수 없다(적립금은 기본 통화 단위다).
|
|
13
|
+
*
|
|
14
|
+
* 권역은 언어도 정한다(이슈 #134). `locales`는 이 권역 스토어프론트가 내는 언어이고 첫 언어가 대표 언어다. 비어 있으면 상점 기본 언어 하나다.
|
|
12
15
|
*/
|
|
13
16
|
|
|
14
17
|
const countryCodeSchema = z
|
|
@@ -44,6 +47,13 @@ export const marketSchema = z.object({
|
|
|
44
47
|
.string()
|
|
45
48
|
.nullable()
|
|
46
49
|
.describe("보관 시각. 보관한 권역은 판정에서 빠지고 그 국가·도메인은 풀린다"),
|
|
50
|
+
locales: z
|
|
51
|
+
.array(z.string())
|
|
52
|
+
.optional()
|
|
53
|
+
.default([])
|
|
54
|
+
.describe(
|
|
55
|
+
"이 권역 언어(이슈 #134). 첫 언어가 대표 언어다. 비어 있으면 상점 기본 언어 하나다. 서버는 항상 싣는다",
|
|
56
|
+
),
|
|
47
57
|
});
|
|
48
58
|
|
|
49
59
|
export type Market = z.infer<typeof marketSchema>;
|
|
@@ -55,6 +65,13 @@ export const createMarketRequestSchema = z.strictObject({
|
|
|
55
65
|
domains: z.array(hostnameSchema).max(20).optional(),
|
|
56
66
|
couponsEnabled: z.boolean().optional().describe("기본 false"),
|
|
57
67
|
pointsEnabled: z.boolean().optional().describe("기본 false. 외화 권역은 true로 둘 수 없다"),
|
|
68
|
+
locales: z
|
|
69
|
+
.array(localeCodeSchema)
|
|
70
|
+
.max(20)
|
|
71
|
+
.optional()
|
|
72
|
+
.describe(
|
|
73
|
+
"이 권역 언어(이슈 #134). 주면 목록 전체를 바꾼다. 첫 언어가 대표 언어다. 비우면 상점 기본 언어 하나다",
|
|
74
|
+
),
|
|
58
75
|
});
|
|
59
76
|
|
|
60
77
|
export type CreateMarketRequest = z.infer<typeof createMarketRequestSchema>;
|
|
@@ -70,6 +87,13 @@ export const updateMarketRequestSchema = z.strictObject({
|
|
|
70
87
|
domains: z.array(hostnameSchema).max(20).optional().describe("주면 도메인 목록 전체를 바꾼다"),
|
|
71
88
|
couponsEnabled: z.boolean().optional(),
|
|
72
89
|
pointsEnabled: z.boolean().optional().describe("외화 권역은 true로 둘 수 없다"),
|
|
90
|
+
locales: z
|
|
91
|
+
.array(localeCodeSchema)
|
|
92
|
+
.max(20)
|
|
93
|
+
.optional()
|
|
94
|
+
.describe(
|
|
95
|
+
"이 권역 언어(이슈 #134). 주면 목록 전체를 바꾼다. 첫 언어가 대표 언어다. 비우면 상점 기본 언어 하나다",
|
|
96
|
+
),
|
|
73
97
|
});
|
|
74
98
|
|
|
75
99
|
export type UpdateMarketRequest = z.infer<typeof updateMarketRequestSchema>;
|
package/src/schemas/order.ts
CHANGED
|
@@ -284,6 +284,13 @@ export const orderSchema = z.object({
|
|
|
284
284
|
.describe(
|
|
285
285
|
"테스트 결제(샌드박스 결제) 주문인가. true면 실제로 돈이 오가지 않았습니다. 상품을 발송하지 않도록 주의하십시오",
|
|
286
286
|
),
|
|
287
|
+
locale: z
|
|
288
|
+
.string()
|
|
289
|
+
.nullable()
|
|
290
|
+
.optional()
|
|
291
|
+
.describe(
|
|
292
|
+
"구매 언어(이슈 #134, BCP 47). 주문상품의 상품명·옵션 이름은 구매자가 이 언어로 본 값이다. null이면 상점 기본 언어다(언어 기능 이전 주문 포함)",
|
|
293
|
+
),
|
|
287
294
|
items: z.array(orderItemSchema),
|
|
288
295
|
});
|
|
289
296
|
|
|
@@ -310,7 +317,7 @@ const pageQuery = {
|
|
|
310
317
|
|
|
311
318
|
/**
|
|
312
319
|
* `GET /v1/orders` 쿼리 — OpenAPI 문서용 형태(값은 쿼리 문자열). 검증 규칙은 서버가 적용한다:
|
|
313
|
-
* `orderNo` 없이 `orderedFrom` 누락 400 `MISSING_PARAMETER`, 날짜·`orderNo` 형식 오류 400 `INVALID_PARAMETER`,
|
|
320
|
+
* `orderNo` 없이 `orderedFrom` 누락 400 `MISSING_PARAMETER`, 날짜·`orderNo` 형식 오류 400 `INVALID_PARAMETER`, 366일 초과 400 `RANGE_TOO_WIDE`,
|
|
314
321
|
* `testPayment`가 `true`·`false`가 아니면 400 `INVALID_PARAMETER`
|
|
315
322
|
*/
|
|
316
323
|
export const orderListQuerySchema = z.object({
|
|
@@ -321,7 +328,7 @@ export const orderListQuerySchema = z.object({
|
|
|
321
328
|
orderedTo: z
|
|
322
329
|
.string()
|
|
323
330
|
.optional()
|
|
324
|
-
.describe("조회 끝 시각 (ISO 8601, 포함). 생략하면 orderedFrom부터 31일. 기간은 최대
|
|
331
|
+
.describe("조회 끝 시각 (ISO 8601, 포함). 생략하면 orderedFrom부터 31일. 기간은 최대 366일"),
|
|
325
332
|
status: orderItemStatusSchema
|
|
326
333
|
.optional()
|
|
327
334
|
.describe("주문상품 상태 필터 — 이 상태의 주문상품이 하나라도 있는 주문"),
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { MAX_PRODUCT_IMAGES, productImageUrlSchema } from "./product";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 상품 번역 (이슈 #134) — 언어 하나의 상품명·상세설명·이미지·옵션 이름. 상품 필드는 상점 기본 언어 값이고 번역 레코드가 언어별 값이다.
|
|
6
|
+
* 비운 칸(null)은 스토어프론트가 기본 언어 값으로 대체한다(칸 단위 대체). 이미지는 목록 통째로 대체한다.
|
|
7
|
+
* 옵션은 id가 원천이다 — 값 id·추가금·재고는 언어와 무관하고 이름만 언어별이다.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const translatedOptionValueSchema = z.object({
|
|
11
|
+
valueId: z.string(),
|
|
12
|
+
name: z.string().nullable().describe("값 이름. null이면 기본 언어 이름"),
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
const translatedOptionGroupSchema = z.object({
|
|
16
|
+
groupId: z.string(),
|
|
17
|
+
name: z.string().nullable().describe("옵션명. null이면 기본 언어 이름"),
|
|
18
|
+
values: z.array(translatedOptionValueSchema),
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
const translatedCustomInputSchema = z.object({
|
|
22
|
+
inputId: z.string(),
|
|
23
|
+
label: z.string().nullable().describe("항목명. null이면 기본 언어 항목명"),
|
|
24
|
+
placeholder: z.string().nullable().describe("입력 안내. null이면 기본 언어 안내"),
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* 조회 응답 — 지금 상품의 옵션명·값·직접 입력 항목을 모두 싣고 번역하지 않은 칸은 null이다.
|
|
29
|
+
* `optionGroups`는 조합 옵션, `addonGroups`는 추가 선택이다(상품 응답과 같은 구분)
|
|
30
|
+
*/
|
|
31
|
+
export const productLocalizationSchema = z.object({
|
|
32
|
+
locale: z.string().describe("언어(BCP 47)"),
|
|
33
|
+
name: z.string().nullable().describe("상품명. null이면 기본 언어 상품명"),
|
|
34
|
+
description: z.string().nullable().describe("상세설명(HTML). null이면 기본 언어 상세설명"),
|
|
35
|
+
descriptionJson: z.string().nullable().describe("상세설명 에디터 상태(재편집 복원용)"),
|
|
36
|
+
images: z.array(z.string()).nullable().describe("이미지 목록. null이면 기본 언어 목록"),
|
|
37
|
+
optionGroups: z.array(translatedOptionGroupSchema),
|
|
38
|
+
addonGroups: z.array(translatedOptionGroupSchema),
|
|
39
|
+
customInputs: z.array(translatedCustomInputSchema),
|
|
40
|
+
updatedAt: z.string(),
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
export type ProductLocalization = z.infer<typeof productLocalizationSchema>;
|
|
44
|
+
|
|
45
|
+
const translatedNameSchema = z.string().trim().min(1).max(50).nullable().optional();
|
|
46
|
+
|
|
47
|
+
const translatedOptionGroupRequestSchema = z.strictObject({
|
|
48
|
+
groupId: z.string(),
|
|
49
|
+
name: translatedNameSchema,
|
|
50
|
+
values: z.array(z.strictObject({ valueId: z.string(), name: translatedNameSchema })).optional(),
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* `PUT /v1/products/{productId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 빠진 칸은 null(기본 언어 값으로 대체)이다.
|
|
55
|
+
* 옵션은 번역할 id만 보낸다. 상품에 없는 id는 400 `PRODUCT_LOCALIZATION_TARGET_NOT_FOUND`다.
|
|
56
|
+
* 번역한 옵션명·값 이름도 기본 언어와 같은 규칙(대소문자·앞뒤 공백 무시 유일)이고 겹치면 400 `INVALID_OPTION_MODEL`이다
|
|
57
|
+
*/
|
|
58
|
+
export const productLocalizationRequestSchema = z.strictObject({
|
|
59
|
+
name: z.string().trim().min(1).max(100).nullable().optional(),
|
|
60
|
+
description: z.string().nullable().optional(),
|
|
61
|
+
descriptionJson: z.string().nullable().optional(),
|
|
62
|
+
images: z.array(productImageUrlSchema).min(1).max(MAX_PRODUCT_IMAGES).nullable().optional(),
|
|
63
|
+
optionGroups: z.array(translatedOptionGroupRequestSchema).optional(),
|
|
64
|
+
addonGroups: z.array(translatedOptionGroupRequestSchema).optional(),
|
|
65
|
+
customInputs: z
|
|
66
|
+
.array(
|
|
67
|
+
z.strictObject({
|
|
68
|
+
inputId: z.string(),
|
|
69
|
+
label: z.string().trim().min(1).max(30).nullable().optional(),
|
|
70
|
+
placeholder: z.string().trim().min(1).max(100).nullable().optional(),
|
|
71
|
+
}),
|
|
72
|
+
)
|
|
73
|
+
.optional(),
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
export type ProductLocalizationRequest = z.infer<typeof productLocalizationRequestSchema>;
|
package/src/schemas/store.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { storeRoleSchema } from "./auth";
|
|
3
|
+
import { localeCodeSchema } from "./locale";
|
|
3
4
|
import { refundPolicyPatchSchema, refundPolicySchema } from "./refund-policy";
|
|
4
5
|
import { shippingPolicyPatchSchema, shippingPolicySchema } from "./shipping-policy";
|
|
5
6
|
|
|
@@ -307,6 +308,11 @@ export const updateStoreRequestSchema = z
|
|
|
307
308
|
privacyUrl: policyDocumentUrlSchema
|
|
308
309
|
.optional()
|
|
309
310
|
.describe("개인정보 수집이용 동의 문서 주소(https). `null`을 주면 지운다"),
|
|
311
|
+
defaultLocale: localeCodeSchema
|
|
312
|
+
.optional()
|
|
313
|
+
.describe(
|
|
314
|
+
"상점 기본 언어(이슈 #134). 상품·카테고리 필드가 이 언어 값이고 번역이 없는 칸은 이 값으로 보인다. 바꿔도 저장된 값은 그대로다",
|
|
315
|
+
),
|
|
310
316
|
})
|
|
311
317
|
.refine((value) => Object.values(value).some((v) => v !== undefined), {
|
|
312
318
|
message: "최소 1개 필드가 필요합니다",
|
|
@@ -358,6 +364,11 @@ export const storeSchema = z.object({
|
|
|
358
364
|
.describe("이용약관 문서 주소. 정하지 않았으면 null이고 동의 이력에도 주소가 남지 않는다"),
|
|
359
365
|
privacyUrl: z.string().nullable().describe("개인정보 수집이용 동의 문서 주소"),
|
|
360
366
|
memberCount: z.number().int(),
|
|
367
|
+
defaultLocale: z
|
|
368
|
+
.string()
|
|
369
|
+
.optional()
|
|
370
|
+
.default("ko")
|
|
371
|
+
.describe("상점 기본 언어(이슈 #134, BCP 47). 서버는 항상 싣는다"),
|
|
361
372
|
createdAt: z.string(),
|
|
362
373
|
});
|
|
363
374
|
|