@sayren/store-sdk 0.30.20 → 0.32.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.mjs CHANGED
@@ -745,6 +745,7 @@ const pickupLocationSchema = z.object({
745
745
  hours: z.string().nullable().describe("수령 가능 시간 안내. 없으면 null"),
746
746
  usable: z.boolean().describe("사용 여부. false면 구매자에게 보이지 않고 주문서에서 고를 수 없다"),
747
747
  sortOrder: z.number().int(),
748
+ inventoryLocationId: z.string().nullable().optional().describe("이 장소의 재고 위치 ID — 방문 수령 주문을 이 위치 재고로 판다. 위치를 하나만 쓰는 상점은 기본 위치다"),
748
749
  createdAt: z.string()
749
750
  });
750
751
  const pickupLocationRequestSchema = z.strictObject({
@@ -752,7 +753,8 @@ const pickupLocationRequestSchema = z.strictObject({
752
753
  address: z.string().trim().min(1).max(200),
753
754
  phone: z.string().trim().max(30).nullish(),
754
755
  hours: z.string().trim().max(100).nullish(),
755
- usable: z.boolean().default(true)
756
+ usable: z.boolean().default(true),
757
+ inventoryLocationId: z.string().min(1).optional().describe("재고 위치 ID. 등록에서 생략하면 기본 위치, 수정에서 생략하면 지금 연결을 유지한다")
756
758
  });
757
759
  //#endregion
758
760
  //#region src/schemas/shipping-policy.ts
@@ -1452,6 +1454,7 @@ const sellerAddressSchema = z.object({
1452
1454
  zipCode: z.string(),
1453
1455
  address1: z.string(),
1454
1456
  address2: z.string().optional(),
1457
+ inventoryLocationId: z.string().nullable().optional().describe("이 주소의 재고 위치 ID — 출고지면 배송 주문을 이 위치 재고로 팔고, 반품지면 반품을 이 위치로 들인다. 위치를 하나만 쓰는 상점은 기본 위치다"),
1455
1458
  createdAt: z.string()
1456
1459
  });
1457
1460
  const sellerAddressRequestSchema = z.object({
@@ -1461,7 +1464,8 @@ const sellerAddressRequestSchema = z.object({
1461
1464
  phone: z.string().regex(/^01[0-9]{8,9}$/),
1462
1465
  zipCode: z.string().regex(/^[0-9]{5}$/),
1463
1466
  address1: z.string().min(1),
1464
- address2: z.string().optional()
1467
+ address2: z.string().optional(),
1468
+ inventoryLocationId: z.string().min(1).optional().describe("재고 위치 ID. 등록에서 생략하면 기본 위치, 수정에서 생략하면 지금 연결을 유지한다")
1465
1469
  });
1466
1470
  //#endregion
1467
1471
  //#region src/schemas/storefront-hosting.ts
@@ -2103,6 +2107,13 @@ const storefrontEditSessionSchema = z.object({
2103
2107
  const storefrontDevLogsSchema = z.object({
2104
2108
  stdout: z.string(),
2105
2109
  stderr: z.string(),
2110
+ browser: z.array(z.object({
2111
+ seq: z.number().int().describe("세션 안에서 오르는 순번"),
2112
+ at: z.string().describe("받은 시각"),
2113
+ level: z.enum(["error", "warn"]),
2114
+ message: z.string(),
2115
+ url: z.string().describe("로그를 남긴 페이지 경로")
2116
+ })).default([]).describe("편집 미리보기를 연 브라우저의 오류·경고(window 오류, 처리되지 않은 Promise 거부, console.error·warn) 최근 100건. 미리보기를 열어 둔 동안만 모인다"),
2106
2117
  at: z.string()
2107
2118
  });
2108
2119
  const storefrontEditingSchema = z.object({
@@ -2543,11 +2554,12 @@ const aiToolChangeSchema = z.object({
2543
2554
  });
2544
2555
  /**
2545
2556
  * 에이전트 작업 단계(2026-10-13, AI 상점 도우미 작업 공간) — 에이전트가 패널 도구로 알린다.
2546
- * 상점·상품·배포 준비 → 쇼핑몰 구조 설계 → 개발 환경 준비(라이브러리·SDK) → 코드 수정 루프 → 완료
2557
+ * 상점·상품·배포 준비 → 쇼핑몰 구조 설계 → 디자인(아트보드, 2026-10-14 사용자 결정) → 개발 환경 준비(라이브러리·SDK) → 코드 수정 루프 → 완료
2547
2558
  */
2548
2559
  const AI_AGENT_PHASES = [
2549
2560
  "STORE",
2550
2561
  "STRUCTURE",
2562
+ "DESIGN",
2551
2563
  "ENVIRONMENT",
2552
2564
  "BUILD",
2553
2565
  "DONE"
@@ -2580,10 +2592,103 @@ function isAiAgentNotesPath(path) {
2580
2592
  return path === "src/site/agent" || path.startsWith(`src/site/agent/`);
2581
2593
  }
2582
2594
  /**
2595
+ * 디자인 아트보드 폴더(2026-10-14 사용자 결정, Claude Code Design 캔버스의 파일 계약을 옮겼다) — DESIGN 단계에 에이전트가 쓰는 자기완결 HTML 아트보드와
2596
+ * 인덱스 `canvas.json`이다. 앱 코드가 import하지 않아 발행 빌드에 들어가지 않고, 상점 플랫폼 작업 공간의 디자인 탭이 iframe(srcdoc)으로 그린다.
2597
+ * 코드 탭 트리에서는 작업 메모처럼 뺀다
2598
+ */
2599
+ const AI_DESIGN_DIR = "src/site/design";
2600
+ const AI_DESIGN_CANVAS_PATH = `${AI_DESIGN_DIR}/canvas.json`;
2601
+ function isAiDesignPath(path) {
2602
+ return path === "src/site/design" || path.startsWith(`src/site/design/`);
2603
+ }
2604
+ /** 아트보드 파일 이름 — `src/site/design/` 바로 아래의 `.html` 하나(폴더 없음) */
2605
+ const AI_DESIGN_BOARD_FILE_PATTERN = /^[a-z0-9][a-z0-9-]{0,63}\.html$/;
2606
+ const AI_DESIGN_BOARD_KINDS = [
2607
+ "direction",
2608
+ "page",
2609
+ "scene"
2610
+ ];
2611
+ const AI_DESIGN_VIEWPORTS = ["desktop", "mobile"];
2612
+ /** 아트보드 상한 — 사이트맵의 화면마다 아트보드를 그린다(2026-10-15 사용자 결정, 화면 로드맵 29개 + 방향 후보 + 모바일). 24에서 올렸다 */
2613
+ const AI_DESIGN_BOARDS_MAX = 64;
2614
+ /**
2615
+ * 아트보드 하나 — `file`은 `src/site/design/` 아래 파일 이름, `kind`는 방향(저충실 후보)·페이지(고충실 화면)·장면(모션 시안, 셀러가 스크롤하며 본다),
2616
+ * `viewport`는 데스크톱(1280)·모바일(390) 폭, `page`는 그 아트보드가 그리는 사이트 경로(구현 대조에 쓴다), `status`는 후보·채택·보관
2617
+ */
2618
+ const aiDesignBoardSchema = z.object({
2619
+ file: z.string().regex(AI_DESIGN_BOARD_FILE_PATTERN),
2620
+ title: z.string().min(1).max(60),
2621
+ kind: z.enum(AI_DESIGN_BOARD_KINDS),
2622
+ viewport: z.enum(AI_DESIGN_VIEWPORTS).default("desktop"),
2623
+ page: z.string().max(200).optional(),
2624
+ status: z.enum([
2625
+ "candidate",
2626
+ "chosen",
2627
+ "archived"
2628
+ ]).default("chosen")
2629
+ });
2630
+ const aiDesignCanvasSchema = z.object({
2631
+ version: z.literal(1),
2632
+ /** 정한 방향 이름 — 방향 선택지에서 셀러가 고른 뒤 적는다(이름을 바꾸지 않는다) */
2633
+ direction: z.string().max(80).nullable().default(null),
2634
+ boards: z.array(aiDesignBoardSchema).max(64),
2635
+ /** 캔버스에 붙이는 메모(장 전환 규칙 등) */
2636
+ notes: z.array(z.string().max(300)).max(20).default([])
2637
+ });
2638
+ /** 셀러가 디자인 탭에서 고른 아트보드(2026-10-14) — 메시지와 함께 보내면 모델은 그 아트보드를 기준으로 고친다 */
2639
+ const aiDesignSelectionSchema = z.object({
2640
+ file: z.string().regex(AI_DESIGN_BOARD_FILE_PATTERN),
2641
+ title: z.string().max(60)
2642
+ });
2643
+ /** 쇼핑몰 형태(#124, 2026-10-13) — 템플릿은 basic 하나이고 형태는 에이전트에게 주는 화면 구성 지시다 */
2644
+ const STORE_SHOP_TYPES = [
2645
+ "BASIC",
2646
+ "INTERACTIVE",
2647
+ "STORYTELLING",
2648
+ "MOBILE",
2649
+ "CATALOG",
2650
+ "LOOKBOOK"
2651
+ ];
2652
+ const storeShopTypeSchema = z.enum(STORE_SHOP_TYPES);
2653
+ /**
2654
+ * 선택지 하나 — `templateId`는 스토어프론트 템플릿을, `shopType`은 쇼핑몰 형태를 고르는 선택지일 때의 값이다(2026-10-14). 상점 플랫폼이 썸네일을 붙인다
2655
+ */
2656
+ const aiChoiceOptionSchema = z.object({
2657
+ label: z.string(),
2658
+ value: z.string(),
2659
+ templateId: z.string().max(64).optional(),
2660
+ /** 쇼핑몰 형태를 고르는 선택지면 그 형태 — 상점 플랫폼이 형태 와이어프레임을 붙인다 */
2661
+ shopType: storeShopTypeSchema.optional(),
2662
+ /** 디자인 방향을 고르는 선택지면 그 아트보드 파일(`src/site/design/` 아래) — 상점 플랫폼이 아트보드를 썸네일로 붙인다(2026-10-14) */
2663
+ boardFile: z.string().regex(AI_DESIGN_BOARD_FILE_PATTERN).optional()
2664
+ });
2665
+ /**
2666
+ * 쇼핑몰 만들기 확인(2026-10-14) — 에이전트가 대화로 모은 값(라벨·값)과 고른 템플릿을 보이고 「이렇게 쇼핑몰을 만들까요?」를 묻는다.
2667
+ * 셀러가 승인(`AI_SETUP_CONFIRM_APPROVE` 선택지)하면 만들기를 시작한다
2668
+ */
2669
+ const aiSetupConfirmItemSchema = z.object({
2670
+ label: z.string(),
2671
+ value: z.string()
2672
+ });
2673
+ /** 확인 카드의 승인 선택지 값 */
2674
+ const AI_SETUP_CONFIRM_APPROVE = "setup:approve";
2675
+ /**
2676
+ * 디자인 확인(2026-10-14 사용자 결정) — DESIGN 단계 끝에 에이전트가 채택한 아트보드를 카드로 보이고 「이 디자인으로 만들까요?」를 묻는다.
2677
+ * 셀러가 승인(`AI_DESIGN_CONFIRM_APPROVE` 선택지)해야 구현(ENVIRONMENT·BUILD)으로 넘어간다
2678
+ */
2679
+ const aiDesignConfirmBoardSchema = z.object({
2680
+ file: z.string().regex(AI_DESIGN_BOARD_FILE_PATTERN),
2681
+ title: z.string().max(60)
2682
+ });
2683
+ const AI_DESIGN_CONFIRM_APPROVE = "design:approve";
2684
+ /**
2583
2685
  * 화면에 그리는 메시지 조각. 모델 원문(tool_use 블록 등)은 api가 보관하고 화면에는 이 형태만 준다.
2584
2686
  * - `text`: 글
2585
2687
  * - `tool`: 도구 호출 한 번(이름은 사람이 읽는 라벨, 결과 요약·링크)
2586
2688
  * - `choices`: 선택지 버튼(가장 최근 것만 누를 수 있다)
2689
+ * - `setup_confirm`: 쇼핑몰 만들기 확인 카드(모은 값·템플릿, 승인은 뒤따르는 `choices`)
2690
+ * - `design_confirm`: 디자인 확인 카드(채택한 아트보드, 승인은 뒤따르는 `choices`)
2691
+ * - `design_selection`: 사용자가 디자인 탭에서 고른 아트보드
2587
2692
  * - `business_form`: 사업자 정보 입력 폼(가장 최근 것만 제출할 수 있다, 건너뛸 수 있다)
2588
2693
  * - `attachment`: 사용자가 올린 첨부
2589
2694
  * - `approval`: 승인 대기로 남은 쓰기
@@ -2617,19 +2722,29 @@ const aiMessagePartSchema = z.discriminatedUnion("type", [
2617
2722
  z.object({
2618
2723
  type: z.literal("choices"),
2619
2724
  question: z.string(),
2620
- options: z.array(z.object({
2621
- label: z.string(),
2622
- value: z.string()
2623
- })).min(1).max(6)
2725
+ options: z.array(aiChoiceOptionSchema).min(1).max(6)
2624
2726
  }),
2625
2727
  z.object({
2626
2728
  type: z.literal("business_form"),
2627
2729
  question: z.string()
2628
2730
  }),
2731
+ z.object({
2732
+ type: z.literal("setup_confirm"),
2733
+ items: z.array(aiSetupConfirmItemSchema).max(12),
2734
+ templateId: z.string().max(64).optional()
2735
+ }),
2736
+ z.object({
2737
+ type: z.literal("design_confirm"),
2738
+ boards: z.array(aiDesignConfirmBoardSchema).min(1).max(64)
2739
+ }),
2629
2740
  z.object({
2630
2741
  type: z.literal("attachment"),
2631
2742
  attachment: aiAttachmentSchema
2632
2743
  }),
2744
+ z.object({
2745
+ type: z.literal("design_selection"),
2746
+ selection: aiDesignSelectionSchema
2747
+ }),
2633
2748
  z.object({
2634
2749
  type: z.literal("approval"),
2635
2750
  approvalId: z.string(),
@@ -2672,16 +2787,6 @@ const aiConversationSchema = aiConversationSummarySchema.extend({
2672
2787
  /** 마지막 실행(진행 중이 아니면 결과 표시용) */
2673
2788
  lastRun: aiRunSchema.nullable()
2674
2789
  });
2675
- /** 쇼핑몰 형태(#124, 2026-10-13) — 템플릿은 basic 하나이고 형태는 에이전트에게 주는 화면 구성 지시다 */
2676
- const STORE_SHOP_TYPES = [
2677
- "BASIC",
2678
- "INTERACTIVE",
2679
- "STORYTELLING",
2680
- "MOBILE",
2681
- "CATALOG",
2682
- "LOOKBOOK"
2683
- ];
2684
- const storeShopTypeSchema = z.enum(STORE_SHOP_TYPES);
2685
2790
  /**
2686
2791
  * AI 상점 만들기 질문 화면의 답(#124, 2026-10-13) — 화면이 고정 질문으로 모은다. 초안과 함께 첫 메시지가 된다.
2687
2792
  * 배송비는 묻지 않는다(설정하지 않으면 무료배송). `slug`는 바라는 주소이고 쓸 수 있는지는 에이전트가 사이트를 만들 때 확인한다
@@ -2712,7 +2817,9 @@ const sendAiMessageRequestSchema = z.object({
2712
2817
  /** 선택지 버튼으로 보낸 답이면 그 값(화면 표시는 `text`) */
2713
2818
  choice: z.string().max(200).optional(),
2714
2819
  /** 편집 미리보기에서 고른 요소(#65) — 모델은 이 요소를 기준으로 고친다 */
2715
- selection: aiPreviewSelectionSchema.optional()
2820
+ selection: aiPreviewSelectionSchema.optional(),
2821
+ /** 디자인 탭에서 고른 아트보드(2026-10-14) — 모델은 그 아트보드를 기준으로 고친다 */
2822
+ designSelection: aiDesignSelectionSchema.optional()
2716
2823
  }).refine((body) => body.text.length > 0 || body.attachments.length > 0, { message: "내용이나 첨부가 있어야 합니다" });
2717
2824
  const sendAiMessageResponseSchema = aiStreamAccessSchema.extend({ messageId: z.string() });
2718
2825
  /**
@@ -2848,16 +2955,24 @@ const aiStreamEventSchema = z.discriminatedUnion("type", [
2848
2955
  type: z.literal("choices"),
2849
2956
  messageId: z.string(),
2850
2957
  question: z.string(),
2851
- options: z.array(z.object({
2852
- label: z.string(),
2853
- value: z.string()
2854
- }))
2958
+ options: z.array(aiChoiceOptionSchema)
2855
2959
  }),
2856
2960
  z.object({
2857
2961
  type: z.literal("business_form"),
2858
2962
  messageId: z.string(),
2859
2963
  question: z.string()
2860
2964
  }),
2965
+ z.object({
2966
+ type: z.literal("setup_confirm"),
2967
+ messageId: z.string(),
2968
+ items: z.array(aiSetupConfirmItemSchema),
2969
+ templateId: z.string().max(64).optional()
2970
+ }),
2971
+ z.object({
2972
+ type: z.literal("design_confirm"),
2973
+ messageId: z.string(),
2974
+ boards: z.array(aiDesignConfirmBoardSchema)
2975
+ }),
2861
2976
  z.object({
2862
2977
  type: z.literal("approval"),
2863
2978
  messageId: z.string(),
@@ -3238,7 +3353,8 @@ const STORE_SCOPE_RESOURCES = {
3238
3353
  audit: ["r"],
3239
3354
  promotion: ["r", "rw"],
3240
3355
  storefront: ["r", "rw"],
3241
- flow: ["r", "rw"]
3356
+ flow: ["r", "rw"],
3357
+ inventory: ["r", "rw"]
3242
3358
  };
3243
3359
  const storeScopeResourceSchema = z.enum(Object.keys(STORE_SCOPE_RESOURCES)).describe("스코프 리소스");
3244
3360
  /** 카탈로그상 존재하는 스코프 문자열인가 (예: `settlement:rw`는 false) */
@@ -3268,7 +3384,8 @@ const STORE_ROLE_SCOPES = {
3268
3384
  "audit:r",
3269
3385
  "promotion:rw",
3270
3386
  "storefront:rw",
3271
- "flow:rw"
3387
+ "flow:rw",
3388
+ "inventory:rw"
3272
3389
  ],
3273
3390
  ADMIN: [
3274
3391
  "product:rw",
@@ -3285,7 +3402,8 @@ const STORE_ROLE_SCOPES = {
3285
3402
  "audit:r",
3286
3403
  "promotion:rw",
3287
3404
  "storefront:rw",
3288
- "flow:rw"
3405
+ "flow:rw",
3406
+ "inventory:rw"
3289
3407
  ],
3290
3408
  STAFF: [
3291
3409
  "product:rw",
@@ -3296,7 +3414,8 @@ const STORE_ROLE_SCOPES = {
3296
3414
  "review:rw",
3297
3415
  "customer:r",
3298
3416
  "promotion:r",
3299
- "flow:r"
3417
+ "flow:r",
3418
+ "inventory:rw"
3300
3419
  ]
3301
3420
  };
3302
3421
  //#endregion
@@ -3369,6 +3488,10 @@ const SCOPE_DESCRIPTIONS = {
3369
3488
  flow: {
3370
3489
  r: "주문 흐름 설정을 읽습니다",
3371
3490
  rw: "주문 흐름을 만들고 수정합니다"
3491
+ },
3492
+ inventory: {
3493
+ r: "위치별 재고와 재고 변동 내역을 읽습니다",
3494
+ rw: "재고를 조정·실사하고 위치 사이에서 이동합니다"
3372
3495
  }
3373
3496
  };
3374
3497
  /** `{resource}:{r|rw}` → 문장. 카탈로그에 없는 스코프는 null */
@@ -4557,7 +4680,30 @@ const reviewWebhookEventDataSchema = z.object({
4557
4680
  });
4558
4681
  const productOutOfStockWebhookEventDataSchema = z.object({
4559
4682
  productId: z.string().describe("상품 ID"),
4560
- variantId: z.string().describe("재고가 0이 된 판매 단위(variant) ID. 주문 상품의 `optionId`와 같은 값 공간이다")
4683
+ variantId: z.string().describe("재고가 0이 된 판매 단위(variant) ID. 주문 상품의 `optionId`와 같은 값 공간이다"),
4684
+ inventoryLocationId: z.string().optional().describe("재고가 0이 된 재고 위치 ID. 품절은 위치별 가용 재고의 0 전이다. 위치를 하나만 쓰는 상점은 기본 위치다(옛 이벤트에는 없다)")
4685
+ });
4686
+ /**
4687
+ * 위치별 재고 변화(이슈 #132) — 재고 변동 내역 한 행마다 한 건이다. 같은 위치·조합의 순서는 `levelVersion`(빈 번호 없음)으로 맞추고,
4688
+ * 상점 전체 순서는 `movementSeq`(재고 변동 내역 조회의 `after` 커서와 같은 값)다. 자기가 한 조정의 반향은 `actorType`·`actorId`·`operationId`로 거른다.
4689
+ * 출고 대기·실재고(상태 전이) 변화는 이벤트를 내지 않는다 — 필요하면 위치별 재고 조회를 다시 읽는다
4690
+ */
4691
+ const inventoryChangedWebhookEventDataSchema = z.object({
4692
+ productId: z.string().describe("상품 ID"),
4693
+ variantId: z.string().describe("판매 단위(variant) ID. 주문 상품의 `optionId`와 같은 값 공간이다"),
4694
+ inventoryLocationId: z.string().describe("재고 위치 ID"),
4695
+ available: z.number().int().describe("변화 뒤 가용 재고"),
4696
+ delta: z.number().int().describe("가용 재고 변화량(0이 아니다)"),
4697
+ kind: z.string().describe("변동 종류 — `OPENING`·`SALE`·`RESTORE`·`REVERT`·`EXCHANGE_OUT`·`ADJUST`·`COUNT`·`TRANSFER_OUT`·`TRANSFER_IN`·`REMOVED`. 값이 늘 수 있다"),
4698
+ reason: z.string().nullable().describe("조정·실사 사유 코드. 없으면 null"),
4699
+ levelVersion: z.number().int().describe("위치별 재고 행의 버전 — 같은 위치·조합 안에서 빈 번호 없이 오른다"),
4700
+ movementSeq: z.number().int().describe("상점별 재고 변동 내역 순번"),
4701
+ actorType: z.string().describe("행위자 유형 — `seller`·`app`·`agent`·`system`"),
4702
+ actorId: z.string().nullable().describe("행위자 ID. 시스템이면 null"),
4703
+ refType: z.string().nullable().describe("출처 유형 — `order_item`·`claim`·`operation`. 없으면 null"),
4704
+ refId: z.string().nullable().describe("출처 ID"),
4705
+ operationId: z.string().nullable().describe("재고 조정·이동 요청 ID. 조정·이동이 아니면 null"),
4706
+ occurredAt: z.string().describe("변화 시각")
4561
4707
  });
4562
4708
  const orderWebhookEventSchema = z.object({
4563
4709
  ...envelopeFields,
@@ -4606,6 +4752,11 @@ const productOutOfStockWebhookEventSchema = z.object({
4606
4752
  type: z.literal("PRODUCT.OUT_OF_STOCK"),
4607
4753
  data: productOutOfStockWebhookEventDataSchema
4608
4754
  });
4755
+ const inventoryChangedWebhookEventSchema = z.object({
4756
+ ...envelopeFields,
4757
+ type: z.literal("INVENTORY.CHANGED"),
4758
+ data: inventoryChangedWebhookEventDataSchema
4759
+ });
4609
4760
  /**
4610
4761
  * 플로우 알림(이슈 #115) — 상점이 플로우에 둔 알림 블록(`core.notify`, 채널 `webhook`)이 보낸다. 구매자 알림(알림톡·메일)은 이 이벤트를 받아
4611
4762
  * 상점이 보낸다(플랫폼은 구매자에게 직접 보내지 않는다). 개인정보는 싣지 않는다
@@ -4653,7 +4804,8 @@ const webhookEventSchema = z.discriminatedUnion("type", [
4653
4804
  reviewWebhookEventSchema,
4654
4805
  productOutOfStockWebhookEventSchema,
4655
4806
  flowNotificationWebhookEventSchema,
4656
- flowStateChangedWebhookEventSchema
4807
+ flowStateChangedWebhookEventSchema,
4808
+ inventoryChangedWebhookEventSchema
4657
4809
  ]).describe("웹훅 요청 본문 (얇은 이벤트). 개인정보를 싣지 않으며 `data`의 id로 관리 API를 조회한다");
4658
4810
  /**
4659
4811
  * 알려진 웹훅 이벤트 타입 — `webhookEventSchema`의 판별 값 목록(이 SDK 버전이 아는 것).
@@ -4769,6 +4921,7 @@ const APP_EVENT_SCOPES = {
4769
4921
  "INQUIRY.CREATED": "inquiry:r",
4770
4922
  "REVIEW.CREATED": "review:r",
4771
4923
  "PRODUCT.OUT_OF_STOCK": "product:r",
4924
+ "INVENTORY.CHANGED": "inventory:r",
4772
4925
  "APP.INSTALLED": null,
4773
4926
  "APP.UNINSTALLED": null,
4774
4927
  "APP.SETTINGS_UPDATED": null,
@@ -5314,7 +5467,8 @@ const eventTypeSchema = z.enum([
5314
5467
  "REVIEW.CREATED",
5315
5468
  "PRODUCT.OUT_OF_STOCK",
5316
5469
  "ORDER.FLOW_NOTIFICATION",
5317
- "ORDER.FLOW_STATE_CHANGED"
5470
+ "ORDER.FLOW_STATE_CHANGED",
5471
+ "INVENTORY.CHANGED"
5318
5472
  ]).describe("웹훅 이벤트 타입. `ORDER.ADDRESS_CHANGE_REQUESTED`는 현재 발송하지 않음(호환을 위해 값만 남았고, 구독해도 이벤트가 오지 않는다)");
5319
5473
  const webhookStatusSchema = z.enum(["ACTIVE", "SUSPENDED"]).describe("구독 상태. `ACTIVE`=발송 대상, `SUSPENDED`=24시간 이상 연속 전송 실패로 발송이 정지된 상태. 정지 중 발생한 이벤트는 적재하지 않는다. 재개(`POST /webhooks/{id}/resume`)하거나 구독을 수정하면 ACTIVE로 돌아간다");
5320
5474
  const webhookSchema = z.object({
@@ -7799,6 +7953,149 @@ const customerWithdrawalBlockedDetailsSchema = z.object({
7799
7953
  pendingPayments: z.number().int()
7800
7954
  });
7801
7955
  //#endregion
7956
+ //#region src/schemas/inventory.ts
7957
+ /**
7958
+ * 위치별 재고 (이슈 #132) — 재고 위치(창고·상설 매장·팝업 매장)마다 조합의 가용 재고를 따로 센다. 출고지·반품지·픽업 장소가 위치를
7959
+ * 가리키고, 배송 주문은 출고지 위치에서, 방문 수령 주문은 그 매장 위치에서 뺀다. 위치를 하나만 쓰는 상점은 기본 위치 하나다.
7960
+ *
7961
+ * - 가용 재고(`available`)는 지금 팔 수 있는 수량이다(팔린 미출고분이 이미 빠진 수). 저장하는 값이다.
7962
+ * - 출고 대기(`pendingFulfillment`)는 그 위치에 할당됐고 아직 출고 전(주문상품 `PAID`·`CONFIRMED`)인 수량이다.
7963
+ * - 실재고(`onHand`)는 가용 재고 + 출고 대기다. 위치에 실제로 있어야 하는 수량이다.
7964
+ * - 상품·옵션 API의 `stockQuantity`는 그 상품 기준 위치의 가용 재고다(이름·뜻 유지).
7965
+ */
7966
+ /** 재고 조정 사유 — `COUNT`는 실사 줄(`counted`)이 쓴다 */
7967
+ const inventoryAdjustmentReasonSchema = z.enum([
7968
+ "RECEIVED",
7969
+ "DAMAGED",
7970
+ "LOST",
7971
+ "FOUND",
7972
+ "RETURN_RESTOCK",
7973
+ "CORRECTION",
7974
+ "COUNT"
7975
+ ]).describe("조정 사유 — 입고 `RECEIVED`, 파손 `DAMAGED`, 분실 `LOST`, 재발견 `FOUND`, 반품 재입고 `RETURN_RESTOCK`, 정정 `CORRECTION`, 실사 `COUNT`");
7976
+ const inventoryLocationSchema = z.object({
7977
+ inventoryLocationId: z.string(),
7978
+ name: z.string().describe("위치 이름(예: 본사 창고, 성수 팝업)"),
7979
+ isDefault: z.boolean().describe("기본 위치인가 — 상점마다 하나이고 삭제할 수 없다. 기존 재고가 있는 곳이다"),
7980
+ sortOrder: z.number().int(),
7981
+ createdAt: z.string(),
7982
+ updatedAt: z.string()
7983
+ });
7984
+ const inventoryLocationRequestSchema = z.strictObject({
7985
+ name: z.string().trim().min(1).max(50),
7986
+ sortOrder: z.number().int().min(0).max(1e4).optional()
7987
+ });
7988
+ const inventoryLevelSchema = z.object({
7989
+ productId: z.string(),
7990
+ variantId: z.string().describe("판매 단위(variant) ID. 주문 상품의 `optionId`와 같은 값 공간이다"),
7991
+ inventoryLocationId: z.string(),
7992
+ available: z.number().int().describe("가용 재고"),
7993
+ pendingFulfillment: z.number().int().describe("출고 대기 — 할당됐고 아직 출고 전인 수량"),
7994
+ onHand: z.number().int().describe("실재고 — 가용 재고 + 출고 대기"),
7995
+ version: z.number().int().describe("쓰기마다 1씩 오르는 버전(`INVENTORY.CHANGED`의 `levelVersion`)"),
7996
+ updatedAt: z.string()
7997
+ });
7998
+ const inventoryLevelListQuerySchema = z.object({
7999
+ inventoryLocationId: z.string().optional(),
8000
+ productId: z.string().optional(),
8001
+ variantId: z.string().optional(),
8002
+ cursor: z.string().optional().describe("이전 응답의 `nextCursor`. 생략하면 처음부터"),
8003
+ limit: z.coerce.number().int().min(1).max(200).optional().describe("한 쪽 크기(기본 100)")
8004
+ });
8005
+ const inventoryLevelPageSchema = z.object({
8006
+ contents: z.array(inventoryLevelSchema),
8007
+ nextCursor: z.string().nullable().describe("다음 페이지 커서. 마지막 페이지면 null")
8008
+ });
8009
+ const inventoryMovementKindSchema = z.enum([
8010
+ "OPENING",
8011
+ "SALE",
8012
+ "RESTORE",
8013
+ "REVERT",
8014
+ "EXCHANGE_OUT",
8015
+ "ADJUST",
8016
+ "COUNT",
8017
+ "TRANSFER_OUT",
8018
+ "TRANSFER_IN",
8019
+ "REMOVED"
8020
+ ]).describe("변동 종류 — 시작 `OPENING`, 판매 `SALE`, 복원 `RESTORE`, 복원 되돌리기 `REVERT`, 교환 출고 `EXCHANGE_OUT`, 조정 `ADJUST`, 실사 `COUNT`, 이동 출고 `TRANSFER_OUT`, 이동 입고 `TRANSFER_IN`, 조합 삭제 `REMOVED`");
8021
+ const inventoryMovementSchema = z.object({
8022
+ movementId: z.string(),
8023
+ seq: z.number().int().describe("상점별 순번 — 커밋 순서와 같고 빈 번호가 없다. `after` 커서에 쓴다"),
8024
+ productId: z.string(),
8025
+ variantId: z.string(),
8026
+ inventoryLocationId: z.string(),
8027
+ kind: z.string().describe("변동 종류(`inventoryMovementKindSchema`). 값이 늘 수 있다"),
8028
+ delta: z.number().int().describe("가용 재고 변화량"),
8029
+ available: z.number().int().describe("변화 뒤 가용 재고"),
8030
+ levelVersion: z.number().int(),
8031
+ reason: z.string().nullable(),
8032
+ note: z.string().nullable(),
8033
+ refType: z.string().nullable().describe("출처 유형 — `order_item`·`claim`·`operation`"),
8034
+ refId: z.string().nullable(),
8035
+ operationId: z.string().nullable().describe("재고 조정·이동 요청 ID"),
8036
+ actorType: z.string().describe("행위자 유형 — `seller`·`app`·`agent`·`system`"),
8037
+ actorId: z.string().nullable(),
8038
+ createdAt: z.string()
8039
+ });
8040
+ const inventoryMovementListQuerySchema = z.object({
8041
+ inventoryLocationId: z.string().optional(),
8042
+ productId: z.string().optional(),
8043
+ variantId: z.string().optional(),
8044
+ kind: inventoryMovementKindSchema.optional(),
8045
+ after: z.coerce.number().int().min(0).optional().describe("이 순번 다음부터(오름차순). 생략하면 처음부터"),
8046
+ from: z.string().optional().describe("이 시각 이후(ISO 8601)"),
8047
+ to: z.string().optional().describe("이 시각 이전(ISO 8601)"),
8048
+ limit: z.coerce.number().int().min(1).max(200).optional().describe("한 쪽 크기(기본 100)")
8049
+ });
8050
+ const inventoryMovementPageSchema = z.object({
8051
+ contents: z.array(inventoryMovementSchema),
8052
+ nextAfter: z.number().int().nullable().describe("다음 쪽의 `after` 값. 더 없으면 null(새 변동을 기다릴 때는 마지막 `seq`를 그대로 쓴다)")
8053
+ });
8054
+ /** 한 요청의 줄 상한 — 30초 타임아웃·바인드 한도 */
8055
+ const MAX_INVENTORY_OPERATION_LINES = 200;
8056
+ const inventoryAdjustmentLineSchema = z.strictObject({
8057
+ variantId: z.string().min(1),
8058
+ inventoryLocationId: z.string().min(1).optional().describe("생략하면 기본 위치"),
8059
+ delta: z.number().int().refine((value) => value !== 0, { message: "delta는 0이 아니어야 합니다" }).optional().describe("가용 재고 증감. 감소는 가용 재고를 넘지 않는다"),
8060
+ counted: z.number().int().min(0).optional().describe("실사 — 센 실물 수량. 실재고가 이 값이 되도록 가용 재고를 맞춘다(센 값 − 출고 대기)")
8061
+ }).refine((line) => line.delta === void 0 !== (line.counted === void 0), { message: "줄마다 delta와 counted 중 하나만 줍니다" });
8062
+ const inventoryAdjustmentRequestSchema = z.strictObject({
8063
+ lines: z.array(inventoryAdjustmentLineSchema).min(1).max(200),
8064
+ reason: inventoryAdjustmentReasonSchema.optional().describe("증감 줄(`delta`)의 사유. 실사 줄은 늘 `COUNT`다. 증감 줄이 있으면 필수"),
8065
+ note: z.string().trim().max(500).optional(),
8066
+ reference: z.string().trim().max(100).optional().describe("외부 참조(입고서 번호 등)")
8067
+ });
8068
+ const inventoryTransferRequestSchema = z.strictObject({
8069
+ fromInventoryLocationId: z.string().min(1),
8070
+ toInventoryLocationId: z.string().min(1),
8071
+ lines: z.array(z.strictObject({
8072
+ variantId: z.string().min(1),
8073
+ quantity: z.number().int().min(1)
8074
+ })).min(1).max(200),
8075
+ note: z.string().trim().max(500).optional()
8076
+ });
8077
+ const inventoryOperationResultSchema = z.object({
8078
+ operationId: z.string(),
8079
+ kind: z.enum(["ADJUSTMENT", "TRANSFER"]),
8080
+ lines: z.array(z.object({
8081
+ variantId: z.string(),
8082
+ inventoryLocationId: z.string(),
8083
+ delta: z.number().int().describe("적용한 가용 재고 변화량(실사는 맞춘 차이, 같으면 0)"),
8084
+ available: z.number().int().describe("적용 뒤 가용 재고")
8085
+ })),
8086
+ createdAt: z.string()
8087
+ });
8088
+ /** 수거 완료의 재입고 지정(Q3) — 생략하면 조합은 할당 순서(교환 → 판매), 위치는 반품지에 연결된 위치 → 할당 위치다 */
8089
+ const claimCollectCompleteRequestSchema = z.object({ restock: z.object({
8090
+ optionId: z.string().min(1).optional().describe("돌아온 조합 — 그 주문상품의 할당 조합이어야 한다(아니면 400 `INVALID_RESTOCK_OPTION`)"),
8091
+ inventoryLocationId: z.string().min(1).optional().describe("재입고할 재고 위치")
8092
+ }).optional() });
8093
+ const claimRedeliveryRequestSchema = z.object({
8094
+ carrierCode: z.string().min(1),
8095
+ trackingNumber: z.string().min(1),
8096
+ inventoryLocationId: z.string().min(1).optional().describe("교환품을 보낼 재고 위치. 생략하면 그 상품의 기준 위치")
8097
+ });
8098
+ //#endregion
7802
8099
  //#region src/schemas/login.ts
7803
8100
  /** 소셜 로그인 공급자 */
7804
8101
  const loginProviderSchema = z.enum([
@@ -7854,7 +8151,20 @@ const loginProviderTestSchema = z.object({
7854
8151
  * 웹훅 시크릿)은 저장 후 다시 조회할 수 없다. 응답에는 앞 4자리 마스킹만 나온다. 공개 값
7855
8152
  * (클라이언트 키·Store ID·채널 키)은 원래 브라우저 결제창에 노출되는 값이라 그대로 돌려준다.
7856
8153
  */
7857
- const pgProviderSchema = z.enum(["tosspayments", "portone"]).describe("PG 식별자. `tosspayments`=토스페이먼츠, `portone`=포트원(V2)");
8154
+ const pgProviderSchema = z.enum([
8155
+ "tosspayments",
8156
+ "portone",
8157
+ "kakaopay",
8158
+ "naverpay"
8159
+ ]).describe("PG 식별자. `tosspayments`=토스페이먼츠, `portone`=포트원(V2), `kakaopay`=카카오페이(직접 연동), `naverpay`=네이버페이 결제형(직접 연동)");
8160
+ /**
8161
+ * 간편결제 전용 PG — 결제수단이 간편결제 하나이고 간편결제사가 PG 자신이다(`kakaopay` → `KAKAOPAY`).
8162
+ * 이 PG는 `easyPayProviders` 설정 없이 결제 옵션이 하나(`EASY_PAY` + 그 간편결제사) 나온다
8163
+ */
8164
+ const DEDICATED_EASY_PAY_PROVIDER = {
8165
+ kakaopay: "KAKAOPAY",
8166
+ naverpay: "NAVERPAY"
8167
+ };
7858
8168
  const pgPaymentMethodSchema = z.enum([
7859
8169
  "CARD",
7860
8170
  "BANK_TRANSFER",
@@ -7925,6 +8235,17 @@ const portOneCredentialsInputSchema = z.object({
7925
8235
  apiSecret: secretInput().optional().describe("V2 API Secret. 비밀 값. 최초 연결 시 필수, 수정 시 생략하면 기존 값을 유지한다"),
7926
8236
  webhookSecret: secretInput().nullable().optional().describe("웹훅 서명 검증용 시크릿. 비밀 값. 생략하면 기존 값 유지, null이면 삭제")
7927
8237
  });
8238
+ /** 카카오페이 테스트 가맹점 코드 — 카카오페이 개발자센터의 단건 결제 테스트 CID */
8239
+ const KAKAOPAY_TEST_CID = "TC0ONETIME";
8240
+ const kakaoPayCredentialsInputSchema = z.object({
8241
+ cid: z.string().trim().min(4).max(20).describe("가맹점 코드(CID). 카카오페이와 계약하면 받는다. 공개 값. 테스트 세트는 `TC0ONETIME`(단건 결제 테스트 CID)을 쓸 수 있다"),
8242
+ secretKey: secretInput().optional().describe("카카오페이 개발자센터 앱의 Secret key(테스트 세트는 dev, 실결제 세트는 운영 키). 비밀 값. 최초 연결 시 필수, 수정 시 생략하면 기존 값을 유지한다")
8243
+ });
8244
+ const naverPayCredentialsInputSchema = z.object({
8245
+ clientId: z.string().trim().min(4).max(100).describe("네이버페이 결제형 가입 후 받은 Client ID. 공개 값 — 결제창에서 쓰인다"),
8246
+ chainId: z.string().trim().min(4).max(100).describe("네이버페이 Chain ID. 공개 값 — 결제창과 API 요청에 쓰인다"),
8247
+ clientSecret: secretInput().optional().describe("Client Secret. 비밀 값. 최초 연결 시 필수, 수정 시 생략하면 기존 값을 유지한다")
8248
+ });
7928
8249
  const upsertEnvironment = () => pgEnvironmentSchema.describe("저장할 자격 증명 세트. PG마다 `TEST`(샌드박스)·`LIVE`(실결제) 세트를 따로 둔다. 어느 세트로 결제할지는 이 값이 아니라 샌드박스 스위치(`sandboxMode`)가 정한다");
7929
8250
  const upsertTossPaymentsProviderRequestSchema = z.object({
7930
8251
  environment: upsertEnvironment(),
@@ -7934,6 +8255,14 @@ const upsertPortOneProviderRequestSchema = z.object({
7934
8255
  environment: upsertEnvironment(),
7935
8256
  credentials: portOneCredentialsInputSchema
7936
8257
  });
8258
+ const upsertKakaoPayProviderRequestSchema = z.object({
8259
+ environment: upsertEnvironment(),
8260
+ credentials: kakaoPayCredentialsInputSchema
8261
+ });
8262
+ const upsertNaverPayProviderRequestSchema = z.object({
8263
+ environment: upsertEnvironment(),
8264
+ credentials: naverPayCredentialsInputSchema
8265
+ });
7937
8266
  const updatePaymentProviderRequestSchema = z.object({
7938
8267
  enabled: z.boolean().optional().describe("사용 여부. 켜려면 활성 환경(샌드박스면 TEST, 아니면 LIVE) 자격 증명이 모두 저장돼 있어야 한다(`PAYMENT_PROVIDER_INCOMPLETE`)"),
7939
8268
  sandboxMode: z.boolean().optional().describe("샌드박스 스위치. `true`면 새 결제에 TEST 세트를 쓴다(항상 허용). `false`(라이브 전환)는 라이브 개방 조건을 모두 충족해야 한다(`LIVE_GATE_NOT_MET`)"),
@@ -7949,10 +8278,18 @@ const maskedSecretSchema = z.object({
7949
8278
  configured: z.boolean().describe("값이 저장돼 있는가"),
7950
8279
  masked: z.string().nullable().describe("앞 4자리만 남긴 마스킹 값 (예: `test****`). 저장되지 않았으면 null")
7951
8280
  });
7952
- const publicConfigSchema = z.union([z.object({ clientKey: z.string() }), z.object({
7953
- storeId: z.string(),
7954
- channels: z.array(portOneChannelSchema)
7955
- })]);
8281
+ const publicConfigSchema = z.union([
8282
+ z.object({ clientKey: z.string() }),
8283
+ z.object({
8284
+ storeId: z.string(),
8285
+ channels: z.array(portOneChannelSchema)
8286
+ }),
8287
+ z.object({ cid: z.string() }),
8288
+ z.object({
8289
+ clientId: z.string(),
8290
+ chainId: z.string()
8291
+ })
8292
+ ]);
7956
8293
  const verificationSchema = z.object({
7957
8294
  result: pgVerificationResultSchema,
7958
8295
  message: z.string().nullable(),
@@ -7960,7 +8297,7 @@ const verificationSchema = z.object({
7960
8297
  });
7961
8298
  const paymentCredentialSetSchema = z.object({
7962
8299
  environment: pgEnvironmentSchema,
7963
- publicConfig: publicConfigSchema.describe("공개 값. 토스페이먼츠는 `{clientKey}`, 포트원은 `{storeId, channels}`"),
8300
+ publicConfig: publicConfigSchema.describe("공개 값. 토스페이먼츠는 `{clientKey}`, 포트원은 `{storeId, channels}`, 카카오페이는 `{cid}`, 네이버페이는 `{clientId, chainId}`"),
7964
8301
  secrets: z.array(maskedSecretSchema).describe("비밀 값의 저장 여부와 마스킹. 평문은 어떤 응답에도 나오지 않는다"),
7965
8302
  lastVerification: verificationSchema.nullable().describe("이 세트의 마지막 연결 테스트 결과. 세트를 바꾸면 초기화된다"),
7966
8303
  updatedAt: z.string()
@@ -7996,7 +8333,7 @@ const paymentProviderSchema = z.object({
7996
8333
  enabled: z.boolean().describe("결제에 사용 중인가"),
7997
8334
  priority: z.number().int().nullable().describe("우선순위 (1이 가장 높다). 연결되지 않았으면 null"),
7998
8335
  environment: pgEnvironmentSchema.nullable().describe("새 결제에 쓰는 환경(활성 환경). 샌드박스 스위치가 켜져 있으면 `TEST`, 꺼져 있으면 `LIVE`. 연결되지 않았으면 null"),
7999
- publicConfig: publicConfigSchema.nullable().describe("활성 환경 세트의 공개 값. 토스페이먼츠는 `{clientKey}`, 포트원은 `{storeId, channels}`. 활성 세트가 없으면 null"),
8336
+ publicConfig: publicConfigSchema.nullable().describe("활성 환경 세트의 공개 값. 토스페이먼츠는 `{clientKey}`, 포트원은 `{storeId, channels}`, 카카오페이는 `{cid}`, 네이버페이는 `{clientId, chainId}`. 활성 세트가 없으면 null"),
8000
8337
  secrets: z.array(maskedSecretSchema).describe("활성 환경 세트의 비밀 값 저장 여부와 마스킹. 평문은 어떤 응답에도 나오지 않는다"),
8001
8338
  lastVerification: verificationSchema.nullable().describe("활성 환경 세트의 마지막 연결 테스트 결과. 세트를 바꾸면 초기화된다"),
8002
8339
  updatedAt: z.string().nullable(),
@@ -8006,6 +8343,8 @@ const paymentProviderSchema = z.object({
8006
8343
  LIVE: paymentCredentialSetSchema.nullable()
8007
8344
  }).describe("환경별 자격 증명 세트. 등록되지 않은 세트는 null"),
8008
8345
  liveGate: liveGateSchema.describe("라이브 개방 조건. 조건을 모두 충족해야 샌드박스를 끌 수 있다"),
8346
+ platformTestKeys: z.boolean().optional().default(false).describe("테스트모드 키 활성화. `true`면 TEST 세트가 sayren 지정 테스트 키로 고정된다(TEST 세트를 직접 저장·제거하면 409 `PLATFORM_TEST_KEYS_ENABLED`)"),
8347
+ platformTestKeysAvailable: z.boolean().optional().default(false).describe("이 PG에 sayren 지정 테스트 키가 있어 테스트모드 키를 켤 수 있는가"),
8009
8348
  easyPayProviders: z.array(easyPayProviderResponseSchema).describe("이 PG로 받는 간편결제사. 연결되지 않았으면 빈 목록. 현재 값은 `NAVERPAY`·`KAKAOPAY`·`TOSSPAY`·`PAYCO`이고 값이 추가될 수 있어 문자열로 받는다"),
8010
8349
  retiredCredentialCount: z.number().int().describe("보관된(가맹점 교체·연결 해제로 새 결제에 더 쓰이지 않는) 자격 증명 수. 그 가맹점으로 받은 결제의 환불·대사에 계속 쓰인다"),
8011
8350
  routingExclusion: z.string().nullable().optional().default(null).describe("지금 새 결제의 후보가 아닌 사유. 후보면 null. 판정 원천은 서버 라우팅이다(상점 플랫폼이 다시 계산하지 않는다). 후보가 아닌 PG에는 항상 사유 코드를 붙인다(연결 안 된 PG 포함) — 모든 PG는 `candidates`에 있거나 이 값이 null이 아니다. 현재 값: `NOT_CONNECTED`(연결 안 됨) · `DISABLED`(사용 중지) · `CREDENTIAL_MISSING`(활성 환경 자격 증명 없음) · `SANDBOX_IN_LIVE_STORE`(다른 PG가 라이브라 이 샌드박스 PG는 실구매자 결제에 쓰지 않음) · `PLATFORM_BLOCKED`(플랫폼이 실결제를 막음) · `MODE_MISMATCH`(라이브를 연 서버 모드와 현재 모드가 다름). 값이 추가될 수 있어 문자열로 받는다 — 모르는 값은 후보 아님으로 다룬다. 서버는 항상 싣는다. 이 필드가 없는 이전 서버 응답은 기본값(null)으로 읽는다")
@@ -8038,7 +8377,8 @@ const paymentFailureWarningSchema = z.object({
8038
8377
  });
8039
8378
  const paymentSettingsSchema = z.object({
8040
8379
  checkoutOrigins: z.array(z.string()).describe("결제 도메인 — 결제를 마친 구매자가 돌아올 스토어프론트 origin 목록"),
8041
- providers: z.array(paymentProviderSchema).describe("지원하는 모든 PG. 연결된 것은 우선순위순, 연결되지 않은 것은 뒤에 온다"),
8380
+ providers: z.array(paymentProviderSchema).describe("연결된 PG(우선순위순)와 연결되지 않은 토스페이먼츠·포트원. 카카오페이·네이버페이는 연결했을 때만 여기에 온다(이 PG를 모르는 이전 SDK가 응답을 읽을 수 있게). 연결할 수 있는 PG 전체는 `connectableProviders`다"),
8381
+ connectableProviders: z.array(paymentProviderSchema).optional().default(() => []).describe("연결되지 않은 PG 전체(카카오페이·네이버페이 포함). 서버는 항상 싣는다. 이 필드가 없는 이전 서버 응답은 기본값(빈 배열)으로 읽는다"),
8042
8382
  environment: pgEnvironmentSchema.nullable().optional().default(null).describe("지금 결제를 시작하면 쓰는 결제 환경. 사용 가능한 PG 중 하나라도 라이브면 `LIVE`(샌드박스 PG는 제외), 아니면 `TEST`. 사용 가능한 PG가 없으면 null. 서버는 항상 싣는다. 이 필드가 없는 이전 서버 응답은 기본값(null)으로 읽는다"),
8043
8383
  candidates: z.array(z.string()).optional().default(() => []).describe("지금 결제를 시작하면 쓰는 PG, 우선순위순(`tosspayments`·`portone`). 비어 있으면 구매자가 결제할 수 없다. 빠진 PG의 사유는 `providers[].routingExclusion` — 후보가 아닌 PG에는 항상 사유 코드를 붙인다. 서버는 항상 싣는다. 이 필드가 없는 이전 서버 응답은 기본값(빈 배열)으로 읽는다"),
8044
8384
  warnings: z.array(paymentFailureWarningSchema).optional().default(() => []).describe("최근 24시간 안에 같은 PG·결제수단·간편결제사가 가맹점 설정 문제로 3번 이상 실패한 조합, 마지막 실패가 최근인 순. 판정 규칙은 서버가 정하고 바뀔 수 있다. 서버는 항상 싣는다. 이 필드가 없는 이전 서버 응답은 기본값(빈 배열)으로 읽는다")
@@ -8215,6 +8555,23 @@ const paymentListQuerySchema = z.object({
8215
8555
  page: z.string().optional().describe("페이지 번호 (1부터)"),
8216
8556
  size: z.string().optional().describe("페이지 크기 (기본 20, 최대 100)")
8217
8557
  });
8558
+ /** 테스트모드 키 활성화 요청(2026-10-14) — `PUT /v1/store/payment-providers/{provider}/platform-test-keys` */
8559
+ const setPlatformTestKeysRequestSchema = z.object({ enabled: z.boolean().describe("`true`면 sayren 지정 테스트 키를 TEST 세트로 저장하고 PG를 켠다. `false`면 고정만 푼다(TEST 세트는 그대로)") });
8560
+ /** 결제 상태 PG 한 줄 — 비밀 값·공개 키 없이 연결·사용·환경·테스트모드 키만 */
8561
+ const paymentStatusProviderSchema = z.object({
8562
+ provider: pgProviderSchema,
8563
+ displayName: z.string(),
8564
+ connected: z.boolean().describe("자격 증명이 저장돼 있는가"),
8565
+ enabled: z.boolean().describe("결제에 사용 중인가"),
8566
+ environment: pgEnvironmentSchema.nullable().describe("새 결제에 쓰는 환경. 연결되지 않았으면 null"),
8567
+ platformTestKeys: z.boolean().describe("테스트모드 키 활성화 여부"),
8568
+ platformTestKeysAvailable: z.boolean().describe("sayren 지정 테스트 키로 바로 켤 수 있는가")
8569
+ });
8570
+ /** 결제 상태(2026-10-14) — `GET /v1/store/payment-status`. 지원 PG 전체와 상점의 연결 상태 */
8571
+ const paymentStatusSchema = z.object({
8572
+ environment: pgEnvironmentSchema.nullable().describe("새 결제 세션의 환경(사용 중인 PG 기준). 쓸 수 있는 PG가 없으면 null"),
8573
+ providers: z.array(paymentStatusProviderSchema).describe("sayren이 지원하는 PG 전체(연결 안 된 PG 포함)")
8574
+ });
8218
8575
  //#endregion
8219
8576
  //#region src/schemas/order.ts
8220
8577
  const orderSummarySchema = z.object({
@@ -9240,10 +9597,13 @@ function createStoreClient(options) {
9240
9597
  }),
9241
9598
  reject: (claimId, body) => storeHttp.requestVoid("POST", path`/claims/${claimId}/reject`, { body: rejectClaimRequestSchema.parse(body) }),
9242
9599
  registerCollect: (claimId, body) => storeHttp.requestVoid("POST", path`/claims/${claimId}/collect`, { body }),
9243
- completeCollect: (claimId) => storeHttp.requestVoid("POST", path`/claims/${claimId}/collect/complete`),
9244
- registerRedelivery: (claimId, carrierCode, trackingNumber) => storeHttp.requestVoid("POST", path`/claims/${claimId}/redelivery`, { body: {
9600
+ /** 수거 완료 — `restock`(이슈 #132)으로 돌아온 조합·재입고 위치를 지정한다. 생략하면 할당 순서·반품지 위치다 */
9601
+ completeCollect: (claimId, body) => storeHttp.requestVoid("POST", path`/claims/${claimId}/collect/complete`, { ...body ? { body: claimCollectCompleteRequestSchema.parse(body) } : {} }),
9602
+ /** 교환 재배송 — `inventoryLocationId`(이슈 #132)로 교환품을 보낼 위치를 지정한다. 생략하면 그 상품의 기준 위치다 */
9603
+ registerRedelivery: (claimId, carrierCode, trackingNumber, options = {}) => storeHttp.requestVoid("POST", path`/claims/${claimId}/redelivery`, { body: {
9245
9604
  carrierCode,
9246
- trackingNumber
9605
+ trackingNumber,
9606
+ ...options.inventoryLocationId ? { inventoryLocationId: options.inventoryLocationId } : {}
9247
9607
  } }),
9248
9608
  hold: (claimId, reason) => storeHttp.request("POST", path`/claims/${claimId}/hold`, claimHoldResultSchema, { body: { reason } }),
9249
9609
  releaseHold: (claimId) => storeHttp.requestVoid("DELETE", path`/claims/${claimId}/hold`),
@@ -9416,6 +9776,16 @@ get: (params) => storeHttp.request("GET", "/sales-report", salesReportSchema, {
9416
9776
  */
9417
9777
  upsertPortOne: (body) => storeHttp.request("PUT", "/store/payment-providers/portone", paymentProviderSchema, { body: upsertPortOneProviderRequestSchema.parse(body) }),
9418
9778
  /**
9779
+ * `PUT /v1/store/payment-providers/kakaopay` — 카카오페이(직접 연동) 자격 증명 세트 저장. 규칙·에러는 `upsertTossPayments`와 같다
9780
+ * (가맹점 식별자는 `cid`, 비밀 필드는 `secretKey`). 결제 옵션은 간편결제(`KAKAOPAY`) 하나다.
9781
+ */
9782
+ upsertKakaoPay: (body) => storeHttp.request("PUT", "/store/payment-providers/kakaopay", paymentProviderSchema, { body: upsertKakaoPayProviderRequestSchema.parse(body) }),
9783
+ /**
9784
+ * `PUT /v1/store/payment-providers/naverpay` — 네이버페이 결제형(직접 연동) 자격 증명 세트 저장. 규칙·에러는 `upsertTossPayments`와 같다
9785
+ * (가맹점 식별자는 `clientId`, 비밀 필드는 `clientSecret`). 결제 옵션은 간편결제(`NAVERPAY`) 하나다.
9786
+ */
9787
+ upsertNaverPay: (body) => storeHttp.request("PUT", "/store/payment-providers/naverpay", paymentProviderSchema, { body: upsertNaverPayProviderRequestSchema.parse(body) }),
9788
+ /**
9419
9789
  * `PATCH /v1/store/payment-providers/{provider}` — 사용 여부(`enabled`)·샌드박스 스위치(`sandboxMode`) 변경.
9420
9790
  * 하나 이상 보내야 한다(아니면 요청 전에 ZodError). 검증을 모두 통과해야 한 번에 적용된다(부분 적용 없음).
9421
9791
  * 끈 PG로 승인된 결제의 환불은 계속 그 PG로 간다.
@@ -9436,6 +9806,13 @@ get: (params) => storeHttp.request("GET", "/sales-report", salesReportSchema, {
9436
9806
  */
9437
9807
  setSandboxMode: (provider, sandboxMode) => updatePaymentProvider(provider, { sandboxMode }),
9438
9808
  /**
9809
+ * `PUT /v1/store/payment-providers/{provider}/platform-test-keys` — 테스트모드 키 활성화. 켜면 sayren 지정 테스트 키를 TEST 세트로 저장하고 PG를 켠다
9810
+ * (OWNER·ADMIN, 에이전트도 쓸 수 있다). 에러: 409 `PLATFORM_TEST_KEYS_UNAVAILABLE`(그 PG의 지정 테스트 키가 없다)
9811
+ */
9812
+ setPlatformTestKeys: (provider, enabled) => storeHttp.request("PUT", path`/store/payment-providers/${pgProviderSchema.parse(provider)}/platform-test-keys`, paymentStatusProviderSchema, { body: setPlatformTestKeysRequestSchema.parse({ enabled }) }),
9813
+ /** `GET /v1/store/payment-status` — 지원 PG와 연결·사용·테스트모드 키 상태(비밀 값 없음, OWNER·ADMIN·에이전트) */
9814
+ status: () => storeHttp.request("GET", "/store/payment-status", paymentStatusSchema),
9815
+ /**
9439
9816
  * `DELETE /v1/store/payment-providers/{provider}` (204) — 연결 해제. 결제 이력과 무관하게 허용된다.
9440
9817
  * 모든 세트는 보관되고 PG 설정에서 사라진다. 이미 받은 결제의 취소·환불·대사는 보관된 자격 증명으로 계속 처리된다.
9441
9818
  * 404 `PAYMENT_PROVIDER_NOT_FOUND`.
@@ -9583,6 +9960,30 @@ list: (params) => storeHttp.request("GET", "/audit-logs", auditLogPageSchema, {
9583
9960
  setDefault: (addressId) => storeHttp.requestVoid("POST", path`/seller-addresses/${addressId}/default`)
9584
9961
  },
9585
9962
  /** 픽업 장소 (이슈 #115) — 방문 수령 주문의 수령 장소. 조회 `store:r`, 쓰기 `store:rw`(상점 플랫폼 OWNER·ADMIN) */
9963
+ /**
9964
+ * 위치별 재고 (이슈 #132) — 재고 위치·위치별 가용 재고·재고 조정·실사·이동·변동 내역. 위치 쓰기는 상점 설정 표면(상점 플랫폼 OWNER·ADMIN)이고
9965
+ * 조회는 `inventory:r`, 조정·이동은 `inventory:rw`다. 같은 `idempotencyKey`로 다시 보내면 첫 결과를 돌려준다(다른 본문이면 409)
9966
+ */
9967
+ inventory: {
9968
+ locations: {
9969
+ list: () => storeHttp.request("GET", "/inventory-locations", z.array(inventoryLocationSchema)),
9970
+ create: (body) => storeHttp.request("POST", "/inventory-locations", inventoryLocationSchema, { body: inventoryLocationRequestSchema.parse(body) }),
9971
+ update: (inventoryLocationId, body) => storeHttp.request("PUT", path`/inventory-locations/${inventoryLocationId}`, inventoryLocationSchema, { body: inventoryLocationRequestSchema.parse(body) }),
9972
+ remove: (inventoryLocationId) => storeHttp.requestVoid("DELETE", path`/inventory-locations/${inventoryLocationId}`)
9973
+ },
9974
+ /** 커서 페이지네이션 — 다음 페이지는 응답의 `nextCursor`를 `cursor`로 넘긴다 */
9975
+ levels: (params) => storeHttp.request("GET", "/inventory/levels", inventoryLevelPageSchema, { query: params }),
9976
+ /** 순번 오름차순 — 다음 쪽은 `nextAfter`를 `after`로 넘긴다 */
9977
+ movements: (params) => storeHttp.request("GET", "/inventory/movements", inventoryMovementPageSchema, { query: params }),
9978
+ adjust: (body, idempotencyKey) => storeHttp.request("POST", "/inventory/adjustments", inventoryOperationResultSchema, {
9979
+ body: inventoryAdjustmentRequestSchema.parse(body),
9980
+ headers: idempotency(idempotencyKey)
9981
+ }),
9982
+ transfer: (body, idempotencyKey) => storeHttp.request("POST", "/inventory/transfers", inventoryOperationResultSchema, {
9983
+ body: inventoryTransferRequestSchema.parse(body),
9984
+ headers: idempotency(idempotencyKey)
9985
+ })
9986
+ },
9586
9987
  pickupLocations: {
9587
9988
  list: () => storeHttp.request("GET", "/pickup-locations", z.array(pickupLocationSchema)),
9588
9989
  create: (body) => storeHttp.request("POST", "/pickup-locations", pickupLocationSchema, { body: pickupLocationRequestSchema.parse(body) }),
@@ -10112,4 +10513,4 @@ function createStoreSession(options) {
10112
10513
  };
10113
10514
  }
10114
10515
  //#endregion
10115
- export { AI_AGENT_NOTES_DIR, AI_AGENT_PHASES, AI_MESSAGE_MAX_ATTACHMENTS, AI_MESSAGE_MAX_CHARS, AI_RUN_ACTIVE_STATUSES, AI_RUN_FILE_CHANGES_RETENTION_DAYS, 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, BRAND_BRIEF_MAX_REFERENCES, BUSINESS_INFO_MAX_LENGTH, BUSINESS_NUMBER_PATTERN, CASH_RECEIPT_STATUS_VALUES, 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, CUSTOM_INPUT_FORBIDDEN_WORDS, CUSTOM_INPUT_TYPES, FULFILLMENT_METHODS, FULFILLMENT_METHODS_BY_TYPE, FULFILLMENT_METHOD_RULES, FULFILLMENT_RULES, INSTALLABLE_SCOPES, KNOWN_WEBHOOK_EVENT_TYPES, MAX_ADDON_GROUPS, MAX_ANALYTICS_ALLOWED_ORIGINS, MAX_AUTO_TRANSITION_DAYS, MAX_CALENDAR_DAYS, 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_OPTION_GROUPS, MAX_PICKUP_LOCATIONS, MAX_PRODUCT_IMAGES, 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, 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, addonGroupRequestSchema, addonGroupSchema, addonValueRequestSchema, addonValueSchema, addressChangeRequestListSchema, addressTypeSchema, agentPolicyDecisionSchema, aiActivitySchema, aiAgentPhaseSchema, aiAttachmentSchema, aiConversationFileChangesSchema, aiConversationSchema, aiConversationSummarySchema, aiFileChangeKindSchema, aiFocusAreaSchema, aiFocusSchema, aiMessagePartSchema, aiMessageSchema, aiPreviewSelectionSchema, aiRunChangesSchema, aiRunChangesStatusSchema, aiRunFileDiffSchema, aiRunRevertConflictDetailsSchema, aiRunRevertResultSchema, aiRunSchema, aiRunStatusSchema, 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, auditActorSchema, auditActorTypeSchema, auditLogListQuerySchema, auditLogOutcomeSchema, auditLogPageSchema, auditLogSchema, auditLogSourceSchema, bestSellingRuleOf, brandBriefProductSourceSchema, brandBriefReferenceSchema, brandBriefSchema, brandBriefViewSchema, buildAuthorizeUrl, buildQuery, bulkResultSchema, businessInfoPatchShape, businessInfoResponseShape, businessNumberSchema, calendarDateSchema, calendarDaySchema, calendarQuerySchema, cancelBySellerRequestSchema, cancelBySellerResultSchema, carrierSchema, cashReceiptSchema, categoryAttributeSchema, categoryCreateRequestSchema, categoryDeleteQuerySchema, categoryDeleteStrategySchema, categoryListQuerySchema, categoryPatchRequestSchema, categoryProductSortSchema, categorySchema, categorySearchResultSchema, categoryTreeNodeSchema, categoryWithPathSchema, changeStorefrontSlugRequestSchema, changeStorefrontTemplateRequestSchema, changeTypeSchema, claimDetailSchema, claimHoldResultSchema, claimListQuerySchema, claimReasonSchema, claimReturnAddressSchema, claimSchema, claimStatusSchema, claimTypeSchema, claimWebhookEventDataSchema, claimWebhookEventSchema, collectionCreateRequestSchema, collectionListQuerySchema, collectionPageSchema, collectionPatchRequestSchema, collectionPreviewRequestSchema, collectionPreviewSchema, collectionProductListQuerySchema, collectionProductSchema, collectionProductSortRequestSchema, collectionProductsAddRequestSchema, collectionProductsReplaceRequestSchema, collectionRuleCategoryIds, collectionRuleSchema, collectionRuleViewSchema, collectionRulesPredicate, collectionRulesSchema, collectionSchema, collectionStateCountsSchema, collectionStateOf, collectionStateSchema, 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, createPkcePair, createStoreClient, createStoreDraftRequestSchema, createStoreDraftResponseSchema, createStoreSession, createStorefrontEditPreviewLinkRequestSchema, createStorefrontPreviewLinkRequestSchema, createStorefrontSiteRequestSchema, createStorefrontVersionRequestSchema, customInputLabelForbiddenWord, customInputRequestSchema, customInputSchema, customInputValueSchema, customerAddressSchema, customerConsentListQuerySchema, customerConsentSchema, customerConsentStateSchema, customerConsentsSchema, customerCouponSchema, customerDelegationRequestSchema, customerDelegationSchema, customerDetailSchema, customerInquiryCategorySchema, customerInquiryListQuerySchema, customerListQuerySchema, customerOrderSchema, customerPointsSchema, customerSortSchema, customerStatsSchema, customerSummarySchema, customerWithdrawalBlockedDetailsSchema, defaultFulfillmentMethodOf, deleteStorefrontFileRequestSchema, deliveryBundleKeyOf, deliveryFeeWaiverSchema, deliveryInfoSchema, deliveryMethodSchema, deliveryStatusSchema, deliveryTypeSchema, descendantCategoryIdsOf, describeScope, devStoreSchema, developerAppCreateSchema, developerAppSchema, developerInstallationSchema, developerOrgSchema, developerStoreSchema, disableStorefrontHostingRequestSchema, discountRequestSchema, discountSchema, dispatchRequestSchema, easyPayProviderResponseSchema, easyPayProviderSchema, eventTypeSchema, exchangeAuthorizationCode, flowActionRequestSchema, flowActionResultSchema, flowActionSchema, flowFieldValueSchema, flowInputFieldSchema, flowNodeTypesSchema, flowNotificationWebhookEventDataSchema, flowNotificationWebhookEventSchema, flowPresetDetailSchema, flowPresetSummarySchema, flowRunSchema, flowRunStepSchema, flowSecretNameSchema, flowSecretSchema, flowStateChangedWebhookEventDataSchema, flowStateChangedWebhookEventSchema, flowStateSchema, formatOrderNo, fulfillBulkRequestSchema, fulfillRequestSchema, fulfillmentMethodOf, fulfillmentMethodSchema, fulfillmentMethodsOf, fulfillmentRuleOf, fulfillmentTypeOf, fulfillmentTypeResponseSchema, fulfillmentTypeSchema, holdOrderItemRequestSchema, inquiryListQuerySchema, inquirySchema, inquiryWebhookEventDataSchema, inquiryWebhookEventSchema, inventoryModeSchema, invitationDeliveryStatusSchema, invitationListQuerySchema, invitationSchema, inviteMemberRequestSchema, isAiAgentNotesPath, isCouponTargetLine, isEditableStorefrontPath, isInstallableScope, isReservedStoreCode, isReservedStorefrontSlug, isShowcaseStorefrontSlug, isStoreScope, isWebOrigin, issueCouponRequestSchema, issueCouponResultSchema, liveGateConditionCodeSchema, liveGateConditionSchema, liveGateErrorDetailsSchema, liveGateSchema, loginProviderSchema, loginProviderStatusSchema, loginProviderTestSchema, loginSettingsSchema, maskedSecretSchema, matchesCollectionRules, mcpRuleResultSchema, mcpToolEventSchema, migrateFlowVersionRequestSchema, migrateFlowVersionResultSchema, moveFlowStateRequestSchema, moveStorefrontFileRequestSchema, myAccountSchema, myStoreSchema, nightsOf, normalizeBusinessNumber, normalizeCouponCode, normalizeStorefrontHostname, normalizeStorefrontPath, oauthTokenResponseSchema, openFulfillmentUnion, optionGroupKindSchema, optionGroupRequestSchema, optionGroupSchema, optionModelRequestSchema, optionModelSchema, optionSelectionSchema, optionSortSchema, optionValueRequestSchema, optionValueSchema, orderCanceledWebhookEventDataSchema, orderCanceledWebhookEventSchema, orderDiscountSchema, orderFlowActionResultSchema, orderFulfilledWebhookEventDataSchema, orderFulfilledWebhookEventSchema, orderItemFlowSchema, orderItemFulfillmentSchema, orderItemFulfillmentSnapshotResponseSchema, orderItemFulfillmentSnapshotSchema, orderItemListQuerySchema, orderItemMemoResultSchema, orderItemPageSchema, orderItemSchema, orderItemStatusSchema, orderListQuerySchema, orderSchema, orderSummaryPageSchema, orderSummarySchema, orderWebhookEventDataSchema, orderWebhookEventSchema, pageInfoSchema, pageQueryShape, pageSchema, parseOrderNo, parseWebhookEvent, paymentAttemptRecordSchema, paymentAttemptStatusSchema, paymentCredentialSetSchema, paymentFailureWarningSchema, paymentListQuerySchema, paymentProviderSchema, paymentProviderVerificationSchema, paymentRecordDetailSchema, paymentRecordPageSchema, paymentRecordSchema, paymentRecordStatusSchema, paymentRefundRecordSchema, paymentSettingsSchema, pgEnvironmentSchema, pgPaymentMethodSchema, pgProviderSchema, pgVerificationResultSchema, pickupLocationRequestSchema, pickupLocationSchema, pickupLocationSnapshotSchema, planCodeSchema, planEntitlementsSchema, planErrorDetailsSchema, pointAdjustmentRequestSchema, pointAdjustmentResultSchema, pointEarnOf, pointEarnRateBpSchema, pointEarningEnabled, pointEntrySchema, pointExpiresAtOf, pointHistoryQuerySchema, pointLotSchema, pointPolicyNoticeSchema, pointPolicySchema, pointRestoreExpiresAtOf, pointUseOf, pointUsePolicySchema, policyDocumentUrlSchema, policyVersionSchema, portOneChannelSchema, portOneCredentialsInputSchema, productCreateRequestSchema, productFulfillmentCreateSchema, productFulfillmentResponseSchema, productFulfillmentSchema, productFulfillmentUpdateSchema, productImageRejection, productImageUrlSchema, productListQuerySchema, productOutOfStockWebhookEventDataSchema, productOutOfStockWebhookEventSchema, productPatchRequestSchema, productRefundPolicyOverride, productRefundPolicyPatchSchema, productReplaceRequestSchema, productSchema, productSortSchema, productStatusSchema, productSummarySchema, productVariantRequestSchema, productVariantSchema, proratedPaidRefundBase, proratedPointRefund, proratedRefundBase, publicPlanSchema, publicPlansSchema, publishStorefrontVersionRequestSchema, purchaseDecisionExtendResultSchema, purchaseDecisionRequestResultSchema, purchaseEarnPolicySchema, purchaseEarnRateOf, 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, 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, setStorefrontVisibilityRequestSchema, settleCouponShortfall, settlementDetailQuerySchema, settlementDetailSchema, settlementListQuerySchema, settlementStatusSchema, settlementSummarySchema, settlementWithDetailsSchema, shippingAddressSchema, 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, 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, tossPaymentsCredentialsInputSchema, trackingStageResponseSchema, trackingUpdateResultSchema, unknownWebhookEventSchema, updateCouponRequestSchema, updateLoginProviderRequestSchema, updateLoginSettingsRequestSchema, updateMemberRoleRequestSchema, updatePaymentProviderRequestSchema, updatePaymentSettingsRequestSchema, updatePointPolicyRequestSchema, updateStoreRequestSchema, updateStoreTemplateRequestSchema, uploadExtensionOf, uploadPurposeSchema, uploadRejection, uploadRequestSchema, uploadStorefrontSourceBlobsRequestSchema, uploadTicketSchema, upsertPortOneProviderRequestSchema, upsertTossPaymentsProviderRequestSchema, variantStockRequestSchema, variantStockSchema, verifyPaymentProviderRequestSchema, webhookCreatedSchema, webhookDeliveryDetailSchema, webhookDeliveryErrorCodeSchema, webhookDeliveryListQuerySchema, webhookDeliveryResourceSchema, webhookDeliverySchema, webhookDeliveryStatusSchema, webhookEventSchema, webhookFailureReasonSchema, webhookRedeliverFailedResultSchema, webhookRequestHeaderSchema, webhookRequestSchema, webhookResourceTypeSchema, webhookSchema, webhookSecretRotatedSchema, webhookStatusSchema, webhookTestRequestSchema, webhookTestResultSchema, withdrawCustomerRequestSchema, writeDryRunResultSchema, writePreviewSchema, writeStorefrontFilesRequestSchema };
10516
+ 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, BRAND_BRIEF_MAX_REFERENCES, BUSINESS_INFO_MAX_LENGTH, BUSINESS_NUMBER_PATTERN, CASH_RECEIPT_STATUS_VALUES, 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, CUSTOM_INPUT_FORBIDDEN_WORDS, CUSTOM_INPUT_TYPES, DEDICATED_EASY_PAY_PROVIDER, FULFILLMENT_METHODS, FULFILLMENT_METHODS_BY_TYPE, FULFILLMENT_METHOD_RULES, FULFILLMENT_RULES, INSTALLABLE_SCOPES, KAKAOPAY_TEST_CID, KNOWN_WEBHOOK_EVENT_TYPES, MAX_ADDON_GROUPS, MAX_ANALYTICS_ALLOWED_ORIGINS, MAX_AUTO_TRANSITION_DAYS, MAX_CALENDAR_DAYS, 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_INVENTORY_OPERATION_LINES, MAX_OPTION_GROUPS, MAX_PICKUP_LOCATIONS, MAX_PRODUCT_IMAGES, 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, 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, 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, auditActorSchema, auditActorTypeSchema, auditLogListQuerySchema, auditLogOutcomeSchema, auditLogPageSchema, auditLogSchema, auditLogSourceSchema, bestSellingRuleOf, brandBriefProductSourceSchema, brandBriefReferenceSchema, brandBriefSchema, brandBriefViewSchema, buildAuthorizeUrl, buildQuery, bulkResultSchema, businessInfoPatchShape, businessInfoResponseShape, businessNumberSchema, calendarDateSchema, calendarDaySchema, calendarQuerySchema, cancelBySellerRequestSchema, cancelBySellerResultSchema, carrierSchema, cashReceiptSchema, categoryAttributeSchema, categoryCreateRequestSchema, categoryDeleteQuerySchema, categoryDeleteStrategySchema, categoryListQuerySchema, categoryPatchRequestSchema, categoryProductSortSchema, categorySchema, categorySearchResultSchema, categoryTreeNodeSchema, categoryWithPathSchema, changeStorefrontSlugRequestSchema, changeStorefrontTemplateRequestSchema, changeTypeSchema, claimCollectCompleteRequestSchema, claimDetailSchema, claimHoldResultSchema, claimListQuerySchema, claimReasonSchema, claimRedeliveryRequestSchema, claimReturnAddressSchema, claimSchema, claimStatusSchema, claimTypeSchema, claimWebhookEventDataSchema, claimWebhookEventSchema, collectionCreateRequestSchema, collectionListQuerySchema, collectionPageSchema, collectionPatchRequestSchema, collectionPreviewRequestSchema, collectionPreviewSchema, collectionProductListQuerySchema, collectionProductSchema, collectionProductSortRequestSchema, collectionProductsAddRequestSchema, collectionProductsReplaceRequestSchema, collectionRuleCategoryIds, collectionRuleSchema, collectionRuleViewSchema, collectionRulesPredicate, collectionRulesSchema, collectionSchema, collectionStateCountsSchema, collectionStateOf, collectionStateSchema, commerceFlowCheckSchema, commerceFlowSchema, commerceFlowSummarySchema, commerceFlowVersionViewSchema, commerceNumberField, compareBySales, consentActionSchema, consentKindSchema, consentSourceSchema, couponBenefitSchema, couponConditionsInputSchema, couponConditionsSchema, couponDiscountOf, couponIssueListQuerySchema, couponIssueMethodSchema, couponIssueSchema, couponIssueStatusSchema, couponKindSchema, couponListQuerySchema, couponRedemptionListQuerySchema, couponRedemptionSchema, couponRejectReasonSchema, couponRuleSchema, couponSchema, couponStatsSchema, couponStatusSchema, couponTargetInputSchema, couponTargetSchema, createAiConversationRequestSchema, createAiConversationResponseSchema, createCommerceFlowRequestSchema, createCouponRequestSchema, createPkcePair, createStoreClient, createStoreDraftRequestSchema, createStoreDraftResponseSchema, createStoreSession, createStorefrontEditPreviewLinkRequestSchema, createStorefrontPreviewLinkRequestSchema, createStorefrontSiteRequestSchema, createStorefrontVersionRequestSchema, customInputLabelForbiddenWord, customInputRequestSchema, customInputSchema, customInputValueSchema, customerAddressSchema, customerConsentListQuerySchema, customerConsentSchema, customerConsentStateSchema, customerConsentsSchema, customerCouponSchema, customerDelegationRequestSchema, customerDelegationSchema, customerDetailSchema, customerInquiryCategorySchema, customerInquiryListQuerySchema, customerListQuerySchema, customerOrderSchema, customerPointsSchema, customerSortSchema, customerStatsSchema, customerSummarySchema, customerWithdrawalBlockedDetailsSchema, defaultFulfillmentMethodOf, deleteStorefrontFileRequestSchema, deliveryBundleKeyOf, deliveryFeeWaiverSchema, deliveryInfoSchema, deliveryMethodSchema, deliveryStatusSchema, deliveryTypeSchema, descendantCategoryIdsOf, describeScope, devStoreSchema, developerAppCreateSchema, developerAppSchema, developerInstallationSchema, developerOrgSchema, developerStoreSchema, disableStorefrontHostingRequestSchema, discountRequestSchema, discountSchema, dispatchRequestSchema, easyPayProviderResponseSchema, easyPayProviderSchema, eventTypeSchema, exchangeAuthorizationCode, flowActionRequestSchema, flowActionResultSchema, flowActionSchema, flowFieldValueSchema, flowInputFieldSchema, flowNodeTypesSchema, flowNotificationWebhookEventDataSchema, flowNotificationWebhookEventSchema, flowPresetDetailSchema, flowPresetSummarySchema, flowRunSchema, flowRunStepSchema, flowSecretNameSchema, flowSecretSchema, flowStateChangedWebhookEventDataSchema, flowStateChangedWebhookEventSchema, flowStateSchema, formatOrderNo, fulfillBulkRequestSchema, fulfillRequestSchema, fulfillmentMethodOf, fulfillmentMethodSchema, fulfillmentMethodsOf, fulfillmentRuleOf, fulfillmentTypeOf, fulfillmentTypeResponseSchema, fulfillmentTypeSchema, holdOrderItemRequestSchema, 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, isEditableStorefrontPath, isInstallableScope, isReservedStoreCode, isReservedStorefrontSlug, isShowcaseStorefrontSlug, isStoreScope, isWebOrigin, issueCouponRequestSchema, issueCouponResultSchema, kakaoPayCredentialsInputSchema, liveGateConditionCodeSchema, liveGateConditionSchema, liveGateErrorDetailsSchema, liveGateSchema, loginProviderSchema, loginProviderStatusSchema, loginProviderTestSchema, loginSettingsSchema, maskedSecretSchema, matchesCollectionRules, mcpRuleResultSchema, mcpToolEventSchema, migrateFlowVersionRequestSchema, migrateFlowVersionResultSchema, moveFlowStateRequestSchema, moveStorefrontFileRequestSchema, myAccountSchema, myStoreSchema, naverPayCredentialsInputSchema, nightsOf, normalizeBusinessNumber, normalizeCouponCode, normalizeStorefrontHostname, normalizeStorefrontPath, oauthTokenResponseSchema, openFulfillmentUnion, optionGroupKindSchema, optionGroupRequestSchema, optionGroupSchema, optionModelRequestSchema, optionModelSchema, optionSelectionSchema, optionSortSchema, optionValueRequestSchema, optionValueSchema, orderCanceledWebhookEventDataSchema, orderCanceledWebhookEventSchema, orderDiscountSchema, orderFlowActionResultSchema, orderFulfilledWebhookEventDataSchema, orderFulfilledWebhookEventSchema, orderItemFlowSchema, orderItemFulfillmentSchema, orderItemFulfillmentSnapshotResponseSchema, orderItemFulfillmentSnapshotSchema, orderItemListQuerySchema, orderItemMemoResultSchema, orderItemPageSchema, orderItemSchema, orderItemStatusSchema, orderListQuerySchema, orderSchema, orderSummaryPageSchema, orderSummarySchema, orderWebhookEventDataSchema, orderWebhookEventSchema, pageInfoSchema, pageQueryShape, pageSchema, parseOrderNo, parseWebhookEvent, paymentAttemptRecordSchema, paymentAttemptStatusSchema, paymentCredentialSetSchema, paymentFailureWarningSchema, paymentListQuerySchema, paymentProviderSchema, paymentProviderVerificationSchema, paymentRecordDetailSchema, paymentRecordPageSchema, paymentRecordSchema, paymentRecordStatusSchema, paymentRefundRecordSchema, paymentSettingsSchema, paymentStatusProviderSchema, paymentStatusSchema, pgEnvironmentSchema, pgPaymentMethodSchema, pgProviderSchema, pgVerificationResultSchema, pickupLocationRequestSchema, pickupLocationSchema, pickupLocationSnapshotSchema, planCodeSchema, planEntitlementsSchema, planErrorDetailsSchema, pointAdjustmentRequestSchema, pointAdjustmentResultSchema, pointEarnOf, pointEarnRateBpSchema, pointEarningEnabled, pointEntrySchema, pointExpiresAtOf, pointHistoryQuerySchema, pointLotSchema, pointPolicyNoticeSchema, pointPolicySchema, pointRestoreExpiresAtOf, pointUseOf, pointUsePolicySchema, policyDocumentUrlSchema, policyVersionSchema, portOneChannelSchema, portOneCredentialsInputSchema, productCreateRequestSchema, productFulfillmentCreateSchema, productFulfillmentResponseSchema, productFulfillmentSchema, productFulfillmentUpdateSchema, productImageRejection, productImageUrlSchema, productListQuerySchema, productOutOfStockWebhookEventDataSchema, productOutOfStockWebhookEventSchema, productPatchRequestSchema, productRefundPolicyOverride, productRefundPolicyPatchSchema, productReplaceRequestSchema, productSchema, productSortSchema, productStatusSchema, productSummarySchema, productVariantRequestSchema, productVariantSchema, proratedPaidRefundBase, proratedPointRefund, proratedRefundBase, publicPlanSchema, publicPlansSchema, publishStorefrontVersionRequestSchema, purchaseDecisionExtendResultSchema, purchaseDecisionRequestResultSchema, purchaseEarnPolicySchema, purchaseEarnRateOf, 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, 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, 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, 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, tossPaymentsCredentialsInputSchema, trackingStageResponseSchema, trackingUpdateResultSchema, unknownWebhookEventSchema, updateCouponRequestSchema, updateLoginProviderRequestSchema, updateLoginSettingsRequestSchema, updateMemberRoleRequestSchema, updatePaymentProviderRequestSchema, updatePaymentSettingsRequestSchema, updatePointPolicyRequestSchema, updateStoreRequestSchema, updateStoreTemplateRequestSchema, uploadExtensionOf, uploadPurposeSchema, uploadRejection, uploadRequestSchema, uploadStorefrontSourceBlobsRequestSchema, uploadTicketSchema, upsertKakaoPayProviderRequestSchema, upsertNaverPayProviderRequestSchema, 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 };