@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 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
- productId: z.ZodString;
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
- salePrice: z.ZodNumber;
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
- * 조회 응답 — 지금 상품의 옵션명·값·직접 입력 항목을 모두 싣고 번역하지 않은 칸은 null이다.
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
- discountedPrice: number | null;
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
- discountedPrice: number | null;
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
- discountedPrice: number | null;
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
- * 조회 응답 — 지금 상품의 옵션명·값·직접 입력 항목을 모두 싣고 번역하지 않은 칸은 null이다.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sayren/store-sdk",
3
- "version": "0.35.0",
3
+ "version": "0.36.0",
4
4
  "main": "./dist/index.mjs",
5
5
  "types": "./dist/index.d.mts",
6
6
  "exports": {
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
- * 조회 응답 — 지금 상품의 옵션명·값·직접 입력 항목을 모두 싣고 번역하지 않은 칸은 null이다.
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
+ }
@@ -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
+ >;