@cimplify/sdk 0.103.0 → 0.104.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.
Files changed (65) hide show
  1. package/dist/advanced.d.mts +3 -3
  2. package/dist/advanced.d.ts +3 -3
  3. package/dist/advanced.js +22 -22
  4. package/dist/advanced.mjs +3 -3
  5. package/dist/{chunk-C2JSNJUC.mjs → chunk-2WPVUIHX.mjs} +52 -11
  6. package/dist/{chunk-JG5CQNCB.js → chunk-4BKOKHE3.js} +4 -0
  7. package/dist/{chunk-R6OLQ33I.js → chunk-5BDYDZ4U.js} +239 -87
  8. package/dist/{chunk-H7ACMHM3.mjs → chunk-5RT4HYMP.mjs} +32 -4
  9. package/dist/{chunk-NNG6IFFX.js → chunk-7PDEX54K.js} +3 -3
  10. package/dist/{chunk-M4URVKHE.mjs → chunk-DYIAX3WI.mjs} +1 -1
  11. package/dist/{chunk-QOWPGS7Z.js → chunk-E4K2VQDD.js} +35 -5
  12. package/dist/{chunk-VNPEYLB2.mjs → chunk-H3RATH4B.mjs} +4 -0
  13. package/dist/{chunk-JSWJ4XDE.js → chunk-IQFFSKE2.js} +315 -108
  14. package/dist/{chunk-J6PNHDHL.mjs → chunk-OCCNG6MO.mjs} +284 -77
  15. package/dist/{chunk-GERXZQSX.mjs → chunk-OKADBZAI.mjs} +171 -20
  16. package/dist/{chunk-VIL6IQCG.js → chunk-YVAEY3VC.js} +54 -13
  17. package/dist/{client-Dqg2mc-7.d.ts → client-BVNWjk6W.d.ts} +2 -2
  18. package/dist/{client-BfpNjJ_a.d.mts → client-BuLcOWLv.d.ts} +115 -23
  19. package/dist/{client-DHBwvh7U.d.ts → client-D5AoobFc.d.mts} +115 -23
  20. package/dist/{client-DpqRobY9.d.mts → client-fM716k7G.d.mts} +2 -2
  21. package/dist/{index-C8uDqLwJ.d.ts → index-BtcoqrY1.d.ts} +3 -3
  22. package/dist/{index-e2y6AK70.d.mts → index-D7Tf3v7c.d.mts} +3 -3
  23. package/dist/index.d.mts +10 -8
  24. package/dist/index.d.ts +10 -8
  25. package/dist/index.js +107 -106
  26. package/dist/index.mjs +6 -5
  27. package/dist/{link-cuNVYc2s.d.mts → link-D9iSVxt5.d.mts} +12 -1
  28. package/dist/{link-cuNVYc2s.d.ts → link-D9iSVxt5.d.ts} +12 -1
  29. package/dist/mock/cli.mjs +53 -10
  30. package/dist/mock/library.js +53 -10
  31. package/dist/mock/library.mjs +53 -10
  32. package/dist/mock/msw.js +53 -10
  33. package/dist/mock/msw.mjs +53 -10
  34. package/dist/{payment-H5LoIvXU.d.mts → payment-g0HFkEDU.d.mts} +519 -54
  35. package/dist/{payment-H5LoIvXU.d.ts → payment-g0HFkEDU.d.ts} +519 -54
  36. package/dist/{price-C2RqscMY.d.ts → price-BLIeAb8K.d.ts} +1 -1
  37. package/dist/{price-BvePgDXe.d.mts → price-Czq_cTC_.d.mts} +1 -1
  38. package/dist/react.d.mts +4 -4
  39. package/dist/react.d.ts +4 -4
  40. package/dist/react.js +193 -169
  41. package/dist/react.mjs +54 -30
  42. package/dist/{server-C7FyLdrz.d.mts → server-BkVhOIwn.d.mts} +4 -2
  43. package/dist/{server-DoXIpSd7.d.ts → server-DKK_D-PP.d.ts} +4 -2
  44. package/dist/server.d.mts +4 -4
  45. package/dist/server.d.ts +4 -4
  46. package/dist/server.js +11 -10
  47. package/dist/server.mjs +5 -4
  48. package/dist/testing/msw.d.mts +2 -2
  49. package/dist/testing/msw.d.ts +2 -2
  50. package/dist/testing/msw.js +3 -3
  51. package/dist/testing/msw.mjs +2 -2
  52. package/dist/testing/suite.d.mts +6 -6
  53. package/dist/testing/suite.d.ts +6 -6
  54. package/dist/testing/suite.js +25 -25
  55. package/dist/testing/suite.mjs +6 -6
  56. package/dist/testing.d.mts +46 -6
  57. package/dist/testing.d.ts +46 -6
  58. package/dist/testing.js +94 -82
  59. package/dist/testing.mjs +13 -9
  60. package/dist/utils.d.mts +4 -4
  61. package/dist/utils.d.ts +4 -4
  62. package/dist/utils.js +31 -31
  63. package/dist/utils.mjs +2 -2
  64. package/package.json +1 -1
  65. package/registry/chat-widget.json +1 -1
