@01.software/sdk 0.18.0 → 0.20.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.
@@ -57,10 +57,10 @@ interface Config {
57
57
  'cart-items': CartItem;
58
58
  discounts: Discount;
59
59
  promotions: Promotion;
60
- posts: Post;
61
- 'post-authors': PostAuthor;
62
- 'post-categories': PostCategory;
63
- 'post-tags': PostTag;
60
+ articles: Article;
61
+ 'article-authors': ArticleAuthor;
62
+ 'article-categories': ArticleCategory;
63
+ 'article-tags': ArticleTag;
64
64
  documents: Document;
65
65
  'document-categories': DocumentCategory;
66
66
  'document-types': DocumentType;
@@ -89,16 +89,17 @@ interface Config {
89
89
  'video-categories': VideoCategory;
90
90
  'video-tags': VideoTag;
91
91
  'live-streams': LiveStream;
92
- threads: Thread;
92
+ posts: Post;
93
93
  comments: Comment;
94
94
  reactions: Reaction;
95
95
  'reaction-types': ReactionType;
96
96
  bookmarks: Bookmark;
97
- 'thread-categories': ThreadCategory;
97
+ 'post-categories': PostCategory;
98
98
  reports: Report;
99
99
  'community-bans': CommunityBan;
100
100
  'event-calendars': EventCalendar;
101
101
  events: Event;
102
+ 'event-categories': EventCategory;
102
103
  'event-tags': EventTag;
103
104
  'event-occurrences': EventOccurrence;
104
105
  'event-registrations': EventRegistration;
@@ -144,13 +145,13 @@ interface Config {
144
145
  carts: {
145
146
  items: 'cart-items';
146
147
  };
147
- 'post-authors': {
148
- posts: 'posts';
148
+ 'article-authors': {
149
+ articles: 'articles';
149
150
  };
150
151
  galleries: {
151
152
  items: 'gallery-items';
152
153
  };
153
- threads: {
154
+ posts: {
154
155
  comments: 'comments';
155
156
  };
156
157
  };
@@ -203,10 +204,10 @@ interface Config {
203
204
  'cart-items': CartItemsSelect<false> | CartItemsSelect<true>;
204
205
  discounts: DiscountsSelect<false> | DiscountsSelect<true>;
205
206
  promotions: PromotionsSelect<false> | PromotionsSelect<true>;
206
- posts: PostsSelect<false> | PostsSelect<true>;
207
- 'post-authors': PostAuthorsSelect<false> | PostAuthorsSelect<true>;
208
- 'post-categories': PostCategoriesSelect<false> | PostCategoriesSelect<true>;
209
- 'post-tags': PostTagsSelect<false> | PostTagsSelect<true>;
207
+ articles: ArticlesSelect<false> | ArticlesSelect<true>;
208
+ 'article-authors': ArticleAuthorsSelect<false> | ArticleAuthorsSelect<true>;
209
+ 'article-categories': ArticleCategoriesSelect<false> | ArticleCategoriesSelect<true>;
210
+ 'article-tags': ArticleTagsSelect<false> | ArticleTagsSelect<true>;
210
211
  documents: DocumentsSelect<false> | DocumentsSelect<true>;
211
212
  'document-categories': DocumentCategoriesSelect<false> | DocumentCategoriesSelect<true>;
212
213
  'document-types': DocumentTypesSelect<false> | DocumentTypesSelect<true>;
@@ -235,16 +236,17 @@ interface Config {
235
236
  'video-categories': VideoCategoriesSelect<false> | VideoCategoriesSelect<true>;
236
237
  'video-tags': VideoTagsSelect<false> | VideoTagsSelect<true>;
237
238
  'live-streams': LiveStreamsSelect<false> | LiveStreamsSelect<true>;
238
- threads: ThreadsSelect<false> | ThreadsSelect<true>;
239
+ posts: PostsSelect<false> | PostsSelect<true>;
239
240
  comments: CommentsSelect<false> | CommentsSelect<true>;
240
241
  reactions: ReactionsSelect<false> | ReactionsSelect<true>;
241
242
  'reaction-types': ReactionTypesSelect<false> | ReactionTypesSelect<true>;
242
243
  bookmarks: BookmarksSelect<false> | BookmarksSelect<true>;
243
- 'thread-categories': ThreadCategoriesSelect<false> | ThreadCategoriesSelect<true>;
244
+ 'post-categories': PostCategoriesSelect<false> | PostCategoriesSelect<true>;
244
245
  reports: ReportsSelect<false> | ReportsSelect<true>;
245
246
  'community-bans': CommunityBansSelect<false> | CommunityBansSelect<true>;
246
247
  'event-calendars': EventCalendarsSelect<false> | EventCalendarsSelect<true>;
247
248
  events: EventsSelect<false> | EventsSelect<true>;
249
+ 'event-categories': EventCategoriesSelect<false> | EventCategoriesSelect<true>;
248
250
  'event-tags': EventTagsSelect<false> | EventTagsSelect<true>;
249
251
  'event-occurrences': EventOccurrencesSelect<false> | EventOccurrencesSelect<true>;
250
252
  'event-registrations': EventRegistrationsSelect<false> | EventRegistrationsSelect<true>;
@@ -358,6 +360,9 @@ interface User {
358
360
  emailPreferences?: {
359
361
  acceptsUsageAlerts?: boolean | null;
360
362
  };
363
+ /**
364
+ * Admin contact phone number. Enter with or without country code according to operating policy.
365
+ */
361
366
  phone?: string | null;
362
367
  isPhoneVerified?: boolean | null;
363
368
  lastLoginAt?: string | null;
@@ -365,7 +370,13 @@ interface User {
365
370
  isSuspended?: boolean | null;
366
371
  suspendedAt?: string | null;
367
372
  suspendedReason?: string | null;
373
+ /**
374
+ * Timezone used for admin UI and notifications, such as Asia/Seoul.
375
+ */
368
376
  timezone?: string | null;
377
+ /**
378
+ * Admin UI language or locale code, such as ko or en.
379
+ */
369
380
  locale?: string | null;
370
381
  avatar?: (string | null) | Image;
371
382
  anonymizedAt?: string | null;
@@ -411,21 +422,17 @@ interface Tenant {
411
422
  */
412
423
  owner: string | User;
413
424
  /**
414
- * Features available to this tenant. Determined automatically by the plan.
415
- */
416
- features?: {
417
- feature: 'ecommerce' | 'customers' | 'playlists' | 'galleries' | 'links' | 'forms' | 'posts' | 'documents' | 'canvas' | 'videos' | 'live-streaming' | 'community' | 'events';
418
- provenance: string;
419
- id?: string | null;
420
- }[] | null;
421
- /**
422
- * Features this tenant has opted out of. Only effective for features granted by the plan.
425
+ * Only features checked above will be enabled for this tenant.
423
426
  */
424
- disabledFeatures?: ('ecommerce' | 'customers' | 'playlists' | 'galleries' | 'links' | 'forms' | 'posts' | 'documents' | 'canvas' | 'videos' | 'live-streaming' | 'community' | 'events')[] | null;
427
+ enabledFeatures?: ('ecommerce' | 'customers' | 'playlists' | 'galleries' | 'links' | 'forms' | 'articles' | 'documents' | 'canvas' | 'videos' | 'live-streaming' | 'community' | 'events')[] | null;
428
+ featureVersion?: number | null;
425
429
  /**
426
430
  * Dev mode shows configuration tools like the field settings panel. Turn off after setup for a clean production UI.
427
431
  */
428
432
  isDevMode?: boolean | null;
433
+ /**
434
+ * Tenant lifecycle status. Managed by billing webhooks, deletion scheduling, or super-admin maintenance paths, not normal edits.
435
+ */
429
436
  status?: ('active' | 'paused' | 'past_due' | 'canceled' | 'pending_deletion') | null;
430
437
  /**
431
438
  * A public key that is safe to include in browser code. (Starts with pk01_)
@@ -439,7 +446,7 @@ interface Tenant {
439
446
  id?: string | null;
440
447
  }[] | null;
441
448
  /**
442
- * Webhook endpoints to notify on data changes.
449
+ * Trusted recipients for signed events. Sensitive payloads such as password-reset events may be delivered to these endpoints.
443
450
  */
444
451
  webhooks?: {
445
452
  /**
@@ -447,7 +454,7 @@ interface Tenant {
447
454
  */
448
455
  name?: string | null;
449
456
  /**
450
- * The URL to send webhooks to. Must be HTTPS.
457
+ * HTTPS URL that receives signed webhooks. Treat this endpoint as a recipient of sensitive tenant events.
451
458
  */
452
459
  url: string;
453
460
  /**
@@ -494,6 +501,9 @@ interface Tenant {
494
501
  interface Image {
495
502
  id: string;
496
503
  tenant?: (string | null) | Tenant;
504
+ /**
505
+ * Alternative text for users who cannot see the image and for search/share context.
506
+ */
497
507
  alt?: string | null;
498
508
  /**
499
509
  * Low quality image placeholder
@@ -570,7 +580,7 @@ interface Image {
570
580
  interface FieldConfig {
571
581
  id: string;
572
582
  tenant?: (string | null) | Tenant;
573
- collectionSlug: 'products' | 'product-variants' | 'product-options' | 'product-option-values' | 'product-collections' | 'product-categories' | 'product-tags' | 'brands' | 'discounts' | 'shipping-policies' | 'orders' | 'carts' | 'transactions' | 'fulfillments' | 'returns' | 'customers' | 'customer-groups' | 'customer-profiles' | 'post-authors' | 'posts' | 'post-categories' | 'post-tags' | 'documents' | 'document-categories' | 'document-types' | 'playlists' | 'playlist-categories' | 'playlist-tags' | 'tracks' | 'track-categories' | 'track-tags' | 'galleries' | 'gallery-categories' | 'gallery-tags' | 'gallery-items' | 'links' | 'link-categories' | 'link-tags' | 'canvases' | 'canvas-categories' | 'canvas-tags' | 'canvas-node-types' | 'canvas-edge-types' | 'videos' | 'video-categories' | 'video-tags' | 'live-streams' | 'forms' | 'threads' | 'comments' | 'reactions' | 'reaction-types' | 'bookmarks' | 'thread-categories' | 'event-calendars' | 'events' | 'event-tags' | 'event-occurrences' | 'event-registrations';
583
+ collectionSlug: 'products' | 'product-variants' | 'product-options' | 'product-option-values' | 'product-collections' | 'product-categories' | 'product-tags' | 'brands' | 'discounts' | 'shipping-policies' | 'orders' | 'carts' | 'transactions' | 'fulfillments' | 'returns' | 'customers' | 'customer-groups' | 'customer-profiles' | 'article-authors' | 'articles' | 'article-categories' | 'article-tags' | 'documents' | 'document-categories' | 'document-types' | 'playlists' | 'playlist-categories' | 'playlist-tags' | 'tracks' | 'track-categories' | 'track-tags' | 'galleries' | 'gallery-categories' | 'gallery-tags' | 'gallery-items' | 'links' | 'link-categories' | 'link-tags' | 'canvases' | 'canvas-categories' | 'canvas-tags' | 'canvas-node-types' | 'canvas-edge-types' | 'videos' | 'video-categories' | 'video-tags' | 'live-streams' | 'forms' | 'posts' | 'comments' | 'reactions' | 'reaction-types' | 'bookmarks' | 'post-categories' | 'event-calendars' | 'events' | 'event-categories' | 'event-tags' | 'event-occurrences' | 'event-registrations';
574
584
  isHidden?: boolean | null;
575
585
  hiddenFields?: {
576
586
  [k: string]: unknown;
@@ -585,7 +595,13 @@ interface FieldConfig {
585
595
  */
586
596
  interface SystemMedia {
587
597
  id: string;
598
+ /**
599
+ * Used for accessibility and image alternative text.
600
+ */
588
601
  alt?: string | null;
602
+ /**
603
+ * Caption displayed with the image.
604
+ */
589
605
  caption?: string | null;
590
606
  /**
591
607
  * Photographer or source attribution
@@ -638,8 +654,14 @@ interface EmailLog {
638
654
  */
639
655
  tenant?: (string | null) | Tenant;
640
656
  to: string;
657
+ /**
658
+ * Sender address passed to the email provider. Used for email audit traceability.
659
+ */
641
660
  from?: string | null;
642
661
  subject: string;
662
+ /**
663
+ * Email purpose and consent category. Used for verification, password reset, marketing, and audit review.
664
+ */
643
665
  type: 'usage-alert' | 'verification' | 'password-reset' | 'newsletter' | 'other' | 'oauth-login' | 'account-link';
644
666
  status: 'sent' | 'failed';
645
667
  sentAt: string;
@@ -671,16 +693,31 @@ interface ApiKey {
671
693
  * Key prefix (e.g. sk01_ab12cd3)
672
694
  */
673
695
  displayPrefix: string;
696
+ /**
697
+ * Trailing characters used to identify the key. The raw secret key is not stored or displayed.
698
+ */
674
699
  displaySuffix: string;
675
700
  /**
676
701
  * Capability scopes. Default is read+write; webhook dispatch requires webhook, analytics writes require analytics.
677
702
  */
678
703
  scopes?: ('read' | 'write' | 'webhook' | 'analytics' | 'super-admin')[] | null;
704
+ /**
705
+ * User who issued the key. Read-only provenance for issuance audit.
706
+ */
679
707
  createdBy?: (string | null) | User;
708
+ /**
709
+ * IP address of the key creation request. Privacy-bearing security audit metadata.
710
+ */
680
711
  createdByIp?: string | null;
681
712
  lastUsedAt?: string | null;
713
+ /**
714
+ * Last IP address that used the key. Privacy-bearing audit value for abuse investigation.
715
+ */
682
716
  lastUsedIp?: string | null;
683
717
  revokedAt?: string | null;
718
+ /**
719
+ * User who revoked the key. Read-only provenance for revocation audit.
720
+ */
684
721
  revokedBy?: (string | null) | User;
685
722
  /**
686
723
  * Optional expiration. Empty = never expires.
@@ -702,16 +739,31 @@ interface PersonalAccessToken {
702
739
  */
703
740
  name: string;
704
741
  secretHash: string;
742
+ /**
743
+ * PAT prefix. Display-only token type marker, not the raw token.
744
+ */
705
745
  displayPrefix: string;
746
+ /**
747
+ * Trailing characters used to identify the PAT. The raw token is not shown again.
748
+ */
706
749
  displaySuffix: string;
707
750
  /**
708
751
  * Default tenant ID for CLI operations. Set via `01 tenant use <name>`.
709
752
  */
710
753
  defaultTenant?: string | null;
754
+ /**
755
+ * IP address of the PAT creation request. Privacy-bearing security audit metadata.
756
+ */
711
757
  createdByIp?: string | null;
712
758
  lastUsedAt?: string | null;
759
+ /**
760
+ * Last IP address that used the PAT. Privacy-bearing audit value for abuse investigation.
761
+ */
713
762
  lastUsedIp?: string | null;
714
763
  revokedAt?: string | null;
764
+ /**
765
+ * User who revoked the PAT. Read-only provenance for revocation audit.
766
+ */
715
767
  revokedBy?: (string | null) | User;
716
768
  /**
717
769
  * PATs expire after 90 days by default.
@@ -733,11 +785,11 @@ interface AuditLog {
733
785
  */
734
786
  eventType: string;
735
787
  /**
736
- * Actor ID
788
+ * Actor ID. May refer to a user or service, and can be empty for system actions.
737
789
  */
738
790
  actorId?: string | null;
739
791
  /**
740
- * Event payload
792
+ * Detailed audit event payload. May contain sensitive security, billing, or provider context.
741
793
  */
742
794
  payload?: {
743
795
  [k: string]: unknown;
@@ -757,10 +809,13 @@ interface WebhookEvent {
757
809
  */
758
810
  provider: string;
759
811
  /**
760
- * Event ID
812
+ * Provider-supplied event ID. Used with provider as the idempotency key for duplicate prevention.
761
813
  */
762
814
  eventId: string;
763
815
  receivedAt?: string | null;
816
+ /**
817
+ * Raw provider event body. May contain sensitive security or payment context.
818
+ */
764
819
  payload?: {
765
820
  [k: string]: unknown;
766
821
  } | unknown[] | string | number | boolean | null;
@@ -776,7 +831,13 @@ interface WebhookDelivery {
776
831
  tenant?: (string | null) | Tenant;
777
832
  webhookEventId?: (string | null) | WebhookEvent;
778
833
  attempt: number;
834
+ /**
835
+ * Webhook delivery state. Updated by dispatcher and retry handling paths.
836
+ */
779
837
  status: 'pending' | 'success' | 'failed' | 'dead';
838
+ /**
839
+ * Timestamp when the webhook request was dispatched to the endpoint.
840
+ */
780
841
  dispatchedAt?: string | null;
781
842
  updatedAt: string;
782
843
  createdAt: string;
@@ -956,6 +1017,9 @@ interface TenantMetadatum {
956
1017
  interface BrandLogo {
957
1018
  id: string;
958
1019
  tenant?: (string | null) | Tenant;
1020
+ /**
1021
+ * Alternative text for users who cannot see the image and for search/share context.
1022
+ */
959
1023
  alt?: string | null;
960
1024
  /**
961
1025
  * Low quality image placeholder
@@ -1086,6 +1150,9 @@ interface ApiUsage {
1086
1150
  * AI generation count
1087
1151
  */
1088
1152
  aiGenerationCount?: number | null;
1153
+ /**
1154
+ * Timestamp when the usage snapshot cron calculated this monthly aggregate.
1155
+ */
1089
1156
  snapshottedAt?: string | null;
1090
1157
  updatedAt: string;
1091
1158
  createdAt: string;
@@ -1176,7 +1243,7 @@ interface AnalyticsEventSchema {
1176
1243
  id: string;
1177
1244
  tenant?: (string | null) | Tenant;
1178
1245
  /**
1179
- * snake_case identifier. Must match /^[a-z][a-z0-9_]*$/
1246
+ * Valid event name pattern.
1180
1247
  */
1181
1248
  eventName: string;
1182
1249
  enabled: boolean;
@@ -1204,13 +1271,19 @@ interface TenantEntitlement {
1204
1271
  id: string;
1205
1272
  tenant: string | Tenant;
1206
1273
  plan: 'free' | 'starter' | 'basic' | 'pro' | 'enterprise';
1274
+ /**
1275
+ * Lifecycle status for the entitlement. Only active rows participate in current plan resolution.
1276
+ */
1207
1277
  status: 'active' | 'scheduled' | 'expired' | 'revoked';
1208
- sourceType: 'subscription' | 'manual' | 'support' | 'promo' | 'trial' | 'legacy_migration' | 'enterprise_contract';
1278
+ sourceType: 'subscription' | 'manual' | 'support' | 'promo' | 'trial' | 'enterprise_contract';
1209
1279
  sourceSubscription?: (string | null) | Subscription;
1280
+ /**
1281
+ * Tie-breaker for overlapping entitlements. Higher values win within the same source precedence.
1282
+ */
1210
1283
  priority: number;
1211
1284
  startsAt: string;
1212
1285
  /**
1213
- * Entitlement end date. Required for promo / trial / legacy_migration sources, optional otherwise.
1286
+ * Entitlement end date. Required by hook validation for promo / trial sources and excluded from current plan resolution after expiry.
1214
1287
  */
1215
1288
  endsAt?: string | null;
1216
1289
  reason?: string | null;
@@ -1263,7 +1336,7 @@ interface Subscription {
1263
1336
  cardType?: string | null;
1264
1337
  };
1265
1338
  /**
1266
- * Additional provider metadata
1339
+ * Provider-owned diagnostic and audit metadata returned by the billing provider. Not a general manual-edit field.
1267
1340
  */
1268
1341
  providerMetadata?: {
1269
1342
  [k: string]: unknown;
@@ -1345,11 +1418,11 @@ interface Plan {
1345
1418
  */
1346
1419
  name: string;
1347
1420
  /**
1348
- * Features allowed for this plan
1421
+ * Reference-only feature list; enforced elsewhere.
1349
1422
  */
1350
- featuresAllowed?: ('ecommerce' | 'customers' | 'playlists' | 'galleries' | 'links' | 'forms' | 'posts' | 'documents' | 'canvas' | 'videos' | 'live-streaming' | 'community' | 'events')[] | null;
1423
+ featuresAllowed?: ('ecommerce' | 'customers' | 'playlists' | 'galleries' | 'links' | 'forms' | 'articles' | 'documents' | 'canvas' | 'videos' | 'live-streaming' | 'community' | 'events')[] | null;
1351
1424
  /**
1352
- * Quota limits (storageBytes, apiPerMonth, ...)
1425
+ * Reference-only quotas such as storageBytes; enforced by entitlement and usage policy elsewhere.
1353
1426
  */
1354
1427
  quotas?: {
1355
1428
  [k: string]: unknown;
@@ -1397,6 +1470,9 @@ interface Webhook {
1397
1470
  interface TenantLogo {
1398
1471
  id: string;
1399
1472
  tenant?: (string | null) | Tenant;
1473
+ /**
1474
+ * Alternative text for users who cannot see the image and for search/share context.
1475
+ */
1400
1476
  alt?: string | null;
1401
1477
  /**
1402
1478
  * Low quality image placeholder
@@ -1531,6 +1607,9 @@ interface Product {
1531
1607
  * Product weight (g)
1532
1608
  */
1533
1609
  weight?: number | null;
1610
+ /**
1611
+ * Product collections that include this product. Managed from the collection edit view.
1612
+ */
1534
1613
  collections?: {
1535
1614
  docs?: (string | ProductCollection)[];
1536
1615
  hasNextPage?: boolean;
@@ -1615,6 +1694,7 @@ interface Product {
1615
1694
  updatedAt: string;
1616
1695
  createdAt: string;
1617
1696
  deletedAt?: string | null;
1697
+ _status?: ('draft' | 'published') | null;
1618
1698
  }
1619
1699
  /**
1620
1700
  * This interface was referenced by `Config`'s JSON-Schema
@@ -1647,6 +1727,9 @@ interface Video {
1647
1727
  sourceLiveStream?: (string | null) | LiveStream;
1648
1728
  categories?: (string | VideoCategory)[] | null;
1649
1729
  tags?: (string | VideoTag)[] | null;
1730
+ /**
1731
+ * Mux processing status. Updated by upload/encoding jobs and not edited directly.
1732
+ */
1650
1733
  muxStatus?: ('waiting' | 'preparing' | 'ready' | 'errored') | null;
1651
1734
  durationSeconds?: number | null;
1652
1735
  muxAspectRatio?: string | null;
@@ -1699,6 +1782,9 @@ interface Video {
1699
1782
  metadata?: {
1700
1783
  [k: string]: unknown;
1701
1784
  } | unknown[] | string | number | boolean | null;
1785
+ /**
1786
+ * Read-only counter accumulated from video view events.
1787
+ */
1702
1788
  viewCount?: number | null;
1703
1789
  aspectRatio?: ('16_9' | '9_16' | '4_3' | '1_1') | null;
1704
1790
  /**
@@ -1734,6 +1820,9 @@ interface LiveStream {
1734
1820
  * Reconnect window (seconds)
1735
1821
  */
1736
1822
  reconnectWindowSeconds?: number | null;
1823
+ /**
1824
+ * Mux live stream status. Updated by stream create/disable jobs and not edited directly.
1825
+ */
1737
1826
  muxStatus?: ('idle' | 'active' | 'disabled') | null;
1738
1827
  muxLiveStreamId?: string | null;
1739
1828
  muxPlaybackId?: string | null;
@@ -1786,7 +1875,13 @@ interface LiveStream {
1786
1875
  } | unknown[] | string | number | boolean | null;
1787
1876
  startedAt?: string | null;
1788
1877
  endedAt?: string | null;
1878
+ /**
1879
+ * Highest concurrent viewer count recorded during live sessions.
1880
+ */
1789
1881
  peakViewerCount?: number | null;
1882
+ /**
1883
+ * Read-only counter accumulated from live stream view events.
1884
+ */
1790
1885
  viewCount?: number | null;
1791
1886
  updatedAt: string;
1792
1887
  createdAt: string;
@@ -2091,6 +2186,7 @@ interface Brand {
2091
2186
  updatedAt: string;
2092
2187
  createdAt: string;
2093
2188
  deletedAt?: string | null;
2189
+ _status?: ('draft' | 'published') | null;
2094
2190
  }
2095
2191
  /**
2096
2192
  * This interface was referenced by `Config`'s JSON-Schema
@@ -2220,6 +2316,7 @@ interface ProductCollection {
2220
2316
  updatedAt: string;
2221
2317
  createdAt: string;
2222
2318
  deletedAt?: string | null;
2319
+ _status?: ('draft' | 'published') | null;
2223
2320
  }
2224
2321
  /**
2225
2322
  * This interface was referenced by `Config`'s JSON-Schema
@@ -2334,9 +2431,12 @@ interface Customer {
2334
2431
  birthDate?: string | null;
2335
2432
  gender?: ('male' | 'female' | 'other' | 'prefer_not_to_say') | null;
2336
2433
  isGuest?: boolean | null;
2434
+ /**
2435
+ * Authentication provider used at signup. Immutable account provenance after creation.
2436
+ */
2337
2437
  authProvider?: ('local' | 'google' | 'apple' | 'kakao' | 'naver') | null;
2338
2438
  /**
2339
- * External provider user ID
2439
+ * External provider user ID. Paired with authProvider to identify the linked account and not edited after creation.
2340
2440
  */
2341
2441
  providerUserId?: string | null;
2342
2442
  lastLoginAt?: string | null;
@@ -2356,6 +2456,9 @@ interface Customer {
2356
2456
  };
2357
2457
  defaultShippingAddress?: (string | null) | CustomerAddress;
2358
2458
  defaultBillingAddress?: (string | null) | CustomerAddress;
2459
+ /**
2460
+ * Read-only counter maintained by order hooks for this customer's completed orders.
2461
+ */
2359
2462
  totalOrderCount?: number | null;
2360
2463
  lifetimeValue?: number | null;
2361
2464
  firstOrderAt?: string | null;
@@ -2365,9 +2468,21 @@ interface Customer {
2365
2468
  hasNextPage?: boolean;
2366
2469
  totalDocs?: number;
2367
2470
  };
2368
- threadCount?: number | null;
2471
+ /**
2472
+ * Read-only counter maintained by hooks for community posts authored by this customer.
2473
+ */
2474
+ postCount?: number | null;
2475
+ /**
2476
+ * Read-only counter maintained by hooks for community comments authored by this customer.
2477
+ */
2369
2478
  commentCount?: number | null;
2479
+ /**
2480
+ * Read-only counter maintained by hooks for community reactions made by this customer.
2481
+ */
2370
2482
  reactionCount?: number | null;
2483
+ /**
2484
+ * Marks a minor customer. When enabled, guardian consent fields are managed as compliance evidence.
2485
+ */
2371
2486
  isMinor?: boolean | null;
2372
2487
  marketingConsent?: {
2373
2488
  email?: {
@@ -2393,10 +2508,25 @@ interface Customer {
2393
2508
  */
2394
2509
  consentSource?: string | null;
2395
2510
  };
2511
+ /**
2512
+ * Guardian consent evidence for a minor customer. May contain guardian PII.
2513
+ */
2396
2514
  guardianConsent?: {
2515
+ /**
2516
+ * Whether guardian consent has been collected. Internal compliance marker for minor-customer handling.
2517
+ */
2397
2518
  hasGuardianConsent?: boolean | null;
2519
+ /**
2520
+ * Guardian name. Treat as guardian PII.
2521
+ */
2398
2522
  guardianName?: string | null;
2523
+ /**
2524
+ * Guardian phone number. Treat as guardian PII.
2525
+ */
2399
2526
  guardianPhone?: string | null;
2527
+ /**
2528
+ * Timestamp when guardian consent was recorded. Read-only audit evidence.
2529
+ */
2400
2530
  guardianConsentedAt?: string | null;
2401
2531
  };
2402
2532
  acceptsTos?: boolean | null;
@@ -2407,7 +2537,7 @@ interface Customer {
2407
2537
  withdrawReason?: string | null;
2408
2538
  withdrawnAt?: string | null;
2409
2539
  /**
2410
- * Legal retention deadline (hard-delete eligible after this date)
2540
+ * Legal retention deadline. Retention cleanup or manual hard-delete paths may purge after this date.
2411
2541
  */
2412
2542
  retainUntil?: string | null;
2413
2543
  anonymizedAt?: string | null;
@@ -2418,7 +2548,7 @@ interface Customer {
2418
2548
  loginAttemptCount?: number | null;
2419
2549
  lockedUntil?: string | null;
2420
2550
  /**
2421
- * Account suspension
2551
+ * Account suspension flag. Used with password/JWT revocation paths to block sessions.
2422
2552
  */
2423
2553
  isSuspended?: boolean | null;
2424
2554
  metadata?: {
@@ -2483,7 +2613,7 @@ interface CustomerAddress {
2483
2613
  */
2484
2614
  address2?: string | null;
2485
2615
  /**
2486
- * Jibun (legacy lot-based) address. Stored alongside the road-name `address1` so we can fall back when 도로명 is missing or for delivery providers that require 지번.
2616
+ * Jibun lot-based address. Stored alongside the road-name `address1` so we can fall back when 도로명 is missing or for delivery providers that require 지번.
2487
2617
  */
2488
2618
  jibunAddress?: string | null;
2489
2619
  /**
@@ -2524,7 +2654,7 @@ interface CustomerProfile {
2524
2654
  tenant?: (string | null) | Tenant;
2525
2655
  customer: string | Customer;
2526
2656
  /**
2527
- * Public username shown like @01works.
2657
+ * Public username shown like @01works. Store 3-30 characters without @, using lowercase ASCII letters, numbers, hyphens, or underscores, and keep it unique within the tenant.
2528
2658
  */
2529
2659
  handle?: string | null;
2530
2660
  displayName?: string | null;
@@ -2560,11 +2690,14 @@ interface OrderItem {
2560
2690
  id: string;
2561
2691
  tenant?: (string | null) | Tenant;
2562
2692
  order: string | Order;
2693
+ /**
2694
+ * Quantity snapshot at order time. Used for payment and inventory calculations and not edited directly.
2695
+ */
2563
2696
  product: string | Product;
2564
2697
  variant?: (string | null) | ProductVariant;
2565
2698
  quantity: number;
2566
2699
  /**
2567
- * Price per unit at time of order
2700
+ * Unit-price snapshot at order time. Later product price changes do not rewrite it.
2568
2701
  */
2569
2702
  unitPrice: number;
2570
2703
  variantTitle?: string | null;
@@ -2573,7 +2706,7 @@ interface OrderItem {
2573
2706
  weight?: number | null;
2574
2707
  requiresShipping?: boolean | null;
2575
2708
  /**
2576
- * unitPrice × quantity
2709
+ * Total-price snapshot at order time, preserved from unitPrice × quantity.
2577
2710
  */
2578
2711
  totalPrice: number;
2579
2712
  productTitle?: string | null;
@@ -2601,6 +2734,9 @@ interface Transaction {
2601
2734
  status: 'pending' | 'paid' | 'failed' | 'canceled' | 'refunded';
2602
2735
  order: string | Order;
2603
2736
  amount?: number | null;
2737
+ /**
2738
+ * Payment method snapshot returned by the provider. Not edited directly.
2739
+ */
2604
2740
  paymentMethod?: string | null;
2605
2741
  /**
2606
2742
  * Installment months (0 = lump sum)
@@ -2658,6 +2794,9 @@ interface Fulfillment {
2658
2794
  * Carrier name (e.g. CJ Logistics, FedEx)
2659
2795
  */
2660
2796
  carrier?: string | null;
2797
+ /**
2798
+ * Carrier tracking number. Used as input for the derived trackingUrl.
2799
+ */
2661
2800
  trackingNumber?: string | null;
2662
2801
  /**
2663
2802
  * Tracking URL (auto-derived from carrier + trackingNumber)
@@ -2672,7 +2811,7 @@ interface Fulfillment {
2672
2811
  totalDocs?: number;
2673
2812
  };
2674
2813
  /**
2675
- * Internal admin notes
2814
+ * Internal fulfillment note. Not shown directly to customers.
2676
2815
  */
2677
2816
  adminNotes?: string | null;
2678
2817
  metadata?: {
@@ -2711,6 +2850,9 @@ interface Return {
2711
2850
  */
2712
2851
  exchangeOrder?: (string | null) | Order;
2713
2852
  status: 'requested' | 'processing' | 'approved' | 'rejected' | 'completed';
2853
+ /**
2854
+ * Reason category for the return or refund request. Used for reporting and operations.
2855
+ */
2714
2856
  reason?: ('change_of_mind' | 'defective' | 'wrong_delivery' | 'damaged' | 'other') | null;
2715
2857
  /**
2716
2858
  * Detailed return reason
@@ -2722,7 +2864,7 @@ interface Return {
2722
2864
  totalDocs?: number;
2723
2865
  };
2724
2866
  /**
2725
- * Internal notes
2867
+ * Internal return-processing note. Not shown directly to customers.
2726
2868
  */
2727
2869
  adminNotes?: string | null;
2728
2870
  completedAt?: string | null;
@@ -2778,7 +2920,6 @@ interface OrderStatusLog {
2778
2920
  } | unknown[] | string | number | boolean | null;
2779
2921
  updatedAt: string;
2780
2922
  createdAt: string;
2781
- deletedAt?: string | null;
2782
2923
  }
2783
2924
  /**
2784
2925
  * This interface was referenced by `Config`'s JSON-Schema
@@ -2921,6 +3062,9 @@ interface Discount {
2921
3062
  * Total usage limit (empty = unlimited)
2922
3063
  */
2923
3064
  maxUses?: number | null;
3065
+ /**
3066
+ * Read-only usage count accumulated when this discount is applied successfully.
3067
+ */
2924
3068
  usesCount?: number | null;
2925
3069
  /**
2926
3070
  * Usage limit per customer (empty = unlimited)
@@ -2972,13 +3116,16 @@ interface Promotion {
2972
3116
  }
2973
3117
  /**
2974
3118
  * This interface was referenced by `Config`'s JSON-Schema
2975
- * via the `definition` "posts".
3119
+ * via the `definition` "articles".
2976
3120
  */
2977
- interface Post {
3121
+ interface Article {
2978
3122
  id: string;
2979
3123
  _order?: string | null;
2980
3124
  tenant?: (string | null) | Tenant;
2981
3125
  title: string;
3126
+ /**
3127
+ * Secondary title shown in article lists and at the top of the article page.
3128
+ */
2982
3129
  subtitle?: string | null;
2983
3130
  /**
2984
3131
  * Short summary for listing/cards
@@ -2999,9 +3146,9 @@ interface Post {
2999
3146
  };
3000
3147
  [k: string]: unknown;
3001
3148
  } | null;
3002
- authors?: (string | PostAuthor)[] | null;
3003
- categories?: (string | PostCategory)[] | null;
3004
- tags?: (string | PostTag)[] | null;
3149
+ authors?: (string | ArticleAuthor)[] | null;
3150
+ categories?: (string | ArticleCategory)[] | null;
3151
+ tags?: (string | ArticleTag)[] | null;
3005
3152
  videos?: (string | Video)[] | null;
3006
3153
  seo?: {
3007
3154
  /**
@@ -3052,14 +3199,23 @@ interface Post {
3052
3199
  * OG/Twitter excerpt (280 chars)
3053
3200
  */
3054
3201
  excerpt?: string | null;
3202
+ /**
3203
+ * Canonical URL for search engines. Leave empty to use this article URL.
3204
+ */
3055
3205
  canonicalUrl?: string | null;
3056
3206
  visibility?: ('public' | 'members' | 'paid') | null;
3207
+ /**
3208
+ * Scheduled publish time. The scheduled publishing job uses this timestamp.
3209
+ */
3057
3210
  scheduledAt?: string | null;
3211
+ /**
3212
+ * Date when featured placement should end.
3213
+ */
3058
3214
  featuredUntil?: string | null;
3059
3215
  /**
3060
- * Related posts
3216
+ * Related articles
3061
3217
  */
3062
- relatedPosts?: (string | Post)[] | null;
3218
+ relatedArticles?: (string | Article)[] | null;
3063
3219
  metadata?: {
3064
3220
  [k: string]: unknown;
3065
3221
  } | unknown[] | string | number | boolean | null;
@@ -3070,9 +3226,9 @@ interface Post {
3070
3226
  }
3071
3227
  /**
3072
3228
  * This interface was referenced by `Config`'s JSON-Schema
3073
- * via the `definition` "post-authors".
3229
+ * via the `definition` "article-authors".
3074
3230
  */
3075
- interface PostAuthor {
3231
+ interface ArticleAuthor {
3076
3232
  id: string;
3077
3233
  _order?: string | null;
3078
3234
  tenant?: (string | null) | Tenant;
@@ -3085,8 +3241,11 @@ interface PostAuthor {
3085
3241
  avatar?: (string | null) | Image;
3086
3242
  bio?: string | null;
3087
3243
  email?: string | null;
3088
- posts?: {
3089
- docs?: (string | Post)[];
3244
+ /**
3245
+ * Articles linked to this author. Managed from the authors relationship on each article.
3246
+ */
3247
+ articles?: {
3248
+ docs?: (string | Article)[];
3090
3249
  hasNextPage?: boolean;
3091
3250
  totalDocs?: number;
3092
3251
  };
@@ -3100,9 +3259,9 @@ interface PostAuthor {
3100
3259
  }
3101
3260
  /**
3102
3261
  * This interface was referenced by `Config`'s JSON-Schema
3103
- * via the `definition` "post-categories".
3262
+ * via the `definition` "article-categories".
3104
3263
  */
3105
- interface PostCategory {
3264
+ interface ArticleCategory {
3106
3265
  id: string;
3107
3266
  _order?: string | null;
3108
3267
  tenant?: (string | null) | Tenant;
@@ -3117,7 +3276,7 @@ interface PostCategory {
3117
3276
  */
3118
3277
  description?: string | null;
3119
3278
  image?: (string | null) | Image;
3120
- parent?: (string | null) | PostCategory;
3279
+ parent?: (string | null) | ArticleCategory;
3121
3280
  color?: string | null;
3122
3281
  updatedAt: string;
3123
3282
  createdAt: string;
@@ -3125,9 +3284,9 @@ interface PostCategory {
3125
3284
  }
3126
3285
  /**
3127
3286
  * This interface was referenced by `Config`'s JSON-Schema
3128
- * via the `definition` "post-tags".
3287
+ * via the `definition` "article-tags".
3129
3288
  */
3130
- interface PostTag {
3289
+ interface ArticleTag {
3131
3290
  id: string;
3132
3291
  _order?: string | null;
3133
3292
  tenant?: (string | null) | Tenant;
@@ -3142,7 +3301,7 @@ interface PostTag {
3142
3301
  */
3143
3302
  description?: string | null;
3144
3303
  image?: (string | null) | Image;
3145
- parent?: (string | null) | PostTag;
3304
+ parent?: (string | null) | ArticleTag;
3146
3305
  color?: string | null;
3147
3306
  updatedAt: string;
3148
3307
  createdAt: string;
@@ -3197,10 +3356,6 @@ interface Document {
3197
3356
  * Audience/timing for required agreement
3198
3357
  */
3199
3358
  agreementScope?: ('all_users' | 'new_users' | 'on_update') | null;
3200
- /**
3201
- * Legacy compatibility field; replaced by agreementScope
3202
- */
3203
- requiresAgreement?: boolean | null;
3204
3359
  /**
3205
3360
  * Keywords for search (e.g. GDPR, CCPA)
3206
3361
  */
@@ -3248,6 +3403,9 @@ interface Document {
3248
3403
  slug?: string | null;
3249
3404
  type?: (string | null) | DocumentType;
3250
3405
  jurisdiction?: string | null;
3406
+ /**
3407
+ * Document language code. Defaults to ko and is used for display and search categorization.
3408
+ */
3251
3409
  language?: string | null;
3252
3410
  /**
3253
3411
  * Document that supersedes this one
@@ -3330,6 +3488,9 @@ interface Playlist {
3330
3488
  videos?: (string | Video)[] | null;
3331
3489
  categories?: (string | PlaylistCategory)[] | null;
3332
3490
  tags?: (string | PlaylistTag)[] | null;
3491
+ /**
3492
+ * Tracks included in this playlist. Drag to adjust playback order.
3493
+ */
3333
3494
  tracks?: (string | Track)[] | null;
3334
3495
  seo?: {
3335
3496
  /**
@@ -3380,6 +3541,7 @@ interface Playlist {
3380
3541
  updatedAt: string;
3381
3542
  createdAt: string;
3382
3543
  deletedAt?: string | null;
3544
+ _status?: ('draft' | 'published') | null;
3383
3545
  }
3384
3546
  /**
3385
3547
  * This interface was referenced by `Config`'s JSON-Schema
@@ -3497,6 +3659,7 @@ interface Track {
3497
3659
  updatedAt: string;
3498
3660
  createdAt: string;
3499
3661
  deletedAt?: string | null;
3662
+ _status?: ('draft' | 'published') | null;
3500
3663
  }
3501
3664
  /**
3502
3665
  * This interface was referenced by `Config`'s JSON-Schema
@@ -3589,6 +3752,9 @@ interface Gallery {
3589
3752
  videos?: (string | Video)[] | null;
3590
3753
  categories?: (string | GalleryCategory)[] | null;
3591
3754
  tags?: (string | GalleryTag)[] | null;
3755
+ /**
3756
+ * Image items shown in this gallery. Their order controls gallery display order.
3757
+ */
3592
3758
  items?: {
3593
3759
  docs?: (string | GalleryItem)[];
3594
3760
  hasNextPage?: boolean;
@@ -3642,6 +3808,7 @@ interface Gallery {
3642
3808
  updatedAt: string;
3643
3809
  createdAt: string;
3644
3810
  deletedAt?: string | null;
3811
+ _status?: ('draft' | 'published') | null;
3645
3812
  }
3646
3813
  /**
3647
3814
  * This interface was referenced by `Config`'s JSON-Schema
@@ -3730,6 +3897,7 @@ interface GalleryItem {
3730
3897
  updatedAt: string;
3731
3898
  createdAt: string;
3732
3899
  deletedAt?: string | null;
3900
+ _status?: ('draft' | 'published') | null;
3733
3901
  }
3734
3902
  /**
3735
3903
  * This interface was referenced by `Config`'s JSON-Schema
@@ -3759,10 +3927,25 @@ interface Link {
3759
3927
  thumbnail?: (string | null) | Image;
3760
3928
  icon?: (string | null) | Image;
3761
3929
  publishedAt?: string | null;
3930
+ /**
3931
+ * Platform name for social or external links, such as Instagram or YouTube.
3932
+ */
3762
3933
  platform?: string | null;
3934
+ /**
3935
+ * Whether clicks should open this link in a new tab.
3936
+ */
3763
3937
  opensInNewTab?: boolean | null;
3938
+ /**
3939
+ * Controls whether rel=nofollow should be emitted for search engines.
3940
+ */
3764
3941
  noFollow?: boolean | null;
3942
+ /**
3943
+ * Link exposure expiration time. Can be used to stop showing the link after this timestamp.
3944
+ */
3765
3945
  expiresAt?: string | null;
3946
+ /**
3947
+ * Read-only counter accumulated from link click events.
3948
+ */
3766
3949
  clickCount?: number | null;
3767
3950
  lastClickedAt?: string | null;
3768
3951
  status?: ('draft' | 'published' | 'archived') | null;
@@ -3773,6 +3956,7 @@ interface Link {
3773
3956
  updatedAt: string;
3774
3957
  createdAt: string;
3775
3958
  deletedAt?: string | null;
3959
+ _status?: ('draft' | 'published') | null;
3776
3960
  }
3777
3961
  /**
3778
3962
  * This interface was referenced by `Config`'s JSON-Schema
@@ -3995,11 +4179,11 @@ interface CanvasNodeType {
3995
4179
  id?: string | null;
3996
4180
  }[] | null;
3997
4181
  /**
3998
- * React component code. Props: { fields, label, color, nodeTypeSlug, width, height }
4182
+ * Runtime JSX template. Props: { fields, label, color, nodeTypeSlug, width, height }. Save-time validation rejects blocked patterns.
3999
4183
  */
4000
4184
  template?: string | null;
4001
4185
  /**
4002
- * CSS for node. Selector: .flow-node--{slug}
4186
+ * CSS for this node. Scope selectors to .flow-node--{slug}; url/import/script patterns are rejected on save.
4003
4187
  */
4004
4188
  customCSS?: string | null;
4005
4189
  updatedAt: string;
@@ -4113,9 +4297,9 @@ interface CanvasEdge {
4113
4297
  }
4114
4298
  /**
4115
4299
  * This interface was referenced by `Config`'s JSON-Schema
4116
- * via the `definition` "threads".
4300
+ * via the `definition` "posts".
4117
4301
  */
4118
- interface Thread {
4302
+ interface Post {
4119
4303
  id: string;
4120
4304
  _order?: string | null;
4121
4305
  tenant?: (string | null) | Tenant;
@@ -4135,7 +4319,10 @@ interface Thread {
4135
4319
  };
4136
4320
  [k: string]: unknown;
4137
4321
  } | null;
4138
- categories?: (string | ThreadCategory)[] | null;
4322
+ categories?: (string | PostCategory)[] | null;
4323
+ /**
4324
+ * Comments on this post. Author and status are managed in the comments collection.
4325
+ */
4139
4326
  comments?: {
4140
4327
  docs?: (string | Comment)[];
4141
4328
  hasNextPage?: boolean;
@@ -4156,17 +4343,38 @@ interface Thread {
4156
4343
  avatarUrl?: string | null;
4157
4344
  };
4158
4345
  moderationStatus?: ('pending' | 'approved' | 'rejected' | 'reported' | 'hidden') | null;
4346
+ /**
4347
+ * Read-only counter accumulated from post view events.
4348
+ */
4159
4349
  viewCount?: number | null;
4350
+ /**
4351
+ * Read-only counter maintained by hooks for comments on this post.
4352
+ */
4160
4353
  commentCount?: number | null;
4354
+ /**
4355
+ * Read-only counter maintained by hooks for reactions on this post.
4356
+ */
4161
4357
  reactionCount?: number | null;
4358
+ /**
4359
+ * Accumulated report count for this post. Used only as a moderation signal.
4360
+ */
4162
4361
  reportCount?: number | null;
4362
+ /**
4363
+ * Marks whether this post should be pinned at the top of community lists.
4364
+ */
4163
4365
  isPinned?: boolean | null;
4366
+ /**
4367
+ * Controls whether new comments can be created for this post.
4368
+ */
4164
4369
  allowsComments?: boolean | null;
4165
4370
  visibility?: ('visible' | 'hidden') | null;
4166
4371
  /**
4167
4372
  * Lock comments
4168
4373
  */
4169
4374
  isLocked?: boolean | null;
4375
+ /**
4376
+ * Last comment or activity timestamp. Updated server-side for sorting and activity indicators.
4377
+ */
4170
4378
  lastActivityAt?: string | null;
4171
4379
  lastCommentByProfile?: (string | null) | CustomerProfile;
4172
4380
  isFeatured?: boolean | null;
@@ -4180,9 +4388,9 @@ interface Thread {
4180
4388
  }
4181
4389
  /**
4182
4390
  * This interface was referenced by `Config`'s JSON-Schema
4183
- * via the `definition` "thread-categories".
4391
+ * via the `definition` "post-categories".
4184
4392
  */
4185
- interface ThreadCategory {
4393
+ interface PostCategory {
4186
4394
  id: string;
4187
4395
  _order?: string | null;
4188
4396
  tenant?: (string | null) | Tenant;
@@ -4197,7 +4405,7 @@ interface ThreadCategory {
4197
4405
  */
4198
4406
  description?: string | null;
4199
4407
  image?: (string | null) | Image;
4200
- parent?: (string | null) | ThreadCategory;
4408
+ parent?: (string | null) | PostCategory;
4201
4409
  color?: string | null;
4202
4410
  updatedAt: string;
4203
4411
  createdAt: string;
@@ -4210,7 +4418,7 @@ interface ThreadCategory {
4210
4418
  interface Comment {
4211
4419
  id: string;
4212
4420
  tenant?: (string | null) | Tenant;
4213
- thread: string | Thread;
4421
+ post: string | Post;
4214
4422
  authorProfile: string | CustomerProfile;
4215
4423
  authorSnapshot: {
4216
4424
  displayName: string;
@@ -4218,17 +4426,33 @@ interface Comment {
4218
4426
  avatar?: (string | null) | Image;
4219
4427
  avatarUrl?: string | null;
4220
4428
  };
4429
+ displayLabel?: string | null;
4221
4430
  body?: string | null;
4222
4431
  parent?: (string | null) | Comment;
4432
+ /**
4433
+ * Comment nesting depth. Calculated server-side from parent/rootComment and not edited directly.
4434
+ */
4223
4435
  depth?: number | null;
4436
+ /**
4437
+ * Root comment for the thread. Server-managed relationship for efficient reply-tree lookup.
4438
+ */
4224
4439
  rootComment?: (string | null) | Comment;
4225
4440
  status?: ('published' | 'hidden' | 'removed') | null;
4226
4441
  moderationStatus?: ('pending' | 'approved' | 'rejected' | 'reported') | null;
4227
4442
  visibility?: ('visible' | 'hidden' | 'removed') | null;
4228
4443
  editedAt?: string | null;
4229
4444
  isEdited?: boolean | null;
4445
+ /**
4446
+ * Read-only counter maintained by hooks for reactions on this comment.
4447
+ */
4230
4448
  reactionCount?: number | null;
4449
+ /**
4450
+ * Accumulated report count for this comment. Used only as a moderation signal.
4451
+ */
4231
4452
  reportCount?: number | null;
4453
+ /**
4454
+ * Read-only counter for replies to this comment, maintained by hooks.
4455
+ */
4232
4456
  replyCount?: number | null;
4233
4457
  metadata?: {
4234
4458
  [k: string]: unknown;
@@ -4243,7 +4467,7 @@ interface Comment {
4243
4467
  interface Reaction {
4244
4468
  id: string;
4245
4469
  tenant?: (string | null) | Tenant;
4246
- thread?: (string | null) | Thread;
4470
+ post?: (string | null) | Post;
4247
4471
  comment?: (string | null) | Comment;
4248
4472
  actorProfile: string | CustomerProfile;
4249
4473
  type: string | ReactionType;
@@ -4289,7 +4513,7 @@ interface ReactionType {
4289
4513
  interface Bookmark {
4290
4514
  id: string;
4291
4515
  tenant?: (string | null) | Tenant;
4292
- thread: string | Thread;
4516
+ post: string | Post;
4293
4517
  customer: string | Customer;
4294
4518
  metadata?: {
4295
4519
  [k: string]: unknown;
@@ -4304,7 +4528,7 @@ interface Bookmark {
4304
4528
  interface Report {
4305
4529
  id: string;
4306
4530
  tenant?: (string | null) | Tenant;
4307
- target?: (string | null) | Thread;
4531
+ target?: (string | null) | Post;
4308
4532
  targetComment?: (string | null) | Comment;
4309
4533
  customer: string | Customer;
4310
4534
  reason: 'spam' | 'harassment' | 'inappropriate' | 'off-topic' | 'other';
@@ -4379,15 +4603,6 @@ interface EventCalendar {
4379
4603
  showPastOccurrences?: boolean | null;
4380
4604
  defaultRangeMonths?: number | null;
4381
4605
  };
4382
- defaultLocation?: {
4383
- name?: string | null;
4384
- address?: string | null;
4385
- onlineUrl?: string | null;
4386
- };
4387
- defaultRegistration?: {
4388
- policy?: ('none' | 'rsvp' | 'approval' | 'external') | null;
4389
- capacity?: number | null;
4390
- };
4391
4606
  seo?: {
4392
4607
  /**
4393
4608
  * Search result title (falls back to document title)
@@ -4465,7 +4680,7 @@ interface Event {
4465
4680
  };
4466
4681
  [k: string]: unknown;
4467
4682
  } | null;
4468
- eventCalendars: (string | EventCalendar)[];
4683
+ categories?: (string | EventCategory)[] | null;
4469
4684
  tags?: (string | EventTag)[] | null;
4470
4685
  organizer?: {
4471
4686
  name?: string | null;
@@ -4557,6 +4772,31 @@ interface Event {
4557
4772
  deletedAt?: string | null;
4558
4773
  _status?: ('draft' | 'published') | null;
4559
4774
  }
4775
+ /**
4776
+ * This interface was referenced by `Config`'s JSON-Schema
4777
+ * via the `definition` "event-categories".
4778
+ */
4779
+ interface EventCategory {
4780
+ id: string;
4781
+ _order?: string | null;
4782
+ tenant?: (string | null) | Tenant;
4783
+ title: string;
4784
+ /**
4785
+ * When enabled, the slug will auto-generate from the title field on save and autosave.
4786
+ */
4787
+ generateSlug?: boolean | null;
4788
+ slug?: string | null;
4789
+ /**
4790
+ * Short summary for listing/cards
4791
+ */
4792
+ description?: string | null;
4793
+ image?: (string | null) | Image;
4794
+ parent?: (string | null) | EventCategory;
4795
+ color?: string | null;
4796
+ updatedAt: string;
4797
+ createdAt: string;
4798
+ deletedAt?: string | null;
4799
+ }
4560
4800
  /**
4561
4801
  * This interface was referenced by `Config`'s JSON-Schema
4562
4802
  * via the `definition` "event-tags".
@@ -4599,6 +4839,9 @@ interface EventOccurrence {
4599
4839
  timezone: string;
4600
4840
  isAllDay?: boolean | null;
4601
4841
  status: 'scheduled' | 'canceled' | 'completed';
4842
+ /**
4843
+ * Location override for this occurrence only. Leave empty to use the event default location.
4844
+ */
4602
4845
  locationOverride?: {
4603
4846
  name?: string | null;
4604
4847
  address?: string | null;
@@ -4606,6 +4849,9 @@ interface EventOccurrence {
4606
4849
  note?: string | null;
4607
4850
  privateNote?: string | null;
4608
4851
  };
4852
+ /**
4853
+ * Capacity for this occurrence. Leave empty to inherit the event default registration settings.
4854
+ */
4609
4855
  capacity?: number | null;
4610
4856
  registrationCount?: number | null;
4611
4857
  waitlistCount?: number | null;
@@ -4636,18 +4882,33 @@ interface EventRegistration {
4636
4882
  customer?: (string | null) | Customer;
4637
4883
  registrationStatus: 'pending' | 'going' | 'waitlisted' | 'declined' | 'canceled';
4638
4884
  attendanceStatus: 'not_checked_in' | 'checked_in' | 'no_show';
4885
+ /**
4886
+ * Number of attendees for this registration. Used for ticketing and capacity calculations.
4887
+ */
4639
4888
  quantity: number;
4889
+ /**
4890
+ * PII snapshot captured at registration time. Hidden from publishable-key reads and subject to retention cleanup.
4891
+ */
4640
4892
  attendeeSnapshot?: {
4641
4893
  name?: string | null;
4642
4894
  email?: string | null;
4643
4895
  phone?: string | null;
4644
4896
  };
4897
+ /**
4898
+ * Internal attendee email. This is PII and is hidden from publishable-key reads.
4899
+ */
4645
4900
  attendeeEmail?: string | null;
4901
+ /**
4902
+ * Internal answers to registration questions. Hidden from publishable-key reads.
4903
+ */
4646
4904
  answers?: {
4647
4905
  question?: string | null;
4648
4906
  answer?: string | null;
4649
4907
  id?: string | null;
4650
4908
  }[] | null;
4909
+ /**
4910
+ * Manual approval data, including approval time, approver, and internal note.
4911
+ */
4651
4912
  approval?: {
4652
4913
  approvedAt?: string | null;
4653
4914
  approvedBy?: (string | null) | User;
@@ -4661,9 +4922,21 @@ interface EventRegistration {
4661
4922
  checkedInAt?: string | null;
4662
4923
  checkedInBy?: (string | null) | User;
4663
4924
  };
4925
+ /**
4926
+ * Hash of the guest access token. It is not the raw token and cannot be revealed or recovered by operators.
4927
+ */
4664
4928
  guestTokenHash?: string | null;
4929
+ /**
4930
+ * Guest token expiration timestamp. Used internally to decide token validity.
4931
+ */
4665
4932
  guestTokenExpiresAt?: string | null;
4933
+ /**
4934
+ * Retention deadline for attendee PII. Cleanup may redact PII after this timestamp.
4935
+ */
4666
4936
  piiRetentionUntil?: string | null;
4937
+ /**
4938
+ * Timestamp when PII was actually redacted. Written by the retention cleanup path.
4939
+ */
4667
4940
  piiRedactedAt?: string | null;
4668
4941
  metadata?: {
4669
4942
  [k: string]: unknown;
@@ -5023,17 +5296,17 @@ interface PayloadLockedDocument {
5023
5296
  relationTo: 'promotions';
5024
5297
  value: string | Promotion;
5025
5298
  } | null) | ({
5026
- relationTo: 'posts';
5027
- value: string | Post;
5299
+ relationTo: 'articles';
5300
+ value: string | Article;
5028
5301
  } | null) | ({
5029
- relationTo: 'post-authors';
5030
- value: string | PostAuthor;
5302
+ relationTo: 'article-authors';
5303
+ value: string | ArticleAuthor;
5031
5304
  } | null) | ({
5032
- relationTo: 'post-categories';
5033
- value: string | PostCategory;
5305
+ relationTo: 'article-categories';
5306
+ value: string | ArticleCategory;
5034
5307
  } | null) | ({
5035
- relationTo: 'post-tags';
5036
- value: string | PostTag;
5308
+ relationTo: 'article-tags';
5309
+ value: string | ArticleTag;
5037
5310
  } | null) | ({
5038
5311
  relationTo: 'documents';
5039
5312
  value: string | Document;
@@ -5119,8 +5392,8 @@ interface PayloadLockedDocument {
5119
5392
  relationTo: 'live-streams';
5120
5393
  value: string | LiveStream;
5121
5394
  } | null) | ({
5122
- relationTo: 'threads';
5123
- value: string | Thread;
5395
+ relationTo: 'posts';
5396
+ value: string | Post;
5124
5397
  } | null) | ({
5125
5398
  relationTo: 'comments';
5126
5399
  value: string | Comment;
@@ -5134,8 +5407,8 @@ interface PayloadLockedDocument {
5134
5407
  relationTo: 'bookmarks';
5135
5408
  value: string | Bookmark;
5136
5409
  } | null) | ({
5137
- relationTo: 'thread-categories';
5138
- value: string | ThreadCategory;
5410
+ relationTo: 'post-categories';
5411
+ value: string | PostCategory;
5139
5412
  } | null) | ({
5140
5413
  relationTo: 'reports';
5141
5414
  value: string | Report;
@@ -5148,6 +5421,9 @@ interface PayloadLockedDocument {
5148
5421
  } | null) | ({
5149
5422
  relationTo: 'events';
5150
5423
  value: string | Event;
5424
+ } | null) | ({
5425
+ relationTo: 'event-categories';
5426
+ value: string | EventCategory;
5151
5427
  } | null) | ({
5152
5428
  relationTo: 'event-tags';
5153
5429
  value: string | EventTag;
@@ -5488,12 +5764,8 @@ interface TenantsSelect<T extends boolean = true> {
5488
5764
  name?: T;
5489
5765
  slug?: T;
5490
5766
  owner?: T;
5491
- features?: T | {
5492
- feature?: T;
5493
- provenance?: T;
5494
- id?: T;
5495
- };
5496
- disabledFeatures?: T;
5767
+ enabledFeatures?: T;
5768
+ featureVersion?: T;
5497
5769
  isDevMode?: T;
5498
5770
  status?: T;
5499
5771
  publishableKey?: T;
@@ -5958,6 +6230,7 @@ interface ProductsSelect<T extends boolean = true> {
5958
6230
  updatedAt?: T;
5959
6231
  createdAt?: T;
5960
6232
  deletedAt?: T;
6233
+ _status?: T;
5961
6234
  }
5962
6235
  /**
5963
6236
  * This interface was referenced by `Config`'s JSON-Schema
@@ -6091,6 +6364,7 @@ interface ProductCollectionsSelect<T extends boolean = true> {
6091
6364
  updatedAt?: T;
6092
6365
  createdAt?: T;
6093
6366
  deletedAt?: T;
6367
+ _status?: T;
6094
6368
  }
6095
6369
  /**
6096
6370
  * This interface was referenced by `Config`'s JSON-Schema
@@ -6126,6 +6400,7 @@ interface BrandsSelect<T extends boolean = true> {
6126
6400
  updatedAt?: T;
6127
6401
  createdAt?: T;
6128
6402
  deletedAt?: T;
6403
+ _status?: T;
6129
6404
  }
6130
6405
  /**
6131
6406
  * This interface was referenced by `Config`'s JSON-Schema
@@ -6350,7 +6625,6 @@ interface OrderStatusLogsSelect<T extends boolean = true> {
6350
6625
  metadata?: T;
6351
6626
  updatedAt?: T;
6352
6627
  createdAt?: T;
6353
- deletedAt?: T;
6354
6628
  }
6355
6629
  /**
6356
6630
  * This interface was referenced by `Config`'s JSON-Schema
@@ -6480,7 +6754,7 @@ interface CustomersSelect<T extends boolean = true> {
6480
6754
  firstOrderAt?: T;
6481
6755
  lastOrderAt?: T;
6482
6756
  profile?: T;
6483
- threadCount?: T;
6757
+ postCount?: T;
6484
6758
  commentCount?: T;
6485
6759
  reactionCount?: T;
6486
6760
  isMinor?: T;
@@ -6703,9 +6977,9 @@ interface PromotionsSelect<T extends boolean = true> {
6703
6977
  }
6704
6978
  /**
6705
6979
  * This interface was referenced by `Config`'s JSON-Schema
6706
- * via the `definition` "posts_select".
6980
+ * via the `definition` "articles_select".
6707
6981
  */
6708
- interface PostsSelect<T extends boolean = true> {
6982
+ interface ArticlesSelect<T extends boolean = true> {
6709
6983
  _order?: T;
6710
6984
  tenant?: T;
6711
6985
  title?: T;
@@ -6739,7 +7013,7 @@ interface PostsSelect<T extends boolean = true> {
6739
7013
  visibility?: T;
6740
7014
  scheduledAt?: T;
6741
7015
  featuredUntil?: T;
6742
- relatedPosts?: T;
7016
+ relatedArticles?: T;
6743
7017
  metadata?: T;
6744
7018
  updatedAt?: T;
6745
7019
  createdAt?: T;
@@ -6748,9 +7022,9 @@ interface PostsSelect<T extends boolean = true> {
6748
7022
  }
6749
7023
  /**
6750
7024
  * This interface was referenced by `Config`'s JSON-Schema
6751
- * via the `definition` "post-authors_select".
7025
+ * via the `definition` "article-authors_select".
6752
7026
  */
6753
- interface PostAuthorsSelect<T extends boolean = true> {
7027
+ interface ArticleAuthorsSelect<T extends boolean = true> {
6754
7028
  _order?: T;
6755
7029
  tenant?: T;
6756
7030
  name?: T;
@@ -6759,7 +7033,7 @@ interface PostAuthorsSelect<T extends boolean = true> {
6759
7033
  avatar?: T;
6760
7034
  bio?: T;
6761
7035
  email?: T;
6762
- posts?: T;
7036
+ articles?: T;
6763
7037
  isActive?: T;
6764
7038
  metadata?: T;
6765
7039
  updatedAt?: T;
@@ -6768,9 +7042,9 @@ interface PostAuthorsSelect<T extends boolean = true> {
6768
7042
  }
6769
7043
  /**
6770
7044
  * This interface was referenced by `Config`'s JSON-Schema
6771
- * via the `definition` "post-categories_select".
7045
+ * via the `definition` "article-categories_select".
6772
7046
  */
6773
- interface PostCategoriesSelect<T extends boolean = true> {
7047
+ interface ArticleCategoriesSelect<T extends boolean = true> {
6774
7048
  _order?: T;
6775
7049
  tenant?: T;
6776
7050
  title?: T;
@@ -6786,9 +7060,9 @@ interface PostCategoriesSelect<T extends boolean = true> {
6786
7060
  }
6787
7061
  /**
6788
7062
  * This interface was referenced by `Config`'s JSON-Schema
6789
- * via the `definition` "post-tags_select".
7063
+ * via the `definition` "article-tags_select".
6790
7064
  */
6791
- interface PostTagsSelect<T extends boolean = true> {
7065
+ interface ArticleTagsSelect<T extends boolean = true> {
6792
7066
  _order?: T;
6793
7067
  tenant?: T;
6794
7068
  title?: T;
@@ -6818,7 +7092,6 @@ interface DocumentsSelect<T extends boolean = true> {
6818
7092
  expiresAt?: T;
6819
7093
  changeLog?: T;
6820
7094
  agreementScope?: T;
6821
- requiresAgreement?: T;
6822
7095
  keywords?: T | {
6823
7096
  keyword?: T;
6824
7097
  id?: T;
@@ -6922,6 +7195,7 @@ interface PlaylistsSelect<T extends boolean = true> {
6922
7195
  updatedAt?: T;
6923
7196
  createdAt?: T;
6924
7197
  deletedAt?: T;
7198
+ _status?: T;
6925
7199
  }
6926
7200
  /**
6927
7201
  * This interface was referenced by `Config`'s JSON-Schema
@@ -6993,6 +7267,7 @@ interface TracksSelect<T extends boolean = true> {
6993
7267
  updatedAt?: T;
6994
7268
  createdAt?: T;
6995
7269
  deletedAt?: T;
7270
+ _status?: T;
6996
7271
  }
6997
7272
  /**
6998
7273
  * This interface was referenced by `Config`'s JSON-Schema
@@ -7087,6 +7362,7 @@ interface GalleriesSelect<T extends boolean = true> {
7087
7362
  updatedAt?: T;
7088
7363
  createdAt?: T;
7089
7364
  deletedAt?: T;
7365
+ _status?: T;
7090
7366
  }
7091
7367
  /**
7092
7368
  * This interface was referenced by `Config`'s JSON-Schema
@@ -7141,6 +7417,7 @@ interface GalleryItemsSelect<T extends boolean = true> {
7141
7417
  updatedAt?: T;
7142
7418
  createdAt?: T;
7143
7419
  deletedAt?: T;
7420
+ _status?: T;
7144
7421
  }
7145
7422
  /**
7146
7423
  * This interface was referenced by `Config`'s JSON-Schema
@@ -7172,6 +7449,7 @@ interface LinksSelect<T extends boolean = true> {
7172
7449
  updatedAt?: T;
7173
7450
  createdAt?: T;
7174
7451
  deletedAt?: T;
7452
+ _status?: T;
7175
7453
  }
7176
7454
  /**
7177
7455
  * This interface was referenced by `Config`'s JSON-Schema
@@ -7509,9 +7787,9 @@ interface LiveStreamsSelect<T extends boolean = true> {
7509
7787
  }
7510
7788
  /**
7511
7789
  * This interface was referenced by `Config`'s JSON-Schema
7512
- * via the `definition` "threads_select".
7790
+ * via the `definition` "posts_select".
7513
7791
  */
7514
- interface ThreadsSelect<T extends boolean = true> {
7792
+ interface PostsSelect<T extends boolean = true> {
7515
7793
  _order?: T;
7516
7794
  tenant?: T;
7517
7795
  title?: T;
@@ -7553,7 +7831,7 @@ interface ThreadsSelect<T extends boolean = true> {
7553
7831
  */
7554
7832
  interface CommentsSelect<T extends boolean = true> {
7555
7833
  tenant?: T;
7556
- thread?: T;
7834
+ post?: T;
7557
7835
  authorProfile?: T;
7558
7836
  authorSnapshot?: T | {
7559
7837
  displayName?: T;
@@ -7561,6 +7839,7 @@ interface CommentsSelect<T extends boolean = true> {
7561
7839
  avatar?: T;
7562
7840
  avatarUrl?: T;
7563
7841
  };
7842
+ displayLabel?: T;
7564
7843
  body?: T;
7565
7844
  parent?: T;
7566
7845
  depth?: T;
@@ -7583,7 +7862,7 @@ interface CommentsSelect<T extends boolean = true> {
7583
7862
  */
7584
7863
  interface ReactionsSelect<T extends boolean = true> {
7585
7864
  tenant?: T;
7586
- thread?: T;
7865
+ post?: T;
7587
7866
  comment?: T;
7588
7867
  actorProfile?: T;
7589
7868
  type?: T;
@@ -7614,7 +7893,7 @@ interface ReactionTypesSelect<T extends boolean = true> {
7614
7893
  */
7615
7894
  interface BookmarksSelect<T extends boolean = true> {
7616
7895
  tenant?: T;
7617
- thread?: T;
7896
+ post?: T;
7618
7897
  customer?: T;
7619
7898
  metadata?: T;
7620
7899
  updatedAt?: T;
@@ -7622,9 +7901,9 @@ interface BookmarksSelect<T extends boolean = true> {
7622
7901
  }
7623
7902
  /**
7624
7903
  * This interface was referenced by `Config`'s JSON-Schema
7625
- * via the `definition` "thread-categories_select".
7904
+ * via the `definition` "post-categories_select".
7626
7905
  */
7627
- interface ThreadCategoriesSelect<T extends boolean = true> {
7906
+ interface PostCategoriesSelect<T extends boolean = true> {
7628
7907
  _order?: T;
7629
7908
  tenant?: T;
7630
7909
  title?: T;
@@ -7685,15 +7964,6 @@ interface EventCalendarsSelect<T extends boolean = true> {
7685
7964
  showPastOccurrences?: T;
7686
7965
  defaultRangeMonths?: T;
7687
7966
  };
7688
- defaultLocation?: T | {
7689
- name?: T;
7690
- address?: T;
7691
- onlineUrl?: T;
7692
- };
7693
- defaultRegistration?: T | {
7694
- policy?: T;
7695
- capacity?: T;
7696
- };
7697
7967
  seo?: T | {
7698
7968
  title?: T;
7699
7969
  description?: T;
@@ -7727,7 +7997,7 @@ interface EventsSelect<T extends boolean = true> {
7727
7997
  title?: T;
7728
7998
  description?: T;
7729
7999
  content?: T;
7730
- eventCalendars?: T;
8000
+ categories?: T;
7731
8001
  tags?: T;
7732
8002
  organizer?: T | {
7733
8003
  name?: T;
@@ -7790,6 +8060,24 @@ interface EventsSelect<T extends boolean = true> {
7790
8060
  deletedAt?: T;
7791
8061
  _status?: T;
7792
8062
  }
8063
+ /**
8064
+ * This interface was referenced by `Config`'s JSON-Schema
8065
+ * via the `definition` "event-categories_select".
8066
+ */
8067
+ interface EventCategoriesSelect<T extends boolean = true> {
8068
+ _order?: T;
8069
+ tenant?: T;
8070
+ title?: T;
8071
+ generateSlug?: T;
8072
+ slug?: T;
8073
+ description?: T;
8074
+ image?: T;
8075
+ parent?: T;
8076
+ color?: T;
8077
+ updatedAt?: T;
8078
+ createdAt?: T;
8079
+ deletedAt?: T;
8080
+ }
7793
8081
  /**
7794
8082
  * This interface was referenced by `Config`'s JSON-Schema
7795
8083
  * via the `definition` "event-tags_select".
@@ -8075,4 +8363,4 @@ declare module 'payload' {
8075
8363
  }
8076
8364
  }
8077
8365
 
8078
- export type { Config as C, Document as D, Form as F, Image as I, Order as O, Product as P, Return as R, Transaction as T, Video as V, Cart as a, CartItem as b, OrderItem as c, Fulfillment as d, Post as e, PostCategory as f, PostTag as g, ProductVariant as h, Tenant as i, CustomerProfile as j, Thread as k, Comment as l, Reaction as m };
8366
+ export type { Article as A, Config as C, Document as D, Form as F, Image as I, Order as O, Product as P, Return as R, Transaction as T, Video as V, Cart as a, CartItem as b, OrderItem as c, Fulfillment as d, ArticleAuthor as e, ArticleCategory as f, ArticleTag as g, Post as h, PostCategory as i, ProductVariant as j, Tenant as k, CustomerProfile as l, Comment as m, Reaction as n };