@sayren/store-sdk 0.35.0 → 0.36.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 +219 -23
- package/dist/index.mjs +129 -8
- package/package.json +1 -1
- package/src/client.ts +72 -0
- package/src/schemas/collection.ts +25 -0
- package/src/schemas/product-info.ts +26 -0
- package/src/schemas/product-localization.ts +46 -1
- package/src/schemas/product.ts +13 -1
- package/src/schemas/saved-option-set.ts +62 -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
|
-
ALLOW: "ALLOW";
|
|
170
169
|
APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
|
|
170
|
+
ALLOW: "ALLOW";
|
|
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
|
-
ALLOW: "ALLOW";
|
|
196
195
|
APPROVAL_REQUIRED: "APPROVAL_REQUIRED";
|
|
196
|
+
ALLOW: "ALLOW";
|
|
197
197
|
}>;
|
|
198
198
|
reason: z.ZodNullable<z.ZodString>;
|
|
199
199
|
preview: z.ZodObject<{
|
|
@@ -6449,6 +6449,27 @@ export declare const collectionPreviewSchema: z.ZodObject<{
|
|
|
6449
6449
|
salesComputedAt: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
6450
6450
|
}, z.core.$strip>;
|
|
6451
6451
|
export type CollectionPreview = z.infer<typeof collectionPreviewSchema>;
|
|
6452
|
+
/**
|
|
6453
|
+
* 컬렉션 번역 (이슈 #134) — 언어 하나의 제목·설명·SEO. 컬렉션 필드는 상점 기본 언어 값이고 번역 레코드가 언어별 값이다.
|
|
6454
|
+
* 비운 칸(null)은 스토어프론트가 기본 언어 값으로 대체한다(칸 단위 대체).
|
|
6455
|
+
*/
|
|
6456
|
+
export declare const collectionLocalizationSchema: z.ZodObject<{
|
|
6457
|
+
locale: z.ZodString;
|
|
6458
|
+
title: z.ZodNullable<z.ZodString>;
|
|
6459
|
+
description: z.ZodNullable<z.ZodString>;
|
|
6460
|
+
metaTitle: z.ZodNullable<z.ZodString>;
|
|
6461
|
+
metaDescription: z.ZodNullable<z.ZodString>;
|
|
6462
|
+
updatedAt: z.ZodString;
|
|
6463
|
+
}, z.core.$strip>;
|
|
6464
|
+
export type CollectionLocalization = z.infer<typeof collectionLocalizationSchema>;
|
|
6465
|
+
/** `PUT /v1/collections/{collectionId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 빠진 칸은 null(기본 언어 값으로 대체)이다 */
|
|
6466
|
+
export declare const collectionLocalizationRequestSchema: z.ZodObject<{
|
|
6467
|
+
title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
6468
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
6469
|
+
metaTitle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
6470
|
+
metaDescription: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
6471
|
+
}, z.core.$strict>;
|
|
6472
|
+
export type CollectionLocalizationRequest = z.infer<typeof collectionLocalizationRequestSchema>;
|
|
6452
6473
|
//#endregion
|
|
6453
6474
|
//#region src/schemas/commerce-flow.d.ts
|
|
6454
6475
|
/**
|
|
@@ -11392,6 +11413,10 @@ export declare const productSummarySchema: z.ZodObject<{
|
|
|
11392
11413
|
}, z.core.$strip>;
|
|
11393
11414
|
updatedAt: z.ZodString;
|
|
11394
11415
|
sample: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
11416
|
+
localizations: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
11417
|
+
locale: z.ZodString;
|
|
11418
|
+
needsTranslation: z.ZodBoolean;
|
|
11419
|
+
}, z.core.$strip>>>>;
|
|
11395
11420
|
}, z.core.$strip>;
|
|
11396
11421
|
export type ProductSummary = z.infer<typeof productSummarySchema>;
|
|
11397
11422
|
/** 옵션 축(그룹)이 가지는 값 하나 — 예: 축 "색상"의 값 "블랙" */
|
|
@@ -11637,20 +11662,20 @@ export declare const discountSchema: z.ZodObject<{
|
|
|
11637
11662
|
}, z.core.$strip>;
|
|
11638
11663
|
export type Discount = z.infer<typeof discountSchema>;
|
|
11639
11664
|
export declare const productSchema: z.ZodObject<{
|
|
11640
|
-
|
|
11641
|
-
productNo: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
|
|
11642
|
-
name: z.ZodString;
|
|
11665
|
+
salePrice: z.ZodNumber;
|
|
11643
11666
|
status: z.ZodEnum<{
|
|
11644
11667
|
SALE: "SALE";
|
|
11645
11668
|
SUSPENDED: "SUSPENDED";
|
|
11646
11669
|
OUT_OF_STOCK: "OUT_OF_STOCK";
|
|
11647
11670
|
CLOSED: "CLOSED";
|
|
11648
11671
|
}>;
|
|
11649
|
-
|
|
11650
|
-
discountedPrice: z.ZodNullable<z.ZodNumber>;
|
|
11672
|
+
name: z.ZodString;
|
|
11651
11673
|
stockQuantity: z.ZodNumber;
|
|
11652
11674
|
categoryId: z.ZodNullable<z.ZodString>;
|
|
11675
|
+
productId: z.ZodString;
|
|
11653
11676
|
thumbnailUrl: z.ZodOptional<z.ZodURL>;
|
|
11677
|
+
productNo: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
|
|
11678
|
+
discountedPrice: z.ZodNullable<z.ZodNumber>;
|
|
11654
11679
|
hasOptions: z.ZodBoolean;
|
|
11655
11680
|
updatedAt: z.ZodString;
|
|
11656
11681
|
sample: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
@@ -12884,10 +12909,29 @@ export declare const infoSectionRequestSchema: z.ZodObject<{
|
|
|
12884
12909
|
}, z.core.$strip>;
|
|
12885
12910
|
export type InfoSectionRequest = z.infer<typeof infoSectionRequestSchema>;
|
|
12886
12911
|
export type InfoSectionRequestInput = z.input<typeof infoSectionRequestSchema>;
|
|
12912
|
+
/**
|
|
12913
|
+
* 안내 섹션 번역 (이슈 #134) — 언어 하나의 제목·본문. 섹션 필드는 상점 기본 언어 값이다. 비운 칸(null)은 스토어프론트가 기본 언어 값으로 대체한다.
|
|
12914
|
+
* 섹션을 연결한 모든 상품이 같은 번역을 보인다.
|
|
12915
|
+
*/
|
|
12916
|
+
export declare const infoSectionLocalizationSchema: z.ZodObject<{
|
|
12917
|
+
locale: z.ZodString;
|
|
12918
|
+
title: z.ZodNullable<z.ZodString>;
|
|
12919
|
+
body: z.ZodNullable<z.ZodString>;
|
|
12920
|
+
bodyJson: z.ZodNullable<z.ZodString>;
|
|
12921
|
+
updatedAt: z.ZodString;
|
|
12922
|
+
}, z.core.$strip>;
|
|
12923
|
+
export type InfoSectionLocalization = z.infer<typeof infoSectionLocalizationSchema>;
|
|
12924
|
+
/** `PUT /v1/info-sections/{infoSectionId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 빠진 칸은 null이다 */
|
|
12925
|
+
export declare const infoSectionLocalizationRequestSchema: z.ZodObject<{
|
|
12926
|
+
title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12927
|
+
body: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12928
|
+
bodyJson: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12929
|
+
}, z.core.$strict>;
|
|
12930
|
+
export type InfoSectionLocalizationRequest = z.infer<typeof infoSectionLocalizationRequestSchema>;
|
|
12887
12931
|
//#endregion
|
|
12888
12932
|
//#region src/schemas/product-localization.d.ts
|
|
12889
12933
|
/**
|
|
12890
|
-
* 조회 응답 — 지금 상품의 옵션명·값·직접 입력
|
|
12934
|
+
* 조회 응답 — 지금 상품의 옵션명·값·직접 입력 항목, 셀러가 적은 고시 칸을 모두 싣고 번역하지 않은 칸은 null이다.
|
|
12891
12935
|
* `optionGroups`는 조합 옵션, `addonGroups`는 추가 선택이다(상품 응답과 같은 구분)
|
|
12892
12936
|
*/
|
|
12893
12937
|
export declare const productLocalizationSchema: z.ZodObject<{
|
|
@@ -12917,6 +12961,11 @@ export declare const productLocalizationSchema: z.ZodObject<{
|
|
|
12917
12961
|
label: z.ZodNullable<z.ZodString>;
|
|
12918
12962
|
placeholder: z.ZodNullable<z.ZodString>;
|
|
12919
12963
|
}, z.core.$strip>>;
|
|
12964
|
+
notice: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
12965
|
+
key: z.ZodString;
|
|
12966
|
+
label: z.ZodString;
|
|
12967
|
+
value: z.ZodNullable<z.ZodString>;
|
|
12968
|
+
}, z.core.$strip>>>>;
|
|
12920
12969
|
updatedAt: z.ZodString;
|
|
12921
12970
|
}, z.core.$strip>;
|
|
12922
12971
|
export type ProductLocalization = z.infer<typeof productLocalizationSchema>;
|
|
@@ -12951,8 +13000,22 @@ export declare const productLocalizationRequestSchema: z.ZodObject<{
|
|
|
12951
13000
|
label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12952
13001
|
placeholder: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12953
13002
|
}, z.core.$strict>>>;
|
|
13003
|
+
notice: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13004
|
+
key: z.ZodString;
|
|
13005
|
+
value: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
13006
|
+
}, z.core.$strict>>>;
|
|
12954
13007
|
}, z.core.$strict>;
|
|
12955
13008
|
export type ProductLocalizationRequest = z.infer<typeof productLocalizationRequestSchema>;
|
|
13009
|
+
/**
|
|
13010
|
+
* 번역할 칸이 비었는가(이슈 #134, 2026-10-18 결정: 완성도 대신 「번역 필요」 표시만) — 상품명, 기본 언어에 본문이 있는 상세설명,
|
|
13011
|
+
* 옵션명·값·직접 입력 항목명, 셀러가 적은 고시 칸. 이미지·입력 안내는 기본 언어 값을 그대로 써도 되는 칸이라 세지 않는다.
|
|
13012
|
+
* 상점 플랫폼(상품 수정·목록)과 관리 목록 응답이 같은 함수다
|
|
13013
|
+
*/
|
|
13014
|
+
export declare function productLocalizationNeedsTranslation(localization: Pick<ProductLocalization, "name" | "description" | "optionGroups" | "addonGroups" | "customInputs"> & {
|
|
13015
|
+
notice?: ProductLocalization["notice"];
|
|
13016
|
+
}, base: {
|
|
13017
|
+
description?: string | null;
|
|
13018
|
+
}): boolean;
|
|
12956
13019
|
//#endregion
|
|
12957
13020
|
//#region src/schemas/saved-option-set.d.ts
|
|
12958
13021
|
/**
|
|
@@ -13186,6 +13249,49 @@ export declare const savedOptionSetListQuerySchema: z.ZodObject<{
|
|
|
13186
13249
|
"importedProductCount.desc": "importedProductCount.desc";
|
|
13187
13250
|
}>>;
|
|
13188
13251
|
}, z.core.$strip>;
|
|
13252
|
+
/**
|
|
13253
|
+
* 저장 옵션 번역 (이슈 #134) — 저장 옵션에는 id가 없어 **기본 언어 이름이 키**다(`baseName`·`baseLabel`).
|
|
13254
|
+
* 상품이 불러올 때 상품 번역으로 함께 복사하고(상품 저장 트랜잭션), 그 뒤로는 상품 번역이 원천이다 — 저장 옵션 번역을 고쳐도
|
|
13255
|
+
* 이미 불러온 상품은 그대로다. 기본 언어 이름을 바꾸면 그 이름의 번역은 읽지 않는다.
|
|
13256
|
+
*/
|
|
13257
|
+
export declare const savedOptionSetLocalizationSchema: z.ZodObject<{
|
|
13258
|
+
locale: z.ZodString;
|
|
13259
|
+
groups: z.ZodArray<z.ZodObject<{
|
|
13260
|
+
baseName: z.ZodString;
|
|
13261
|
+
name: z.ZodNullable<z.ZodString>;
|
|
13262
|
+
values: z.ZodArray<z.ZodObject<{
|
|
13263
|
+
baseName: z.ZodString;
|
|
13264
|
+
name: z.ZodNullable<z.ZodString>;
|
|
13265
|
+
}, z.core.$strip>>;
|
|
13266
|
+
}, z.core.$strip>>;
|
|
13267
|
+
customInputs: z.ZodArray<z.ZodObject<{
|
|
13268
|
+
baseLabel: z.ZodString;
|
|
13269
|
+
label: z.ZodNullable<z.ZodString>;
|
|
13270
|
+
placeholder: z.ZodNullable<z.ZodString>;
|
|
13271
|
+
}, z.core.$strip>>;
|
|
13272
|
+
updatedAt: z.ZodString;
|
|
13273
|
+
}, z.core.$strip>;
|
|
13274
|
+
export type SavedOptionSetLocalization = z.infer<typeof savedOptionSetLocalizationSchema>;
|
|
13275
|
+
/**
|
|
13276
|
+
* `PUT /v1/saved-option-sets/{optionSetId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 번역할 이름만 보낸다.
|
|
13277
|
+
* 저장 옵션에 없는 기본 언어 이름은 400 `OPTION_SET_LOCALIZATION_TARGET_NOT_FOUND`, 번역 이름 중복은 상품과 같은 규칙으로 400 `INVALID_OPTION_MODEL`이다
|
|
13278
|
+
*/
|
|
13279
|
+
export declare const savedOptionSetLocalizationRequestSchema: z.ZodObject<{
|
|
13280
|
+
groups: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13281
|
+
baseName: z.ZodString;
|
|
13282
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
13283
|
+
values: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13284
|
+
baseName: z.ZodString;
|
|
13285
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
13286
|
+
}, z.core.$strict>>>;
|
|
13287
|
+
}, z.core.$strict>>>;
|
|
13288
|
+
customInputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
13289
|
+
baseLabel: z.ZodString;
|
|
13290
|
+
label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
13291
|
+
placeholder: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
13292
|
+
}, z.core.$strict>>>;
|
|
13293
|
+
}, z.core.$strict>;
|
|
13294
|
+
export type SavedOptionSetLocalizationRequest = z.infer<typeof savedOptionSetLocalizationRequestSchema>;
|
|
13189
13295
|
//#endregion
|
|
13190
13296
|
//#region src/schemas/stay.d.ts
|
|
13191
13297
|
/**
|
|
@@ -15347,18 +15453,22 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
15347
15453
|
};
|
|
15348
15454
|
updatedAt: string;
|
|
15349
15455
|
sample: boolean;
|
|
15456
|
+
localizations: {
|
|
15457
|
+
locale: string;
|
|
15458
|
+
needsTranslation: boolean;
|
|
15459
|
+
}[];
|
|
15350
15460
|
thumbnailUrl?: string | undefined;
|
|
15351
15461
|
}[];
|
|
15352
15462
|
}>;
|
|
15353
15463
|
get: (productId: string) => Promise<{
|
|
15354
|
-
productId: string;
|
|
15355
|
-
productNo: number | null;
|
|
15356
|
-
name: string;
|
|
15357
|
-
status: "SALE" | "SUSPENDED" | "OUT_OF_STOCK" | "CLOSED";
|
|
15358
15464
|
salePrice: number;
|
|
15359
|
-
|
|
15465
|
+
status: "SALE" | "SUSPENDED" | "OUT_OF_STOCK" | "CLOSED";
|
|
15466
|
+
name: string;
|
|
15360
15467
|
stockQuantity: number;
|
|
15361
15468
|
categoryId: string | null;
|
|
15469
|
+
productId: string;
|
|
15470
|
+
productNo: number | null;
|
|
15471
|
+
discountedPrice: number | null;
|
|
15362
15472
|
hasOptions: boolean;
|
|
15363
15473
|
updatedAt: string;
|
|
15364
15474
|
sample: boolean;
|
|
@@ -15500,14 +15610,14 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
15500
15610
|
createdAt?: string | undefined;
|
|
15501
15611
|
}>;
|
|
15502
15612
|
create: (body: ProductCreateRequestInput, idempotencyKey?: string) => Promise<{
|
|
15503
|
-
productId: string;
|
|
15504
|
-
productNo: number | null;
|
|
15505
|
-
name: string;
|
|
15506
|
-
status: "SALE" | "SUSPENDED" | "OUT_OF_STOCK" | "CLOSED";
|
|
15507
15613
|
salePrice: number;
|
|
15508
|
-
|
|
15614
|
+
status: "SALE" | "SUSPENDED" | "OUT_OF_STOCK" | "CLOSED";
|
|
15615
|
+
name: string;
|
|
15509
15616
|
stockQuantity: number;
|
|
15510
15617
|
categoryId: string | null;
|
|
15618
|
+
productId: string;
|
|
15619
|
+
productNo: number | null;
|
|
15620
|
+
discountedPrice: number | null;
|
|
15511
15621
|
hasOptions: boolean;
|
|
15512
15622
|
updatedAt: string;
|
|
15513
15623
|
sample: boolean;
|
|
@@ -15649,14 +15759,14 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
15649
15759
|
createdAt?: string | undefined;
|
|
15650
15760
|
}>;
|
|
15651
15761
|
update: (productId: string, body: ProductReplaceRequestInput) => Promise<{
|
|
15652
|
-
productId: string;
|
|
15653
|
-
productNo: number | null;
|
|
15654
|
-
name: string;
|
|
15655
|
-
status: "SALE" | "SUSPENDED" | "OUT_OF_STOCK" | "CLOSED";
|
|
15656
15762
|
salePrice: number;
|
|
15657
|
-
|
|
15763
|
+
status: "SALE" | "SUSPENDED" | "OUT_OF_STOCK" | "CLOSED";
|
|
15764
|
+
name: string;
|
|
15658
15765
|
stockQuantity: number;
|
|
15659
15766
|
categoryId: string | null;
|
|
15767
|
+
productId: string;
|
|
15768
|
+
productNo: number | null;
|
|
15769
|
+
discountedPrice: number | null;
|
|
15660
15770
|
hasOptions: boolean;
|
|
15661
15771
|
updatedAt: string;
|
|
15662
15772
|
sample: boolean;
|
|
@@ -15828,6 +15938,11 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
15828
15938
|
label: string | null;
|
|
15829
15939
|
placeholder: string | null;
|
|
15830
15940
|
}[];
|
|
15941
|
+
notice: {
|
|
15942
|
+
key: string;
|
|
15943
|
+
label: string;
|
|
15944
|
+
value: string | null;
|
|
15945
|
+
}[];
|
|
15831
15946
|
updatedAt: string;
|
|
15832
15947
|
}[]>;
|
|
15833
15948
|
put: (productId: string, locale: string, body: ProductLocalizationRequest) => Promise<{
|
|
@@ -15857,6 +15972,11 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
15857
15972
|
label: string | null;
|
|
15858
15973
|
placeholder: string | null;
|
|
15859
15974
|
}[];
|
|
15975
|
+
notice: {
|
|
15976
|
+
key: string;
|
|
15977
|
+
label: string;
|
|
15978
|
+
value: string | null;
|
|
15979
|
+
}[];
|
|
15860
15980
|
updatedAt: string;
|
|
15861
15981
|
}>;
|
|
15862
15982
|
remove: (productId: string, locale: string) => Promise<void>;
|
|
@@ -16182,6 +16302,44 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
16182
16302
|
};
|
|
16183
16303
|
additionalPriceDropped: boolean;
|
|
16184
16304
|
}>;
|
|
16305
|
+
/** 번역(이슈 #134) — 기본 언어 이름이 키다. 불러올 때 상품 번역으로 복사한다 */
|
|
16306
|
+
localizations: {
|
|
16307
|
+
list: (optionSetId: string) => Promise<{
|
|
16308
|
+
locale: string;
|
|
16309
|
+
groups: {
|
|
16310
|
+
baseName: string;
|
|
16311
|
+
name: string | null;
|
|
16312
|
+
values: {
|
|
16313
|
+
baseName: string;
|
|
16314
|
+
name: string | null;
|
|
16315
|
+
}[];
|
|
16316
|
+
}[];
|
|
16317
|
+
customInputs: {
|
|
16318
|
+
baseLabel: string;
|
|
16319
|
+
label: string | null;
|
|
16320
|
+
placeholder: string | null;
|
|
16321
|
+
}[];
|
|
16322
|
+
updatedAt: string;
|
|
16323
|
+
}[]>;
|
|
16324
|
+
put: (optionSetId: string, locale: string, body: SavedOptionSetLocalizationRequest) => Promise<{
|
|
16325
|
+
locale: string;
|
|
16326
|
+
groups: {
|
|
16327
|
+
baseName: string;
|
|
16328
|
+
name: string | null;
|
|
16329
|
+
values: {
|
|
16330
|
+
baseName: string;
|
|
16331
|
+
name: string | null;
|
|
16332
|
+
}[];
|
|
16333
|
+
}[];
|
|
16334
|
+
customInputs: {
|
|
16335
|
+
baseLabel: string;
|
|
16336
|
+
label: string | null;
|
|
16337
|
+
placeholder: string | null;
|
|
16338
|
+
}[];
|
|
16339
|
+
updatedAt: string;
|
|
16340
|
+
}>;
|
|
16341
|
+
remove: (optionSetId: string, locale: string) => Promise<void>;
|
|
16342
|
+
};
|
|
16185
16343
|
};
|
|
16186
16344
|
/**
|
|
16187
16345
|
* 상품정보제공 고시 품목군(이슈 #135) — 플랫폼 코드 표. 현재 버전만 싣는다. 권한은 상품 조회(`product:r`)다
|
|
@@ -16260,6 +16418,24 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
16260
16418
|
updatedAt: string;
|
|
16261
16419
|
}>;
|
|
16262
16420
|
remove: (infoSectionId: string) => Promise<void>;
|
|
16421
|
+
/** 번역(이슈 #134) — 언어별 제목·본문 */
|
|
16422
|
+
localizations: {
|
|
16423
|
+
list: (infoSectionId: string) => Promise<{
|
|
16424
|
+
locale: string;
|
|
16425
|
+
title: string | null;
|
|
16426
|
+
body: string | null;
|
|
16427
|
+
bodyJson: string | null;
|
|
16428
|
+
updatedAt: string;
|
|
16429
|
+
}[]>;
|
|
16430
|
+
put: (infoSectionId: string, locale: string, body: InfoSectionLocalizationRequest) => Promise<{
|
|
16431
|
+
locale: string;
|
|
16432
|
+
title: string | null;
|
|
16433
|
+
body: string | null;
|
|
16434
|
+
bodyJson: string | null;
|
|
16435
|
+
updatedAt: string;
|
|
16436
|
+
}>;
|
|
16437
|
+
remove: (infoSectionId: string, locale: string) => Promise<void>;
|
|
16438
|
+
};
|
|
16263
16439
|
};
|
|
16264
16440
|
/**
|
|
16265
16441
|
* 컬렉션 (이슈 #83) — 상품을 어디에 보여 줄지 정하는 묶음(다대다). 권한은 카테고리와 같다(`category:r`·`category:rw`).
|
|
@@ -16569,6 +16745,26 @@ export declare function createStoreClient(options: StoreClientOptions): {
|
|
|
16569
16745
|
}[];
|
|
16570
16746
|
salesComputedAt: string | null;
|
|
16571
16747
|
}>;
|
|
16748
|
+
/** 번역(이슈 #134) — 언어별 제목·설명·SEO */
|
|
16749
|
+
localizations: {
|
|
16750
|
+
list: (collectionId: string) => Promise<{
|
|
16751
|
+
locale: string;
|
|
16752
|
+
title: string | null;
|
|
16753
|
+
description: string | null;
|
|
16754
|
+
metaTitle: string | null;
|
|
16755
|
+
metaDescription: string | null;
|
|
16756
|
+
updatedAt: string;
|
|
16757
|
+
}[]>;
|
|
16758
|
+
put: (collectionId: string, locale: string, body: CollectionLocalizationRequest) => Promise<{
|
|
16759
|
+
locale: string;
|
|
16760
|
+
title: string | null;
|
|
16761
|
+
description: string | null;
|
|
16762
|
+
metaTitle: string | null;
|
|
16763
|
+
metaDescription: string | null;
|
|
16764
|
+
updatedAt: string;
|
|
16765
|
+
}>;
|
|
16766
|
+
remove: (collectionId: string, locale: string) => Promise<void>;
|
|
16767
|
+
};
|
|
16572
16768
|
};
|
|
16573
16769
|
categories: {
|
|
16574
16770
|
list: (params?: {
|
package/dist/index.mjs
CHANGED
|
@@ -4449,6 +4449,23 @@ const infoSectionRequestSchema = z.object({
|
|
|
4449
4449
|
body: z.string().default(""),
|
|
4450
4450
|
bodyJson: z.string().nullable().optional()
|
|
4451
4451
|
});
|
|
4452
|
+
/**
|
|
4453
|
+
* 안내 섹션 번역 (이슈 #134) — 언어 하나의 제목·본문. 섹션 필드는 상점 기본 언어 값이다. 비운 칸(null)은 스토어프론트가 기본 언어 값으로 대체한다.
|
|
4454
|
+
* 섹션을 연결한 모든 상품이 같은 번역을 보인다.
|
|
4455
|
+
*/
|
|
4456
|
+
const infoSectionLocalizationSchema = z.object({
|
|
4457
|
+
locale: z.string().describe("언어(BCP 47)"),
|
|
4458
|
+
title: z.string().nullable(),
|
|
4459
|
+
body: z.string().nullable().describe("본문 HTML(상세설명과 같은 정화 규칙). null이면 기본 언어 본문"),
|
|
4460
|
+
bodyJson: z.string().nullable(),
|
|
4461
|
+
updatedAt: z.string()
|
|
4462
|
+
});
|
|
4463
|
+
/** `PUT /v1/info-sections/{infoSectionId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 빠진 칸은 null이다 */
|
|
4464
|
+
const infoSectionLocalizationRequestSchema = z.strictObject({
|
|
4465
|
+
title: z.string().trim().min(1).max(100).nullable().optional(),
|
|
4466
|
+
body: z.string().nullable().optional(),
|
|
4467
|
+
bodyJson: z.string().nullable().optional()
|
|
4468
|
+
});
|
|
4452
4469
|
//#endregion
|
|
4453
4470
|
//#region src/schemas/stay.ts
|
|
4454
4471
|
/**
|
|
@@ -4651,7 +4668,11 @@ const productSummarySchema = z.object({
|
|
|
4651
4668
|
hasOptions: z.boolean(),
|
|
4652
4669
|
fulfillment: z.object({ type: fulfillmentTypeResponseSchema }).describe("상품 이행의 유형. 유형별 속성은 단건 조회(`GET /v1/products/{productId}`)의 `fulfillment`에 있다"),
|
|
4653
4670
|
updatedAt: z.string(),
|
|
4654
|
-
sample: z.boolean().optional().default(false).describe("상점을 만들 때 넣은 샘플 상품인가(이슈 #70). 상점 플랫폼이 「샘플」 배지를 단다. 스토어프론트에는 싣지 않는다. 서버는 항상 싣는다")
|
|
4671
|
+
sample: z.boolean().optional().default(false).describe("상점을 만들 때 넣은 샘플 상품인가(이슈 #70). 상점 플랫폼이 「샘플」 배지를 단다. 스토어프론트에는 싣지 않는다. 서버는 항상 싣는다"),
|
|
4672
|
+
localizations: z.array(z.object({
|
|
4673
|
+
locale: z.string().describe("언어(BCP 47)"),
|
|
4674
|
+
needsTranslation: z.boolean().describe("번역할 칸이 비었는가(`productLocalizationNeedsTranslation`과 같은 규칙)")
|
|
4675
|
+
})).optional().default([]).describe("번역 레코드가 있는 언어(이슈 #134). 상점 기본 언어는 싣지 않는다")
|
|
4655
4676
|
});
|
|
4656
4677
|
/** 옵션 축(그룹)이 가지는 값 하나 — 예: 축 "색상"의 값 "블랙" */
|
|
4657
4678
|
const optionValueSchema = z.object({
|
|
@@ -4851,7 +4872,7 @@ const discountSchema = z.object({
|
|
|
4851
4872
|
startAt: z.string().nullable(),
|
|
4852
4873
|
endAt: z.string().nullable()
|
|
4853
4874
|
});
|
|
4854
|
-
const productSchema = productSummarySchema.extend({
|
|
4875
|
+
const productSchema = productSummarySchema.omit({ localizations: true }).extend({
|
|
4855
4876
|
prices: z.array(storedProductCurrencyPriceSchema).optional().describe("외화 판매가(이슈 #130). 기본 통화 값은 `salePrice`·`originalPrice`다"),
|
|
4856
4877
|
description: z.string().optional(),
|
|
4857
4878
|
/**
|
|
@@ -7103,6 +7124,25 @@ const collectionPreviewSchema = z.object({
|
|
|
7103
7124
|
products: z.array(collectionProductSchema).describe("앞 20개(정렬 순)"),
|
|
7104
7125
|
salesComputedAt: z.string().nullable().default(null).describe("판매량 기준 시각. 판매량 상위 조건이나 판매량순 정렬을 쓰면 이 시각까지의 주문을 센다. 판매량을 쓰지 않거나 집계 전이면 null")
|
|
7105
7126
|
});
|
|
7127
|
+
/**
|
|
7128
|
+
* 컬렉션 번역 (이슈 #134) — 언어 하나의 제목·설명·SEO. 컬렉션 필드는 상점 기본 언어 값이고 번역 레코드가 언어별 값이다.
|
|
7129
|
+
* 비운 칸(null)은 스토어프론트가 기본 언어 값으로 대체한다(칸 단위 대체).
|
|
7130
|
+
*/
|
|
7131
|
+
const collectionLocalizationSchema = z.object({
|
|
7132
|
+
locale: z.string().describe("언어(BCP 47)"),
|
|
7133
|
+
title: z.string().nullable().describe("제목. null이면 기본 언어 제목"),
|
|
7134
|
+
description: z.string().nullable(),
|
|
7135
|
+
metaTitle: z.string().nullable(),
|
|
7136
|
+
metaDescription: z.string().nullable(),
|
|
7137
|
+
updatedAt: z.string()
|
|
7138
|
+
});
|
|
7139
|
+
/** `PUT /v1/collections/{collectionId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 빠진 칸은 null(기본 언어 값으로 대체)이다 */
|
|
7140
|
+
const collectionLocalizationRequestSchema = z.strictObject({
|
|
7141
|
+
title: z.string().trim().min(1).max(60).nullable().optional(),
|
|
7142
|
+
description: z.string().trim().max(500).nullable().optional(),
|
|
7143
|
+
metaTitle: z.string().trim().max(60).nullable().optional(),
|
|
7144
|
+
metaDescription: z.string().trim().max(160).nullable().optional()
|
|
7145
|
+
});
|
|
7106
7146
|
//#endregion
|
|
7107
7147
|
//#region src/schemas/commerce-flow.ts
|
|
7108
7148
|
/**
|
|
@@ -9510,8 +9550,13 @@ const translatedCustomInputSchema = z.object({
|
|
|
9510
9550
|
label: z.string().nullable().describe("항목명. null이면 기본 언어 항목명"),
|
|
9511
9551
|
placeholder: z.string().nullable().describe("입력 안내. null이면 기본 언어 안내")
|
|
9512
9552
|
});
|
|
9553
|
+
const translatedNoticeValueSchema = z.object({
|
|
9554
|
+
key: z.string().describe("고시 칸 키"),
|
|
9555
|
+
label: z.string().describe("칸 이름(원문)"),
|
|
9556
|
+
value: z.string().nullable().describe("셀러 값 번역. null이면 기본 언어 값")
|
|
9557
|
+
});
|
|
9513
9558
|
/**
|
|
9514
|
-
* 조회 응답 — 지금 상품의 옵션명·값·직접 입력
|
|
9559
|
+
* 조회 응답 — 지금 상품의 옵션명·값·직접 입력 항목, 셀러가 적은 고시 칸을 모두 싣고 번역하지 않은 칸은 null이다.
|
|
9515
9560
|
* `optionGroups`는 조합 옵션, `addonGroups`는 추가 선택이다(상품 응답과 같은 구분)
|
|
9516
9561
|
*/
|
|
9517
9562
|
const productLocalizationSchema = z.object({
|
|
@@ -9523,6 +9568,7 @@ const productLocalizationSchema = z.object({
|
|
|
9523
9568
|
optionGroups: z.array(translatedOptionGroupSchema),
|
|
9524
9569
|
addonGroups: z.array(translatedOptionGroupSchema),
|
|
9525
9570
|
customInputs: z.array(translatedCustomInputSchema),
|
|
9571
|
+
notice: z.array(translatedNoticeValueSchema).optional().default([]).describe("셀러가 적은 상품정보제공 고시 칸의 값 번역(이슈 #134). 출처·법정 문구 칸은 싣지 않는다"),
|
|
9526
9572
|
updatedAt: z.string()
|
|
9527
9573
|
});
|
|
9528
9574
|
const translatedNameSchema = z.string().trim().min(1).max(50).nullable().optional();
|
|
@@ -9550,8 +9596,24 @@ const productLocalizationRequestSchema = z.strictObject({
|
|
|
9550
9596
|
inputId: z.string(),
|
|
9551
9597
|
label: z.string().trim().min(1).max(30).nullable().optional(),
|
|
9552
9598
|
placeholder: z.string().trim().min(1).max(100).nullable().optional()
|
|
9553
|
-
})).optional()
|
|
9599
|
+
})).optional(),
|
|
9600
|
+
notice: z.array(z.strictObject({
|
|
9601
|
+
key: z.string(),
|
|
9602
|
+
value: z.string().trim().min(1).max(MAX_NOTICE_VALUE_LENGTH).nullable().optional()
|
|
9603
|
+
})).optional().describe("고시 칸 값 번역. 상품에 셀러 값이 없는 칸 키는 400 `PRODUCT_LOCALIZATION_TARGET_NOT_FOUND`")
|
|
9554
9604
|
});
|
|
9605
|
+
/**
|
|
9606
|
+
* 번역할 칸이 비었는가(이슈 #134, 2026-10-18 결정: 완성도 대신 「번역 필요」 표시만) — 상품명, 기본 언어에 본문이 있는 상세설명,
|
|
9607
|
+
* 옵션명·값·직접 입력 항목명, 셀러가 적은 고시 칸. 이미지·입력 안내는 기본 언어 값을 그대로 써도 되는 칸이라 세지 않는다.
|
|
9608
|
+
* 상점 플랫폼(상품 수정·목록)과 관리 목록 응답이 같은 함수다
|
|
9609
|
+
*/
|
|
9610
|
+
function productLocalizationNeedsTranslation(localization, base) {
|
|
9611
|
+
if (!localization.name) return true;
|
|
9612
|
+
if ((base.description ?? "").trim() && !localization.description) return true;
|
|
9613
|
+
if ([...localization.optionGroups, ...localization.addonGroups].some((group) => !group.name || group.values.some((value) => !value.name))) return true;
|
|
9614
|
+
if (localization.customInputs.some((item) => !item.label)) return true;
|
|
9615
|
+
return (localization.notice ?? []).some((entry) => !entry.value);
|
|
9616
|
+
}
|
|
9555
9617
|
//#endregion
|
|
9556
9618
|
//#region src/schemas/saved-option-set.ts
|
|
9557
9619
|
/**
|
|
@@ -9664,6 +9726,47 @@ const savedOptionSetListQuerySchema = z.object({
|
|
|
9664
9726
|
maxSize: 200
|
|
9665
9727
|
})
|
|
9666
9728
|
});
|
|
9729
|
+
/**
|
|
9730
|
+
* 저장 옵션 번역 (이슈 #134) — 저장 옵션에는 id가 없어 **기본 언어 이름이 키**다(`baseName`·`baseLabel`).
|
|
9731
|
+
* 상품이 불러올 때 상품 번역으로 함께 복사하고(상품 저장 트랜잭션), 그 뒤로는 상품 번역이 원천이다 — 저장 옵션 번역을 고쳐도
|
|
9732
|
+
* 이미 불러온 상품은 그대로다. 기본 언어 이름을 바꾸면 그 이름의 번역은 읽지 않는다.
|
|
9733
|
+
*/
|
|
9734
|
+
const savedOptionSetLocalizationSchema = z.object({
|
|
9735
|
+
locale: z.string().describe("언어(BCP 47)"),
|
|
9736
|
+
groups: z.array(z.object({
|
|
9737
|
+
baseName: z.string().describe("기본 언어 옵션명"),
|
|
9738
|
+
name: z.string().nullable().describe("번역 옵션명. null이면 기본 언어 이름"),
|
|
9739
|
+
values: z.array(z.object({
|
|
9740
|
+
baseName: z.string(),
|
|
9741
|
+
name: z.string().nullable()
|
|
9742
|
+
}))
|
|
9743
|
+
})),
|
|
9744
|
+
customInputs: z.array(z.object({
|
|
9745
|
+
baseLabel: z.string().describe("기본 언어 항목명"),
|
|
9746
|
+
label: z.string().nullable(),
|
|
9747
|
+
placeholder: z.string().nullable()
|
|
9748
|
+
})),
|
|
9749
|
+
updatedAt: z.string()
|
|
9750
|
+
});
|
|
9751
|
+
/**
|
|
9752
|
+
* `PUT /v1/saved-option-sets/{optionSetId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 번역할 이름만 보낸다.
|
|
9753
|
+
* 저장 옵션에 없는 기본 언어 이름은 400 `OPTION_SET_LOCALIZATION_TARGET_NOT_FOUND`, 번역 이름 중복은 상품과 같은 규칙으로 400 `INVALID_OPTION_MODEL`이다
|
|
9754
|
+
*/
|
|
9755
|
+
const savedOptionSetLocalizationRequestSchema = z.strictObject({
|
|
9756
|
+
groups: z.array(z.strictObject({
|
|
9757
|
+
baseName: z.string(),
|
|
9758
|
+
name: nameSchema.nullable().optional(),
|
|
9759
|
+
values: z.array(z.strictObject({
|
|
9760
|
+
baseName: z.string(),
|
|
9761
|
+
name: nameSchema.nullable().optional()
|
|
9762
|
+
})).optional()
|
|
9763
|
+
})).optional(),
|
|
9764
|
+
customInputs: z.array(z.strictObject({
|
|
9765
|
+
baseLabel: z.string(),
|
|
9766
|
+
label: z.string().trim().min(1).max(30).nullable().optional(),
|
|
9767
|
+
placeholder: z.string().trim().min(1).max(100).nullable().optional()
|
|
9768
|
+
})).optional()
|
|
9769
|
+
});
|
|
9667
9770
|
//#endregion
|
|
9668
9771
|
//#region src/schemas/starter.ts
|
|
9669
9772
|
/**
|
|
@@ -10088,7 +10191,13 @@ function createStoreClient(options) {
|
|
|
10088
10191
|
update: (optionSetId, body) => storeHttp.request("PUT", path`/saved-option-sets/${optionSetId}`, savedOptionSetSchema, { body: savedOptionSetRequestSchema.parse(body) }),
|
|
10089
10192
|
remove: (optionSetId) => storeHttp.requestVoid("DELETE", path`/saved-option-sets/${optionSetId}`),
|
|
10090
10193
|
/** 상품의 현재 옵션을 저장 옵션으로 만든다(또는 `replaceOptionSetId`를 덮어쓴다) */
|
|
10091
|
-
saveFromProduct: (body) => storeHttp.request("POST", "/saved-option-sets/from-product", savedOptionSetFromProductResultSchema, { body: savedOptionSetFromProductRequestSchema.parse(body) })
|
|
10194
|
+
saveFromProduct: (body) => storeHttp.request("POST", "/saved-option-sets/from-product", savedOptionSetFromProductResultSchema, { body: savedOptionSetFromProductRequestSchema.parse(body) }),
|
|
10195
|
+
/** 번역(이슈 #134) — 기본 언어 이름이 키다. 불러올 때 상품 번역으로 복사한다 */
|
|
10196
|
+
localizations: {
|
|
10197
|
+
list: (optionSetId) => storeHttp.request("GET", path`/saved-option-sets/${optionSetId}/localizations`, z.array(savedOptionSetLocalizationSchema)),
|
|
10198
|
+
put: (optionSetId, locale, body) => storeHttp.request("PUT", path`/saved-option-sets/${optionSetId}/localizations/${locale}`, savedOptionSetLocalizationSchema, { body: savedOptionSetLocalizationRequestSchema.parse(body) }),
|
|
10199
|
+
remove: (optionSetId, locale) => storeHttp.requestVoid("DELETE", path`/saved-option-sets/${optionSetId}/localizations/${locale}`)
|
|
10200
|
+
}
|
|
10092
10201
|
},
|
|
10093
10202
|
/**
|
|
10094
10203
|
* 상품정보제공 고시 품목군(이슈 #135) — 플랫폼 코드 표. 현재 버전만 싣는다. 권한은 상품 조회(`product:r`)다
|
|
@@ -10105,7 +10214,13 @@ function createStoreClient(options) {
|
|
|
10105
10214
|
get: (infoSectionId) => storeHttp.request("GET", path`/info-sections/${infoSectionId}`, infoSectionSchema),
|
|
10106
10215
|
create: (body) => storeHttp.request("POST", "/info-sections", infoSectionSchema, { body: infoSectionRequestSchema.parse(body) }),
|
|
10107
10216
|
update: (infoSectionId, body) => storeHttp.request("PUT", path`/info-sections/${infoSectionId}`, infoSectionSchema, { body: infoSectionRequestSchema.parse(body) }),
|
|
10108
|
-
remove: (infoSectionId) => storeHttp.requestVoid("DELETE", path`/info-sections/${infoSectionId}`)
|
|
10217
|
+
remove: (infoSectionId) => storeHttp.requestVoid("DELETE", path`/info-sections/${infoSectionId}`),
|
|
10218
|
+
/** 번역(이슈 #134) — 언어별 제목·본문 */
|
|
10219
|
+
localizations: {
|
|
10220
|
+
list: (infoSectionId) => storeHttp.request("GET", path`/info-sections/${infoSectionId}/localizations`, z.array(infoSectionLocalizationSchema)),
|
|
10221
|
+
put: (infoSectionId, locale, body) => storeHttp.request("PUT", path`/info-sections/${infoSectionId}/localizations/${locale}`, infoSectionLocalizationSchema, { body: infoSectionLocalizationRequestSchema.parse(body) }),
|
|
10222
|
+
remove: (infoSectionId, locale) => storeHttp.requestVoid("DELETE", path`/info-sections/${infoSectionId}/localizations/${locale}`)
|
|
10223
|
+
}
|
|
10109
10224
|
},
|
|
10110
10225
|
/**
|
|
10111
10226
|
* 컬렉션 (이슈 #83) — 상품을 어디에 보여 줄지 정하는 묶음(다대다). 권한은 카테고리와 같다(`category:r`·`category:rw`).
|
|
@@ -10126,7 +10241,13 @@ function createStoreClient(options) {
|
|
|
10126
10241
|
addProducts: (collectionId, body) => storeHttp.request("POST", path`/collections/${collectionId}/products`, collectionSchema, { body: collectionProductsAddRequestSchema.parse(body) }),
|
|
10127
10242
|
removeProduct: (collectionId, productId) => storeHttp.requestVoid("DELETE", path`/collections/${collectionId}/products/${productId}`),
|
|
10128
10243
|
/** 조건 자동 미리보기 — 저장하지 않고 조건을 만족하는 판매 중 상품 수와 앞 20개를 본다 */
|
|
10129
|
-
preview: (body) => storeHttp.request("POST", "/collections/preview", collectionPreviewSchema, { body: collectionPreviewRequestSchema.parse(body) })
|
|
10244
|
+
preview: (body) => storeHttp.request("POST", "/collections/preview", collectionPreviewSchema, { body: collectionPreviewRequestSchema.parse(body) }),
|
|
10245
|
+
/** 번역(이슈 #134) — 언어별 제목·설명·SEO */
|
|
10246
|
+
localizations: {
|
|
10247
|
+
list: (collectionId) => storeHttp.request("GET", path`/collections/${collectionId}/localizations`, z.array(collectionLocalizationSchema)),
|
|
10248
|
+
put: (collectionId, locale, body) => storeHttp.request("PUT", path`/collections/${collectionId}/localizations/${locale}`, collectionLocalizationSchema, { body: collectionLocalizationRequestSchema.parse(body) }),
|
|
10249
|
+
remove: (collectionId, locale) => storeHttp.requestVoid("DELETE", path`/collections/${collectionId}/localizations/${locale}`)
|
|
10250
|
+
}
|
|
10130
10251
|
},
|
|
10131
10252
|
categories: {
|
|
10132
10253
|
list: (params) => storeHttp.request("GET", "/categories", z.array(categorySchema), { query: params }),
|
|
@@ -11244,4 +11365,4 @@ function createStoreSession(options) {
|
|
|
11244
11365
|
};
|
|
11245
11366
|
}
|
|
11246
11367
|
//#endregion
|
|
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 };
|
|
11368
|
+
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, collectionLocalizationRequestSchema, collectionLocalizationSchema, 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, infoSectionLocalizationRequestSchema, infoSectionLocalizationSchema, 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, productLocalizationNeedsTranslation, 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, savedOptionSetLocalizationRequestSchema, savedOptionSetLocalizationSchema, 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
|
@@ -87,11 +87,14 @@ import {
|
|
|
87
87
|
import {
|
|
88
88
|
type CollectionCreateRequestInput,
|
|
89
89
|
type CollectionListParams,
|
|
90
|
+
type CollectionLocalizationRequest,
|
|
90
91
|
type CollectionPatchRequest,
|
|
91
92
|
type CollectionPreviewRequest,
|
|
92
93
|
type CollectionProductsAddRequest,
|
|
93
94
|
type CollectionProductsReplaceRequest,
|
|
94
95
|
collectionCreateRequestSchema,
|
|
96
|
+
collectionLocalizationRequestSchema,
|
|
97
|
+
collectionLocalizationSchema,
|
|
95
98
|
collectionPageSchema,
|
|
96
99
|
collectionPatchRequestSchema,
|
|
97
100
|
collectionPreviewRequestSchema,
|
|
@@ -311,8 +314,11 @@ import {
|
|
|
311
314
|
variantStockSchema,
|
|
312
315
|
} from "./schemas/product";
|
|
313
316
|
import {
|
|
317
|
+
type InfoSectionLocalizationRequest,
|
|
314
318
|
type InfoSectionRequestInput,
|
|
315
319
|
infoSchemaSchema,
|
|
320
|
+
infoSectionLocalizationRequestSchema,
|
|
321
|
+
infoSectionLocalizationSchema,
|
|
316
322
|
infoSectionRequestSchema,
|
|
317
323
|
infoSectionSchema,
|
|
318
324
|
platformCodeSchema,
|
|
@@ -325,9 +331,12 @@ import {
|
|
|
325
331
|
import {
|
|
326
332
|
type SavedOptionSetFromProductRequestInput,
|
|
327
333
|
type SavedOptionSetListParams,
|
|
334
|
+
type SavedOptionSetLocalizationRequest,
|
|
328
335
|
type SavedOptionSetRequestInput,
|
|
329
336
|
savedOptionSetFromProductRequestSchema,
|
|
330
337
|
savedOptionSetFromProductResultSchema,
|
|
338
|
+
savedOptionSetLocalizationRequestSchema,
|
|
339
|
+
savedOptionSetLocalizationSchema,
|
|
331
340
|
savedOptionSetRequestSchema,
|
|
332
341
|
savedOptionSetSchema,
|
|
333
342
|
} from "./schemas/saved-option-set";
|
|
@@ -701,6 +710,27 @@ export function createStoreClient(options: StoreClientOptions) {
|
|
|
701
710
|
savedOptionSetFromProductResultSchema,
|
|
702
711
|
{ body: savedOptionSetFromProductRequestSchema.parse(body) },
|
|
703
712
|
),
|
|
713
|
+
/** 번역(이슈 #134) — 기본 언어 이름이 키다. 불러올 때 상품 번역으로 복사한다 */
|
|
714
|
+
localizations: {
|
|
715
|
+
list: (optionSetId: string) =>
|
|
716
|
+
storeHttp.request(
|
|
717
|
+
"GET",
|
|
718
|
+
path`/saved-option-sets/${optionSetId}/localizations`,
|
|
719
|
+
z.array(savedOptionSetLocalizationSchema),
|
|
720
|
+
),
|
|
721
|
+
put: (optionSetId: string, locale: string, body: SavedOptionSetLocalizationRequest) =>
|
|
722
|
+
storeHttp.request(
|
|
723
|
+
"PUT",
|
|
724
|
+
path`/saved-option-sets/${optionSetId}/localizations/${locale}`,
|
|
725
|
+
savedOptionSetLocalizationSchema,
|
|
726
|
+
{ body: savedOptionSetLocalizationRequestSchema.parse(body) },
|
|
727
|
+
),
|
|
728
|
+
remove: (optionSetId: string, locale: string) =>
|
|
729
|
+
storeHttp.requestVoid(
|
|
730
|
+
"DELETE",
|
|
731
|
+
path`/saved-option-sets/${optionSetId}/localizations/${locale}`,
|
|
732
|
+
),
|
|
733
|
+
},
|
|
704
734
|
},
|
|
705
735
|
|
|
706
736
|
/**
|
|
@@ -737,6 +767,27 @@ export function createStoreClient(options: StoreClientOptions) {
|
|
|
737
767
|
}),
|
|
738
768
|
remove: (infoSectionId: string) =>
|
|
739
769
|
storeHttp.requestVoid("DELETE", path`/info-sections/${infoSectionId}`),
|
|
770
|
+
/** 번역(이슈 #134) — 언어별 제목·본문 */
|
|
771
|
+
localizations: {
|
|
772
|
+
list: (infoSectionId: string) =>
|
|
773
|
+
storeHttp.request(
|
|
774
|
+
"GET",
|
|
775
|
+
path`/info-sections/${infoSectionId}/localizations`,
|
|
776
|
+
z.array(infoSectionLocalizationSchema),
|
|
777
|
+
),
|
|
778
|
+
put: (infoSectionId: string, locale: string, body: InfoSectionLocalizationRequest) =>
|
|
779
|
+
storeHttp.request(
|
|
780
|
+
"PUT",
|
|
781
|
+
path`/info-sections/${infoSectionId}/localizations/${locale}`,
|
|
782
|
+
infoSectionLocalizationSchema,
|
|
783
|
+
{ body: infoSectionLocalizationRequestSchema.parse(body) },
|
|
784
|
+
),
|
|
785
|
+
remove: (infoSectionId: string, locale: string) =>
|
|
786
|
+
storeHttp.requestVoid(
|
|
787
|
+
"DELETE",
|
|
788
|
+
path`/info-sections/${infoSectionId}/localizations/${locale}`,
|
|
789
|
+
),
|
|
790
|
+
},
|
|
740
791
|
},
|
|
741
792
|
|
|
742
793
|
/**
|
|
@@ -786,6 +837,27 @@ export function createStoreClient(options: StoreClientOptions) {
|
|
|
786
837
|
storeHttp.request("POST", "/collections/preview", collectionPreviewSchema, {
|
|
787
838
|
body: collectionPreviewRequestSchema.parse(body),
|
|
788
839
|
}),
|
|
840
|
+
/** 번역(이슈 #134) — 언어별 제목·설명·SEO */
|
|
841
|
+
localizations: {
|
|
842
|
+
list: (collectionId: string) =>
|
|
843
|
+
storeHttp.request(
|
|
844
|
+
"GET",
|
|
845
|
+
path`/collections/${collectionId}/localizations`,
|
|
846
|
+
z.array(collectionLocalizationSchema),
|
|
847
|
+
),
|
|
848
|
+
put: (collectionId: string, locale: string, body: CollectionLocalizationRequest) =>
|
|
849
|
+
storeHttp.request(
|
|
850
|
+
"PUT",
|
|
851
|
+
path`/collections/${collectionId}/localizations/${locale}`,
|
|
852
|
+
collectionLocalizationSchema,
|
|
853
|
+
{ body: collectionLocalizationRequestSchema.parse(body) },
|
|
854
|
+
),
|
|
855
|
+
remove: (collectionId: string, locale: string) =>
|
|
856
|
+
storeHttp.requestVoid(
|
|
857
|
+
"DELETE",
|
|
858
|
+
path`/collections/${collectionId}/localizations/${locale}`,
|
|
859
|
+
),
|
|
860
|
+
},
|
|
789
861
|
},
|
|
790
862
|
|
|
791
863
|
categories: {
|
|
@@ -587,3 +587,28 @@ export const collectionPreviewSchema = z.object({
|
|
|
587
587
|
});
|
|
588
588
|
|
|
589
589
|
export type CollectionPreview = z.infer<typeof collectionPreviewSchema>;
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* 컬렉션 번역 (이슈 #134) — 언어 하나의 제목·설명·SEO. 컬렉션 필드는 상점 기본 언어 값이고 번역 레코드가 언어별 값이다.
|
|
593
|
+
* 비운 칸(null)은 스토어프론트가 기본 언어 값으로 대체한다(칸 단위 대체).
|
|
594
|
+
*/
|
|
595
|
+
export const collectionLocalizationSchema = z.object({
|
|
596
|
+
locale: z.string().describe("언어(BCP 47)"),
|
|
597
|
+
title: z.string().nullable().describe("제목. null이면 기본 언어 제목"),
|
|
598
|
+
description: z.string().nullable(),
|
|
599
|
+
metaTitle: z.string().nullable(),
|
|
600
|
+
metaDescription: z.string().nullable(),
|
|
601
|
+
updatedAt: z.string(),
|
|
602
|
+
});
|
|
603
|
+
|
|
604
|
+
export type CollectionLocalization = z.infer<typeof collectionLocalizationSchema>;
|
|
605
|
+
|
|
606
|
+
/** `PUT /v1/collections/{collectionId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 빠진 칸은 null(기본 언어 값으로 대체)이다 */
|
|
607
|
+
export const collectionLocalizationRequestSchema = z.strictObject({
|
|
608
|
+
title: z.string().trim().min(1).max(MAX_COLLECTION_TITLE).nullable().optional(),
|
|
609
|
+
description: z.string().trim().max(MAX_COLLECTION_DESCRIPTION).nullable().optional(),
|
|
610
|
+
metaTitle: z.string().trim().max(60).nullable().optional(),
|
|
611
|
+
metaDescription: z.string().trim().max(160).nullable().optional(),
|
|
612
|
+
});
|
|
613
|
+
|
|
614
|
+
export type CollectionLocalizationRequest = z.infer<typeof collectionLocalizationRequestSchema>;
|
|
@@ -188,3 +188,29 @@ export const infoSectionRequestSchema = z.object({
|
|
|
188
188
|
|
|
189
189
|
export type InfoSectionRequest = z.infer<typeof infoSectionRequestSchema>;
|
|
190
190
|
export type InfoSectionRequestInput = z.input<typeof infoSectionRequestSchema>;
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* 안내 섹션 번역 (이슈 #134) — 언어 하나의 제목·본문. 섹션 필드는 상점 기본 언어 값이다. 비운 칸(null)은 스토어프론트가 기본 언어 값으로 대체한다.
|
|
194
|
+
* 섹션을 연결한 모든 상품이 같은 번역을 보인다.
|
|
195
|
+
*/
|
|
196
|
+
export const infoSectionLocalizationSchema = z.object({
|
|
197
|
+
locale: z.string().describe("언어(BCP 47)"),
|
|
198
|
+
title: z.string().nullable(),
|
|
199
|
+
body: z
|
|
200
|
+
.string()
|
|
201
|
+
.nullable()
|
|
202
|
+
.describe("본문 HTML(상세설명과 같은 정화 규칙). null이면 기본 언어 본문"),
|
|
203
|
+
bodyJson: z.string().nullable(),
|
|
204
|
+
updatedAt: z.string(),
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
export type InfoSectionLocalization = z.infer<typeof infoSectionLocalizationSchema>;
|
|
208
|
+
|
|
209
|
+
/** `PUT /v1/info-sections/{infoSectionId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 빠진 칸은 null이다 */
|
|
210
|
+
export const infoSectionLocalizationRequestSchema = z.strictObject({
|
|
211
|
+
title: z.string().trim().min(1).max(MAX_INFO_SECTION_TITLE).nullable().optional(),
|
|
212
|
+
body: z.string().nullable().optional(),
|
|
213
|
+
bodyJson: z.string().nullable().optional(),
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
export type InfoSectionLocalizationRequest = z.infer<typeof infoSectionLocalizationRequestSchema>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { MAX_PRODUCT_IMAGES, productImageUrlSchema } from "./product";
|
|
3
|
+
import { MAX_NOTICE_VALUE_LENGTH } from "./product-info";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* 상품 번역 (이슈 #134) — 언어 하나의 상품명·상세설명·이미지·옵션 이름. 상품 필드는 상점 기본 언어 값이고 번역 레코드가 언어별 값이다.
|
|
@@ -24,8 +25,14 @@ const translatedCustomInputSchema = z.object({
|
|
|
24
25
|
placeholder: z.string().nullable().describe("입력 안내. null이면 기본 언어 안내"),
|
|
25
26
|
});
|
|
26
27
|
|
|
28
|
+
const translatedNoticeValueSchema = z.object({
|
|
29
|
+
key: z.string().describe("고시 칸 키"),
|
|
30
|
+
label: z.string().describe("칸 이름(원문)"),
|
|
31
|
+
value: z.string().nullable().describe("셀러 값 번역. null이면 기본 언어 값"),
|
|
32
|
+
});
|
|
33
|
+
|
|
27
34
|
/**
|
|
28
|
-
* 조회 응답 — 지금 상품의 옵션명·값·직접 입력
|
|
35
|
+
* 조회 응답 — 지금 상품의 옵션명·값·직접 입력 항목, 셀러가 적은 고시 칸을 모두 싣고 번역하지 않은 칸은 null이다.
|
|
29
36
|
* `optionGroups`는 조합 옵션, `addonGroups`는 추가 선택이다(상품 응답과 같은 구분)
|
|
30
37
|
*/
|
|
31
38
|
export const productLocalizationSchema = z.object({
|
|
@@ -37,6 +44,13 @@ export const productLocalizationSchema = z.object({
|
|
|
37
44
|
optionGroups: z.array(translatedOptionGroupSchema),
|
|
38
45
|
addonGroups: z.array(translatedOptionGroupSchema),
|
|
39
46
|
customInputs: z.array(translatedCustomInputSchema),
|
|
47
|
+
notice: z
|
|
48
|
+
.array(translatedNoticeValueSchema)
|
|
49
|
+
.optional()
|
|
50
|
+
.default([])
|
|
51
|
+
.describe(
|
|
52
|
+
"셀러가 적은 상품정보제공 고시 칸의 값 번역(이슈 #134). 출처·법정 문구 칸은 싣지 않는다",
|
|
53
|
+
),
|
|
40
54
|
updatedAt: z.string(),
|
|
41
55
|
});
|
|
42
56
|
|
|
@@ -71,6 +85,37 @@ export const productLocalizationRequestSchema = z.strictObject({
|
|
|
71
85
|
}),
|
|
72
86
|
)
|
|
73
87
|
.optional(),
|
|
88
|
+
notice: z
|
|
89
|
+
.array(
|
|
90
|
+
z.strictObject({
|
|
91
|
+
key: z.string(),
|
|
92
|
+
value: z.string().trim().min(1).max(MAX_NOTICE_VALUE_LENGTH).nullable().optional(),
|
|
93
|
+
}),
|
|
94
|
+
)
|
|
95
|
+
.optional()
|
|
96
|
+
.describe(
|
|
97
|
+
"고시 칸 값 번역. 상품에 셀러 값이 없는 칸 키는 400 `PRODUCT_LOCALIZATION_TARGET_NOT_FOUND`",
|
|
98
|
+
),
|
|
74
99
|
});
|
|
75
100
|
|
|
76
101
|
export type ProductLocalizationRequest = z.infer<typeof productLocalizationRequestSchema>;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* 번역할 칸이 비었는가(이슈 #134, 2026-10-18 결정: 완성도 대신 「번역 필요」 표시만) — 상품명, 기본 언어에 본문이 있는 상세설명,
|
|
105
|
+
* 옵션명·값·직접 입력 항목명, 셀러가 적은 고시 칸. 이미지·입력 안내는 기본 언어 값을 그대로 써도 되는 칸이라 세지 않는다.
|
|
106
|
+
* 상점 플랫폼(상품 수정·목록)과 관리 목록 응답이 같은 함수다
|
|
107
|
+
*/
|
|
108
|
+
export function productLocalizationNeedsTranslation(
|
|
109
|
+
localization: Pick<
|
|
110
|
+
ProductLocalization,
|
|
111
|
+
"name" | "description" | "optionGroups" | "addonGroups" | "customInputs"
|
|
112
|
+
> & { notice?: ProductLocalization["notice"] },
|
|
113
|
+
base: { description?: string | null },
|
|
114
|
+
): boolean {
|
|
115
|
+
if (!localization.name) return true;
|
|
116
|
+
if ((base.description ?? "").trim() && !localization.description) return true;
|
|
117
|
+
const groups = [...localization.optionGroups, ...localization.addonGroups];
|
|
118
|
+
if (groups.some((group) => !group.name || group.values.some((value) => !value.name))) return true;
|
|
119
|
+
if (localization.customInputs.some((item) => !item.label)) return true;
|
|
120
|
+
return (localization.notice ?? []).some((entry) => !entry.value);
|
|
121
|
+
}
|
package/src/schemas/product.ts
CHANGED
|
@@ -67,6 +67,18 @@ export const productSummarySchema = z.object({
|
|
|
67
67
|
.describe(
|
|
68
68
|
"상점을 만들 때 넣은 샘플 상품인가(이슈 #70). 상점 플랫폼이 「샘플」 배지를 단다. 스토어프론트에는 싣지 않는다. 서버는 항상 싣는다",
|
|
69
69
|
),
|
|
70
|
+
localizations: z
|
|
71
|
+
.array(
|
|
72
|
+
z.object({
|
|
73
|
+
locale: z.string().describe("언어(BCP 47)"),
|
|
74
|
+
needsTranslation: z
|
|
75
|
+
.boolean()
|
|
76
|
+
.describe("번역할 칸이 비었는가(`productLocalizationNeedsTranslation`과 같은 규칙)"),
|
|
77
|
+
}),
|
|
78
|
+
)
|
|
79
|
+
.optional()
|
|
80
|
+
.default([])
|
|
81
|
+
.describe("번역 레코드가 있는 언어(이슈 #134). 상점 기본 언어는 싣지 않는다"),
|
|
70
82
|
});
|
|
71
83
|
|
|
72
84
|
export type ProductSummary = z.infer<typeof productSummarySchema>;
|
|
@@ -372,7 +384,7 @@ export const discountSchema = z.object({
|
|
|
372
384
|
|
|
373
385
|
export type Discount = z.infer<typeof discountSchema>;
|
|
374
386
|
|
|
375
|
-
export const productSchema = productSummarySchema.extend({
|
|
387
|
+
export const productSchema = productSummarySchema.omit({ localizations: true }).extend({
|
|
376
388
|
prices: z
|
|
377
389
|
.array(storedProductCurrencyPriceSchema)
|
|
378
390
|
.optional()
|
|
@@ -174,3 +174,65 @@ export const savedOptionSetListQuerySchema = z.object({
|
|
|
174
174
|
sort: savedOptionSetSortSchema.optional().describe("정렬 (기본 updatedAt.desc)"),
|
|
175
175
|
...pageQueryShape({ defaultSize: 20, maxSize: 200 }),
|
|
176
176
|
});
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* 저장 옵션 번역 (이슈 #134) — 저장 옵션에는 id가 없어 **기본 언어 이름이 키**다(`baseName`·`baseLabel`).
|
|
180
|
+
* 상품이 불러올 때 상품 번역으로 함께 복사하고(상품 저장 트랜잭션), 그 뒤로는 상품 번역이 원천이다 — 저장 옵션 번역을 고쳐도
|
|
181
|
+
* 이미 불러온 상품은 그대로다. 기본 언어 이름을 바꾸면 그 이름의 번역은 읽지 않는다.
|
|
182
|
+
*/
|
|
183
|
+
export const savedOptionSetLocalizationSchema = z.object({
|
|
184
|
+
locale: z.string().describe("언어(BCP 47)"),
|
|
185
|
+
groups: z.array(
|
|
186
|
+
z.object({
|
|
187
|
+
baseName: z.string().describe("기본 언어 옵션명"),
|
|
188
|
+
name: z.string().nullable().describe("번역 옵션명. null이면 기본 언어 이름"),
|
|
189
|
+
values: z.array(
|
|
190
|
+
z.object({
|
|
191
|
+
baseName: z.string(),
|
|
192
|
+
name: z.string().nullable(),
|
|
193
|
+
}),
|
|
194
|
+
),
|
|
195
|
+
}),
|
|
196
|
+
),
|
|
197
|
+
customInputs: z.array(
|
|
198
|
+
z.object({
|
|
199
|
+
baseLabel: z.string().describe("기본 언어 항목명"),
|
|
200
|
+
label: z.string().nullable(),
|
|
201
|
+
placeholder: z.string().nullable(),
|
|
202
|
+
}),
|
|
203
|
+
),
|
|
204
|
+
updatedAt: z.string(),
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
export type SavedOptionSetLocalization = z.infer<typeof savedOptionSetLocalizationSchema>;
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* `PUT /v1/saved-option-sets/{optionSetId}/localizations/{locale}` 본문 — 레코드 전체를 바꾼다. 번역할 이름만 보낸다.
|
|
211
|
+
* 저장 옵션에 없는 기본 언어 이름은 400 `OPTION_SET_LOCALIZATION_TARGET_NOT_FOUND`, 번역 이름 중복은 상품과 같은 규칙으로 400 `INVALID_OPTION_MODEL`이다
|
|
212
|
+
*/
|
|
213
|
+
export const savedOptionSetLocalizationRequestSchema = z.strictObject({
|
|
214
|
+
groups: z
|
|
215
|
+
.array(
|
|
216
|
+
z.strictObject({
|
|
217
|
+
baseName: z.string(),
|
|
218
|
+
name: nameSchema.nullable().optional(),
|
|
219
|
+
values: z
|
|
220
|
+
.array(z.strictObject({ baseName: z.string(), name: nameSchema.nullable().optional() }))
|
|
221
|
+
.optional(),
|
|
222
|
+
}),
|
|
223
|
+
)
|
|
224
|
+
.optional(),
|
|
225
|
+
customInputs: z
|
|
226
|
+
.array(
|
|
227
|
+
z.strictObject({
|
|
228
|
+
baseLabel: z.string(),
|
|
229
|
+
label: z.string().trim().min(1).max(30).nullable().optional(),
|
|
230
|
+
placeholder: z.string().trim().min(1).max(100).nullable().optional(),
|
|
231
|
+
}),
|
|
232
|
+
)
|
|
233
|
+
.optional(),
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
export type SavedOptionSetLocalizationRequest = z.infer<
|
|
237
|
+
typeof savedOptionSetLocalizationRequestSchema
|
|
238
|
+
>;
|