@@ -55,6 +55,8 @@ declare const ErrorCode: {
55
55
  readonly CARD_DECLINED: "CARD_DECLINED";
56
56
  readonly INVALID_OTP: "INVALID_OTP";
57
57
  readonly OTP_EXPIRED: "OTP_EXPIRED";
58
+ readonly OTP_CHALLENGE_EXHAUSTED: "OTP_CHALLENGE_EXHAUSTED";
59
+ readonly OTP_CHALLENGE_CONSUMED: "OTP_CHALLENGE_CONSUMED";
58
60
  readonly AUTHORIZATION_FAILED: "AUTHORIZATION_FAILED";
59
61
  readonly PAYMENT_ACTION_NOT_COMPLETED: "PAYMENT_ACTION_NOT_COMPLETED";
60
62
  readonly SLOT_UNAVAILABLE: "SLOT_UNAVAILABLE";
@@ -298,6 +300,42 @@ interface components {
298
300
  provider_receives: string;
299
301
  fee_bearer: components["schemas"]["FeeBearerType"];
300
302
  };
303
+ ApiResponse_PublicSocialPost: {
304
+ data: {
305
+ id: string;
306
+ author: components["schemas"]["PublicPersona"];
307
+ collaborators: components["schemas"]["PublicSocialPostCollaborator"][];
308
+ kind: components["schemas"]["SocialPostKind"];
309
+ caption?: string | null;
310
+ media: components["schemas"]["PublicSocialPostMedia"][];
311
+ audio_label?: string | null;
312
+ market: string;
313
+ /** Format: date-time */
314
+ published_at: string;
315
+ tags: components["schemas"]["PublicSocialPostTag"][];
316
+ /**
317
+ * @description Persistent server-projected disclosure. Once true for a published post,
318
+ * offer retirement or enrollment revocation cannot clear it.
319
+ */
320
+ paid_partnership: boolean;
321
+ partnership?: null | components["schemas"]["PublicSocialPostPartnership"];
322
+ /** @description Opaque signed handoff for the tagged business storefront. */
323
+ commerce_ref?: string | null;
324
+ engagement: components["schemas"]["SocialPostEngagement"];
325
+ viewer: components["schemas"]["SocialPostViewerState"];
326
+ };
327
+ meta?: null | components["schemas"]["ResponseMetadata"];
328
+ status: components["schemas"]["ResponseStatus"];
329
+ };
330
+ ApiResponse_PublicSocialShelfPage: {
331
+ data: {
332
+ sale: components["schemas"]["PublicSocialShelfSale"];
333
+ items: components["schemas"]["PublicCatalogueProduct"][];
334
+ next_cursor?: string | null;
335
+ };
336
+ meta?: null | components["schemas"]["ResponseMetadata"];
337
+ status: components["schemas"]["ResponseStatus"];
338
+ };
301
339
  AppliedDiscount: {
302
340
  discount_id: string;
303
341
  discount_code?: string | null;
@@ -738,6 +776,8 @@ interface components {
738
776
  payment: components["schemas"]["PaymentPreferences"];
739
777
  /** @description Scheduling and booking preferences */
740
778
  scheduling: components["schemas"]["SchedulingPreferences"];
779
+ /** @description Delivery fallback preferences. */
780
+ delivery?: components["schemas"]["DeliveryPreferences"];
741
781
  /**
742
782
  * @description Support agent preferences. `#[serde(default)]` because rows written
743
783
  * before this field existed must not fall back to a full-default
@@ -1005,7 +1045,7 @@ interface components {
1005
1045
  product_count?: number;
1006
1046
  };
1007
1047
  /** @enum {string} */
1008
- Channel: "web" | "qr" | "desk" | "tap" | "chat" | "whatsapp" | "instagram" | "telegram" | "messenger" | "sms" | "email" | "agent";
1048
+ Channel: "web" | "qr" | "desk" | "tap" | "chat" | "whatsapp" | "instagram" | "telegram" | "messenger" | "sms" | "email" | "social" | "agent";
1009
1049
  /** @description Channel-specific policy configuration */
1010
1050
  ChannelPolicy: {
1011
1051
  /** @description Channel identifier */
@@ -1049,52 +1089,90 @@ interface components {
1049
1089
  /** @description Action to take when limit is exceeded */
1050
1090
  overflow_action: components["schemas"]["OverflowAction"];
1051
1091
  };
1052
- ChatConversation: {
1092
+ /**
1093
+ * @description Account-facing message projection. Merchant staff identity, the caller's
1094
+ * idempotency material and internal metadata stay on the business/audit
1095
+ * surface and never cross into the shopper API.
1096
+ */
1097
+ ChatAccountMessageProjection: {
1053
1098
  id: string;
1054
- status: string;
1055
- ai_enabled: boolean;
1056
- needs_human_review: boolean;
1057
- /** Format: int32 */
1058
- message_count: number;
1099
+ thread_id: string;
1100
+ business_id: string;
1101
+ /** Format: int64 */
1102
+ sequence: number;
1103
+ sender_side: components["schemas"]["ChatSenderSide"];
1104
+ authorship: components["schemas"]["ChatAuthorship"];
1105
+ content: string;
1106
+ content_type: components["schemas"]["ChatContentType"];
1107
+ structured_content: Record<string, never>;
1108
+ media: Record<string, never>;
1109
+ reply_to_message_id?: string | null;
1059
1110
  /** Format: date-time */
1060
- created_at: string;
1111
+ source_occurred_at?: string | null;
1061
1112
  /** Format: date-time */
1062
- last_message_at?: string | null;
1063
- /**
1064
- * Format: date-time
1065
- * @description Team-wide read watermark; which agent read is not on this wire.
1066
- */
1067
- team_read_at?: string | null;
1113
+ edited_at?: string | null;
1114
+ /** Format: date-time */
1115
+ deleted_at?: string | null;
1116
+ /** Format: date-time */
1117
+ created_at: string;
1068
1118
  };
1119
+ /** @enum {string} */
1120
+ ChatAiMode: "auto" | "assist" | "off";
1121
+ /** @enum {string} */
1122
+ ChatAuthorship: "human" | "ai" | "system";
1123
+ /** @enum {string} */
1124
+ ChatContentType: "text" | "rich" | "media";
1069
1125
  ChatConversationPeekResponse: {
1070
- conversation?: null | components["schemas"]["ChatConversation"];
1071
- messages: components["schemas"]["ChatMessageResponse"][];
1126
+ conversation?: null | components["schemas"]["ChatThreadProjection"];
1127
+ messages: components["schemas"]["ChatAccountMessageProjection"][];
1072
1128
  };
1073
1129
  ChatConversationResponse: {
1074
- conversation: components["schemas"]["ChatConversation"];
1075
- messages: components["schemas"]["ChatMessageResponse"][];
1130
+ conversation: components["schemas"]["ChatThreadProjection"];
1131
+ messages: components["schemas"]["ChatAccountMessageProjection"][];
1132
+ };
1133
+ ChatHandoffResponse: {
1134
+ thread: components["schemas"]["ChatThreadProjection"];
1135
+ /** Format: int64 */
1136
+ cancelled_turns: number;
1137
+ /** Format: int64 */
1138
+ spending_turns: number;
1076
1139
  };
1077
1140
  ChatMessageResponse: {
1141
+ message: components["schemas"]["ChatAccountMessageProjection"];
1142
+ replayed: boolean;
1143
+ };
1144
+ /** @enum {string} */
1145
+ ChatSenderSide: "account" | "business" | "system";
1146
+ ChatThread: {
1078
1147
  id: string;
1079
- sender_type: components["schemas"]["SenderType"];
1080
- content: string;
1081
- content_type: components["schemas"]["ContentType"];
1082
- attachments: Record<string, never>;
1083
- metadata: Record<string, never>;
1084
- reply_to?: null | components["schemas"]["ChatReplyContext"];
1085
- client_id?: string | null;
1148
+ account_id: string;
1149
+ business_id: string;
1150
+ kind: components["schemas"]["ChatThreadKind"];
1151
+ ai_mode: components["schemas"]["ChatAiMode"];
1152
+ /** Format: int64 */
1153
+ ai_mode_version: number;
1154
+ /** Format: int64 */
1155
+ message_count: number;
1156
+ last_message_id?: string | null;
1157
+ /** Format: date-time */
1158
+ last_message_at?: string | null;
1086
1159
  /** Format: date-time */
1087
1160
  created_at: string;
1161
+ /** Format: date-time */
1162
+ updated_at: string;
1163
+ /** Format: date-time */
1164
+ archived_at?: string | null;
1088
1165
  };
1166
+ /** @enum {string} */
1167
+ ChatThreadKind: "direct";
1089
1168
  /**
1090
- * @description Server-resolved quote context. Self-contained on purpose: the widget's
1091
- * local id space doesn't survive reloads, so a bare reference would only
1092
- * resolve for same-session messages.
1169
+ * @description API-safe thread shape with explicit typed participants. The persisted
1170
+ * account/business foreign keys remain present on `thread`; these personas
1171
+ * make the two parties unambiguous at the domain and wire boundaries.
1093
1172
  */
1094
- ChatReplyContext: {
1095
- id: string;
1096
- sender_type: components["schemas"]["SenderType"];
1097
- preview: string;
1173
+ ChatThreadProjection: components["schemas"]["ChatThread"] & {
1174
+ account: components["schemas"]["Persona"];
1175
+ business: components["schemas"]["Persona"];
1098
1176
  };
1099
1177
  CheckoutApiResponse: {
1100
1178
  order_id: string;
@@ -1235,8 +1313,26 @@ interface components {
1235
1313
  };
1236
1314
  ClaimConversationResponse: {
1237
1315
  session_token: string;
1238
- thread_id?: string | null;
1316
+ thread: components["schemas"]["ChatThreadProjection"];
1239
1317
  customer_name: string;
1318
+ /** @description One PII-minimal result per launch-claimable WhatsApp envelope. */
1319
+ external_claims: components["schemas"]["ClaimedExternalChat"][];
1320
+ /**
1321
+ * @description True only when candidate discovery itself was unavailable. Individual
1322
+ * envelope failures are represented in `external_claims` instead.
1323
+ */
1324
+ external_claims_unavailable: boolean;
1325
+ };
1326
+ ClaimedExternalChat: {
1327
+ status: components["schemas"]["ExternalClaimDisposition"];
1328
+ thread_id?: string | null;
1329
+ /** Format: int64 */
1330
+ imported_message_count?: number | null;
1331
+ replayed: boolean;
1332
+ /** Format: int64 */
1333
+ observed_message_count?: number | null;
1334
+ /** Format: int64 */
1335
+ maximum_message_count?: number | null;
1240
1336
  };
1241
1337
  CollectionDetailView: {
1242
1338
  collection: components["schemas"]["CollectionView"];
@@ -1598,8 +1694,6 @@ interface components {
1598
1694
  /** @description Machine learning classifier */
1599
1695
  MLClassifier: string;
1600
1696
  };
1601
- /** @enum {string} */
1602
- ContentType: "text" | "image" | "video" | "audio" | "voice" | "document" | "sticker" | "location" | "contact" | "reaction" | "interactive" | "story_mention" | "share";
1603
1697
  CoordinatesPair: {
1604
1698
  /** Format: double */
1605
1699
  lat: number;
@@ -1629,6 +1723,12 @@ interface components {
1629
1723
  /** @description Channels allowed for cross-business communication */
1630
1724
  approved_channels: string[];
1631
1725
  };
1726
+ CursorMetadata: {
1727
+ next_cursor?: string | null;
1728
+ has_more: boolean;
1729
+ /** Format: int32 */
1730
+ count: number;
1731
+ };
1632
1732
  Customer: {
1633
1733
  id: string;
1634
1734
  email?: string | null;
@@ -1719,6 +1819,13 @@ interface components {
1719
1819
  field_type: string;
1720
1820
  value: Record<string, never>;
1721
1821
  semantic_kind?: null | components["schemas"]["SemanticKind"];
1822
+ /**
1823
+ * @description Authoritative per-unit adjustment captured from the field definition
1824
+ * when this value was validated. Callers must still re-resolve it from
1825
+ * the catalogue before changing frozen money; the snapshot makes the
1826
+ * selected pricing contract typed and hashable in between resolutions.
1827
+ */
1828
+ price_adjustment?: string | null;
1722
1829
  };
1723
1830
  CustomerServicePreferences: {
1724
1831
  preferred_staff_ids: string[];
@@ -1778,6 +1885,7 @@ interface components {
1778
1885
  zone_name?: string | null;
1779
1886
  provider: string;
1780
1887
  provider_resolved_from: components["schemas"]["ProviderResolutionSource"];
1888
+ fee_status?: components["schemas"]["DeliveryFeeStatus"];
1781
1889
  /**
1782
1890
  * @description Named rate this fee was priced under, if any. `calculated_fee` is the
1783
1891
  * rate price before `free_over`; the charged fee lives on the order.
@@ -1803,6 +1911,13 @@ interface components {
1803
1911
  currency?: string | null;
1804
1912
  details?: null | components["schemas"]["DeliveryFeeDetails"];
1805
1913
  };
1914
+ /**
1915
+ * @description Whether delivery is priced on-platform or arranged directly between the
1916
+ * seller and customer. `Arranged` deliberately contributes zero to checkout,
1917
+ * tax, and payment totals; it must never be rendered as free delivery.
1918
+ * @enum {string}
1919
+ */
1920
+ DeliveryFeeStatus: "priced" | "arranged";
1806
1921
  /**
1807
1922
  * @description One entry on the customer-facing delivery menu. Zone-backed rates are
1808
1923
  * priced for a concrete dropoff; all-zone flat rates can be priced from the
@@ -1814,6 +1929,7 @@ interface components {
1814
1929
  name: string;
1815
1930
  description?: string | null;
1816
1931
  fee: string;
1932
+ fee_status: components["schemas"]["DeliveryFeeStatus"];
1817
1933
  currency: string;
1818
1934
  free_delivery_applied: boolean;
1819
1935
  free_over_amount?: string | null;
@@ -1829,6 +1945,17 @@ interface components {
1829
1945
  options: components["schemas"]["DeliveryOption"][];
1830
1946
  message?: string | null;
1831
1947
  };
1948
+ /**
1949
+ * @description Delivery behavior that is safe to evaluate during checkout without
1950
+ * loading the complete business preferences document.
1951
+ */
1952
+ DeliveryPreferences: {
1953
+ /**
1954
+ * @description When no rates or zones are configured, offer goods-only checkout and let
1955
+ * the seller arrange delivery directly with the customer.
1956
+ */
1957
+ allow_seller_arranged_delivery?: boolean;
1958
+ };
1832
1959
  /**
1833
1960
  * @description Fulfillment evidence used by document-level statutory charges. `Unknown`
1834
1961
  * is deliberately distinct from `NonMotorized`: compliance code must never
@@ -2041,6 +2168,8 @@ interface components {
2041
2168
  seat_info: Record<string, never>;
2042
2169
  };
2043
2170
  /** @enum {string} */
2171
+ ExternalClaimDisposition: "claimed" | "replayed" | "conflict" | "contact_unverified" | "business_unavailable" | "history_empty" | "history_oversize" | "failed";
2172
+ /** @enum {string} */
2044
2173
  FeeBearerType: "business" | "customer";
2045
2174
  FeeHandlingPreferences: {
2046
2175
  /** @description Whether business absorbs payment processing fees */
@@ -2130,6 +2259,19 @@ interface components {
2130
2259
  };
2131
2260
  /** @enum {string} */
2132
2261
  InputFieldType: "text" | "textarea" | "number" | "select" | "radio" | "checkbox" | "color" | "date" | "file" | "image" | "url" | "address" | "phone" | "email" | "date_time" | "time" | "signature" | "multi_select" | "date_range" | "location";
2262
+ InventoryHoldWindowOverride: {
2263
+ channel: components["schemas"]["Channel"];
2264
+ /**
2265
+ * Format: int32
2266
+ * @description Whole seconds, bounded to match the one-minute inventory reaper cadence
2267
+ * and to prevent an ordinary self-service checkout from pinning stock for
2268
+ * more than one day.
2269
+ */
2270
+ seconds: number;
2271
+ };
2272
+ InventoryHoldWindowPreferences: {
2273
+ channel_overrides?: components["schemas"]["InventoryHoldWindowOverride"][];
2274
+ };
2133
2275
  InventoryPreferences: {
2134
2276
  /** @description Basic inventory tracking settings */
2135
2277
  tracking: components["schemas"]["InventoryTrackingPreferences"];
@@ -2150,6 +2292,12 @@ interface components {
2150
2292
  * (material consumed outside a line's recipe). Off by default; stays record-only.
2151
2293
  */
2152
2294
  deduct_adhoc_costs?: boolean;
2295
+ /**
2296
+ * @description Per-channel overrides for provisional customer inventory holds. The
2297
+ * resolved value is frozen onto the hold at order creation, so changing a
2298
+ * preference never moves an existing deadline.
2299
+ */
2300
+ hold_windows?: components["schemas"]["InventoryHoldWindowPreferences"];
2153
2301
  };
2154
2302
  /**
2155
2303
  * @description Defines how inventory is tracked for a product.
@@ -2427,6 +2575,11 @@ interface components {
2427
2575
  item: components["schemas"]["ProductItemView"];
2428
2576
  add_ons: components["schemas"]["AddOnView"][];
2429
2577
  };
2578
+ MerchantReply: {
2579
+ text: string;
2580
+ /** Format: date-time */
2581
+ replied_at: string;
2582
+ };
2430
2583
  /** @description Conditions that can trigger escalation */
2431
2584
  MessagingEscalationTrigger: "NoAcknowledgment" | {
2432
2585
  /** @description Specific user not available */
@@ -2526,6 +2679,7 @@ interface components {
2526
2679
  reviews: boolean;
2527
2680
  blogs: boolean;
2528
2681
  marketing: boolean;
2682
+ publishing?: boolean;
2529
2683
  accounting: boolean;
2530
2684
  analytics: boolean;
2531
2685
  taxes: boolean;
@@ -2568,6 +2722,11 @@ interface components {
2568
2722
  provider: string;
2569
2723
  client_secret: string;
2570
2724
  public_key: string;
2725
+ /**
2726
+ * @description Public provider account namespace required by browser SDKs for a
2727
+ * direct connected-account charge. Platform-account flows omit it.
2728
+ */
2729
+ provider_account_id?: string | null;
2571
2730
  /** @enum {string} */
2572
2731
  type: "card_popup";
2573
2732
  } | {
@@ -2753,6 +2912,16 @@ interface components {
2753
2912
  has_more: boolean;
2754
2913
  next_cursor?: string | null;
2755
2914
  };
2915
+ PaginationMetadata: {
2916
+ /** Format: int64 */
2917
+ total_count: number;
2918
+ /** Format: int32 */
2919
+ current_page: number;
2920
+ /** Format: int32 */
2921
+ page_size: number;
2922
+ /** Format: int32 */
2923
+ total_pages: number;
2924
+ };
2756
2925
  /**
2757
2926
  * @description Typed customer input for one provider-requested authorization step.
2758
2927
  *
@@ -2839,6 +3008,12 @@ interface components {
2839
3008
  reference?: string | null;
2840
3009
  message: string;
2841
3010
  };
3011
+ Persona: {
3012
+ persona_type: components["schemas"]["PersonaType"];
3013
+ persona_id: string;
3014
+ };
3015
+ /** @enum {string} */
3016
+ PersonaType: "account" | "business" | "service";
2842
3017
  PlaceDetails: {
2843
3018
  formatted_address: string;
2844
3019
  street_address?: string | null;
@@ -3312,6 +3487,18 @@ interface components {
3312
3487
  ProviderResolutionSource: "zone" | "hint" | "fallback" | "rate" | "best_price";
3313
3488
  /** @enum {string} */
3314
3489
  ProviderType: "stripe" | "paystack" | "cellulant" | "mtn_momo" | "offline";
3490
+ PublicCatalogueCollection: {
3491
+ id: string;
3492
+ name: string;
3493
+ image_url?: string | null;
3494
+ };
3495
+ PublicCatalogueProduct: {
3496
+ id: string;
3497
+ name: string;
3498
+ image_url?: string | null;
3499
+ price: string;
3500
+ currency: string;
3501
+ };
3315
3502
  PublicCheckoutSessionResponse: {
3316
3503
  id: string;
3317
3504
  status: string;
@@ -3329,6 +3516,134 @@ interface components {
3329
3516
  /** Format: date-time */
3330
3517
  expires_at: string;
3331
3518
  };
3519
+ /** @enum {string} */
3520
+ PublicPartnerOfferScope: "product" | "collection" | "shop_wide";
3521
+ PublicPersona: {
3522
+ handle?: string | null;
3523
+ display_name: string;
3524
+ avatar_ref?: string | null;
3525
+ };
3526
+ PublicReview: {
3527
+ id: string;
3528
+ product_id?: string | null;
3529
+ media_refs: string[];
3530
+ reviewer_handle?: string | null;
3531
+ anonymous: boolean;
3532
+ review_text: string;
3533
+ /** Format: int32 */
3534
+ rating: number;
3535
+ verified_purchase: boolean;
3536
+ incentive_disclosure_required: boolean;
3537
+ /** Format: int32 */
3538
+ helpful_count: number;
3539
+ reply?: null | components["schemas"]["MerchantReply"];
3540
+ /** Format: date-time */
3541
+ created_at: string;
3542
+ };
3543
+ PublicSocialPost: {
3544
+ id: string;
3545
+ author: components["schemas"]["PublicPersona"];
3546
+ collaborators: components["schemas"]["PublicSocialPostCollaborator"][];
3547
+ kind: components["schemas"]["SocialPostKind"];
3548
+ caption?: string | null;
3549
+ media: components["schemas"]["PublicSocialPostMedia"][];
3550
+ audio_label?: string | null;
3551
+ market: string;
3552
+ /** Format: date-time */
3553
+ published_at: string;
3554
+ tags: components["schemas"]["PublicSocialPostTag"][];
3555
+ /**
3556
+ * @description Persistent server-projected disclosure. Once true for a published post,
3557
+ * offer retirement or enrollment revocation cannot clear it.
3558
+ */
3559
+ paid_partnership: boolean;
3560
+ partnership?: null | components["schemas"]["PublicSocialPostPartnership"];
3561
+ /** @description Opaque signed handoff for the tagged business storefront. */
3562
+ commerce_ref?: string | null;
3563
+ engagement: components["schemas"]["SocialPostEngagement"];
3564
+ viewer: components["schemas"]["SocialPostViewerState"];
3565
+ };
3566
+ PublicSocialPostCollaborator: {
3567
+ persona: components["schemas"]["PublicPersona"];
3568
+ /** Format: int32 */
3569
+ seq: number;
3570
+ };
3571
+ PublicSocialPostMedia: {
3572
+ url: string;
3573
+ poster_url?: string | null;
3574
+ blurhash?: string | null;
3575
+ hls_url?: string | null;
3576
+ init_segment_url?: string | null;
3577
+ /** Format: int64 */
3578
+ init_segment_bytes?: number | null;
3579
+ first_segment_url?: string | null;
3580
+ /** Format: int64 */
3581
+ first_segment_bytes?: number | null;
3582
+ /** Format: int32 */
3583
+ width?: number | null;
3584
+ /** Format: int32 */
3585
+ height?: number | null;
3586
+ /** Format: int64 */
3587
+ duration_ms?: number | null;
3588
+ mime_type?: string | null;
3589
+ alt_text?: string | null;
3590
+ };
3591
+ /**
3592
+ * @description Public, non-financial Partner Commerce truth. The earning tag identity is
3593
+ * exposed so composer, post, and earnings views cannot disagree about which
3594
+ * merchant/scope was selected. Rate and enrollment identities stay private.
3595
+ */
3596
+ PublicSocialPostPartnership: {
3597
+ /** Format: int32 */
3598
+ earning_tag_seq: number;
3599
+ offer_scope: components["schemas"]["PublicPartnerOfferScope"];
3600
+ };
3601
+ PublicSocialPostTag: {
3602
+ /** Format: int32 */
3603
+ seq: number;
3604
+ target: components["schemas"]["PublicSocialPostTagTarget"];
3605
+ };
3606
+ PublicSocialPostTagTarget: {
3607
+ value: components["schemas"]["PublicCatalogueProduct"];
3608
+ /** @enum {string} */
3609
+ type: "product";
3610
+ } | {
3611
+ value: components["schemas"]["PublicCatalogueCollection"];
3612
+ /** @enum {string} */
3613
+ type: "collection";
3614
+ } | {
3615
+ value: components["schemas"]["PublicSocialSaleTag"];
3616
+ /** @enum {string} */
3617
+ type: "sale";
3618
+ };
3619
+ PublicSocialSaleTag: {
3620
+ id: string;
3621
+ name: string;
3622
+ badge_text?: string | null;
3623
+ show_countdown: boolean;
3624
+ /** Format: date-time */
3625
+ occurrence_starts_at: string;
3626
+ /** Format: date-time */
3627
+ occurrence_ends_at: string;
3628
+ preview: components["schemas"]["PublicCatalogueProduct"][];
3629
+ };
3630
+ PublicSocialShelfPage: {
3631
+ sale: components["schemas"]["PublicSocialShelfSale"];
3632
+ items: components["schemas"]["PublicCatalogueProduct"][];
3633
+ next_cursor?: string | null;
3634
+ };
3635
+ PublicSocialShelfSale: {
3636
+ id: string;
3637
+ name: string;
3638
+ /** Format: int32 */
3639
+ version: number;
3640
+ badge_text?: string | null;
3641
+ show_countdown: boolean;
3642
+ /** Format: date-time */
3643
+ occurrence_starts_at: string;
3644
+ /** Format: date-time */
3645
+ occurrence_ends_at: string;
3646
+ };
3332
3647
  QuantityPricingTier: {
3333
3648
  /** Format: int32 */
3334
3649
  min_quantity: number;
@@ -3358,11 +3673,65 @@ interface components {
3358
3673
  /** Format: int64 */
3359
3674
  countdown_seconds?: number | null;
3360
3675
  };
3676
+ RatingDistribution: {
3677
+ /** Format: int64 */
3678
+ one: number;
3679
+ /** Format: int64 */
3680
+ two: number;
3681
+ /** Format: int64 */
3682
+ three: number;
3683
+ /** Format: int64 */
3684
+ four: number;
3685
+ /** Format: int64 */
3686
+ five: number;
3687
+ };
3688
+ RatingSummary: {
3689
+ product_id?: string | null;
3690
+ /** Format: int64 */
3691
+ review_count: number;
3692
+ /** Format: int64 */
3693
+ rating_sum: number;
3694
+ /** Format: double */
3695
+ average_rating?: number | null;
3696
+ distribution: components["schemas"]["RatingDistribution"];
3697
+ };
3698
+ ReactBody: {
3699
+ emoji: string;
3700
+ client_id: string;
3701
+ };
3361
3702
  RecommendationsResponse: {
3362
3703
  recommendations: components["schemas"]["ActivityRecommendation"][];
3363
3704
  intent: string;
3364
3705
  incentive?: null | components["schemas"]["IncentiveView"];
3365
3706
  };
3707
+ /** @description Browser-known session context only; identity and attribution are derived server-side. */
3708
+ RecordActivitySessionBody: {
3709
+ analytics_session_id?: string | null;
3710
+ /** @description Opaque signed handoff copied from a public Social commerce post. */
3711
+ social_commerce_ref?: string | null;
3712
+ started_at?: string | null;
3713
+ landing_page?: string | null;
3714
+ landing_url?: string | null;
3715
+ referrer_url?: string | null;
3716
+ utm_source?: string | null;
3717
+ utm_medium?: string | null;
3718
+ utm_campaign?: string | null;
3719
+ utm_term?: string | null;
3720
+ utm_content?: string | null;
3721
+ /** Format: int32 */
3722
+ screen_width?: number | null;
3723
+ /** Format: int32 */
3724
+ screen_height?: number | null;
3725
+ /** Format: int32 */
3726
+ viewport_width?: number | null;
3727
+ /** Format: int32 */
3728
+ viewport_height?: number | null;
3729
+ pixel_density?: string | null;
3730
+ language?: string | null;
3731
+ timezone?: string | null;
3732
+ fingerprint?: string | null;
3733
+ is_new_visitor?: boolean | null;
3734
+ };
3366
3735
  RecordEventsResponse: {
3367
3736
  processed: number;
3368
3737
  intent: string;
@@ -3466,6 +3835,43 @@ interface components {
3466
3835
  name: string;
3467
3836
  resource_type: string;
3468
3837
  };
3838
+ ResponseMetadata: {
3839
+ pagination?: null | components["schemas"]["PaginationMetadata"];
3840
+ cursor?: null | components["schemas"]["CursorMetadata"];
3841
+ /** Format: date-time */
3842
+ timestamp: string;
3843
+ request_id?: string | null;
3844
+ };
3845
+ ResponseStatus: {
3846
+ /** Format: int32 */
3847
+ code: number;
3848
+ success: boolean;
3849
+ };
3850
+ ReviewCursor: {
3851
+ /** Format: date-time */
3852
+ created_at: string;
3853
+ id: string;
3854
+ };
3855
+ ReviewPage_PublicReview: {
3856
+ items: {
3857
+ id: string;
3858
+ product_id?: string | null;
3859
+ media_refs: string[];
3860
+ reviewer_handle?: string | null;
3861
+ anonymous: boolean;
3862
+ review_text: string;
3863
+ /** Format: int32 */
3864
+ rating: number;
3865
+ verified_purchase: boolean;
3866
+ incentive_disclosure_required: boolean;
3867
+ /** Format: int32 */
3868
+ helpful_count: number;
3869
+ reply?: null | components["schemas"]["MerchantReply"];
3870
+ /** Format: date-time */
3871
+ created_at: string;
3872
+ }[];
3873
+ next_cursor?: null | components["schemas"]["ReviewCursor"];
3874
+ };
3469
3875
  /** @description Role-based message routing configuration */
3470
3876
  RoleBasedRouting: {
3471
3877
  /** @description Business identifier */
@@ -3631,30 +4037,14 @@ interface components {
3631
4037
  * @enum {string}
3632
4038
  */
3633
4039
  SemanticKind: "allergen" | "dietary_preference" | "sensitivity" | "consent";
3634
- /**
3635
- * @description POST /api/v1/support/conversation/messages
3636
- *
3637
- * Send a customer message. Triggers AI interpretation if the thread
3638
- * is in Autopilot mode.
3639
- * `client_id` is a widget-supplied idempotency key; passed through to
3640
- * `CreateMessage.external_id`, so a retried POST with the same id
3641
- * returns the originally created message instead of inserting twice.
3642
- * `reply_to_message_id` quotes another message by the id the customer
3643
- * actually has — `ChatMessageResponse.id`.
3644
- */
3645
4040
  SendMessageBody: {
3646
4041
  content: string;
3647
- client_id?: string | null;
4042
+ client_id: string;
3648
4043
  reply_to_message_id?: string | null;
3649
- /**
3650
- * @description Ids of image uploads made via `/api/v1/uploads` — the only way to
3651
- * attach media. The server stores the durable storage reference and
3652
- * presigns at read time.
3653
- */
3654
4044
  upload_ids?: string[];
4045
+ /** @description Signed Social commerce context for this exact entry message. */
4046
+ social_ref?: string | null;
3655
4047
  };
3656
- /** @enum {string} */
3657
- SenderType: "customer" | "agent" | "system" | "bot";
3658
4048
  ServiceAvailabilityDayView: {
3659
4049
  date: string;
3660
4050
  slots: components["schemas"]["BookingSlot"][];
@@ -3801,6 +4191,58 @@ interface components {
3801
4191
  /** Format: int32 */
3802
4192
  participant_count: number;
3803
4193
  };
4194
+ SocialPostEngagement: {
4195
+ /** Format: int64 */
4196
+ views: number;
4197
+ /** Format: int64 */
4198
+ likes: number;
4199
+ /** Format: int64 */
4200
+ comments: number;
4201
+ /** Format: int64 */
4202
+ shares: number;
4203
+ /** Format: int64 */
4204
+ saves: number;
4205
+ };
4206
+ /** @enum {string} */
4207
+ SocialPostKind: "video" | "image" | "live_replay";
4208
+ SocialPostMedia: {
4209
+ /**
4210
+ * @description Publishing-asset identity used to converge asynchronous media work.
4211
+ * Public Social projections use a separate DTO and omit this field.
4212
+ */
4213
+ asset_ref?: string | null;
4214
+ object_key: string;
4215
+ poster_key?: string | null;
4216
+ blurhash?: string | null;
4217
+ hls_key?: string | null;
4218
+ init_segment_key?: string | null;
4219
+ /** Format: int64 */
4220
+ init_segment_bytes?: number | null;
4221
+ first_segment_key?: string | null;
4222
+ /** Format: int64 */
4223
+ first_segment_bytes?: number | null;
4224
+ /** Format: int32 */
4225
+ w?: number | null;
4226
+ /** Format: int32 */
4227
+ h?: number | null;
4228
+ /** Format: int64 */
4229
+ dur_ms?: number | null;
4230
+ mime_type?: string | null;
4231
+ alt_text?: string | null;
4232
+ };
4233
+ SocialPostTag: {
4234
+ /** Format: int32 */
4235
+ seq: number;
4236
+ target_type: components["schemas"]["SocialPostTagType"];
4237
+ target_id: string;
4238
+ target_business_id: string;
4239
+ };
4240
+ /** @enum {string} */
4241
+ SocialPostTagType: "product" | "collection" | "sale" | "business" | "service";
4242
+ SocialPostViewerState: {
4243
+ liked: boolean;
4244
+ saved: boolean;
4245
+ };
3804
4246
  StaffInfo: {
3805
4247
  staff_id: string;
3806
4248
  name: string;
@@ -3845,6 +4287,9 @@ interface components {
3845
4287
  balance: string;
3846
4288
  currency: string;
3847
4289
  };
4290
+ StorefrontActivitySessionResponse: {
4291
+ data: components["schemas"]["RecordSessionResponse"];
4292
+ };
3848
4293
  /**
3849
4294
  * @description One method/network combination accepted by the storefront checkout input.
3850
4295
  * @enum {string}
@@ -3873,6 +4318,16 @@ interface components {
3873
4318
  StorefrontPaymentAuthorizationResponse: {
3874
4319
  data: components["schemas"]["CheckoutApiResponse"];
3875
4320
  };
4321
+ StorefrontReviewListResponse: {
4322
+ data: components["schemas"]["ReviewPage_PublicReview"];
4323
+ };
4324
+ StorefrontReviewSummary: {
4325
+ ratings: components["schemas"]["RatingSummary"];
4326
+ trust_chips: components["schemas"]["TrustChips"];
4327
+ };
4328
+ StorefrontReviewSummaryResponse: {
4329
+ data: components["schemas"]["StorefrontReviewSummary"];
4330
+ };
3876
4331
  SubmitAuthorizationArgs: {
3877
4332
  payment_id: string;
3878
4333
  authorization: components["schemas"]["PaymentAuthorizationSubmission"];
@@ -3985,6 +4440,16 @@ interface components {
3985
4440
  /** @description Whether to send payment confirmations */
3986
4441
  send_payment_confirmations: boolean;
3987
4442
  };
4443
+ TrustChips: {
4444
+ /** Format: double */
4445
+ on_time_delivery_percent?: number | null;
4446
+ /** Format: int64 */
4447
+ delivery_sample_size: number;
4448
+ /** Format: int64 */
4449
+ average_first_response_seconds?: number | null;
4450
+ /** Format: int64 */
4451
+ support_sample_size: number;
4452
+ };
3988
4453
  /** @description A comprehensive DTO for cart details to be sent to the frontend */
3989
4454
  UICart: {
3990
4455
  id: string;