@01.software/sdk 0.32.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +253 -38
- package/dist/analytics/react.cjs.map +1 -1
- package/dist/analytics/react.js.map +1 -1
- package/dist/analytics.cjs.map +1 -1
- package/dist/analytics.js.map +1 -1
- package/dist/client.cjs +368 -24
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +7 -6
- package/dist/client.d.ts +7 -6
- package/dist/client.js +368 -24
- package/dist/client.js.map +1 -1
- package/dist/{collection-client-CORhppPb.d.cts → collection-client-CR2B8c1v.d.cts} +7 -3
- package/dist/{collection-client-DPGXnhoF.d.ts → collection-client-DkREjhQ9.d.ts} +7 -3
- package/dist/{const-DcY2_z9O.d.ts → const-BTvdrXtY.d.cts} +5 -5
- package/dist/{const-Brk2Ff0q.d.cts → const-CdqCauHQ.d.ts} +5 -5
- package/dist/index-CjA3U6X3.d.cts +186 -0
- package/dist/index-DK8_NXkh.d.ts +186 -0
- package/dist/index.cjs +1651 -260
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +74 -9
- package/dist/index.d.ts +74 -9
- package/dist/index.js +1651 -260
- package/dist/index.js.map +1 -1
- package/dist/{payload-types-DVK1QCeU.d.cts → payload-types-C7tb7Xbs.d.cts} +2115 -1833
- package/dist/{payload-types-DVK1QCeU.d.ts → payload-types-C7tb7Xbs.d.ts} +2115 -1833
- package/dist/query.cjs +194 -35
- package/dist/query.cjs.map +1 -1
- package/dist/query.d.cts +45 -18
- package/dist/query.d.ts +45 -18
- package/dist/query.js +194 -35
- package/dist/query.js.map +1 -1
- package/dist/realtime.cjs.map +1 -1
- package/dist/realtime.d.cts +2 -2
- package/dist/realtime.d.ts +2 -2
- package/dist/realtime.js.map +1 -1
- package/dist/{server-CrsPyqEc.d.cts → server-nXOezi4b.d.cts} +22 -6
- package/dist/{server-CrsPyqEc.d.ts → server-nXOezi4b.d.ts} +22 -6
- package/dist/server.cjs +474 -36
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +11 -179
- package/dist/server.d.ts +11 -179
- package/dist/server.js +474 -36
- package/dist/server.js.map +1 -1
- package/dist/{types-DUPC7Xn6.d.ts → types-1ylMrCuW.d.ts} +1 -1
- package/dist/{types-ByMrR_Z_.d.cts → types-Bx558PU6.d.cts} +1 -1
- package/dist/{types-CYMSBkJC.d.ts → types-Byo_Rty4.d.ts} +728 -75
- package/dist/{types-CAkWqIr6.d.cts → types-DDhtZI6E.d.cts} +728 -75
- package/dist/ui/canvas/server.cjs +231 -38
- package/dist/ui/canvas/server.cjs.map +1 -1
- package/dist/ui/canvas/server.d.cts +1 -1
- package/dist/ui/canvas/server.d.ts +1 -1
- package/dist/ui/canvas/server.js +221 -38
- package/dist/ui/canvas/server.js.map +1 -1
- package/dist/ui/canvas.cjs +320 -257
- package/dist/ui/canvas.cjs.map +1 -1
- package/dist/ui/canvas.d.cts +5 -19
- package/dist/ui/canvas.d.ts +5 -19
- package/dist/ui/canvas.js +323 -260
- package/dist/ui/canvas.js.map +1 -1
- package/dist/ui/form.d.cts +1 -1
- package/dist/ui/form.d.ts +1 -1
- package/dist/ui/video.d.cts +1 -1
- package/dist/ui/video.d.ts +1 -1
- package/dist/webhook.cjs +95 -0
- package/dist/webhook.cjs.map +1 -1
- package/dist/webhook.d.cts +20 -104
- package/dist/webhook.d.ts +20 -104
- package/dist/webhook.js +95 -0
- package/dist/webhook.js.map +1 -1
- package/package.json +4 -5
|
@@ -16,6 +16,7 @@ interface Config {
|
|
|
16
16
|
'system-media': SystemMedia;
|
|
17
17
|
audiences: Audience;
|
|
18
18
|
'email-logs': EmailLog;
|
|
19
|
+
'commerce-notification-intents': CommerceNotificationIntent;
|
|
19
20
|
'api-keys': ApiKey;
|
|
20
21
|
'personal-access-tokens': PersonalAccessToken;
|
|
21
22
|
'audit-logs': AuditLog;
|
|
@@ -101,6 +102,7 @@ interface Config {
|
|
|
101
102
|
'reaction-types': ReactionType;
|
|
102
103
|
bookmarks: Bookmark;
|
|
103
104
|
'post-categories': PostCategory;
|
|
105
|
+
'post-tags': PostTag;
|
|
104
106
|
reports: Report;
|
|
105
107
|
'community-bans': CommunityBan;
|
|
106
108
|
'event-calendars': EventCalendar;
|
|
@@ -183,6 +185,7 @@ interface Config {
|
|
|
183
185
|
'system-media': SystemMediaSelect<false> | SystemMediaSelect<true>;
|
|
184
186
|
audiences: AudiencesSelect<false> | AudiencesSelect<true>;
|
|
185
187
|
'email-logs': EmailLogsSelect<false> | EmailLogsSelect<true>;
|
|
188
|
+
'commerce-notification-intents': CommerceNotificationIntentsSelect<false> | CommerceNotificationIntentsSelect<true>;
|
|
186
189
|
'api-keys': ApiKeysSelect<false> | ApiKeysSelect<true>;
|
|
187
190
|
'personal-access-tokens': PersonalAccessTokensSelect<false> | PersonalAccessTokensSelect<true>;
|
|
188
191
|
'audit-logs': AuditLogsSelect<false> | AuditLogsSelect<true>;
|
|
@@ -268,6 +271,7 @@ interface Config {
|
|
|
268
271
|
'reaction-types': ReactionTypesSelect<false> | ReactionTypesSelect<true>;
|
|
269
272
|
bookmarks: BookmarksSelect<false> | BookmarksSelect<true>;
|
|
270
273
|
'post-categories': PostCategoriesSelect<false> | PostCategoriesSelect<true>;
|
|
274
|
+
'post-tags': PostTagsSelect<false> | PostTagsSelect<true>;
|
|
271
275
|
reports: ReportsSelect<false> | ReportsSelect<true>;
|
|
272
276
|
'community-bans': CommunityBansSelect<false> | CommunityBansSelect<true>;
|
|
273
277
|
'event-calendars': EventCalendarsSelect<false> | EventCalendarsSelect<true>;
|
|
@@ -539,6 +543,35 @@ interface Tenant {
|
|
|
539
543
|
origin: string;
|
|
540
544
|
id?: string | null;
|
|
541
545
|
}[] | null;
|
|
546
|
+
/**
|
|
547
|
+
* Commerce customer email notification settings. All v1 events are disabled by default.
|
|
548
|
+
*/
|
|
549
|
+
commerceNotifications?: {
|
|
550
|
+
/**
|
|
551
|
+
* Allow customer email sends for this event.
|
|
552
|
+
*/
|
|
553
|
+
orderPaid?: boolean | null;
|
|
554
|
+
/**
|
|
555
|
+
* Allow customer email sends for this event.
|
|
556
|
+
*/
|
|
557
|
+
orderCanceled?: boolean | null;
|
|
558
|
+
/**
|
|
559
|
+
* Allow customer email sends for this event.
|
|
560
|
+
*/
|
|
561
|
+
fulfillmentShipped?: boolean | null;
|
|
562
|
+
/**
|
|
563
|
+
* Allow customer email sends for this event.
|
|
564
|
+
*/
|
|
565
|
+
orderDelivered?: boolean | null;
|
|
566
|
+
/**
|
|
567
|
+
* Allow customer email sends for this event.
|
|
568
|
+
*/
|
|
569
|
+
returnRequested?: boolean | null;
|
|
570
|
+
/**
|
|
571
|
+
* Allow customer email sends for this event.
|
|
572
|
+
*/
|
|
573
|
+
returnCompleted?: boolean | null;
|
|
574
|
+
};
|
|
542
575
|
/**
|
|
543
576
|
* Users connected to this tenant
|
|
544
577
|
*/
|
|
@@ -683,7 +716,7 @@ interface SystemMedia {
|
|
|
683
716
|
interface FieldConfig {
|
|
684
717
|
id: string;
|
|
685
718
|
tenant?: (string | null) | Tenant;
|
|
686
|
-
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' | 'customer-profile-lists' | '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';
|
|
719
|
+
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' | 'customer-profile-lists' | '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' | 'post-tags' | 'event-calendars' | 'events' | 'event-categories' | 'event-tags' | 'event-occurrences' | 'event-registrations';
|
|
687
720
|
isHidden?: boolean | null;
|
|
688
721
|
hiddenFields?: {
|
|
689
722
|
[k: string]: unknown;
|
|
@@ -733,7 +766,7 @@ interface EmailLog {
|
|
|
733
766
|
/**
|
|
734
767
|
* Email purpose and consent category. Used for verification, password reset, marketing, and audit review.
|
|
735
768
|
*/
|
|
736
|
-
type: 'usage-alert' | 'verification' | 'password-reset' | 'newsletter' | 'other' | 'oauth-login' | 'account-link';
|
|
769
|
+
type: 'usage-alert' | 'verification' | 'password-reset' | 'newsletter' | 'other' | 'oauth-login' | 'account-link' | 'commerce';
|
|
737
770
|
status: 'sent' | 'failed';
|
|
738
771
|
sentAt: string;
|
|
739
772
|
error?: string | null;
|
|
@@ -748,1264 +781,1261 @@ interface EmailLog {
|
|
|
748
781
|
* Consent category for compliance audit
|
|
749
782
|
*/
|
|
750
783
|
recipientConsent?: ('marketing' | 'transactional' | 'service_notice') | null;
|
|
751
|
-
updatedAt: string;
|
|
752
|
-
createdAt: string;
|
|
753
|
-
}
|
|
754
|
-
/**
|
|
755
|
-
* This interface was referenced by `Config`'s JSON-Schema
|
|
756
|
-
* via the `definition` "api-keys".
|
|
757
|
-
*/
|
|
758
|
-
interface ApiKey {
|
|
759
|
-
id: string;
|
|
760
|
-
tenant: string | Tenant;
|
|
761
|
-
name: string;
|
|
762
|
-
secretHash: string;
|
|
763
|
-
/**
|
|
764
|
-
* Key prefix (e.g. sk01_ab12cd3)
|
|
765
|
-
*/
|
|
766
|
-
displayPrefix: string;
|
|
767
|
-
/**
|
|
768
|
-
* Trailing characters used to identify the key. The raw secret key is not stored or displayed.
|
|
769
|
-
*/
|
|
770
|
-
displaySuffix: string;
|
|
771
|
-
/**
|
|
772
|
-
* Capability scopes. Default is read+write; webhook dispatch requires webhook, analytics writes require analytics.
|
|
773
|
-
*/
|
|
774
|
-
scopes?: ('read' | 'write' | 'webhook' | 'analytics' | 'super-admin')[] | null;
|
|
775
|
-
/**
|
|
776
|
-
* User who issued the key. Read-only provenance for issuance audit.
|
|
777
|
-
*/
|
|
778
|
-
createdBy?: (string | null) | User;
|
|
779
|
-
/**
|
|
780
|
-
* IP address of the key creation request. Privacy-bearing security audit metadata.
|
|
781
|
-
*/
|
|
782
|
-
createdByIp?: string | null;
|
|
783
|
-
lastUsedAt?: string | null;
|
|
784
784
|
/**
|
|
785
|
-
*
|
|
786
|
-
*/
|
|
787
|
-
lastUsedIp?: string | null;
|
|
788
|
-
revokedAt?: string | null;
|
|
789
|
-
/**
|
|
790
|
-
* User who revoked the key. Read-only provenance for revocation audit.
|
|
791
|
-
*/
|
|
792
|
-
revokedBy?: (string | null) | User;
|
|
793
|
-
/**
|
|
794
|
-
* Optional expiration. Empty = never expires.
|
|
785
|
+
* Commerce notification send audit metadata. Consent classification remains owned by recipientConsent.
|
|
795
786
|
*/
|
|
796
|
-
|
|
787
|
+
commerceNotification?: {
|
|
788
|
+
event?: ('orderPaid' | 'orderCanceled' | 'fulfillmentShipped' | 'orderDelivered' | 'returnRequested' | 'returnCompleted') | null;
|
|
789
|
+
intent?: (string | null) | CommerceNotificationIntent;
|
|
790
|
+
dedupeKey?: string | null;
|
|
791
|
+
order?: (string | null) | Order;
|
|
792
|
+
fulfillment?: (string | null) | Fulfillment;
|
|
793
|
+
return?: (string | null) | Return;
|
|
794
|
+
customer?: (string | null) | Customer;
|
|
795
|
+
};
|
|
797
796
|
updatedAt: string;
|
|
798
797
|
createdAt: string;
|
|
799
|
-
deletedAt?: string | null;
|
|
800
798
|
}
|
|
801
799
|
/**
|
|
802
800
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
803
|
-
* via the `definition` "
|
|
801
|
+
* via the `definition` "commerce-notification-intents".
|
|
804
802
|
*/
|
|
805
|
-
interface
|
|
803
|
+
interface CommerceNotificationIntent {
|
|
806
804
|
id: string;
|
|
807
|
-
|
|
808
|
-
/**
|
|
809
|
-
* e.g. "CLI: MacBook Pro (darwin)", "GitHub Actions"
|
|
810
|
-
*/
|
|
811
|
-
name: string;
|
|
812
|
-
secretHash: string;
|
|
813
|
-
/**
|
|
814
|
-
* PAT prefix. Display-only token type marker, not the raw token.
|
|
815
|
-
*/
|
|
816
|
-
displayPrefix: string;
|
|
817
|
-
/**
|
|
818
|
-
* Trailing characters used to identify the PAT. The raw token is not shown again.
|
|
819
|
-
*/
|
|
820
|
-
displaySuffix: string;
|
|
805
|
+
tenant?: (string | null) | Tenant;
|
|
821
806
|
/**
|
|
822
|
-
*
|
|
807
|
+
* Stable key that prevents duplicate notification intents within a tenant.
|
|
823
808
|
*/
|
|
824
|
-
|
|
809
|
+
dedupeKey: string;
|
|
810
|
+
event: 'orderPaid' | 'orderCanceled' | 'fulfillmentShipped' | 'orderDelivered' | 'returnRequested' | 'returnCompleted';
|
|
811
|
+
status: 'queued' | 'processing' | 'sent' | 'failed' | 'canceled';
|
|
825
812
|
/**
|
|
826
|
-
*
|
|
813
|
+
* Customer email address targeted by this notification.
|
|
827
814
|
*/
|
|
828
|
-
|
|
829
|
-
lastUsedAt?: string | null;
|
|
815
|
+
recipientEmail: string;
|
|
830
816
|
/**
|
|
831
|
-
*
|
|
817
|
+
* Locale hint for template rendering.
|
|
832
818
|
*/
|
|
833
|
-
|
|
834
|
-
revokedAt?: string | null;
|
|
819
|
+
locale?: string | null;
|
|
835
820
|
/**
|
|
836
|
-
*
|
|
821
|
+
* Secret-free event snapshot for processor template rendering.
|
|
837
822
|
*/
|
|
838
|
-
|
|
823
|
+
payload?: {
|
|
824
|
+
[k: string]: unknown;
|
|
825
|
+
} | unknown[] | string | number | boolean | null;
|
|
826
|
+
order?: (string | null) | Order;
|
|
827
|
+
fulfillment?: (string | null) | Fulfillment;
|
|
828
|
+
return?: (string | null) | Return;
|
|
829
|
+
customer?: (string | null) | Customer;
|
|
839
830
|
/**
|
|
840
|
-
*
|
|
831
|
+
* Email audit log produced from this intent.
|
|
841
832
|
*/
|
|
842
|
-
|
|
833
|
+
emailLog?: (string | null) | EmailLog;
|
|
834
|
+
attempts: number;
|
|
835
|
+
nextAttemptAt?: string | null;
|
|
836
|
+
lockedAt?: string | null;
|
|
837
|
+
processedAt?: string | null;
|
|
838
|
+
lastError?: string | null;
|
|
843
839
|
updatedAt: string;
|
|
844
840
|
createdAt: string;
|
|
845
|
-
deletedAt?: string | null;
|
|
846
841
|
}
|
|
847
842
|
/**
|
|
848
843
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
849
|
-
* via the `definition` "
|
|
844
|
+
* via the `definition` "orders".
|
|
850
845
|
*/
|
|
851
|
-
interface
|
|
846
|
+
interface Order {
|
|
852
847
|
id: string;
|
|
853
848
|
tenant?: (string | null) | Tenant;
|
|
849
|
+
orderNumber: string;
|
|
850
|
+
cartToken?: string | null;
|
|
851
|
+
status: 'pending' | 'paid' | 'failed' | 'canceled' | 'refunded' | 'preparing' | 'shipped' | 'delivered' | 'confirmed' | 'return_requested' | 'return_processing' | 'returned';
|
|
852
|
+
totalAmount?: number | null;
|
|
853
|
+
discountCode?: string | null;
|
|
854
|
+
discountAmount?: number | null;
|
|
854
855
|
/**
|
|
855
|
-
*
|
|
856
|
+
* Cumulative refunded amount
|
|
856
857
|
*/
|
|
857
|
-
|
|
858
|
+
refundedAmount?: number | null;
|
|
858
859
|
/**
|
|
859
|
-
*
|
|
860
|
+
* Shipping amount at time of order
|
|
860
861
|
*/
|
|
861
|
-
|
|
862
|
+
shippingAmount?: number | null;
|
|
862
863
|
/**
|
|
863
|
-
*
|
|
864
|
+
* Item subtotal (excl. shipping & discount)
|
|
864
865
|
*/
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
createdAt: string;
|
|
870
|
-
}
|
|
871
|
-
/**
|
|
872
|
-
* This interface was referenced by `Config`'s JSON-Schema
|
|
873
|
-
* via the `definition` "webhook-events".
|
|
874
|
-
*/
|
|
875
|
-
interface WebhookEvent {
|
|
876
|
-
id: string;
|
|
877
|
-
tenant?: (string | null) | Tenant;
|
|
866
|
+
subtotalAmount?: number | null;
|
|
867
|
+
taxAmount?: number | null;
|
|
868
|
+
source?: ('web' | 'app' | 'manual') | null;
|
|
869
|
+
currency?: string | null;
|
|
878
870
|
/**
|
|
879
|
-
*
|
|
871
|
+
* Internal admin notes (not visible to customers)
|
|
880
872
|
*/
|
|
881
|
-
|
|
873
|
+
adminNotes?: string | null;
|
|
874
|
+
cancelReason?: string | null;
|
|
875
|
+
canceledAt?: string | null;
|
|
876
|
+
completedAt?: string | null;
|
|
882
877
|
/**
|
|
883
|
-
*
|
|
878
|
+
* Note left by customer at checkout
|
|
884
879
|
*/
|
|
885
|
-
|
|
886
|
-
|
|
880
|
+
customerNote?: string | null;
|
|
881
|
+
customer?: (string | null) | Customer;
|
|
887
882
|
/**
|
|
888
|
-
*
|
|
883
|
+
* Customer info at the time of order
|
|
889
884
|
*/
|
|
890
|
-
|
|
885
|
+
customerSnapshot?: {
|
|
886
|
+
name?: string | null;
|
|
887
|
+
email?: string | null;
|
|
888
|
+
phone?: string | null;
|
|
889
|
+
};
|
|
890
|
+
shippingAddress?: {
|
|
891
|
+
recipientName?: string | null;
|
|
892
|
+
phone?: string | null;
|
|
893
|
+
postalCode?: string | null;
|
|
894
|
+
address?: string | null;
|
|
895
|
+
detailAddress?: string | null;
|
|
896
|
+
deliveryMessage?: string | null;
|
|
897
|
+
};
|
|
898
|
+
billingAddress?: {
|
|
899
|
+
recipientName?: string | null;
|
|
900
|
+
businessRegistrationNumber?: string | null;
|
|
901
|
+
email?: string | null;
|
|
902
|
+
phone?: string | null;
|
|
903
|
+
address?: string | null;
|
|
904
|
+
};
|
|
905
|
+
items?: {
|
|
906
|
+
docs?: (string | OrderItem)[];
|
|
907
|
+
hasNextPage?: boolean;
|
|
908
|
+
totalDocs?: number;
|
|
909
|
+
};
|
|
910
|
+
transactions?: {
|
|
911
|
+
docs?: (string | Transaction)[];
|
|
912
|
+
hasNextPage?: boolean;
|
|
913
|
+
totalDocs?: number;
|
|
914
|
+
};
|
|
915
|
+
fulfillments?: {
|
|
916
|
+
docs?: (string | Fulfillment)[];
|
|
917
|
+
hasNextPage?: boolean;
|
|
918
|
+
totalDocs?: number;
|
|
919
|
+
};
|
|
920
|
+
returns?: {
|
|
921
|
+
docs?: (string | Return)[];
|
|
922
|
+
hasNextPage?: boolean;
|
|
923
|
+
totalDocs?: number;
|
|
924
|
+
};
|
|
925
|
+
metadata?: {
|
|
891
926
|
[k: string]: unknown;
|
|
892
927
|
} | unknown[] | string | number | boolean | null;
|
|
928
|
+
nextRefundSeq?: number | null;
|
|
929
|
+
nextCaptureSeq?: number | null;
|
|
930
|
+
nextVoidSeq?: number | null;
|
|
893
931
|
updatedAt: string;
|
|
894
932
|
createdAt: string;
|
|
933
|
+
deletedAt?: string | null;
|
|
895
934
|
}
|
|
896
935
|
/**
|
|
897
936
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
898
|
-
* via the `definition` "
|
|
937
|
+
* via the `definition` "customers".
|
|
899
938
|
*/
|
|
900
|
-
interface
|
|
939
|
+
interface Customer {
|
|
901
940
|
id: string;
|
|
941
|
+
_customers_customers_order?: string | null;
|
|
942
|
+
_order?: string | null;
|
|
902
943
|
tenant?: (string | null) | Tenant;
|
|
944
|
+
name: string;
|
|
945
|
+
email?: string | null;
|
|
946
|
+
phone?: string | null;
|
|
947
|
+
groups?: (string | CustomerGroup)[] | null;
|
|
903
948
|
/**
|
|
904
|
-
*
|
|
949
|
+
* Internal notes (not visible to customers)
|
|
905
950
|
*/
|
|
906
|
-
|
|
951
|
+
note?: string | null;
|
|
952
|
+
birthDate?: string | null;
|
|
953
|
+
gender?: ('male' | 'female' | 'other' | 'prefer_not_to_say') | null;
|
|
954
|
+
isGuest?: boolean | null;
|
|
907
955
|
/**
|
|
908
|
-
*
|
|
956
|
+
* Authentication provider used at signup. Immutable account provenance after creation.
|
|
909
957
|
*/
|
|
910
|
-
|
|
911
|
-
attempt: number;
|
|
958
|
+
authProvider?: ('local' | 'google' | 'apple' | 'kakao' | 'naver') | null;
|
|
912
959
|
/**
|
|
913
|
-
*
|
|
960
|
+
* External provider user ID. Paired with authProvider to identify the linked account and not edited after creation.
|
|
914
961
|
*/
|
|
915
|
-
|
|
962
|
+
providerUserId?: string | null;
|
|
963
|
+
lastLoginAt?: string | null;
|
|
916
964
|
/**
|
|
917
|
-
*
|
|
965
|
+
* Last password change timestamp (used for JWT revocation)
|
|
918
966
|
*/
|
|
919
|
-
|
|
967
|
+
passwordChangedAt?: string | null;
|
|
968
|
+
orders?: {
|
|
969
|
+
docs?: (string | Order)[];
|
|
970
|
+
hasNextPage?: boolean;
|
|
971
|
+
totalDocs?: number;
|
|
972
|
+
};
|
|
973
|
+
addresses?: {
|
|
974
|
+
docs?: (string | CustomerAddress)[];
|
|
975
|
+
hasNextPage?: boolean;
|
|
976
|
+
totalDocs?: number;
|
|
977
|
+
};
|
|
978
|
+
defaultShippingAddress?: (string | null) | CustomerAddress;
|
|
979
|
+
defaultBillingAddress?: (string | null) | CustomerAddress;
|
|
920
980
|
/**
|
|
921
|
-
*
|
|
981
|
+
* Read-only counter maintained by order hooks for this customer's completed orders.
|
|
922
982
|
*/
|
|
923
|
-
|
|
983
|
+
totalOrderCount?: number | null;
|
|
984
|
+
lifetimeValue?: number | null;
|
|
985
|
+
firstOrderAt?: string | null;
|
|
986
|
+
lastOrderAt?: string | null;
|
|
987
|
+
profile?: {
|
|
988
|
+
docs?: (string | CustomerProfile)[];
|
|
989
|
+
hasNextPage?: boolean;
|
|
990
|
+
totalDocs?: number;
|
|
991
|
+
};
|
|
924
992
|
/**
|
|
925
|
-
*
|
|
993
|
+
* Read-only counter maintained by hooks for community posts authored by this customer.
|
|
926
994
|
*/
|
|
927
|
-
|
|
995
|
+
postCount?: number | null;
|
|
928
996
|
/**
|
|
929
|
-
*
|
|
997
|
+
* Read-only counter maintained by hooks for community comments authored by this customer.
|
|
930
998
|
*/
|
|
931
|
-
|
|
999
|
+
commentCount?: number | null;
|
|
932
1000
|
/**
|
|
933
|
-
*
|
|
1001
|
+
* Read-only counter maintained by hooks for community reactions made by this customer.
|
|
934
1002
|
*/
|
|
935
|
-
|
|
1003
|
+
reactionCount?: number | null;
|
|
936
1004
|
/**
|
|
937
|
-
*
|
|
1005
|
+
* Marks a minor customer. When enabled, guardian consent fields are managed as compliance evidence.
|
|
938
1006
|
*/
|
|
939
|
-
|
|
1007
|
+
isMinor?: boolean | null;
|
|
1008
|
+
marketingConsent?: {
|
|
1009
|
+
email?: {
|
|
1010
|
+
isConsented?: boolean | null;
|
|
1011
|
+
consentedAt?: string | null;
|
|
1012
|
+
expiresAt?: string | null;
|
|
1013
|
+
unsubscribedAt?: string | null;
|
|
1014
|
+
};
|
|
1015
|
+
sms?: {
|
|
1016
|
+
isConsented?: boolean | null;
|
|
1017
|
+
consentedAt?: string | null;
|
|
1018
|
+
expiresAt?: string | null;
|
|
1019
|
+
unsubscribedAt?: string | null;
|
|
1020
|
+
};
|
|
1021
|
+
push?: {
|
|
1022
|
+
isConsented?: boolean | null;
|
|
1023
|
+
consentedAt?: string | null;
|
|
1024
|
+
expiresAt?: string | null;
|
|
1025
|
+
unsubscribedAt?: string | null;
|
|
1026
|
+
};
|
|
1027
|
+
/**
|
|
1028
|
+
* Channel through which consent was obtained (e.g. signup, checkout, import)
|
|
1029
|
+
*/
|
|
1030
|
+
consentSource?: string | null;
|
|
1031
|
+
};
|
|
940
1032
|
/**
|
|
941
|
-
*
|
|
1033
|
+
* Guardian consent evidence for a minor customer. May contain guardian PII.
|
|
942
1034
|
*/
|
|
943
|
-
|
|
1035
|
+
guardianConsent?: {
|
|
1036
|
+
/**
|
|
1037
|
+
* Whether guardian consent has been collected. Internal compliance marker for minor-customer handling.
|
|
1038
|
+
*/
|
|
1039
|
+
hasGuardianConsent?: boolean | null;
|
|
1040
|
+
/**
|
|
1041
|
+
* Guardian name. Treat as guardian PII.
|
|
1042
|
+
*/
|
|
1043
|
+
guardianName?: string | null;
|
|
1044
|
+
/**
|
|
1045
|
+
* Guardian phone number. Treat as guardian PII.
|
|
1046
|
+
*/
|
|
1047
|
+
guardianPhone?: string | null;
|
|
1048
|
+
/**
|
|
1049
|
+
* Timestamp when guardian consent was recorded. Read-only audit evidence.
|
|
1050
|
+
*/
|
|
1051
|
+
guardianConsentedAt?: string | null;
|
|
1052
|
+
};
|
|
1053
|
+
acceptsTos?: boolean | null;
|
|
1054
|
+
tosVersion?: string | null;
|
|
944
1055
|
/**
|
|
945
|
-
*
|
|
1056
|
+
* Withdrawal reason (internal)
|
|
946
1057
|
*/
|
|
947
|
-
|
|
1058
|
+
withdrawReason?: string | null;
|
|
1059
|
+
withdrawnAt?: string | null;
|
|
948
1060
|
/**
|
|
949
|
-
*
|
|
1061
|
+
* Legal retention deadline. Retention cleanup or manual hard-delete paths may purge after this date.
|
|
950
1062
|
*/
|
|
951
|
-
|
|
1063
|
+
retainUntil?: string | null;
|
|
1064
|
+
anonymizedAt?: string | null;
|
|
1065
|
+
hashedPassword?: string | null;
|
|
1066
|
+
salt?: string | null;
|
|
1067
|
+
resetPasswordToken?: string | null;
|
|
1068
|
+
resetPasswordExpiresAt?: string | null;
|
|
1069
|
+
loginAttemptCount?: number | null;
|
|
1070
|
+
lockedUntil?: string | null;
|
|
952
1071
|
/**
|
|
953
|
-
*
|
|
1072
|
+
* Account suspension flag. Used with password/JWT revocation paths to block sessions.
|
|
954
1073
|
*/
|
|
955
|
-
|
|
1074
|
+
isSuspended?: boolean | null;
|
|
1075
|
+
metadata?: {
|
|
1076
|
+
[k: string]: unknown;
|
|
1077
|
+
} | unknown[] | string | number | boolean | null;
|
|
1078
|
+
updatedAt: string;
|
|
1079
|
+
createdAt: string;
|
|
1080
|
+
deletedAt?: string | null;
|
|
1081
|
+
collection: 'customers';
|
|
1082
|
+
}
|
|
1083
|
+
/**
|
|
1084
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
1085
|
+
* via the `definition` "customer-groups".
|
|
1086
|
+
*/
|
|
1087
|
+
interface CustomerGroup {
|
|
1088
|
+
id: string;
|
|
1089
|
+
_order?: string | null;
|
|
1090
|
+
tenant?: (string | null) | Tenant;
|
|
1091
|
+
title?: string | null;
|
|
956
1092
|
/**
|
|
957
|
-
*
|
|
1093
|
+
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
958
1094
|
*/
|
|
959
|
-
|
|
1095
|
+
generateSlug?: boolean | null;
|
|
1096
|
+
slug?: string | null;
|
|
960
1097
|
/**
|
|
961
|
-
*
|
|
1098
|
+
* Short summary for listing/cards
|
|
962
1099
|
*/
|
|
963
|
-
|
|
1100
|
+
description?: string | null;
|
|
1101
|
+
/**
|
|
1102
|
+
* Optional #RRGGBB display color for Admin surfaces.
|
|
1103
|
+
*/
|
|
1104
|
+
color?: string | null;
|
|
1105
|
+
image?: (string | null) | Image;
|
|
1106
|
+
isActive?: boolean | null;
|
|
1107
|
+
/**
|
|
1108
|
+
* Show this group as a customer-facing membership badge. The group collection itself remains private.
|
|
1109
|
+
*/
|
|
1110
|
+
customerVisible?: boolean | null;
|
|
1111
|
+
/**
|
|
1112
|
+
* Customer-facing label. Falls back to title when empty.
|
|
1113
|
+
*/
|
|
1114
|
+
publicTitle?: string | null;
|
|
1115
|
+
publicDescription?: string | null;
|
|
1116
|
+
publicBenefits?: {
|
|
1117
|
+
title?: string | null;
|
|
1118
|
+
description?: string | null;
|
|
1119
|
+
id?: string | null;
|
|
1120
|
+
}[] | null;
|
|
1121
|
+
/**
|
|
1122
|
+
* Customer-facing badge color. Example: #2563eb
|
|
1123
|
+
*/
|
|
1124
|
+
badgeColor?: string | null;
|
|
1125
|
+
badgeImage?: (string | null) | Image;
|
|
1126
|
+
/**
|
|
1127
|
+
* Customer membership display order. Lower values appear first.
|
|
1128
|
+
*/
|
|
1129
|
+
displayOrder?: number | null;
|
|
1130
|
+
metadata?: {
|
|
1131
|
+
[k: string]: unknown;
|
|
1132
|
+
} | unknown[] | string | number | boolean | null;
|
|
1133
|
+
customers?: {
|
|
1134
|
+
docs?: (string | Customer)[];
|
|
1135
|
+
hasNextPage?: boolean;
|
|
1136
|
+
totalDocs?: number;
|
|
1137
|
+
};
|
|
964
1138
|
updatedAt: string;
|
|
965
1139
|
createdAt: string;
|
|
1140
|
+
deletedAt?: string | null;
|
|
966
1141
|
}
|
|
967
1142
|
/**
|
|
968
1143
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
969
|
-
* via the `definition` "
|
|
1144
|
+
* via the `definition` "customer-addresses".
|
|
970
1145
|
*/
|
|
971
|
-
interface
|
|
1146
|
+
interface CustomerAddress {
|
|
972
1147
|
id: string;
|
|
973
1148
|
tenant?: (string | null) | Tenant;
|
|
1149
|
+
customer: string | Customer;
|
|
1150
|
+
label?: string | null;
|
|
1151
|
+
recipientName?: string | null;
|
|
1152
|
+
phone?: string | null;
|
|
1153
|
+
postalCode?: string | null;
|
|
974
1154
|
/**
|
|
975
|
-
*
|
|
1155
|
+
* Road-name address (returned by Daum/Naver postal code pickers)
|
|
976
1156
|
*/
|
|
977
|
-
|
|
1157
|
+
address1?: string | null;
|
|
978
1158
|
/**
|
|
979
|
-
*
|
|
1159
|
+
* Detail address (unit / floor / building name)
|
|
980
1160
|
*/
|
|
981
|
-
|
|
1161
|
+
address2?: string | null;
|
|
982
1162
|
/**
|
|
983
|
-
*
|
|
1163
|
+
* Jibun lot-based address. Stored alongside the road-name `address1` so we can fall back when 도로명 is missing or for delivery providers that require 지번.
|
|
984
1164
|
*/
|
|
985
|
-
|
|
1165
|
+
jibunAddress?: string | null;
|
|
986
1166
|
/**
|
|
987
|
-
*
|
|
1167
|
+
* City (KR: 시/군 — e.g. "Seoul", "Busan"; non-KR: city/town).
|
|
988
1168
|
*/
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
1169
|
+
city?: string | null;
|
|
1170
|
+
/**
|
|
1171
|
+
* Administrative area (KR: 시/도 — usually folded into `city`; non-KR: state / province / region).
|
|
1172
|
+
*/
|
|
1173
|
+
administrativeArea?: string | null;
|
|
1174
|
+
/**
|
|
1175
|
+
* Which address form to print on the shipping label (default: road).
|
|
1176
|
+
*/
|
|
1177
|
+
addressType?: ('road' | 'jibun') | null;
|
|
1178
|
+
/**
|
|
1179
|
+
* ISO 3166-1 alpha-2 country code
|
|
1180
|
+
*/
|
|
1181
|
+
country?: string | null;
|
|
1182
|
+
isDefault?: boolean | null;
|
|
1183
|
+
/**
|
|
1184
|
+
* Delivery request preset. Pick "Other" to switch to a free-form deliveryNote.
|
|
1185
|
+
*/
|
|
1186
|
+
deliveryRequest?: ('security_office' | 'handoff_in_person' | 'call_before' | 'leave_at_door' | 'other') | null;
|
|
1187
|
+
/**
|
|
1188
|
+
* Free-form delivery note. Prefer the deliveryRequest preset when one of the choices fits; reserve this for actually-custom instructions.
|
|
1189
|
+
*/
|
|
1190
|
+
deliveryNote?: string | null;
|
|
998
1191
|
updatedAt: string;
|
|
999
1192
|
createdAt: string;
|
|
1000
1193
|
deletedAt?: string | null;
|
|
1001
1194
|
}
|
|
1002
1195
|
/**
|
|
1003
1196
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
1004
|
-
* via the `definition` "
|
|
1197
|
+
* via the `definition` "customer-profiles".
|
|
1005
1198
|
*/
|
|
1006
|
-
interface
|
|
1199
|
+
interface CustomerProfile {
|
|
1007
1200
|
id: string;
|
|
1008
1201
|
tenant?: (string | null) | Tenant;
|
|
1009
|
-
|
|
1010
|
-
/**
|
|
1011
|
-
* Site title (used in browser tab and SEO)
|
|
1012
|
-
*/
|
|
1013
|
-
title?: string | null;
|
|
1014
|
-
/**
|
|
1015
|
-
* Site description (used for SEO and social media)
|
|
1016
|
-
*/
|
|
1017
|
-
description?: string | null;
|
|
1018
|
-
/**
|
|
1019
|
-
* Comma-separated keywords for SEO
|
|
1020
|
-
*/
|
|
1021
|
-
keywords?: string | null;
|
|
1022
|
-
/**
|
|
1023
|
-
* Site author or company name
|
|
1024
|
-
*/
|
|
1025
|
-
author?: string | null;
|
|
1026
|
-
/**
|
|
1027
|
-
* Full site URL (e.g., https://example.com)
|
|
1028
|
-
*/
|
|
1029
|
-
url?: string | null;
|
|
1030
|
-
};
|
|
1202
|
+
customer: string | Customer;
|
|
1031
1203
|
/**
|
|
1032
|
-
*
|
|
1204
|
+
* 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.
|
|
1033
1205
|
*/
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
/**
|
|
1060
|
-
* Theme color for mobile browsers (hex color)
|
|
1061
|
-
*/
|
|
1062
|
-
themeColor?: string | null;
|
|
1063
|
-
};
|
|
1064
|
-
seo?: {
|
|
1065
|
-
/**
|
|
1066
|
-
* Robots meta tag (e.g., "index, follow" or "noindex, nofollow")
|
|
1067
|
-
*/
|
|
1068
|
-
robots?: string | null;
|
|
1069
|
-
/**
|
|
1070
|
-
* Google Site Verification code
|
|
1071
|
-
*/
|
|
1072
|
-
googleSiteVerification?: string | null;
|
|
1073
|
-
/**
|
|
1074
|
-
* Bing Site Verification code
|
|
1075
|
-
*/
|
|
1076
|
-
bingSiteVerification?: string | null;
|
|
1077
|
-
/**
|
|
1078
|
-
* Naver Site Verification code
|
|
1079
|
-
*/
|
|
1080
|
-
naverSiteVerification?: string | null;
|
|
1081
|
-
/**
|
|
1082
|
-
* Canonical URL (if different from site URL)
|
|
1083
|
-
*/
|
|
1084
|
-
canonicalUrl?: string | null;
|
|
1085
|
-
};
|
|
1086
|
-
analytics?: {
|
|
1087
|
-
/**
|
|
1088
|
-
* Google Analytics ID (e.g., G-XXXXXXXXXX)
|
|
1089
|
-
*/
|
|
1090
|
-
googleAnalyticsId?: string | null;
|
|
1091
|
-
/**
|
|
1092
|
-
* Google Tag Manager ID (e.g., GTM-XXXXXXX)
|
|
1093
|
-
*/
|
|
1094
|
-
googleTagManagerId?: string | null;
|
|
1095
|
-
/**
|
|
1096
|
-
* Facebook Pixel ID
|
|
1097
|
-
*/
|
|
1098
|
-
facebookPixelId?: string | null;
|
|
1099
|
-
/**
|
|
1100
|
-
* LinkedIn Partner ID
|
|
1101
|
-
*/
|
|
1102
|
-
linkedInPartnerId?: string | null;
|
|
1103
|
-
};
|
|
1104
|
-
openGraph?: {
|
|
1105
|
-
/**
|
|
1106
|
-
* Open Graph title (falls back to site title)
|
|
1107
|
-
*/
|
|
1108
|
-
ogTitle?: string | null;
|
|
1109
|
-
/**
|
|
1110
|
-
* Open Graph description (falls back to site description)
|
|
1111
|
-
*/
|
|
1112
|
-
ogDescription?: string | null;
|
|
1113
|
-
/**
|
|
1114
|
-
* Open Graph image (1200x630 recommended)
|
|
1115
|
-
*/
|
|
1116
|
-
ogImage?: (string | null) | Image;
|
|
1117
|
-
/**
|
|
1118
|
-
* Open Graph type
|
|
1119
|
-
*/
|
|
1120
|
-
ogType?: ('website' | 'article' | 'product' | 'profile') | null;
|
|
1121
|
-
/**
|
|
1122
|
-
* Open Graph locale (e.g., ko_KR, en_US)
|
|
1123
|
-
*/
|
|
1124
|
-
ogLocale?: string | null;
|
|
1125
|
-
};
|
|
1126
|
-
twitter?: {
|
|
1127
|
-
/**
|
|
1128
|
-
* Twitter card type
|
|
1129
|
-
*/
|
|
1130
|
-
twitterCard?: ('summary' | 'summary_large_image' | 'app' | 'player') | null;
|
|
1131
|
-
/**
|
|
1132
|
-
* Twitter username for the site (e.g., @yoursite)
|
|
1133
|
-
*/
|
|
1134
|
-
twitterSite?: string | null;
|
|
1135
|
-
/**
|
|
1136
|
-
* Twitter username for the content creator (e.g., @author)
|
|
1137
|
-
*/
|
|
1138
|
-
twitterCreator?: string | null;
|
|
1139
|
-
/**
|
|
1140
|
-
* Twitter title (falls back to OG title or site title)
|
|
1141
|
-
*/
|
|
1142
|
-
twitterTitle?: string | null;
|
|
1143
|
-
/**
|
|
1144
|
-
* Twitter description (falls back to OG or site description)
|
|
1145
|
-
*/
|
|
1146
|
-
twitterDescription?: string | null;
|
|
1147
|
-
/**
|
|
1148
|
-
* Twitter card image (falls back to OG image)
|
|
1149
|
-
*/
|
|
1150
|
-
twitterImage?: (string | null) | Image;
|
|
1151
|
-
};
|
|
1152
|
-
pwa?: {
|
|
1153
|
-
/**
|
|
1154
|
-
* Short name for PWA (12 characters max)
|
|
1155
|
-
*/
|
|
1156
|
-
shortName?: string | null;
|
|
1157
|
-
/**
|
|
1158
|
-
* Background color for PWA splash screen
|
|
1159
|
-
*/
|
|
1160
|
-
backgroundColor?: string | null;
|
|
1161
|
-
/**
|
|
1162
|
-
* PWA display mode
|
|
1163
|
-
*/
|
|
1164
|
-
display?: ('fullscreen' | 'standalone' | 'minimal-ui' | 'browser') | null;
|
|
1165
|
-
};
|
|
1166
|
-
updatedAt: string;
|
|
1167
|
-
createdAt: string;
|
|
1168
|
-
deletedAt?: string | null;
|
|
1206
|
+
handle?: string | null;
|
|
1207
|
+
displayName?: string | null;
|
|
1208
|
+
avatar?: (string | null) | Image;
|
|
1209
|
+
bio?: string | null;
|
|
1210
|
+
bioRichText?: {
|
|
1211
|
+
root: {
|
|
1212
|
+
type: string;
|
|
1213
|
+
children: {
|
|
1214
|
+
type: any;
|
|
1215
|
+
version: number;
|
|
1216
|
+
[k: string]: unknown;
|
|
1217
|
+
}[];
|
|
1218
|
+
direction: ('ltr' | 'rtl') | null;
|
|
1219
|
+
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
1220
|
+
indent: number;
|
|
1221
|
+
version: number;
|
|
1222
|
+
};
|
|
1223
|
+
[k: string]: unknown;
|
|
1224
|
+
} | null;
|
|
1225
|
+
joinedAt?: string | null;
|
|
1226
|
+
isPublic?: boolean | null;
|
|
1227
|
+
anonymizedAt?: string | null;
|
|
1228
|
+
metadata?: {
|
|
1229
|
+
[k: string]: unknown;
|
|
1230
|
+
} | unknown[] | string | number | boolean | null;
|
|
1169
1231
|
}
|
|
1170
1232
|
/**
|
|
1171
1233
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
1172
|
-
* via the `definition` "
|
|
1234
|
+
* via the `definition` "order-items".
|
|
1173
1235
|
*/
|
|
1174
|
-
interface
|
|
1236
|
+
interface OrderItem {
|
|
1175
1237
|
id: string;
|
|
1176
1238
|
tenant?: (string | null) | Tenant;
|
|
1239
|
+
order: string | Order;
|
|
1177
1240
|
/**
|
|
1178
|
-
*
|
|
1241
|
+
* Quantity snapshot at order time. Used for payment and inventory calculations and not edited directly.
|
|
1179
1242
|
*/
|
|
1180
|
-
|
|
1243
|
+
product: string | Product;
|
|
1244
|
+
variant?: (string | null) | ProductVariant;
|
|
1245
|
+
quantity: number;
|
|
1181
1246
|
/**
|
|
1182
|
-
*
|
|
1247
|
+
* Unit-price snapshot at order time. Later product price changes do not rewrite it.
|
|
1183
1248
|
*/
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
lightVibrant?: string | null;
|
|
1191
|
-
lightMuted?: string | null;
|
|
1192
|
-
};
|
|
1193
|
-
prefix?: string | null;
|
|
1194
|
-
updatedAt: string;
|
|
1195
|
-
createdAt: string;
|
|
1196
|
-
deletedAt?: string | null;
|
|
1197
|
-
url?: string | null;
|
|
1198
|
-
thumbnailURL?: string | null;
|
|
1199
|
-
filename?: string | null;
|
|
1200
|
-
mimeType?: string | null;
|
|
1201
|
-
filesize?: number | null;
|
|
1202
|
-
width?: number | null;
|
|
1203
|
-
height?: number | null;
|
|
1204
|
-
focalX?: number | null;
|
|
1205
|
-
focalY?: number | null;
|
|
1206
|
-
sizes?: {
|
|
1207
|
-
'16'?: {
|
|
1208
|
-
url?: string | null;
|
|
1209
|
-
width?: number | null;
|
|
1210
|
-
height?: number | null;
|
|
1211
|
-
mimeType?: string | null;
|
|
1212
|
-
filesize?: number | null;
|
|
1213
|
-
filename?: string | null;
|
|
1214
|
-
};
|
|
1215
|
-
'32'?: {
|
|
1216
|
-
url?: string | null;
|
|
1217
|
-
width?: number | null;
|
|
1218
|
-
height?: number | null;
|
|
1219
|
-
mimeType?: string | null;
|
|
1220
|
-
filesize?: number | null;
|
|
1221
|
-
filename?: string | null;
|
|
1222
|
-
};
|
|
1223
|
-
'64'?: {
|
|
1224
|
-
url?: string | null;
|
|
1225
|
-
width?: number | null;
|
|
1226
|
-
height?: number | null;
|
|
1227
|
-
mimeType?: string | null;
|
|
1228
|
-
filesize?: number | null;
|
|
1229
|
-
filename?: string | null;
|
|
1230
|
-
};
|
|
1231
|
-
'128'?: {
|
|
1232
|
-
url?: string | null;
|
|
1233
|
-
width?: number | null;
|
|
1234
|
-
height?: number | null;
|
|
1235
|
-
mimeType?: string | null;
|
|
1236
|
-
filesize?: number | null;
|
|
1237
|
-
filename?: string | null;
|
|
1238
|
-
};
|
|
1239
|
-
'180'?: {
|
|
1240
|
-
url?: string | null;
|
|
1241
|
-
width?: number | null;
|
|
1242
|
-
height?: number | null;
|
|
1243
|
-
mimeType?: string | null;
|
|
1244
|
-
filesize?: number | null;
|
|
1245
|
-
filename?: string | null;
|
|
1246
|
-
};
|
|
1247
|
-
'192'?: {
|
|
1248
|
-
url?: string | null;
|
|
1249
|
-
width?: number | null;
|
|
1250
|
-
height?: number | null;
|
|
1251
|
-
mimeType?: string | null;
|
|
1252
|
-
filesize?: number | null;
|
|
1253
|
-
filename?: string | null;
|
|
1254
|
-
};
|
|
1255
|
-
'512'?: {
|
|
1256
|
-
url?: string | null;
|
|
1257
|
-
width?: number | null;
|
|
1258
|
-
height?: number | null;
|
|
1259
|
-
mimeType?: string | null;
|
|
1260
|
-
filesize?: number | null;
|
|
1261
|
-
filename?: string | null;
|
|
1262
|
-
};
|
|
1263
|
-
};
|
|
1264
|
-
}
|
|
1265
|
-
/**
|
|
1266
|
-
* This interface was referenced by `Config`'s JSON-Schema
|
|
1267
|
-
* via the `definition` "tenant-entitlements".
|
|
1268
|
-
*/
|
|
1269
|
-
interface TenantEntitlement {
|
|
1270
|
-
id: string;
|
|
1271
|
-
tenant: string | Tenant;
|
|
1272
|
-
plan: 'free' | 'starter' | 'basic' | 'pro' | 'enterprise';
|
|
1249
|
+
unitPrice: number;
|
|
1250
|
+
variantTitle?: string | null;
|
|
1251
|
+
sku?: string | null;
|
|
1252
|
+
compareAtPrice?: number | null;
|
|
1253
|
+
weight?: number | null;
|
|
1254
|
+
requiresShipping?: boolean | null;
|
|
1273
1255
|
/**
|
|
1274
|
-
*
|
|
1256
|
+
* Total-price snapshot at order time, preserved from unitPrice × quantity.
|
|
1275
1257
|
*/
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
sourceSubscription?: (string | null) | Subscription;
|
|
1258
|
+
totalPrice: number;
|
|
1259
|
+
productTitle?: string | null;
|
|
1279
1260
|
/**
|
|
1280
|
-
*
|
|
1261
|
+
* Option combination snapshot at order time. Later variant/option changes do not rewrite it.
|
|
1281
1262
|
*/
|
|
1282
|
-
|
|
1283
|
-
|
|
1263
|
+
optionSelection?: {
|
|
1264
|
+
[k: string]: unknown;
|
|
1265
|
+
} | unknown[] | string | number | boolean | null;
|
|
1284
1266
|
/**
|
|
1285
|
-
*
|
|
1267
|
+
* Tax rate at time of order (%)
|
|
1286
1268
|
*/
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1269
|
+
taxRate?: number | null;
|
|
1270
|
+
/**
|
|
1271
|
+
* Currency at time of order (ISO-4217)
|
|
1272
|
+
*/
|
|
1273
|
+
currency?: string | null;
|
|
1274
|
+
/**
|
|
1275
|
+
* Snapshot of the discount amount allocated to this line at order time (minor units).
|
|
1276
|
+
*/
|
|
1277
|
+
discountAllocation?: number | null;
|
|
1278
|
+
/**
|
|
1279
|
+
* Per-unit price snapshot after discount allocation. round(discountedTotalPrice / quantity).
|
|
1280
|
+
*/
|
|
1281
|
+
discountedUnitPrice?: number | null;
|
|
1282
|
+
/**
|
|
1283
|
+
* Line total snapshot after discount allocation at order time (totalPrice - discountAllocation).
|
|
1284
|
+
*/
|
|
1285
|
+
discountedTotalPrice?: number | null;
|
|
1292
1286
|
updatedAt: string;
|
|
1293
1287
|
createdAt: string;
|
|
1294
1288
|
deletedAt?: string | null;
|
|
1295
1289
|
}
|
|
1296
1290
|
/**
|
|
1297
1291
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
1298
|
-
* via the `definition` "
|
|
1292
|
+
* via the `definition` "products".
|
|
1299
1293
|
*/
|
|
1300
|
-
interface
|
|
1294
|
+
interface Product {
|
|
1301
1295
|
id: string;
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1296
|
+
_order?: string | null;
|
|
1297
|
+
tenant?: (string | null) | Tenant;
|
|
1298
|
+
title: string;
|
|
1305
1299
|
/**
|
|
1306
|
-
*
|
|
1300
|
+
* Short supporting line shown on product cards and detail headers.
|
|
1307
1301
|
*/
|
|
1308
|
-
|
|
1309
|
-
status: 'active' | 'past_due' | 'canceled' | 'expired' | 'suspended';
|
|
1310
|
-
currency: 'KRW' | 'USD';
|
|
1311
|
-
provider: 'toss';
|
|
1312
|
-
currentPeriodStart?: string | null;
|
|
1313
|
-
currentPeriodEnd?: string | null;
|
|
1314
|
-
trialStartAt?: string | null;
|
|
1315
|
-
trialEndAt?: string | null;
|
|
1316
|
-
endedAt?: string | null;
|
|
1317
|
-
pastDueAt?: string | null;
|
|
1302
|
+
subtitle?: string | null;
|
|
1318
1303
|
/**
|
|
1319
|
-
*
|
|
1304
|
+
* Summary description used for product detail and search previews.
|
|
1320
1305
|
*/
|
|
1321
|
-
|
|
1306
|
+
description?: string | null;
|
|
1322
1307
|
/**
|
|
1323
|
-
*
|
|
1308
|
+
* Product detail gallery images. Order them in storefront display order.
|
|
1324
1309
|
*/
|
|
1325
|
-
|
|
1310
|
+
images?: (string | Image)[] | null;
|
|
1326
1311
|
/**
|
|
1327
|
-
*
|
|
1312
|
+
* Optional primary image pointer from product media pool (images[]).
|
|
1328
1313
|
*/
|
|
1329
|
-
|
|
1330
|
-
issuerCode?: string | null;
|
|
1331
|
-
/**
|
|
1332
|
-
* Masked card number
|
|
1333
|
-
*/
|
|
1334
|
-
number?: string | null;
|
|
1335
|
-
cardType?: string | null;
|
|
1336
|
-
};
|
|
1314
|
+
primaryMediaItemId?: (string | null) | Image;
|
|
1337
1315
|
/**
|
|
1338
|
-
*
|
|
1316
|
+
* Links this content to videos from the Mux-backed videos collection.
|
|
1339
1317
|
*/
|
|
1340
|
-
|
|
1318
|
+
videos?: (string | Video)[] | null;
|
|
1319
|
+
/**
|
|
1320
|
+
* Product detail body content. Supports images and Iframe/Player/Carousel embed blocks.
|
|
1321
|
+
*/
|
|
1322
|
+
content?: {
|
|
1323
|
+
root: {
|
|
1324
|
+
type: string;
|
|
1325
|
+
children: {
|
|
1326
|
+
type: any;
|
|
1327
|
+
version: number;
|
|
1328
|
+
[k: string]: unknown;
|
|
1329
|
+
}[];
|
|
1330
|
+
direction: ('ltr' | 'rtl') | null;
|
|
1331
|
+
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
1332
|
+
indent: number;
|
|
1333
|
+
version: number;
|
|
1334
|
+
};
|
|
1341
1335
|
[k: string]: unknown;
|
|
1342
|
-
} |
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
graceDeadline?: string | null;
|
|
1348
|
-
lastPaymentError?: string | null;
|
|
1349
|
-
pendingPlanChange?: {
|
|
1350
|
-
targetPlan?: ('starter' | 'basic' | 'pro') | null;
|
|
1351
|
-
targetAmount?: number | null;
|
|
1352
|
-
effectiveAt?: string | null;
|
|
1336
|
+
} | null;
|
|
1337
|
+
variants?: {
|
|
1338
|
+
docs?: (string | ProductVariant)[];
|
|
1339
|
+
hasNextPage?: boolean;
|
|
1340
|
+
totalDocs?: number;
|
|
1353
1341
|
};
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
*/
|
|
1362
|
-
interface TenantPurgeJob {
|
|
1363
|
-
id: string;
|
|
1364
|
-
tenantId: string;
|
|
1365
|
-
status: 'pending' | 'running' | 'failed' | 'ready-to-delete';
|
|
1366
|
-
currentCollection?: string | null;
|
|
1367
|
-
deletedCount?: number | null;
|
|
1368
|
-
failure?: string | null;
|
|
1369
|
-
completedAt?: string | null;
|
|
1370
|
-
updatedAt: string;
|
|
1371
|
-
createdAt: string;
|
|
1372
|
-
}
|
|
1373
|
-
/**
|
|
1374
|
-
* This interface was referenced by `Config`'s JSON-Schema
|
|
1375
|
-
* via the `definition` "billing-history".
|
|
1376
|
-
*/
|
|
1377
|
-
interface BillingHistory {
|
|
1378
|
-
id: string;
|
|
1379
|
-
tenant: string | Tenant;
|
|
1380
|
-
subscription?: (string | null) | Subscription;
|
|
1381
|
-
type: 'payment' | 'refund' | 'plan_change';
|
|
1382
|
-
status: 'success' | 'failed' | 'refunded' | 'partial_refund';
|
|
1342
|
+
options?: {
|
|
1343
|
+
docs?: (string | ProductOption)[];
|
|
1344
|
+
hasNextPage?: boolean;
|
|
1345
|
+
totalDocs?: number;
|
|
1346
|
+
};
|
|
1347
|
+
categories?: (string | ProductCategory)[] | null;
|
|
1348
|
+
tags?: (string | ProductTag)[] | null;
|
|
1383
1349
|
/**
|
|
1384
|
-
*
|
|
1350
|
+
* Canonical brand used for storefront brand filtering.
|
|
1385
1351
|
*/
|
|
1386
|
-
|
|
1352
|
+
brand?: (string | null) | Brand;
|
|
1387
1353
|
/**
|
|
1388
|
-
*
|
|
1354
|
+
* Shipping policy for this product. When empty on create, the default policy is applied.
|
|
1389
1355
|
*/
|
|
1390
|
-
|
|
1391
|
-
provider: 'toss';
|
|
1392
|
-
currency: 'KRW' | 'USD';
|
|
1393
|
-
billingCycle?: ('monthly' | 'yearly') | null;
|
|
1394
|
-
periodStart?: string | null;
|
|
1395
|
-
periodEnd?: string | null;
|
|
1356
|
+
shippingPolicy?: (string | null) | ShippingPolicy;
|
|
1396
1357
|
/**
|
|
1397
|
-
*
|
|
1358
|
+
* Integer weight in grams. For example, enter 2500 for 2.5 kg.
|
|
1398
1359
|
*/
|
|
1399
|
-
|
|
1400
|
-
orderName?: string | null;
|
|
1360
|
+
weight?: number | null;
|
|
1401
1361
|
/**
|
|
1402
|
-
*
|
|
1362
|
+
* Supplier name imported from external systems, separate from the brand relationship.
|
|
1403
1363
|
*/
|
|
1404
|
-
|
|
1364
|
+
vendor?: string | null;
|
|
1405
1365
|
/**
|
|
1406
|
-
*
|
|
1366
|
+
* External catalog product type, separate from categories.
|
|
1407
1367
|
*/
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1368
|
+
productType?: string | null;
|
|
1369
|
+
/**
|
|
1370
|
+
* Collection memberships for this product. Managed from the collection edit view.
|
|
1371
|
+
*/
|
|
1372
|
+
collectionItems?: {
|
|
1373
|
+
docs?: (string | ProductCollectionItem)[];
|
|
1374
|
+
hasNextPage?: boolean;
|
|
1375
|
+
totalDocs?: number;
|
|
1376
|
+
};
|
|
1377
|
+
/**
|
|
1378
|
+
* Minimum order quantity for this product.
|
|
1379
|
+
*/
|
|
1380
|
+
minOrderQuantity?: number | null;
|
|
1381
|
+
/**
|
|
1382
|
+
* Maximum order quantity for this product.
|
|
1383
|
+
*/
|
|
1384
|
+
maxOrderQuantity?: number | null;
|
|
1412
1385
|
/**
|
|
1413
|
-
*
|
|
1386
|
+
* Primary option used to expand this product into option-value cards.
|
|
1414
1387
|
*/
|
|
1415
|
-
|
|
1416
|
-
updatedAt: string;
|
|
1417
|
-
createdAt: string;
|
|
1418
|
-
deletedAt?: string | null;
|
|
1419
|
-
}
|
|
1420
|
-
/**
|
|
1421
|
-
* This interface was referenced by `Config`'s JSON-Schema
|
|
1422
|
-
* via the `definition` "plans".
|
|
1423
|
-
*/
|
|
1424
|
-
interface Plan {
|
|
1425
|
-
id: string;
|
|
1388
|
+
listingPrimaryOption?: (string | null) | ProductOption;
|
|
1426
1389
|
/**
|
|
1427
|
-
*
|
|
1390
|
+
* Automatically computed values for product cards and search.
|
|
1428
1391
|
*/
|
|
1429
|
-
|
|
1392
|
+
listing?: {
|
|
1393
|
+
/**
|
|
1394
|
+
* Variant prioritized for product cards. Automatically derived.
|
|
1395
|
+
*/
|
|
1396
|
+
selectionHintVariant?: (string | null) | ProductVariant;
|
|
1397
|
+
/**
|
|
1398
|
+
* Primary image for product cards and search. Automatically derived.
|
|
1399
|
+
*/
|
|
1400
|
+
primaryImage?: (string | null) | Image;
|
|
1401
|
+
/**
|
|
1402
|
+
* Lowest active variant price. Automatically derived.
|
|
1403
|
+
*/
|
|
1404
|
+
minPrice?: number | null;
|
|
1405
|
+
/**
|
|
1406
|
+
* Highest active variant price. Automatically derived.
|
|
1407
|
+
*/
|
|
1408
|
+
maxPrice?: number | null;
|
|
1409
|
+
/**
|
|
1410
|
+
* Lowest compare-at price across active variants. Automatically derived.
|
|
1411
|
+
*/
|
|
1412
|
+
minCompareAtPrice?: number | null;
|
|
1413
|
+
/**
|
|
1414
|
+
* Highest compare-at price across active variants. Automatically derived.
|
|
1415
|
+
*/
|
|
1416
|
+
maxCompareAtPrice?: number | null;
|
|
1417
|
+
/**
|
|
1418
|
+
* Automatically enabled when min and max prices differ.
|
|
1419
|
+
*/
|
|
1420
|
+
isPriceRange?: boolean | null;
|
|
1421
|
+
/**
|
|
1422
|
+
* Enabled when at least one variant is sellable.
|
|
1423
|
+
*/
|
|
1424
|
+
availableForSale?: boolean | null;
|
|
1425
|
+
/**
|
|
1426
|
+
* Automatically derived from the primary option setting.
|
|
1427
|
+
*/
|
|
1428
|
+
groupingState?: ('grouped' | 'no_primary_option' | 'empty') | null;
|
|
1429
|
+
/**
|
|
1430
|
+
* Shown when grouping produces zero cards. Visible before publish.
|
|
1431
|
+
*/
|
|
1432
|
+
groupingEmptyReason?: ('primary_option_not_linked' | 'primary_option_has_no_values' | 'no_variants_for_primary_option') | null;
|
|
1433
|
+
/**
|
|
1434
|
+
* Number of expandable option-value cards.
|
|
1435
|
+
*/
|
|
1436
|
+
groupingCount?: number | null;
|
|
1437
|
+
};
|
|
1438
|
+
seo?: {
|
|
1439
|
+
/**
|
|
1440
|
+
* Search result title (falls back to document title)
|
|
1441
|
+
*/
|
|
1442
|
+
title?: string | null;
|
|
1443
|
+
/**
|
|
1444
|
+
* Search result description
|
|
1445
|
+
*/
|
|
1446
|
+
description?: string | null;
|
|
1447
|
+
/**
|
|
1448
|
+
* Block search engine indexing
|
|
1449
|
+
*/
|
|
1450
|
+
noIndex?: boolean | null;
|
|
1451
|
+
/**
|
|
1452
|
+
* Canonical URL (prevents duplicate content)
|
|
1453
|
+
*/
|
|
1454
|
+
canonical?: string | null;
|
|
1455
|
+
openGraph?: {
|
|
1456
|
+
/**
|
|
1457
|
+
* OG title (falls back to seo.title)
|
|
1458
|
+
*/
|
|
1459
|
+
title?: string | null;
|
|
1460
|
+
/**
|
|
1461
|
+
* OG description (falls back to seo.description)
|
|
1462
|
+
*/
|
|
1463
|
+
description?: string | null;
|
|
1464
|
+
/**
|
|
1465
|
+
* OG / Twitter Card image (1200×630 recommended). Leaving this empty does not set it automatically from collection media.
|
|
1466
|
+
*/
|
|
1467
|
+
image?: (string | null) | Image;
|
|
1468
|
+
};
|
|
1469
|
+
};
|
|
1430
1470
|
/**
|
|
1431
|
-
*
|
|
1471
|
+
* Preferred thumbnail for product lists. Falls back to the first gallery image when empty.
|
|
1432
1472
|
*/
|
|
1433
|
-
|
|
1473
|
+
thumbnail?: (string | null) | Image;
|
|
1434
1474
|
/**
|
|
1435
|
-
*
|
|
1475
|
+
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
1436
1476
|
*/
|
|
1437
|
-
|
|
1477
|
+
generateSlug?: boolean | null;
|
|
1438
1478
|
/**
|
|
1439
|
-
*
|
|
1479
|
+
* Canonical product URL slug. Generated from the title or editable directly.
|
|
1440
1480
|
*/
|
|
1441
|
-
|
|
1442
|
-
[k: string]: unknown;
|
|
1443
|
-
} | unknown[] | string | number | boolean | null;
|
|
1444
|
-
updatedAt: string;
|
|
1445
|
-
createdAt: string;
|
|
1446
|
-
deletedAt?: string | null;
|
|
1447
|
-
}
|
|
1448
|
-
/**
|
|
1449
|
-
* This interface was referenced by `Config`'s JSON-Schema
|
|
1450
|
-
* via the `definition` "tenant-web-analytics-config".
|
|
1451
|
-
*/
|
|
1452
|
-
interface TenantWebAnalyticsConfig {
|
|
1453
|
-
id: string;
|
|
1454
|
-
tenant?: (string | null) | Tenant;
|
|
1455
|
-
enabled?: boolean | null;
|
|
1481
|
+
slug?: string | null;
|
|
1456
1482
|
/**
|
|
1457
|
-
*
|
|
1483
|
+
* Draft is hidden, Published is public, and Archived hides without deleting.
|
|
1458
1484
|
*/
|
|
1459
|
-
|
|
1460
|
-
origin: string;
|
|
1461
|
-
id?: string | null;
|
|
1462
|
-
}[] | null;
|
|
1485
|
+
status?: ('draft' | 'published' | 'archived') | null;
|
|
1463
1486
|
/**
|
|
1464
|
-
*
|
|
1487
|
+
* Automatically enabled when no variant is sellable.
|
|
1465
1488
|
*/
|
|
1466
|
-
|
|
1489
|
+
isSoldOut?: boolean | null;
|
|
1490
|
+
isFeatured?: boolean | null;
|
|
1467
1491
|
/**
|
|
1468
|
-
* Automatically
|
|
1492
|
+
* Automatically stamped the first time a draft is published.
|
|
1469
1493
|
*/
|
|
1470
|
-
|
|
1494
|
+
publishedAt?: string | null;
|
|
1495
|
+
metadata?: {
|
|
1496
|
+
[k: string]: unknown;
|
|
1497
|
+
} | unknown[] | string | number | boolean | null;
|
|
1471
1498
|
updatedAt: string;
|
|
1472
1499
|
createdAt: string;
|
|
1473
1500
|
deletedAt?: string | null;
|
|
1474
1501
|
}
|
|
1475
1502
|
/**
|
|
1476
1503
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
1477
|
-
* via the `definition` "
|
|
1504
|
+
* via the `definition` "videos".
|
|
1478
1505
|
*/
|
|
1479
|
-
interface
|
|
1506
|
+
interface Video {
|
|
1480
1507
|
id: string;
|
|
1481
1508
|
tenant?: (string | null) | Tenant;
|
|
1509
|
+
title?: string | null;
|
|
1482
1510
|
/**
|
|
1483
|
-
*
|
|
1484
|
-
*/
|
|
1485
|
-
date: string;
|
|
1486
|
-
pageviews: number;
|
|
1487
|
-
/**
|
|
1488
|
-
* Estimated via HyperLogLog (±0.81%)
|
|
1489
|
-
*/
|
|
1490
|
-
visitors: number;
|
|
1491
|
-
topPages?: {
|
|
1492
|
-
pathname: string;
|
|
1493
|
-
views: number;
|
|
1494
|
-
id?: string | null;
|
|
1495
|
-
}[] | null;
|
|
1496
|
-
topReferrers?: {
|
|
1497
|
-
source: string;
|
|
1498
|
-
views: number;
|
|
1499
|
-
id?: string | null;
|
|
1500
|
-
}[] | null;
|
|
1501
|
-
topEvents?: {
|
|
1502
|
-
name: string;
|
|
1503
|
-
count: number;
|
|
1504
|
-
id?: string | null;
|
|
1505
|
-
}[] | null;
|
|
1506
|
-
eventsDropped?: {
|
|
1507
|
-
cardinality?: number | null;
|
|
1508
|
-
schema?: number | null;
|
|
1509
|
-
late?: number | null;
|
|
1510
|
-
origin?: number | null;
|
|
1511
|
-
key?: number | null;
|
|
1512
|
-
rate?: number | null;
|
|
1513
|
-
disabled?: number | null;
|
|
1514
|
-
};
|
|
1515
|
-
snapshottedAt?: string | null;
|
|
1516
|
-
/**
|
|
1517
|
-
* Tenant timezone used to bucket this snapshot's date.
|
|
1511
|
+
* Secondary display line shown in cards, listings, and detail headers.
|
|
1518
1512
|
*/
|
|
1519
|
-
|
|
1513
|
+
subtitle?: string | null;
|
|
1514
|
+
filename?: string | null;
|
|
1520
1515
|
/**
|
|
1521
|
-
*
|
|
1516
|
+
* Short summary for listing/cards
|
|
1522
1517
|
*/
|
|
1523
|
-
|
|
1518
|
+
description?: string | null;
|
|
1519
|
+
content?: {
|
|
1520
|
+
root: {
|
|
1521
|
+
type: string;
|
|
1522
|
+
children: {
|
|
1523
|
+
type: any;
|
|
1524
|
+
version: number;
|
|
1525
|
+
[k: string]: unknown;
|
|
1526
|
+
}[];
|
|
1527
|
+
direction: ('ltr' | 'rtl') | null;
|
|
1528
|
+
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
1529
|
+
indent: number;
|
|
1530
|
+
version: number;
|
|
1531
|
+
};
|
|
1532
|
+
[k: string]: unknown;
|
|
1533
|
+
} | null;
|
|
1534
|
+
sourceLiveStream?: (string | null) | LiveStream;
|
|
1535
|
+
categories?: (string | VideoCategory)[] | null;
|
|
1536
|
+
tags?: (string | VideoTag)[] | null;
|
|
1524
1537
|
/**
|
|
1525
|
-
*
|
|
1538
|
+
* Mux processing status. Updated by upload/encoding jobs and not edited directly.
|
|
1526
1539
|
*/
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1540
|
+
muxStatus?: ('waiting' | 'preparing' | 'ready' | 'errored') | null;
|
|
1541
|
+
durationSeconds?: number | null;
|
|
1542
|
+
muxAspectRatio?: string | null;
|
|
1543
|
+
maxResolution?: string | null;
|
|
1544
|
+
quality?: ('basic' | 'plus' | 'premium') | null;
|
|
1545
|
+
mp4Support?: ('none' | 'standard' | 'capped-1080p') | null;
|
|
1546
|
+
muxAssetId?: string | null;
|
|
1547
|
+
muxPlaybackId?: string | null;
|
|
1548
|
+
muxUploadId?: string | null;
|
|
1549
|
+
seo?: {
|
|
1530
1550
|
/**
|
|
1531
|
-
*
|
|
1551
|
+
* Search result title (falls back to document title)
|
|
1532
1552
|
*/
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
toolCalls?: number | null;
|
|
1560
|
-
sessions?: number | null;
|
|
1561
|
-
convertedSessions?: number | null;
|
|
1562
|
-
conversionRate?: number | null;
|
|
1563
|
-
successfulWrites?: number | null;
|
|
1564
|
-
isPartial?: boolean | null;
|
|
1565
|
-
topTools?: {
|
|
1566
|
-
name: string;
|
|
1567
|
-
count: number;
|
|
1568
|
-
readOnly?: boolean | null;
|
|
1569
|
-
id?: string | null;
|
|
1570
|
-
}[] | null;
|
|
1571
|
-
transports?: {
|
|
1572
|
-
name: string;
|
|
1573
|
-
count: number;
|
|
1574
|
-
id?: string | null;
|
|
1575
|
-
}[] | null;
|
|
1576
|
-
httpDurationMs?: {
|
|
1577
|
-
p50?: number | null;
|
|
1578
|
-
p99?: number | null;
|
|
1579
|
-
buckets?: {
|
|
1580
|
-
bucket: string;
|
|
1581
|
-
label: string;
|
|
1582
|
-
count: number;
|
|
1583
|
-
id?: string | null;
|
|
1584
|
-
}[] | null;
|
|
1553
|
+
title?: string | null;
|
|
1554
|
+
/**
|
|
1555
|
+
* Search result description
|
|
1556
|
+
*/
|
|
1557
|
+
description?: string | null;
|
|
1558
|
+
/**
|
|
1559
|
+
* Block search engine indexing
|
|
1560
|
+
*/
|
|
1561
|
+
noIndex?: boolean | null;
|
|
1562
|
+
/**
|
|
1563
|
+
* Canonical URL (prevents duplicate content)
|
|
1564
|
+
*/
|
|
1565
|
+
canonical?: string | null;
|
|
1566
|
+
openGraph?: {
|
|
1567
|
+
/**
|
|
1568
|
+
* OG title (falls back to seo.title)
|
|
1569
|
+
*/
|
|
1570
|
+
title?: string | null;
|
|
1571
|
+
/**
|
|
1572
|
+
* OG description (falls back to seo.description)
|
|
1573
|
+
*/
|
|
1574
|
+
description?: string | null;
|
|
1575
|
+
/**
|
|
1576
|
+
* OG / Twitter Card image (1200×630 recommended). Leaving this empty does not set it automatically from collection media.
|
|
1577
|
+
*/
|
|
1578
|
+
image?: (string | null) | Image;
|
|
1585
1579
|
};
|
|
1586
1580
|
};
|
|
1581
|
+
/**
|
|
1582
|
+
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
1583
|
+
*/
|
|
1584
|
+
generateSlug?: boolean | null;
|
|
1585
|
+
slug?: string | null;
|
|
1586
|
+
thumbnail?: (string | null) | Image;
|
|
1587
|
+
isFeatured?: boolean | null;
|
|
1588
|
+
publishedAt?: string | null;
|
|
1589
|
+
metadata?: {
|
|
1590
|
+
[k: string]: unknown;
|
|
1591
|
+
} | unknown[] | string | number | boolean | null;
|
|
1592
|
+
/**
|
|
1593
|
+
* Read-only counter accumulated from video view events.
|
|
1594
|
+
*/
|
|
1595
|
+
viewCount?: number | null;
|
|
1596
|
+
aspectRatio?: ('16_9' | '9_16' | '4_3' | '1_1') | null;
|
|
1597
|
+
/**
|
|
1598
|
+
* Chapter markers
|
|
1599
|
+
*/
|
|
1600
|
+
chapters?: {
|
|
1601
|
+
title: string;
|
|
1602
|
+
startSeconds: number;
|
|
1603
|
+
id?: string | null;
|
|
1604
|
+
}[] | null;
|
|
1587
1605
|
updatedAt: string;
|
|
1588
1606
|
createdAt: string;
|
|
1607
|
+
deletedAt?: string | null;
|
|
1589
1608
|
}
|
|
1590
1609
|
/**
|
|
1591
1610
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
1592
|
-
* via the `definition` "
|
|
1611
|
+
* via the `definition` "live-streams".
|
|
1593
1612
|
*/
|
|
1594
|
-
interface
|
|
1613
|
+
interface LiveStream {
|
|
1595
1614
|
id: string;
|
|
1596
1615
|
tenant?: (string | null) | Tenant;
|
|
1616
|
+
title?: string | null;
|
|
1597
1617
|
/**
|
|
1598
|
-
*
|
|
1618
|
+
* Secondary display line shown in cards, listings, and detail headers.
|
|
1599
1619
|
*/
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1620
|
+
subtitle?: string | null;
|
|
1621
|
+
/**
|
|
1622
|
+
* Short summary for listing/cards
|
|
1623
|
+
*/
|
|
1624
|
+
description?: string | null;
|
|
1625
|
+
/**
|
|
1626
|
+
* Scheduled start time
|
|
1627
|
+
*/
|
|
1628
|
+
scheduledAt?: string | null;
|
|
1629
|
+
latencyMode?: ('standard' | 'reduced' | 'low') | null;
|
|
1630
|
+
/**
|
|
1631
|
+
* Reconnect window (seconds)
|
|
1632
|
+
*/
|
|
1633
|
+
reconnectWindowSeconds?: number | null;
|
|
1634
|
+
/**
|
|
1635
|
+
* Mux live stream status. Updated by stream create/disable jobs and not edited directly.
|
|
1636
|
+
*/
|
|
1637
|
+
muxStatus?: ('idle' | 'active' | 'disabled') | null;
|
|
1638
|
+
muxLiveStreamId?: string | null;
|
|
1639
|
+
muxPlaybackId?: string | null;
|
|
1640
|
+
streamKey?: string | null;
|
|
1641
|
+
muxActiveAssetId?: string | null;
|
|
1642
|
+
recentAssetIds?: {
|
|
1643
|
+
[k: string]: unknown;
|
|
1644
|
+
} | unknown[] | string | number | boolean | null;
|
|
1645
|
+
seo?: {
|
|
1605
1646
|
/**
|
|
1606
|
-
*
|
|
1647
|
+
* Search result title (falls back to document title)
|
|
1648
|
+
*/
|
|
1649
|
+
title?: string | null;
|
|
1650
|
+
/**
|
|
1651
|
+
* Search result description
|
|
1607
1652
|
*/
|
|
1608
|
-
allowedValues?: string | null;
|
|
1609
1653
|
description?: string | null;
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1654
|
+
/**
|
|
1655
|
+
* Block search engine indexing
|
|
1656
|
+
*/
|
|
1657
|
+
noIndex?: boolean | null;
|
|
1658
|
+
/**
|
|
1659
|
+
* Canonical URL (prevents duplicate content)
|
|
1660
|
+
*/
|
|
1661
|
+
canonical?: string | null;
|
|
1662
|
+
openGraph?: {
|
|
1663
|
+
/**
|
|
1664
|
+
* OG title (falls back to seo.title)
|
|
1665
|
+
*/
|
|
1666
|
+
title?: string | null;
|
|
1667
|
+
/**
|
|
1668
|
+
* OG description (falls back to seo.description)
|
|
1669
|
+
*/
|
|
1670
|
+
description?: string | null;
|
|
1671
|
+
/**
|
|
1672
|
+
* OG / Twitter Card image (1200×630 recommended). Leaving this empty does not set it automatically from collection media.
|
|
1673
|
+
*/
|
|
1674
|
+
image?: (string | null) | Image;
|
|
1675
|
+
};
|
|
1676
|
+
};
|
|
1677
|
+
/**
|
|
1678
|
+
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
1679
|
+
*/
|
|
1680
|
+
generateSlug?: boolean | null;
|
|
1681
|
+
slug?: string | null;
|
|
1682
|
+
thumbnail?: (string | null) | Image;
|
|
1683
|
+
isFeatured?: boolean | null;
|
|
1684
|
+
metadata?: {
|
|
1685
|
+
[k: string]: unknown;
|
|
1686
|
+
} | unknown[] | string | number | boolean | null;
|
|
1687
|
+
startedAt?: string | null;
|
|
1688
|
+
endedAt?: string | null;
|
|
1689
|
+
/**
|
|
1690
|
+
* Highest concurrent viewer count recorded during live sessions.
|
|
1691
|
+
*/
|
|
1692
|
+
peakViewerCount?: number | null;
|
|
1693
|
+
/**
|
|
1694
|
+
* Read-only counter accumulated from live stream view events.
|
|
1695
|
+
*/
|
|
1696
|
+
viewCount?: number | null;
|
|
1614
1697
|
updatedAt: string;
|
|
1615
1698
|
createdAt: string;
|
|
1616
1699
|
deletedAt?: string | null;
|
|
1617
1700
|
}
|
|
1618
1701
|
/**
|
|
1619
1702
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
1620
|
-
* via the `definition` "
|
|
1703
|
+
* via the `definition` "video-categories".
|
|
1621
1704
|
*/
|
|
1622
|
-
interface
|
|
1705
|
+
interface VideoCategory {
|
|
1623
1706
|
id: string;
|
|
1707
|
+
_order?: string | null;
|
|
1624
1708
|
tenant?: (string | null) | Tenant;
|
|
1709
|
+
title?: string | null;
|
|
1625
1710
|
/**
|
|
1626
|
-
*
|
|
1627
|
-
*/
|
|
1628
|
-
month: string;
|
|
1629
|
-
apiCallCount: number;
|
|
1630
|
-
plan: 'free' | 'starter' | 'basic' | 'pro' | 'enterprise';
|
|
1631
|
-
/**
|
|
1632
|
-
* -1 means unlimited
|
|
1711
|
+
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
1633
1712
|
*/
|
|
1634
|
-
|
|
1713
|
+
generateSlug?: boolean | null;
|
|
1714
|
+
slug?: string | null;
|
|
1635
1715
|
/**
|
|
1636
|
-
*
|
|
1716
|
+
* Short summary for listing/cards
|
|
1637
1717
|
*/
|
|
1638
|
-
|
|
1718
|
+
description?: string | null;
|
|
1639
1719
|
/**
|
|
1640
|
-
*
|
|
1720
|
+
* Single representative taxonomy image. Add domain-specific fields for multiple images such as thumbnail and hero variants.
|
|
1641
1721
|
*/
|
|
1642
|
-
|
|
1722
|
+
image?: (string | null) | Image;
|
|
1643
1723
|
/**
|
|
1644
|
-
*
|
|
1724
|
+
* Optional parent category used for hierarchy and breadcrumbs.
|
|
1645
1725
|
*/
|
|
1646
|
-
|
|
1726
|
+
parent?: (string | null) | VideoCategory;
|
|
1647
1727
|
/**
|
|
1648
|
-
*
|
|
1728
|
+
* Optional #RRGGBB hex color for taxonomy badges or filter UI. This does not replace the representative image.
|
|
1649
1729
|
*/
|
|
1650
|
-
|
|
1730
|
+
color?: string | null;
|
|
1731
|
+
updatedAt: string;
|
|
1732
|
+
createdAt: string;
|
|
1733
|
+
deletedAt?: string | null;
|
|
1734
|
+
}
|
|
1735
|
+
/**
|
|
1736
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
1737
|
+
* via the `definition` "video-tags".
|
|
1738
|
+
*/
|
|
1739
|
+
interface VideoTag {
|
|
1740
|
+
id: string;
|
|
1741
|
+
_order?: string | null;
|
|
1742
|
+
tenant?: (string | null) | Tenant;
|
|
1743
|
+
title?: string | null;
|
|
1651
1744
|
/**
|
|
1652
|
-
*
|
|
1745
|
+
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
1653
1746
|
*/
|
|
1654
|
-
|
|
1747
|
+
generateSlug?: boolean | null;
|
|
1748
|
+
slug?: string | null;
|
|
1655
1749
|
/**
|
|
1656
|
-
*
|
|
1750
|
+
* Short summary for listing/cards
|
|
1657
1751
|
*/
|
|
1658
|
-
|
|
1752
|
+
description?: string | null;
|
|
1659
1753
|
/**
|
|
1660
|
-
*
|
|
1754
|
+
* Single representative taxonomy image. Add domain-specific fields for multiple images such as thumbnail and hero variants.
|
|
1661
1755
|
*/
|
|
1662
|
-
|
|
1756
|
+
image?: (string | null) | Image;
|
|
1663
1757
|
/**
|
|
1664
|
-
*
|
|
1758
|
+
* Optional #RRGGBB hex color for taxonomy badges or filter UI. This does not replace the representative image.
|
|
1665
1759
|
*/
|
|
1666
|
-
|
|
1760
|
+
color?: string | null;
|
|
1667
1761
|
updatedAt: string;
|
|
1668
1762
|
createdAt: string;
|
|
1763
|
+
deletedAt?: string | null;
|
|
1669
1764
|
}
|
|
1670
1765
|
/**
|
|
1671
1766
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
1672
|
-
* via the `definition` "
|
|
1767
|
+
* via the `definition` "product-variants".
|
|
1673
1768
|
*/
|
|
1674
|
-
interface
|
|
1769
|
+
interface ProductVariant {
|
|
1675
1770
|
id: string;
|
|
1771
|
+
'_product-variants_variants_order'?: string | null;
|
|
1676
1772
|
_order?: string | null;
|
|
1677
1773
|
tenant?: (string | null) | Tenant;
|
|
1678
|
-
title: string;
|
|
1679
|
-
/**
|
|
1680
|
-
* Short supporting line shown on product cards and detail headers.
|
|
1681
|
-
*/
|
|
1682
|
-
subtitle?: string | null;
|
|
1683
1774
|
/**
|
|
1684
|
-
*
|
|
1775
|
+
* Parent product for this variant. It cannot be moved to another product after creation.
|
|
1685
1776
|
*/
|
|
1686
|
-
|
|
1777
|
+
product: string | Product;
|
|
1687
1778
|
/**
|
|
1688
|
-
*
|
|
1779
|
+
* Auto-generated from option value combination.
|
|
1689
1780
|
*/
|
|
1781
|
+
title?: string | null;
|
|
1690
1782
|
images?: (string | Image)[] | null;
|
|
1691
1783
|
/**
|
|
1692
|
-
*
|
|
1784
|
+
* Variant-specific SKU
|
|
1693
1785
|
*/
|
|
1694
|
-
|
|
1786
|
+
sku?: string | null;
|
|
1695
1787
|
/**
|
|
1696
|
-
*
|
|
1788
|
+
* Selling price (KRW)
|
|
1697
1789
|
*/
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
version: number;
|
|
1704
|
-
[k: string]: unknown;
|
|
1705
|
-
}[];
|
|
1706
|
-
direction: ('ltr' | 'rtl') | null;
|
|
1707
|
-
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
1708
|
-
indent: number;
|
|
1709
|
-
version: number;
|
|
1710
|
-
};
|
|
1711
|
-
[k: string]: unknown;
|
|
1712
|
-
} | null;
|
|
1713
|
-
variants?: {
|
|
1714
|
-
docs?: (string | ProductVariant)[];
|
|
1715
|
-
hasNextPage?: boolean;
|
|
1716
|
-
totalDocs?: number;
|
|
1717
|
-
};
|
|
1718
|
-
options?: {
|
|
1719
|
-
docs?: (string | ProductOption)[];
|
|
1720
|
-
hasNextPage?: boolean;
|
|
1721
|
-
totalDocs?: number;
|
|
1722
|
-
};
|
|
1723
|
-
categories?: (string | ProductCategory)[] | null;
|
|
1724
|
-
tags?: (string | ProductTag)[] | null;
|
|
1790
|
+
price?: number | null;
|
|
1791
|
+
/**
|
|
1792
|
+
* Original price before discount
|
|
1793
|
+
*/
|
|
1794
|
+
compareAtPrice?: number | null;
|
|
1725
1795
|
/**
|
|
1726
|
-
*
|
|
1796
|
+
* Sell without tracking inventory
|
|
1727
1797
|
*/
|
|
1728
|
-
|
|
1798
|
+
isUnlimited?: boolean | null;
|
|
1729
1799
|
/**
|
|
1730
|
-
*
|
|
1800
|
+
* Available quantity is stock minus reserved stock.
|
|
1731
1801
|
*/
|
|
1732
|
-
|
|
1802
|
+
stock?: number | null;
|
|
1733
1803
|
/**
|
|
1734
|
-
*
|
|
1804
|
+
* Reserved stock increased automatically during order processing.
|
|
1805
|
+
*/
|
|
1806
|
+
reservedStock?: number | null;
|
|
1807
|
+
/**
|
|
1808
|
+
* Minimum quantity before low-stock alerts.
|
|
1809
|
+
*/
|
|
1810
|
+
safetyStockThreshold?: number | null;
|
|
1811
|
+
/**
|
|
1812
|
+
* Inventory alert summary. Automatically derived.
|
|
1813
|
+
*/
|
|
1814
|
+
inventoryAlertState?: ('untracked' | 'inactive' | 'out_of_stock' | 'low_stock' | 'ok') | null;
|
|
1815
|
+
/**
|
|
1816
|
+
* Variant-specific barcode
|
|
1817
|
+
*/
|
|
1818
|
+
barcode?: string | null;
|
|
1819
|
+
/**
|
|
1820
|
+
* Variant-specific integer weight in grams. For example, enter 2500 for 2.5 kg.
|
|
1735
1821
|
*/
|
|
1736
1822
|
weight?: number | null;
|
|
1737
1823
|
/**
|
|
1738
|
-
*
|
|
1824
|
+
* Enable for physical variants that require shipping.
|
|
1739
1825
|
*/
|
|
1740
|
-
|
|
1741
|
-
docs?: (string | ProductCollectionItem)[];
|
|
1742
|
-
hasNextPage?: boolean;
|
|
1743
|
-
totalDocs?: number;
|
|
1744
|
-
};
|
|
1826
|
+
requiresShipping?: boolean | null;
|
|
1745
1827
|
/**
|
|
1746
|
-
*
|
|
1828
|
+
* External system ID
|
|
1747
1829
|
*/
|
|
1748
|
-
|
|
1830
|
+
externalId?: string | null;
|
|
1749
1831
|
/**
|
|
1750
|
-
*
|
|
1832
|
+
* Option value combination for this variant (e.g. Black + S)
|
|
1751
1833
|
*/
|
|
1752
|
-
|
|
1834
|
+
optionValues?: (string | ProductOptionValue)[] | null;
|
|
1753
1835
|
/**
|
|
1754
|
-
*
|
|
1836
|
+
* Internal unique key for the variant option combination. Products without options use __default__; temporary invalid states use the __invalid__: prefix.
|
|
1755
1837
|
*/
|
|
1756
|
-
|
|
1838
|
+
optionKey?: string | null;
|
|
1839
|
+
isActive?: boolean | null;
|
|
1840
|
+
metadata?: {
|
|
1841
|
+
[k: string]: unknown;
|
|
1842
|
+
} | unknown[] | string | number | boolean | null;
|
|
1843
|
+
updatedAt: string;
|
|
1844
|
+
createdAt: string;
|
|
1845
|
+
deletedAt?: string | null;
|
|
1846
|
+
}
|
|
1847
|
+
/**
|
|
1848
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
1849
|
+
* via the `definition` "product-option-values".
|
|
1850
|
+
*/
|
|
1851
|
+
interface ProductOptionValue {
|
|
1852
|
+
id: string;
|
|
1853
|
+
'_product-option-values_values_order'?: string | null;
|
|
1854
|
+
_order?: string | null;
|
|
1855
|
+
tenant?: (string | null) | Tenant;
|
|
1757
1856
|
/**
|
|
1758
|
-
*
|
|
1857
|
+
* Parent option for this value. It cannot be moved to another option after creation.
|
|
1759
1858
|
*/
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
* Lowest active variant price. Automatically recalculated when variants change. Storefront cards and filters use this price.
|
|
1771
|
-
*/
|
|
1772
|
-
minPrice?: number | null;
|
|
1773
|
-
/**
|
|
1774
|
-
* Highest active variant price. Automatically recalculated when variants change. Storefront cards and filters use this price.
|
|
1775
|
-
*/
|
|
1776
|
-
maxPrice?: number | null;
|
|
1777
|
-
/**
|
|
1778
|
-
* Lowest compare-at price across active variants. Automatically recalculated when variants change. Storefront discount displays use this value.
|
|
1779
|
-
*/
|
|
1780
|
-
minCompareAtPrice?: number | null;
|
|
1781
|
-
/**
|
|
1782
|
-
* Highest compare-at price across active variants. Automatically recalculated when variants change. Storefront discount displays use this value.
|
|
1783
|
-
*/
|
|
1784
|
-
maxCompareAtPrice?: number | null;
|
|
1785
|
-
/**
|
|
1786
|
-
* Automatically enabled when the minimum and maximum active variant prices differ. Storefront cards use this to decide whether to show a price range.
|
|
1787
|
-
*/
|
|
1788
|
-
isPriceRange?: boolean | null;
|
|
1789
|
-
/**
|
|
1790
|
-
* Automatically enabled when at least one active variant is sellable. Storefront grids and filters use this to render and filter in-stock products.
|
|
1791
|
-
*/
|
|
1792
|
-
availableForSale?: boolean | null;
|
|
1793
|
-
};
|
|
1794
|
-
seo?: {
|
|
1795
|
-
/**
|
|
1796
|
-
* Search result title (falls back to document title)
|
|
1797
|
-
*/
|
|
1798
|
-
title?: string | null;
|
|
1859
|
+
option: string | ProductOption;
|
|
1860
|
+
displayLabel?: string | null;
|
|
1861
|
+
/**
|
|
1862
|
+
* Editable option-value display label for Admin and storefront copy. Changing it after creation does not change the public slug. (e.g. Black, S)
|
|
1863
|
+
*/
|
|
1864
|
+
value: string;
|
|
1865
|
+
/**
|
|
1866
|
+
* Single visual swatch for this option value. Use either a color or one image from the product media pool.
|
|
1867
|
+
*/
|
|
1868
|
+
swatch?: {
|
|
1799
1869
|
/**
|
|
1800
|
-
*
|
|
1870
|
+
* How this option-value swatch is rendered.
|
|
1801
1871
|
*/
|
|
1802
|
-
|
|
1872
|
+
type?: ('color' | 'media') | null;
|
|
1803
1873
|
/**
|
|
1804
|
-
*
|
|
1874
|
+
* Hex color swatch for this option value (for example #111111)
|
|
1805
1875
|
*/
|
|
1806
|
-
|
|
1876
|
+
color?: string | null;
|
|
1807
1877
|
/**
|
|
1808
|
-
*
|
|
1878
|
+
* One image from the product media pool used as this option-value swatch.
|
|
1809
1879
|
*/
|
|
1810
|
-
|
|
1811
|
-
openGraph?: {
|
|
1812
|
-
/**
|
|
1813
|
-
* OG title (falls back to seo.title)
|
|
1814
|
-
*/
|
|
1815
|
-
title?: string | null;
|
|
1816
|
-
/**
|
|
1817
|
-
* OG description (falls back to seo.description)
|
|
1818
|
-
*/
|
|
1819
|
-
description?: string | null;
|
|
1820
|
-
/**
|
|
1821
|
-
* OG / Twitter Card image (1200×630 recommended). Leaving this empty does not set it automatically from collection media.
|
|
1822
|
-
*/
|
|
1823
|
-
image?: (string | null) | Image;
|
|
1824
|
-
};
|
|
1880
|
+
mediaItemId?: (string | null) | Image;
|
|
1825
1881
|
};
|
|
1826
|
-
/**
|
|
1827
|
-
* Preferred product list thumbnail. When empty, the list falls back to listing primary image, then the first gallery image. Add alt text when uploading new images.
|
|
1828
|
-
*/
|
|
1829
|
-
thumbnail?: (string | null) | Image;
|
|
1830
1882
|
/**
|
|
1831
1883
|
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
1832
1884
|
*/
|
|
1833
1885
|
generateSlug?: boolean | null;
|
|
1834
1886
|
/**
|
|
1835
|
-
*
|
|
1836
|
-
*/
|
|
1837
|
-
slug?: string | null;
|
|
1838
|
-
/**
|
|
1839
|
-
* Draft products are hidden from the storefront. Only Published products are exposed through public APIs. Archived hides without deleting. Deleting a product also deletes variants and options. The last 50 saved versions can be restored from the Versions tab.
|
|
1887
|
+
* Compatibility URL token generated from the option-value label on create. It is fixed after creation.
|
|
1840
1888
|
*/
|
|
1841
|
-
|
|
1889
|
+
slug: string;
|
|
1890
|
+
metadata?: {
|
|
1891
|
+
[k: string]: unknown;
|
|
1892
|
+
} | unknown[] | string | number | boolean | null;
|
|
1893
|
+
updatedAt: string;
|
|
1894
|
+
createdAt: string;
|
|
1895
|
+
deletedAt?: string | null;
|
|
1896
|
+
}
|
|
1897
|
+
/**
|
|
1898
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
1899
|
+
* via the `definition` "product-options".
|
|
1900
|
+
*/
|
|
1901
|
+
interface ProductOption {
|
|
1902
|
+
id: string;
|
|
1903
|
+
'_product-options_options_order'?: string | null;
|
|
1904
|
+
_order?: string | null;
|
|
1905
|
+
tenant?: (string | null) | Tenant;
|
|
1842
1906
|
/**
|
|
1843
|
-
*
|
|
1907
|
+
* Parent product for this option. It cannot be moved to another product after creation.
|
|
1844
1908
|
*/
|
|
1845
|
-
|
|
1846
|
-
isFeatured?: boolean | null;
|
|
1909
|
+
product: string | Product;
|
|
1847
1910
|
/**
|
|
1848
|
-
*
|
|
1911
|
+
* Option display name in Admin and storefront. (e.g. Color, Size)
|
|
1849
1912
|
*/
|
|
1850
|
-
|
|
1851
|
-
metadata?: {
|
|
1852
|
-
[k: string]: unknown;
|
|
1853
|
-
} | unknown[] | string | number | boolean | null;
|
|
1913
|
+
title: string;
|
|
1854
1914
|
/**
|
|
1855
|
-
*
|
|
1915
|
+
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
1856
1916
|
*/
|
|
1857
|
-
|
|
1917
|
+
generateSlug?: boolean | null;
|
|
1858
1918
|
/**
|
|
1859
|
-
*
|
|
1919
|
+
* Compatibility URL token generated from the option name on create. It is fixed after creation.
|
|
1860
1920
|
*/
|
|
1861
|
-
|
|
1921
|
+
slug: string;
|
|
1922
|
+
values?: {
|
|
1923
|
+
docs?: (string | ProductOptionValue)[];
|
|
1924
|
+
hasNextPage?: boolean;
|
|
1925
|
+
totalDocs?: number;
|
|
1926
|
+
};
|
|
1862
1927
|
updatedAt: string;
|
|
1863
1928
|
createdAt: string;
|
|
1864
1929
|
deletedAt?: string | null;
|
|
1865
1930
|
}
|
|
1866
1931
|
/**
|
|
1932
|
+
* Product categories are a hierarchical taxonomy for navigation and grouping.
|
|
1933
|
+
*
|
|
1867
1934
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
1868
|
-
* via the `definition` "
|
|
1935
|
+
* via the `definition` "product-categories".
|
|
1869
1936
|
*/
|
|
1870
|
-
interface
|
|
1937
|
+
interface ProductCategory {
|
|
1871
1938
|
id: string;
|
|
1939
|
+
_order?: string | null;
|
|
1872
1940
|
tenant?: (string | null) | Tenant;
|
|
1873
1941
|
title?: string | null;
|
|
1874
1942
|
/**
|
|
1875
|
-
*
|
|
1943
|
+
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
1876
1944
|
*/
|
|
1877
|
-
|
|
1878
|
-
|
|
1945
|
+
generateSlug?: boolean | null;
|
|
1946
|
+
slug?: string | null;
|
|
1879
1947
|
/**
|
|
1880
1948
|
* Short summary for listing/cards
|
|
1881
1949
|
*/
|
|
1882
1950
|
description?: string | null;
|
|
1883
|
-
content?: {
|
|
1884
|
-
root: {
|
|
1885
|
-
type: string;
|
|
1886
|
-
children: {
|
|
1887
|
-
type: any;
|
|
1888
|
-
version: number;
|
|
1889
|
-
[k: string]: unknown;
|
|
1890
|
-
}[];
|
|
1891
|
-
direction: ('ltr' | 'rtl') | null;
|
|
1892
|
-
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
1893
|
-
indent: number;
|
|
1894
|
-
version: number;
|
|
1895
|
-
};
|
|
1896
|
-
[k: string]: unknown;
|
|
1897
|
-
} | null;
|
|
1898
|
-
sourceLiveStream?: (string | null) | LiveStream;
|
|
1899
|
-
categories?: (string | VideoCategory)[] | null;
|
|
1900
|
-
tags?: (string | VideoTag)[] | null;
|
|
1901
1951
|
/**
|
|
1902
|
-
*
|
|
1952
|
+
* Single representative taxonomy image. Add domain-specific fields for multiple images such as thumbnail and hero variants.
|
|
1903
1953
|
*/
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
*/
|
|
1929
|
-
canonical?: string | null;
|
|
1930
|
-
openGraph?: {
|
|
1931
|
-
/**
|
|
1932
|
-
* OG title (falls back to seo.title)
|
|
1933
|
-
*/
|
|
1934
|
-
title?: string | null;
|
|
1935
|
-
/**
|
|
1936
|
-
* OG description (falls back to seo.description)
|
|
1937
|
-
*/
|
|
1938
|
-
description?: string | null;
|
|
1939
|
-
/**
|
|
1940
|
-
* OG / Twitter Card image (1200×630 recommended). Leaving this empty does not set it automatically from collection media.
|
|
1941
|
-
*/
|
|
1942
|
-
image?: (string | null) | Image;
|
|
1943
|
-
};
|
|
1944
|
-
};
|
|
1954
|
+
image?: (string | null) | Image;
|
|
1955
|
+
/**
|
|
1956
|
+
* Optional parent category used for hierarchy and breadcrumbs.
|
|
1957
|
+
*/
|
|
1958
|
+
parent?: (string | null) | ProductCategory;
|
|
1959
|
+
/**
|
|
1960
|
+
* Optional #RRGGBB hex color for taxonomy badges or filter UI. This does not replace the representative image.
|
|
1961
|
+
*/
|
|
1962
|
+
color?: string | null;
|
|
1963
|
+
updatedAt: string;
|
|
1964
|
+
createdAt: string;
|
|
1965
|
+
deletedAt?: string | null;
|
|
1966
|
+
}
|
|
1967
|
+
/**
|
|
1968
|
+
* Product tags are flat labels for search and loose grouping.
|
|
1969
|
+
*
|
|
1970
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
1971
|
+
* via the `definition` "product-tags".
|
|
1972
|
+
*/
|
|
1973
|
+
interface ProductTag {
|
|
1974
|
+
id: string;
|
|
1975
|
+
_order?: string | null;
|
|
1976
|
+
tenant?: (string | null) | Tenant;
|
|
1977
|
+
title?: string | null;
|
|
1945
1978
|
/**
|
|
1946
1979
|
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
1947
1980
|
*/
|
|
1948
1981
|
generateSlug?: boolean | null;
|
|
1949
1982
|
slug?: string | null;
|
|
1950
|
-
thumbnail?: (string | null) | Image;
|
|
1951
|
-
isFeatured?: boolean | null;
|
|
1952
|
-
publishedAt?: string | null;
|
|
1953
|
-
metadata?: {
|
|
1954
|
-
[k: string]: unknown;
|
|
1955
|
-
} | unknown[] | string | number | boolean | null;
|
|
1956
1983
|
/**
|
|
1957
|
-
*
|
|
1984
|
+
* Short summary for listing/cards
|
|
1958
1985
|
*/
|
|
1959
|
-
|
|
1960
|
-
aspectRatio?: ('16_9' | '9_16' | '4_3' | '1_1') | null;
|
|
1986
|
+
description?: string | null;
|
|
1961
1987
|
/**
|
|
1962
|
-
*
|
|
1988
|
+
* Single representative taxonomy image. Add domain-specific fields for multiple images such as thumbnail and hero variants.
|
|
1963
1989
|
*/
|
|
1964
|
-
|
|
1965
|
-
title: string;
|
|
1966
|
-
startSeconds: number;
|
|
1967
|
-
id?: string | null;
|
|
1968
|
-
}[] | null;
|
|
1990
|
+
image?: (string | null) | Image;
|
|
1969
1991
|
updatedAt: string;
|
|
1970
1992
|
createdAt: string;
|
|
1971
1993
|
deletedAt?: string | null;
|
|
1972
1994
|
}
|
|
1973
1995
|
/**
|
|
1974
1996
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
1975
|
-
* via the `definition` "
|
|
1997
|
+
* via the `definition` "brands".
|
|
1976
1998
|
*/
|
|
1977
|
-
interface
|
|
1999
|
+
interface Brand {
|
|
1978
2000
|
id: string;
|
|
2001
|
+
_order?: string | null;
|
|
1979
2002
|
tenant?: (string | null) | Tenant;
|
|
1980
|
-
|
|
1981
|
-
/**
|
|
1982
|
-
* Secondary display line shown in cards, listings, and detail headers.
|
|
1983
|
-
*/
|
|
1984
|
-
subtitle?: string | null;
|
|
2003
|
+
name: string;
|
|
1985
2004
|
/**
|
|
1986
2005
|
* Short summary for listing/cards
|
|
1987
2006
|
*/
|
|
1988
2007
|
description?: string | null;
|
|
2008
|
+
content?: {
|
|
2009
|
+
root: {
|
|
2010
|
+
type: string;
|
|
2011
|
+
children: {
|
|
2012
|
+
type: any;
|
|
2013
|
+
version: number;
|
|
2014
|
+
[k: string]: unknown;
|
|
2015
|
+
}[];
|
|
2016
|
+
direction: ('ltr' | 'rtl') | null;
|
|
2017
|
+
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
2018
|
+
indent: number;
|
|
2019
|
+
version: number;
|
|
2020
|
+
};
|
|
2021
|
+
[k: string]: unknown;
|
|
2022
|
+
} | null;
|
|
1989
2023
|
/**
|
|
1990
|
-
*
|
|
2024
|
+
* Primary brand logo
|
|
1991
2025
|
*/
|
|
1992
|
-
|
|
1993
|
-
latencyMode?: ('standard' | 'reduced' | 'low') | null;
|
|
2026
|
+
logo?: (string | null) | BrandLogo;
|
|
1994
2027
|
/**
|
|
1995
|
-
*
|
|
2028
|
+
* Logo for dark mode (optional)
|
|
1996
2029
|
*/
|
|
1997
|
-
|
|
2030
|
+
logoDark?: (string | null) | BrandLogo;
|
|
1998
2031
|
/**
|
|
1999
|
-
*
|
|
2032
|
+
* Logo mark / Icon (optional)
|
|
2000
2033
|
*/
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
recentAssetIds?: {
|
|
2007
|
-
[k: string]: unknown;
|
|
2008
|
-
} | unknown[] | string | number | boolean | null;
|
|
2034
|
+
logomark?: (string | null) | BrandLogo;
|
|
2035
|
+
/**
|
|
2036
|
+
* Brand official website URL
|
|
2037
|
+
*/
|
|
2038
|
+
website?: string | null;
|
|
2009
2039
|
seo?: {
|
|
2010
2040
|
/**
|
|
2011
2041
|
* Search result title (falls back to document title)
|
|
@@ -2035,7 +2065,7 @@ interface LiveStream {
|
|
|
2035
2065
|
/**
|
|
2036
2066
|
* OG / Twitter Card image (1200×630 recommended). Leaving this empty does not set it automatically from collection media.
|
|
2037
2067
|
*/
|
|
2038
|
-
image?: (string | null) |
|
|
2068
|
+
image?: (string | null) | BrandLogo;
|
|
2039
2069
|
};
|
|
2040
2070
|
};
|
|
2041
2071
|
/**
|
|
@@ -2043,157 +2073,155 @@ interface LiveStream {
|
|
|
2043
2073
|
*/
|
|
2044
2074
|
generateSlug?: boolean | null;
|
|
2045
2075
|
slug?: string | null;
|
|
2046
|
-
|
|
2076
|
+
status?: ('draft' | 'published' | 'archived') | null;
|
|
2047
2077
|
isFeatured?: boolean | null;
|
|
2078
|
+
publishedAt?: string | null;
|
|
2048
2079
|
metadata?: {
|
|
2049
2080
|
[k: string]: unknown;
|
|
2050
2081
|
} | unknown[] | string | number | boolean | null;
|
|
2051
|
-
startedAt?: string | null;
|
|
2052
|
-
endedAt?: string | null;
|
|
2053
|
-
/**
|
|
2054
|
-
* Highest concurrent viewer count recorded during live sessions.
|
|
2055
|
-
*/
|
|
2056
|
-
peakViewerCount?: number | null;
|
|
2057
|
-
/**
|
|
2058
|
-
* Read-only counter accumulated from live stream view events.
|
|
2059
|
-
*/
|
|
2060
|
-
viewCount?: number | null;
|
|
2061
|
-
updatedAt: string;
|
|
2062
|
-
createdAt: string;
|
|
2063
|
-
deletedAt?: string | null;
|
|
2064
|
-
}
|
|
2065
|
-
/**
|
|
2066
|
-
* This interface was referenced by `Config`'s JSON-Schema
|
|
2067
|
-
* via the `definition` "video-categories".
|
|
2068
|
-
*/
|
|
2069
|
-
interface VideoCategory {
|
|
2070
|
-
id: string;
|
|
2071
|
-
_order?: string | null;
|
|
2072
|
-
tenant?: (string | null) | Tenant;
|
|
2073
|
-
title?: string | null;
|
|
2074
|
-
/**
|
|
2075
|
-
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
2076
|
-
*/
|
|
2077
|
-
generateSlug?: boolean | null;
|
|
2078
|
-
slug?: string | null;
|
|
2079
|
-
/**
|
|
2080
|
-
* Short summary for listing/cards
|
|
2081
|
-
*/
|
|
2082
|
-
description?: string | null;
|
|
2083
|
-
/**
|
|
2084
|
-
* Single representative taxonomy image. Add domain-specific fields for multiple images such as thumbnail and hero variants.
|
|
2085
|
-
*/
|
|
2086
|
-
image?: (string | null) | Image;
|
|
2087
|
-
/**
|
|
2088
|
-
* Optional parent category used for hierarchy and breadcrumbs.
|
|
2089
|
-
*/
|
|
2090
|
-
parent?: (string | null) | VideoCategory;
|
|
2091
|
-
/**
|
|
2092
|
-
* Optional #RRGGBB hex color for taxonomy badges or filter UI. This does not replace the representative image.
|
|
2093
|
-
*/
|
|
2094
|
-
color?: string | null;
|
|
2095
2082
|
updatedAt: string;
|
|
2096
2083
|
createdAt: string;
|
|
2097
2084
|
deletedAt?: string | null;
|
|
2098
2085
|
}
|
|
2099
2086
|
/**
|
|
2100
2087
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2101
|
-
* via the `definition` "
|
|
2088
|
+
* via the `definition` "brand-logos".
|
|
2102
2089
|
*/
|
|
2103
|
-
interface
|
|
2090
|
+
interface BrandLogo {
|
|
2104
2091
|
id: string;
|
|
2105
|
-
_order?: string | null;
|
|
2106
2092
|
tenant?: (string | null) | Tenant;
|
|
2107
|
-
title?: string | null;
|
|
2108
2093
|
/**
|
|
2109
|
-
*
|
|
2110
|
-
*/
|
|
2111
|
-
generateSlug?: boolean | null;
|
|
2112
|
-
slug?: string | null;
|
|
2113
|
-
/**
|
|
2114
|
-
* Short summary for listing/cards
|
|
2115
|
-
*/
|
|
2116
|
-
description?: string | null;
|
|
2117
|
-
/**
|
|
2118
|
-
* Single representative taxonomy image. Add domain-specific fields for multiple images such as thumbnail and hero variants.
|
|
2094
|
+
* Describe the image. Used for users who cannot see it, screen readers, and search/share previews.
|
|
2119
2095
|
*/
|
|
2120
|
-
|
|
2096
|
+
alt?: string | null;
|
|
2121
2097
|
/**
|
|
2122
|
-
*
|
|
2098
|
+
* Low quality image placeholder
|
|
2123
2099
|
*/
|
|
2124
|
-
|
|
2100
|
+
lqip?: string | null;
|
|
2101
|
+
palette?: {
|
|
2102
|
+
vibrant?: string | null;
|
|
2103
|
+
muted?: string | null;
|
|
2104
|
+
darkVibrant?: string | null;
|
|
2105
|
+
darkMuted?: string | null;
|
|
2106
|
+
lightVibrant?: string | null;
|
|
2107
|
+
lightMuted?: string | null;
|
|
2108
|
+
};
|
|
2109
|
+
prefix?: string | null;
|
|
2125
2110
|
updatedAt: string;
|
|
2126
2111
|
createdAt: string;
|
|
2127
2112
|
deletedAt?: string | null;
|
|
2113
|
+
url?: string | null;
|
|
2114
|
+
thumbnailURL?: string | null;
|
|
2115
|
+
filename?: string | null;
|
|
2116
|
+
mimeType?: string | null;
|
|
2117
|
+
filesize?: number | null;
|
|
2118
|
+
width?: number | null;
|
|
2119
|
+
height?: number | null;
|
|
2120
|
+
focalX?: number | null;
|
|
2121
|
+
focalY?: number | null;
|
|
2122
|
+
sizes?: {
|
|
2123
|
+
'16'?: {
|
|
2124
|
+
url?: string | null;
|
|
2125
|
+
width?: number | null;
|
|
2126
|
+
height?: number | null;
|
|
2127
|
+
mimeType?: string | null;
|
|
2128
|
+
filesize?: number | null;
|
|
2129
|
+
filename?: string | null;
|
|
2130
|
+
};
|
|
2131
|
+
'32'?: {
|
|
2132
|
+
url?: string | null;
|
|
2133
|
+
width?: number | null;
|
|
2134
|
+
height?: number | null;
|
|
2135
|
+
mimeType?: string | null;
|
|
2136
|
+
filesize?: number | null;
|
|
2137
|
+
filename?: string | null;
|
|
2138
|
+
};
|
|
2139
|
+
'64'?: {
|
|
2140
|
+
url?: string | null;
|
|
2141
|
+
width?: number | null;
|
|
2142
|
+
height?: number | null;
|
|
2143
|
+
mimeType?: string | null;
|
|
2144
|
+
filesize?: number | null;
|
|
2145
|
+
filename?: string | null;
|
|
2146
|
+
};
|
|
2147
|
+
'128'?: {
|
|
2148
|
+
url?: string | null;
|
|
2149
|
+
width?: number | null;
|
|
2150
|
+
height?: number | null;
|
|
2151
|
+
mimeType?: string | null;
|
|
2152
|
+
filesize?: number | null;
|
|
2153
|
+
filename?: string | null;
|
|
2154
|
+
};
|
|
2155
|
+
'180'?: {
|
|
2156
|
+
url?: string | null;
|
|
2157
|
+
width?: number | null;
|
|
2158
|
+
height?: number | null;
|
|
2159
|
+
mimeType?: string | null;
|
|
2160
|
+
filesize?: number | null;
|
|
2161
|
+
filename?: string | null;
|
|
2162
|
+
};
|
|
2163
|
+
'192'?: {
|
|
2164
|
+
url?: string | null;
|
|
2165
|
+
width?: number | null;
|
|
2166
|
+
height?: number | null;
|
|
2167
|
+
mimeType?: string | null;
|
|
2168
|
+
filesize?: number | null;
|
|
2169
|
+
filename?: string | null;
|
|
2170
|
+
};
|
|
2171
|
+
'512'?: {
|
|
2172
|
+
url?: string | null;
|
|
2173
|
+
width?: number | null;
|
|
2174
|
+
height?: number | null;
|
|
2175
|
+
mimeType?: string | null;
|
|
2176
|
+
filesize?: number | null;
|
|
2177
|
+
filename?: string | null;
|
|
2178
|
+
};
|
|
2179
|
+
};
|
|
2128
2180
|
}
|
|
2129
2181
|
/**
|
|
2130
2182
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2131
|
-
* via the `definition` "
|
|
2183
|
+
* via the `definition` "shipping-policies".
|
|
2132
2184
|
*/
|
|
2133
|
-
interface
|
|
2185
|
+
interface ShippingPolicy {
|
|
2134
2186
|
id: string;
|
|
2135
|
-
'_product-variants_variants_order'?: string | null;
|
|
2136
2187
|
_order?: string | null;
|
|
2137
2188
|
tenant?: (string | null) | Tenant;
|
|
2189
|
+
displayLabel?: string | null;
|
|
2138
2190
|
/**
|
|
2139
|
-
*
|
|
2140
|
-
*/
|
|
2141
|
-
product: string | Product;
|
|
2142
|
-
/**
|
|
2143
|
-
* Leave blank to auto-generate from option values. Manual display labels are preserved.
|
|
2191
|
+
* e.g. Standard shipping, Large items
|
|
2144
2192
|
*/
|
|
2145
2193
|
title?: string | null;
|
|
2146
|
-
thumbnail?: (string | null) | Image;
|
|
2147
|
-
images?: (string | Image)[] | null;
|
|
2148
|
-
/**
|
|
2149
|
-
* Variant-specific SKU
|
|
2150
|
-
*/
|
|
2151
|
-
sku?: string | null;
|
|
2152
|
-
/**
|
|
2153
|
-
* Selling price (KRW)
|
|
2154
|
-
*/
|
|
2155
|
-
price?: number | null;
|
|
2156
|
-
/**
|
|
2157
|
-
* Original price before discount
|
|
2158
|
-
*/
|
|
2159
|
-
compareAtPrice?: number | null;
|
|
2160
|
-
/**
|
|
2161
|
-
* Sell without tracking inventory
|
|
2162
|
-
*/
|
|
2163
|
-
isUnlimited?: boolean | null;
|
|
2164
|
-
/**
|
|
2165
|
-
* Tracked inventory. Available quantity is stock - reservedStock; isUnlimited bypasses stock tracking.
|
|
2166
|
-
*/
|
|
2167
|
-
stock?: number | null;
|
|
2168
2194
|
/**
|
|
2169
|
-
*
|
|
2195
|
+
* Amount in KRW (won)
|
|
2170
2196
|
*/
|
|
2171
|
-
|
|
2197
|
+
baseAmount?: number | null;
|
|
2172
2198
|
/**
|
|
2173
|
-
*
|
|
2199
|
+
* Amount in KRW (won)
|
|
2174
2200
|
*/
|
|
2175
|
-
|
|
2201
|
+
freeShippingMinAmount?: number | null;
|
|
2176
2202
|
/**
|
|
2177
|
-
*
|
|
2203
|
+
* Amount in KRW (won)
|
|
2178
2204
|
*/
|
|
2179
|
-
|
|
2205
|
+
jejuExtraAmount?: number | null;
|
|
2180
2206
|
/**
|
|
2181
|
-
*
|
|
2207
|
+
* Amount in KRW (won)
|
|
2182
2208
|
*/
|
|
2183
|
-
|
|
2209
|
+
remoteAreaExtraAmount?: number | null;
|
|
2184
2210
|
/**
|
|
2185
|
-
*
|
|
2211
|
+
* Short summary for listing/cards
|
|
2186
2212
|
*/
|
|
2187
|
-
|
|
2213
|
+
description?: string | null;
|
|
2188
2214
|
/**
|
|
2189
|
-
*
|
|
2215
|
+
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
2190
2216
|
*/
|
|
2191
|
-
|
|
2217
|
+
generateSlug?: boolean | null;
|
|
2218
|
+
slug?: string | null;
|
|
2192
2219
|
/**
|
|
2193
|
-
*
|
|
2220
|
+
* Estimated delivery days
|
|
2194
2221
|
*/
|
|
2195
|
-
|
|
2222
|
+
estimatedDays?: number | null;
|
|
2196
2223
|
isActive?: boolean | null;
|
|
2224
|
+
isDefault?: boolean | null;
|
|
2197
2225
|
metadata?: {
|
|
2198
2226
|
[k: string]: unknown;
|
|
2199
2227
|
} | unknown[] | string | number | boolean | null;
|
|
@@ -2203,42 +2231,173 @@ interface ProductVariant {
|
|
|
2203
2231
|
}
|
|
2204
2232
|
/**
|
|
2205
2233
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2206
|
-
* via the `definition` "product-
|
|
2234
|
+
* via the `definition` "product-collection-items".
|
|
2207
2235
|
*/
|
|
2208
|
-
interface
|
|
2236
|
+
interface ProductCollectionItem {
|
|
2209
2237
|
id: string;
|
|
2210
|
-
'_product-
|
|
2238
|
+
'_product-collection-items_items_order'?: string | null;
|
|
2211
2239
|
_order?: string | null;
|
|
2212
2240
|
tenant?: (string | null) | Tenant;
|
|
2213
2241
|
/**
|
|
2214
|
-
*
|
|
2242
|
+
* Product collection for this membership. It cannot be moved to another collection after creation.
|
|
2215
2243
|
*/
|
|
2216
|
-
|
|
2217
|
-
displayLabel?: string | null;
|
|
2244
|
+
collection: string | ProductCollection;
|
|
2218
2245
|
/**
|
|
2219
|
-
*
|
|
2246
|
+
* Product shown in this collection. Its display order inside the collection is managed by dragging this membership row.
|
|
2220
2247
|
*/
|
|
2221
|
-
|
|
2248
|
+
product: string | Product;
|
|
2249
|
+
updatedAt: string;
|
|
2250
|
+
createdAt: string;
|
|
2251
|
+
}
|
|
2252
|
+
/**
|
|
2253
|
+
* Curated product grouping for campaigns, recommendations, and merchandising.
|
|
2254
|
+
*
|
|
2255
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
2256
|
+
* via the `definition` "product-collections".
|
|
2257
|
+
*/
|
|
2258
|
+
interface ProductCollection {
|
|
2259
|
+
id: string;
|
|
2260
|
+
_order?: string | null;
|
|
2261
|
+
tenant?: (string | null) | Tenant;
|
|
2262
|
+
title?: string | null;
|
|
2263
|
+
/**
|
|
2264
|
+
* Secondary display line shown in cards, listings, and detail headers.
|
|
2265
|
+
*/
|
|
2266
|
+
subtitle?: string | null;
|
|
2267
|
+
/**
|
|
2268
|
+
* Short summary for listing/cards
|
|
2269
|
+
*/
|
|
2270
|
+
description?: string | null;
|
|
2271
|
+
content?: {
|
|
2272
|
+
root: {
|
|
2273
|
+
type: string;
|
|
2274
|
+
children: {
|
|
2275
|
+
type: any;
|
|
2276
|
+
version: number;
|
|
2277
|
+
[k: string]: unknown;
|
|
2278
|
+
}[];
|
|
2279
|
+
direction: ('ltr' | 'rtl') | null;
|
|
2280
|
+
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
2281
|
+
indent: number;
|
|
2282
|
+
version: number;
|
|
2283
|
+
};
|
|
2284
|
+
[k: string]: unknown;
|
|
2285
|
+
} | null;
|
|
2286
|
+
images?: (string | Image)[] | null;
|
|
2222
2287
|
/**
|
|
2223
|
-
*
|
|
2288
|
+
* Collection item memberships. Public collections include only published products, and display order follows the dragged membership row order.
|
|
2224
2289
|
*/
|
|
2225
|
-
|
|
2290
|
+
items?: {
|
|
2291
|
+
docs?: (string | ProductCollectionItem)[];
|
|
2292
|
+
hasNextPage?: boolean;
|
|
2293
|
+
totalDocs?: number;
|
|
2294
|
+
};
|
|
2295
|
+
seo?: {
|
|
2296
|
+
/**
|
|
2297
|
+
* Search result title (falls back to document title)
|
|
2298
|
+
*/
|
|
2299
|
+
title?: string | null;
|
|
2300
|
+
/**
|
|
2301
|
+
* Search result description
|
|
2302
|
+
*/
|
|
2303
|
+
description?: string | null;
|
|
2304
|
+
/**
|
|
2305
|
+
* Block search engine indexing
|
|
2306
|
+
*/
|
|
2307
|
+
noIndex?: boolean | null;
|
|
2308
|
+
/**
|
|
2309
|
+
* Canonical URL (prevents duplicate content)
|
|
2310
|
+
*/
|
|
2311
|
+
canonical?: string | null;
|
|
2312
|
+
openGraph?: {
|
|
2313
|
+
/**
|
|
2314
|
+
* OG title (falls back to seo.title)
|
|
2315
|
+
*/
|
|
2316
|
+
title?: string | null;
|
|
2317
|
+
/**
|
|
2318
|
+
* OG description (falls back to seo.description)
|
|
2319
|
+
*/
|
|
2320
|
+
description?: string | null;
|
|
2321
|
+
/**
|
|
2322
|
+
* OG / Twitter Card image (1200×630 recommended). Leaving this empty does not set it automatically from collection media.
|
|
2323
|
+
*/
|
|
2324
|
+
image?: (string | null) | Image;
|
|
2325
|
+
};
|
|
2326
|
+
};
|
|
2327
|
+
thumbnail?: (string | null) | Image;
|
|
2226
2328
|
/**
|
|
2227
2329
|
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
2228
2330
|
*/
|
|
2229
2331
|
generateSlug?: boolean | null;
|
|
2332
|
+
slug?: string | null;
|
|
2333
|
+
status?: ('draft' | 'published' | 'archived') | null;
|
|
2334
|
+
isFeatured?: boolean | null;
|
|
2335
|
+
publishedAt?: string | null;
|
|
2336
|
+
metadata?: {
|
|
2337
|
+
[k: string]: unknown;
|
|
2338
|
+
} | unknown[] | string | number | boolean | null;
|
|
2339
|
+
updatedAt: string;
|
|
2340
|
+
createdAt: string;
|
|
2341
|
+
deletedAt?: string | null;
|
|
2342
|
+
}
|
|
2343
|
+
/**
|
|
2344
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
2345
|
+
* via the `definition` "transactions".
|
|
2346
|
+
*/
|
|
2347
|
+
interface Transaction {
|
|
2348
|
+
id: string;
|
|
2349
|
+
tenant?: (string | null) | Tenant;
|
|
2350
|
+
_title?: string | null;
|
|
2351
|
+
type: 'payment' | 'refund';
|
|
2352
|
+
status: 'pending' | 'paid' | 'failed' | 'canceled' | 'refunded';
|
|
2353
|
+
order: string | Order;
|
|
2354
|
+
amount?: number | null;
|
|
2230
2355
|
/**
|
|
2231
|
-
*
|
|
2356
|
+
* Payment method snapshot returned by the provider. Not edited directly.
|
|
2232
2357
|
*/
|
|
2233
|
-
|
|
2358
|
+
paymentMethod?: string | null;
|
|
2234
2359
|
/**
|
|
2235
|
-
*
|
|
2360
|
+
* Installment months (0 = lump sum)
|
|
2236
2361
|
*/
|
|
2237
|
-
|
|
2362
|
+
installmentMonths?: number | null;
|
|
2363
|
+
approvedAt?: string | null;
|
|
2364
|
+
receiptUrl?: string | null;
|
|
2365
|
+
pgPaymentId?: string | null;
|
|
2366
|
+
pgOrderId?: string | null;
|
|
2367
|
+
providerEventId?: string | null;
|
|
2368
|
+
providerStatus?: string | null;
|
|
2369
|
+
confirmedAmount?: number | null;
|
|
2370
|
+
confirmedCurrency?: string | null;
|
|
2371
|
+
confirmedAt?: string | null;
|
|
2372
|
+
confirmationSource?: ('provider_webhook' | 'provider_lookup' | 'provider_api_confirm' | 'manual_server') | null;
|
|
2373
|
+
cashReceipt?: {
|
|
2374
|
+
issuanceType?: ('none' | 'personal' | 'business') | null;
|
|
2375
|
+
/**
|
|
2376
|
+
* Personal: phone or cash receipt card number / Business: business registration number
|
|
2377
|
+
*/
|
|
2378
|
+
registrationNumber?: string | null;
|
|
2379
|
+
issueNumber?: string | null;
|
|
2380
|
+
issuedAt?: string | null;
|
|
2381
|
+
};
|
|
2382
|
+
cardInfo?: {
|
|
2383
|
+
brand?: string | null;
|
|
2384
|
+
last4?: string | null;
|
|
2385
|
+
expMonth?: number | null;
|
|
2386
|
+
expYear?: number | null;
|
|
2387
|
+
issuerCode?: string | null;
|
|
2388
|
+
type?: ('credit' | 'debit' | 'gift') | null;
|
|
2389
|
+
owner?: string | null;
|
|
2390
|
+
};
|
|
2391
|
+
failureCode?: string | null;
|
|
2392
|
+
failureMessage?: string | null;
|
|
2238
2393
|
/**
|
|
2239
|
-
*
|
|
2394
|
+
* Payment gateway (e.g. toss, stripe)
|
|
2240
2395
|
*/
|
|
2241
|
-
|
|
2396
|
+
pgProvider?: string | null;
|
|
2397
|
+
/**
|
|
2398
|
+
* Legal retention deadline (5 years, Electronic Financial Transactions Act)
|
|
2399
|
+
*/
|
|
2400
|
+
retainUntil?: string | null;
|
|
2242
2401
|
metadata?: {
|
|
2243
2402
|
[k: string]: unknown;
|
|
2244
2403
|
} | unknown[] | string | number | boolean | null;
|
|
@@ -2248,1093 +2407,1095 @@ interface ProductOptionValue {
|
|
|
2248
2407
|
}
|
|
2249
2408
|
/**
|
|
2250
2409
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2251
|
-
* via the `definition` "
|
|
2410
|
+
* via the `definition` "fulfillments".
|
|
2252
2411
|
*/
|
|
2253
|
-
interface
|
|
2412
|
+
interface Fulfillment {
|
|
2254
2413
|
id: string;
|
|
2255
|
-
'_product-options_options_order'?: string | null;
|
|
2256
|
-
_order?: string | null;
|
|
2257
2414
|
tenant?: (string | null) | Tenant;
|
|
2415
|
+
order: string | Order;
|
|
2416
|
+
status: 'pending' | 'packed' | 'shipped' | 'delivered' | 'failed';
|
|
2258
2417
|
/**
|
|
2259
|
-
*
|
|
2260
|
-
*/
|
|
2261
|
-
product: string | Product;
|
|
2262
|
-
/**
|
|
2263
|
-
* Editable option display name for Admin and storefront copy. Changing it after creation does not change the public slug. (e.g. Color, Size)
|
|
2418
|
+
* Carrier name (e.g. CJ Logistics, FedEx)
|
|
2264
2419
|
*/
|
|
2265
|
-
|
|
2420
|
+
carrier?: string | null;
|
|
2266
2421
|
/**
|
|
2267
|
-
*
|
|
2422
|
+
* Carrier tracking number. Used as input for the derived trackingUrl.
|
|
2268
2423
|
*/
|
|
2269
|
-
|
|
2424
|
+
trackingNumber?: string | null;
|
|
2270
2425
|
/**
|
|
2271
|
-
*
|
|
2426
|
+
* Tracking URL (auto-derived from carrier + trackingNumber)
|
|
2272
2427
|
*/
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2428
|
+
trackingUrl?: string | null;
|
|
2429
|
+
packedAt?: string | null;
|
|
2430
|
+
shippedAt?: string | null;
|
|
2431
|
+
deliveredAt?: string | null;
|
|
2432
|
+
items?: {
|
|
2433
|
+
docs?: (string | FulfillmentItem)[];
|
|
2276
2434
|
hasNextPage?: boolean;
|
|
2277
2435
|
totalDocs?: number;
|
|
2278
2436
|
};
|
|
2437
|
+
/**
|
|
2438
|
+
* Internal fulfillment note. Not shown directly to customers.
|
|
2439
|
+
*/
|
|
2440
|
+
adminNotes?: string | null;
|
|
2441
|
+
metadata?: {
|
|
2442
|
+
[k: string]: unknown;
|
|
2443
|
+
} | unknown[] | string | number | boolean | null;
|
|
2279
2444
|
updatedAt: string;
|
|
2280
2445
|
createdAt: string;
|
|
2281
2446
|
deletedAt?: string | null;
|
|
2282
2447
|
}
|
|
2283
2448
|
/**
|
|
2284
|
-
* Product categories are a hierarchical taxonomy for navigation and grouping.
|
|
2285
|
-
*
|
|
2286
2449
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2287
|
-
* via the `definition` "
|
|
2450
|
+
* via the `definition` "fulfillment-items".
|
|
2288
2451
|
*/
|
|
2289
|
-
interface
|
|
2452
|
+
interface FulfillmentItem {
|
|
2290
2453
|
id: string;
|
|
2291
|
-
_order?: string | null;
|
|
2292
2454
|
tenant?: (string | null) | Tenant;
|
|
2293
|
-
|
|
2455
|
+
fulfillment: string | Fulfillment;
|
|
2456
|
+
orderItem: string | OrderItem;
|
|
2457
|
+
quantity: number;
|
|
2458
|
+
updatedAt: string;
|
|
2459
|
+
createdAt: string;
|
|
2460
|
+
deletedAt?: string | null;
|
|
2461
|
+
}
|
|
2462
|
+
/**
|
|
2463
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
2464
|
+
* via the `definition` "returns".
|
|
2465
|
+
*/
|
|
2466
|
+
interface Return {
|
|
2467
|
+
id: string;
|
|
2468
|
+
tenant?: (string | null) | Tenant;
|
|
2469
|
+
returnNumber?: string | null;
|
|
2470
|
+
order: string | Order;
|
|
2471
|
+
type: 'refund' | 'exchange';
|
|
2472
|
+
/**
|
|
2473
|
+
* New order created for exchange
|
|
2474
|
+
*/
|
|
2475
|
+
exchangeOrder?: (string | null) | Order;
|
|
2476
|
+
status: 'requested' | 'processing' | 'approved' | 'rejected' | 'completed';
|
|
2477
|
+
/**
|
|
2478
|
+
* Reason category for the return or refund request. Used for reporting and operations.
|
|
2479
|
+
*/
|
|
2480
|
+
reason?: ('change_of_mind' | 'defective' | 'wrong_delivery' | 'damaged' | 'other') | null;
|
|
2294
2481
|
/**
|
|
2295
|
-
*
|
|
2482
|
+
* Detailed return reason
|
|
2296
2483
|
*/
|
|
2297
|
-
|
|
2298
|
-
|
|
2484
|
+
reasonDetail?: string | null;
|
|
2485
|
+
items?: {
|
|
2486
|
+
docs?: (string | ReturnItem)[];
|
|
2487
|
+
hasNextPage?: boolean;
|
|
2488
|
+
totalDocs?: number;
|
|
2489
|
+
};
|
|
2299
2490
|
/**
|
|
2300
|
-
*
|
|
2491
|
+
* Internal return-processing note. Not shown directly to customers.
|
|
2301
2492
|
*/
|
|
2302
|
-
|
|
2493
|
+
adminNotes?: string | null;
|
|
2494
|
+
completedAt?: string | null;
|
|
2303
2495
|
/**
|
|
2304
|
-
*
|
|
2496
|
+
* Refund receipt URL
|
|
2305
2497
|
*/
|
|
2306
|
-
|
|
2498
|
+
refundReceiptUrl?: string | null;
|
|
2499
|
+
refundAmount: number;
|
|
2307
2500
|
/**
|
|
2308
|
-
*
|
|
2501
|
+
* Return shipping fee deducted from refundAmount
|
|
2309
2502
|
*/
|
|
2310
|
-
|
|
2503
|
+
returnShippingFee?: number | null;
|
|
2311
2504
|
/**
|
|
2312
|
-
*
|
|
2505
|
+
* Exchange balance (positive: extra charge, negative: extra refund)
|
|
2313
2506
|
*/
|
|
2314
|
-
|
|
2507
|
+
exchangeDifference?: number | null;
|
|
2508
|
+
metadata?: {
|
|
2509
|
+
[k: string]: unknown;
|
|
2510
|
+
} | unknown[] | string | number | boolean | null;
|
|
2315
2511
|
updatedAt: string;
|
|
2316
2512
|
createdAt: string;
|
|
2317
2513
|
deletedAt?: string | null;
|
|
2318
2514
|
}
|
|
2319
2515
|
/**
|
|
2320
|
-
* Product tags are flat labels for search and loose grouping.
|
|
2321
|
-
*
|
|
2322
2516
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2323
|
-
* via the `definition` "
|
|
2517
|
+
* via the `definition` "return-items".
|
|
2324
2518
|
*/
|
|
2325
|
-
interface
|
|
2519
|
+
interface ReturnItem {
|
|
2326
2520
|
id: string;
|
|
2327
|
-
_order?: string | null;
|
|
2328
2521
|
tenant?: (string | null) | Tenant;
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2522
|
+
return: string | Return;
|
|
2523
|
+
order: string | Order;
|
|
2524
|
+
status: 'requested' | 'processing' | 'approved' | 'rejected' | 'completed';
|
|
2525
|
+
orderItem: string | OrderItem;
|
|
2526
|
+
product: string | Product;
|
|
2527
|
+
variant?: (string | null) | ProductVariant;
|
|
2335
2528
|
/**
|
|
2336
|
-
*
|
|
2529
|
+
* Quantity fixed when the return item is created. It cannot be edited after create to protect refund/restock calculations.
|
|
2337
2530
|
*/
|
|
2338
|
-
|
|
2531
|
+
quantity: number;
|
|
2532
|
+
restockAction: 'return_to_stock' | 'discard';
|
|
2339
2533
|
/**
|
|
2340
|
-
*
|
|
2534
|
+
* Restocking fee for this line (deducted from line refund)
|
|
2341
2535
|
*/
|
|
2342
|
-
|
|
2536
|
+
restockingFee?: number | null;
|
|
2537
|
+
productTitle?: string | null;
|
|
2343
2538
|
updatedAt: string;
|
|
2344
2539
|
createdAt: string;
|
|
2345
2540
|
deletedAt?: string | null;
|
|
2346
2541
|
}
|
|
2347
2542
|
/**
|
|
2348
2543
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2349
|
-
* via the `definition` "
|
|
2544
|
+
* via the `definition` "api-keys".
|
|
2350
2545
|
*/
|
|
2351
|
-
interface
|
|
2546
|
+
interface ApiKey {
|
|
2352
2547
|
id: string;
|
|
2353
|
-
|
|
2354
|
-
tenant?: (string | null) | Tenant;
|
|
2548
|
+
tenant: string | Tenant;
|
|
2355
2549
|
name: string;
|
|
2550
|
+
secretHash: string;
|
|
2356
2551
|
/**
|
|
2357
|
-
*
|
|
2552
|
+
* Key prefix (e.g. sk01_ab12cd3)
|
|
2358
2553
|
*/
|
|
2359
|
-
|
|
2360
|
-
content?: {
|
|
2361
|
-
root: {
|
|
2362
|
-
type: string;
|
|
2363
|
-
children: {
|
|
2364
|
-
type: any;
|
|
2365
|
-
version: number;
|
|
2366
|
-
[k: string]: unknown;
|
|
2367
|
-
}[];
|
|
2368
|
-
direction: ('ltr' | 'rtl') | null;
|
|
2369
|
-
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
2370
|
-
indent: number;
|
|
2371
|
-
version: number;
|
|
2372
|
-
};
|
|
2373
|
-
[k: string]: unknown;
|
|
2374
|
-
} | null;
|
|
2554
|
+
displayPrefix: string;
|
|
2375
2555
|
/**
|
|
2376
|
-
*
|
|
2556
|
+
* Trailing characters used to identify the key. The raw secret key is not stored or displayed.
|
|
2377
2557
|
*/
|
|
2378
|
-
|
|
2558
|
+
displaySuffix: string;
|
|
2379
2559
|
/**
|
|
2380
|
-
*
|
|
2560
|
+
* Capability scopes. Default is read+write; webhook dispatch requires webhook, analytics writes require analytics.
|
|
2381
2561
|
*/
|
|
2382
|
-
|
|
2562
|
+
scopes?: ('read' | 'write' | 'webhook' | 'analytics' | 'super-admin')[] | null;
|
|
2383
2563
|
/**
|
|
2384
|
-
*
|
|
2564
|
+
* User who issued the key. Read-only provenance for issuance audit.
|
|
2385
2565
|
*/
|
|
2386
|
-
|
|
2566
|
+
createdBy?: (string | null) | User;
|
|
2387
2567
|
/**
|
|
2388
|
-
*
|
|
2568
|
+
* IP address of the key creation request. Privacy-bearing security audit metadata.
|
|
2389
2569
|
*/
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
/**
|
|
2393
|
-
* Search result title (falls back to document title)
|
|
2394
|
-
*/
|
|
2395
|
-
title?: string | null;
|
|
2396
|
-
/**
|
|
2397
|
-
* Search result description
|
|
2398
|
-
*/
|
|
2399
|
-
description?: string | null;
|
|
2400
|
-
/**
|
|
2401
|
-
* Block search engine indexing
|
|
2402
|
-
*/
|
|
2403
|
-
noIndex?: boolean | null;
|
|
2404
|
-
/**
|
|
2405
|
-
* Canonical URL (prevents duplicate content)
|
|
2406
|
-
*/
|
|
2407
|
-
canonical?: string | null;
|
|
2408
|
-
openGraph?: {
|
|
2409
|
-
/**
|
|
2410
|
-
* OG title (falls back to seo.title)
|
|
2411
|
-
*/
|
|
2412
|
-
title?: string | null;
|
|
2413
|
-
/**
|
|
2414
|
-
* OG description (falls back to seo.description)
|
|
2415
|
-
*/
|
|
2416
|
-
description?: string | null;
|
|
2417
|
-
/**
|
|
2418
|
-
* OG / Twitter Card image (1200×630 recommended). Leaving this empty does not set it automatically from collection media.
|
|
2419
|
-
*/
|
|
2420
|
-
image?: (string | null) | BrandLogo;
|
|
2421
|
-
};
|
|
2422
|
-
};
|
|
2570
|
+
createdByIp?: string | null;
|
|
2571
|
+
lastUsedAt?: string | null;
|
|
2423
2572
|
/**
|
|
2424
|
-
*
|
|
2573
|
+
* Last IP address that used the key. Privacy-bearing audit value for abuse investigation.
|
|
2425
2574
|
*/
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
status?: ('draft' | 'published' | 'archived') | null;
|
|
2429
|
-
isFeatured?: boolean | null;
|
|
2430
|
-
publishedAt?: string | null;
|
|
2431
|
-
metadata?: {
|
|
2432
|
-
[k: string]: unknown;
|
|
2433
|
-
} | unknown[] | string | number | boolean | null;
|
|
2434
|
-
updatedAt: string;
|
|
2435
|
-
createdAt: string;
|
|
2436
|
-
deletedAt?: string | null;
|
|
2437
|
-
}
|
|
2438
|
-
/**
|
|
2439
|
-
* This interface was referenced by `Config`'s JSON-Schema
|
|
2440
|
-
* via the `definition` "brand-logos".
|
|
2441
|
-
*/
|
|
2442
|
-
interface BrandLogo {
|
|
2443
|
-
id: string;
|
|
2444
|
-
tenant?: (string | null) | Tenant;
|
|
2575
|
+
lastUsedIp?: string | null;
|
|
2576
|
+
revokedAt?: string | null;
|
|
2445
2577
|
/**
|
|
2446
|
-
*
|
|
2578
|
+
* User who revoked the key. Read-only provenance for revocation audit.
|
|
2447
2579
|
*/
|
|
2448
|
-
|
|
2580
|
+
revokedBy?: (string | null) | User;
|
|
2449
2581
|
/**
|
|
2450
|
-
*
|
|
2582
|
+
* Optional expiration. Empty = never expires.
|
|
2451
2583
|
*/
|
|
2452
|
-
|
|
2453
|
-
palette?: {
|
|
2454
|
-
vibrant?: string | null;
|
|
2455
|
-
muted?: string | null;
|
|
2456
|
-
darkVibrant?: string | null;
|
|
2457
|
-
darkMuted?: string | null;
|
|
2458
|
-
lightVibrant?: string | null;
|
|
2459
|
-
lightMuted?: string | null;
|
|
2460
|
-
};
|
|
2461
|
-
prefix?: string | null;
|
|
2584
|
+
expiresAt?: string | null;
|
|
2462
2585
|
updatedAt: string;
|
|
2463
2586
|
createdAt: string;
|
|
2464
2587
|
deletedAt?: string | null;
|
|
2465
|
-
url?: string | null;
|
|
2466
|
-
thumbnailURL?: string | null;
|
|
2467
|
-
filename?: string | null;
|
|
2468
|
-
mimeType?: string | null;
|
|
2469
|
-
filesize?: number | null;
|
|
2470
|
-
width?: number | null;
|
|
2471
|
-
height?: number | null;
|
|
2472
|
-
focalX?: number | null;
|
|
2473
|
-
focalY?: number | null;
|
|
2474
|
-
sizes?: {
|
|
2475
|
-
'16'?: {
|
|
2476
|
-
url?: string | null;
|
|
2477
|
-
width?: number | null;
|
|
2478
|
-
height?: number | null;
|
|
2479
|
-
mimeType?: string | null;
|
|
2480
|
-
filesize?: number | null;
|
|
2481
|
-
filename?: string | null;
|
|
2482
|
-
};
|
|
2483
|
-
'32'?: {
|
|
2484
|
-
url?: string | null;
|
|
2485
|
-
width?: number | null;
|
|
2486
|
-
height?: number | null;
|
|
2487
|
-
mimeType?: string | null;
|
|
2488
|
-
filesize?: number | null;
|
|
2489
|
-
filename?: string | null;
|
|
2490
|
-
};
|
|
2491
|
-
'64'?: {
|
|
2492
|
-
url?: string | null;
|
|
2493
|
-
width?: number | null;
|
|
2494
|
-
height?: number | null;
|
|
2495
|
-
mimeType?: string | null;
|
|
2496
|
-
filesize?: number | null;
|
|
2497
|
-
filename?: string | null;
|
|
2498
|
-
};
|
|
2499
|
-
'128'?: {
|
|
2500
|
-
url?: string | null;
|
|
2501
|
-
width?: number | null;
|
|
2502
|
-
height?: number | null;
|
|
2503
|
-
mimeType?: string | null;
|
|
2504
|
-
filesize?: number | null;
|
|
2505
|
-
filename?: string | null;
|
|
2506
|
-
};
|
|
2507
|
-
'180'?: {
|
|
2508
|
-
url?: string | null;
|
|
2509
|
-
width?: number | null;
|
|
2510
|
-
height?: number | null;
|
|
2511
|
-
mimeType?: string | null;
|
|
2512
|
-
filesize?: number | null;
|
|
2513
|
-
filename?: string | null;
|
|
2514
|
-
};
|
|
2515
|
-
'192'?: {
|
|
2516
|
-
url?: string | null;
|
|
2517
|
-
width?: number | null;
|
|
2518
|
-
height?: number | null;
|
|
2519
|
-
mimeType?: string | null;
|
|
2520
|
-
filesize?: number | null;
|
|
2521
|
-
filename?: string | null;
|
|
2522
|
-
};
|
|
2523
|
-
'512'?: {
|
|
2524
|
-
url?: string | null;
|
|
2525
|
-
width?: number | null;
|
|
2526
|
-
height?: number | null;
|
|
2527
|
-
mimeType?: string | null;
|
|
2528
|
-
filesize?: number | null;
|
|
2529
|
-
filename?: string | null;
|
|
2530
|
-
};
|
|
2531
|
-
};
|
|
2532
2588
|
}
|
|
2533
2589
|
/**
|
|
2534
2590
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2535
|
-
* via the `definition` "
|
|
2591
|
+
* via the `definition` "personal-access-tokens".
|
|
2536
2592
|
*/
|
|
2537
|
-
interface
|
|
2593
|
+
interface PersonalAccessToken {
|
|
2538
2594
|
id: string;
|
|
2539
|
-
|
|
2540
|
-
tenant?: (string | null) | Tenant;
|
|
2541
|
-
displayLabel?: string | null;
|
|
2595
|
+
user: string | User;
|
|
2542
2596
|
/**
|
|
2543
|
-
* e.g.
|
|
2597
|
+
* e.g. "CLI: MacBook Pro (darwin)", "GitHub Actions"
|
|
2544
2598
|
*/
|
|
2545
|
-
|
|
2599
|
+
name: string;
|
|
2600
|
+
secretHash: string;
|
|
2546
2601
|
/**
|
|
2547
|
-
*
|
|
2602
|
+
* PAT prefix. Display-only token type marker, not the raw token.
|
|
2548
2603
|
*/
|
|
2549
|
-
|
|
2604
|
+
displayPrefix: string;
|
|
2550
2605
|
/**
|
|
2551
|
-
*
|
|
2606
|
+
* Trailing characters used to identify the PAT. The raw token is not shown again.
|
|
2552
2607
|
*/
|
|
2553
|
-
|
|
2608
|
+
displaySuffix: string;
|
|
2554
2609
|
/**
|
|
2555
|
-
*
|
|
2610
|
+
* Default tenant ID for CLI operations. Set via `01 tenant use <name>`.
|
|
2556
2611
|
*/
|
|
2557
|
-
|
|
2612
|
+
defaultTenant?: string | null;
|
|
2558
2613
|
/**
|
|
2559
|
-
*
|
|
2614
|
+
* IP address of the PAT creation request. Privacy-bearing security audit metadata.
|
|
2560
2615
|
*/
|
|
2561
|
-
|
|
2616
|
+
createdByIp?: string | null;
|
|
2617
|
+
lastUsedAt?: string | null;
|
|
2562
2618
|
/**
|
|
2563
|
-
*
|
|
2619
|
+
* Last IP address that used the PAT. Privacy-bearing audit value for abuse investigation.
|
|
2564
2620
|
*/
|
|
2565
|
-
|
|
2621
|
+
lastUsedIp?: string | null;
|
|
2622
|
+
revokedAt?: string | null;
|
|
2566
2623
|
/**
|
|
2567
|
-
*
|
|
2624
|
+
* User who revoked the PAT. Read-only provenance for revocation audit.
|
|
2568
2625
|
*/
|
|
2569
|
-
|
|
2570
|
-
slug?: string | null;
|
|
2626
|
+
revokedBy?: (string | null) | User;
|
|
2571
2627
|
/**
|
|
2572
|
-
*
|
|
2628
|
+
* PATs expire after 90 days by default.
|
|
2573
2629
|
*/
|
|
2574
|
-
|
|
2575
|
-
isActive?: boolean | null;
|
|
2576
|
-
isDefault?: boolean | null;
|
|
2577
|
-
metadata?: {
|
|
2578
|
-
[k: string]: unknown;
|
|
2579
|
-
} | unknown[] | string | number | boolean | null;
|
|
2630
|
+
expiresAt?: string | null;
|
|
2580
2631
|
updatedAt: string;
|
|
2581
2632
|
createdAt: string;
|
|
2582
2633
|
deletedAt?: string | null;
|
|
2583
2634
|
}
|
|
2584
2635
|
/**
|
|
2585
2636
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2586
|
-
* via the `definition` "
|
|
2637
|
+
* via the `definition` "audit-logs".
|
|
2587
2638
|
*/
|
|
2588
|
-
interface
|
|
2639
|
+
interface AuditLog {
|
|
2589
2640
|
id: string;
|
|
2590
|
-
'_product-collection-items_items_order'?: string | null;
|
|
2591
|
-
_order?: string | null;
|
|
2592
2641
|
tenant?: (string | null) | Tenant;
|
|
2593
2642
|
/**
|
|
2594
|
-
*
|
|
2643
|
+
* Event type
|
|
2595
2644
|
*/
|
|
2596
|
-
|
|
2645
|
+
eventType: string;
|
|
2597
2646
|
/**
|
|
2598
|
-
*
|
|
2647
|
+
* Actor ID. May refer to a user or service, and can be empty for system actions.
|
|
2599
2648
|
*/
|
|
2600
|
-
|
|
2649
|
+
actorId?: string | null;
|
|
2650
|
+
/**
|
|
2651
|
+
* Detailed audit event payload. May contain sensitive security, billing, or provider context.
|
|
2652
|
+
*/
|
|
2653
|
+
payload?: {
|
|
2654
|
+
[k: string]: unknown;
|
|
2655
|
+
} | unknown[] | string | number | boolean | null;
|
|
2601
2656
|
updatedAt: string;
|
|
2602
2657
|
createdAt: string;
|
|
2603
2658
|
}
|
|
2604
2659
|
/**
|
|
2605
|
-
* Curated product grouping for campaigns, recommendations, and merchandising.
|
|
2606
|
-
*
|
|
2607
2660
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2608
|
-
* via the `definition` "
|
|
2661
|
+
* via the `definition` "webhook-events".
|
|
2609
2662
|
*/
|
|
2610
|
-
interface
|
|
2663
|
+
interface WebhookEvent {
|
|
2611
2664
|
id: string;
|
|
2612
|
-
_order?: string | null;
|
|
2613
2665
|
tenant?: (string | null) | Tenant;
|
|
2614
|
-
title?: string | null;
|
|
2615
|
-
/**
|
|
2616
|
-
* Secondary display line shown in cards, listings, and detail headers.
|
|
2617
|
-
*/
|
|
2618
|
-
subtitle?: string | null;
|
|
2619
2666
|
/**
|
|
2620
|
-
*
|
|
2667
|
+
* Provider
|
|
2621
2668
|
*/
|
|
2622
|
-
|
|
2623
|
-
content?: {
|
|
2624
|
-
root: {
|
|
2625
|
-
type: string;
|
|
2626
|
-
children: {
|
|
2627
|
-
type: any;
|
|
2628
|
-
version: number;
|
|
2629
|
-
[k: string]: unknown;
|
|
2630
|
-
}[];
|
|
2631
|
-
direction: ('ltr' | 'rtl') | null;
|
|
2632
|
-
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
2633
|
-
indent: number;
|
|
2634
|
-
version: number;
|
|
2635
|
-
};
|
|
2636
|
-
[k: string]: unknown;
|
|
2637
|
-
} | null;
|
|
2638
|
-
images?: (string | Image)[] | null;
|
|
2669
|
+
provider: string;
|
|
2639
2670
|
/**
|
|
2640
|
-
*
|
|
2671
|
+
* Provider-supplied event ID. Used with provider as the idempotency key for duplicate prevention.
|
|
2641
2672
|
*/
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
hasNextPage?: boolean;
|
|
2645
|
-
totalDocs?: number;
|
|
2646
|
-
};
|
|
2647
|
-
seo?: {
|
|
2648
|
-
/**
|
|
2649
|
-
* Search result title (falls back to document title)
|
|
2650
|
-
*/
|
|
2651
|
-
title?: string | null;
|
|
2652
|
-
/**
|
|
2653
|
-
* Search result description
|
|
2654
|
-
*/
|
|
2655
|
-
description?: string | null;
|
|
2656
|
-
/**
|
|
2657
|
-
* Block search engine indexing
|
|
2658
|
-
*/
|
|
2659
|
-
noIndex?: boolean | null;
|
|
2660
|
-
/**
|
|
2661
|
-
* Canonical URL (prevents duplicate content)
|
|
2662
|
-
*/
|
|
2663
|
-
canonical?: string | null;
|
|
2664
|
-
openGraph?: {
|
|
2665
|
-
/**
|
|
2666
|
-
* OG title (falls back to seo.title)
|
|
2667
|
-
*/
|
|
2668
|
-
title?: string | null;
|
|
2669
|
-
/**
|
|
2670
|
-
* OG description (falls back to seo.description)
|
|
2671
|
-
*/
|
|
2672
|
-
description?: string | null;
|
|
2673
|
-
/**
|
|
2674
|
-
* OG / Twitter Card image (1200×630 recommended). Leaving this empty does not set it automatically from collection media.
|
|
2675
|
-
*/
|
|
2676
|
-
image?: (string | null) | Image;
|
|
2677
|
-
};
|
|
2678
|
-
};
|
|
2679
|
-
thumbnail?: (string | null) | Image;
|
|
2673
|
+
eventId: string;
|
|
2674
|
+
receivedAt?: string | null;
|
|
2680
2675
|
/**
|
|
2681
|
-
*
|
|
2676
|
+
* Raw provider event body. May contain sensitive security or payment context.
|
|
2682
2677
|
*/
|
|
2683
|
-
|
|
2684
|
-
slug?: string | null;
|
|
2685
|
-
status?: ('draft' | 'published' | 'archived') | null;
|
|
2686
|
-
isFeatured?: boolean | null;
|
|
2687
|
-
publishedAt?: string | null;
|
|
2688
|
-
metadata?: {
|
|
2678
|
+
payload?: {
|
|
2689
2679
|
[k: string]: unknown;
|
|
2690
2680
|
} | unknown[] | string | number | boolean | null;
|
|
2691
2681
|
updatedAt: string;
|
|
2692
2682
|
createdAt: string;
|
|
2693
|
-
deletedAt?: string | null;
|
|
2694
2683
|
}
|
|
2695
2684
|
/**
|
|
2696
2685
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2697
|
-
* via the `definition` "
|
|
2686
|
+
* via the `definition` "webhook-deliveries".
|
|
2698
2687
|
*/
|
|
2699
|
-
interface
|
|
2688
|
+
interface WebhookDelivery {
|
|
2700
2689
|
id: string;
|
|
2701
2690
|
tenant?: (string | null) | Tenant;
|
|
2702
|
-
orderNumber: string;
|
|
2703
|
-
cartToken?: string | null;
|
|
2704
|
-
status: 'pending' | 'paid' | 'failed' | 'canceled' | 'refunded' | 'preparing' | 'shipped' | 'delivered' | 'confirmed' | 'return_requested' | 'return_processing' | 'returned';
|
|
2705
|
-
totalAmount?: number | null;
|
|
2706
|
-
discountCode?: string | null;
|
|
2707
|
-
discountAmount?: number | null;
|
|
2708
2691
|
/**
|
|
2709
|
-
*
|
|
2692
|
+
* Active webhook endpoint used for this delivery attempt.
|
|
2710
2693
|
*/
|
|
2711
|
-
|
|
2694
|
+
webhookId?: (string | null) | Webhook;
|
|
2712
2695
|
/**
|
|
2713
|
-
*
|
|
2696
|
+
* Value sent to receivers as x-webhook-delivery-id.
|
|
2714
2697
|
*/
|
|
2715
|
-
|
|
2698
|
+
deliveryId?: string | null;
|
|
2699
|
+
attempt: number;
|
|
2716
2700
|
/**
|
|
2717
|
-
*
|
|
2701
|
+
* Webhook delivery state. Updated by dispatcher and retry handling paths.
|
|
2718
2702
|
*/
|
|
2719
|
-
|
|
2720
|
-
taxAmount?: number | null;
|
|
2721
|
-
source?: ('web' | 'app' | 'manual') | null;
|
|
2722
|
-
currency?: string | null;
|
|
2703
|
+
status: 'queued' | 'success' | 'failed' | 'dead';
|
|
2723
2704
|
/**
|
|
2724
|
-
*
|
|
2705
|
+
* Destination host with query string removed. Full URLs are not stored.
|
|
2725
2706
|
*/
|
|
2726
|
-
|
|
2727
|
-
cancelReason?: string | null;
|
|
2728
|
-
canceledAt?: string | null;
|
|
2729
|
-
completedAt?: string | null;
|
|
2707
|
+
endpointHost?: string | null;
|
|
2730
2708
|
/**
|
|
2731
|
-
*
|
|
2709
|
+
* HMAC hash of the endpoint URL with query string removed.
|
|
2732
2710
|
*/
|
|
2733
|
-
|
|
2734
|
-
customer?: (string | null) | Customer;
|
|
2711
|
+
endpointUrlHash?: string | null;
|
|
2735
2712
|
/**
|
|
2736
|
-
*
|
|
2713
|
+
* Collection that produced this delivery attempt.
|
|
2737
2714
|
*/
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
|
|
2747
|
-
|
|
2748
|
-
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
|
|
2762
|
-
|
|
2763
|
-
|
|
2764
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
2769
|
-
|
|
2770
|
-
|
|
2771
|
-
|
|
2772
|
-
|
|
2773
|
-
|
|
2774
|
-
|
|
2775
|
-
hasNextPage?: boolean;
|
|
2776
|
-
totalDocs?: number;
|
|
2777
|
-
};
|
|
2778
|
-
metadata?: {
|
|
2779
|
-
[k: string]: unknown;
|
|
2780
|
-
} | unknown[] | string | number | boolean | null;
|
|
2781
|
-
nextRefundSeq?: number | null;
|
|
2782
|
-
nextCaptureSeq?: number | null;
|
|
2783
|
-
nextVoidSeq?: number | null;
|
|
2715
|
+
collection?: string | null;
|
|
2716
|
+
/**
|
|
2717
|
+
* Operation that produced this delivery attempt.
|
|
2718
|
+
*/
|
|
2719
|
+
operation?: string | null;
|
|
2720
|
+
/**
|
|
2721
|
+
* Path that produced the delivery attempt.
|
|
2722
|
+
*/
|
|
2723
|
+
source?: ('registry' | 'retry_queue' | 'dlq_retry' | 'password_reset') | null;
|
|
2724
|
+
/**
|
|
2725
|
+
* HTTP status returned by the receiver.
|
|
2726
|
+
*/
|
|
2727
|
+
statusCode?: number | null;
|
|
2728
|
+
/**
|
|
2729
|
+
* Delivery failure kind. Sensitive request body or headers are not stored.
|
|
2730
|
+
*/
|
|
2731
|
+
errorKind?: string | null;
|
|
2732
|
+
/**
|
|
2733
|
+
* Truncated error message. Sensitive request body or headers are not stored.
|
|
2734
|
+
*/
|
|
2735
|
+
errorMessage?: string | null;
|
|
2736
|
+
/**
|
|
2737
|
+
* Delivery attempt duration in milliseconds.
|
|
2738
|
+
*/
|
|
2739
|
+
durationMs?: number | null;
|
|
2740
|
+
/**
|
|
2741
|
+
* Next scheduled retry time for a failed delivery.
|
|
2742
|
+
*/
|
|
2743
|
+
nextRetryAt?: string | null;
|
|
2744
|
+
/**
|
|
2745
|
+
* Marks attempts produced by Redis retry or DLQ replay paths.
|
|
2746
|
+
*/
|
|
2747
|
+
redelivery?: boolean | null;
|
|
2748
|
+
/**
|
|
2749
|
+
* Timestamp when the webhook request was dispatched to the endpoint.
|
|
2750
|
+
*/
|
|
2751
|
+
dispatchedAt?: string | null;
|
|
2784
2752
|
updatedAt: string;
|
|
2785
2753
|
createdAt: string;
|
|
2786
|
-
deletedAt?: string | null;
|
|
2787
2754
|
}
|
|
2788
2755
|
/**
|
|
2789
2756
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2790
|
-
* via the `definition` "
|
|
2757
|
+
* via the `definition` "webhooks".
|
|
2791
2758
|
*/
|
|
2792
|
-
interface
|
|
2759
|
+
interface Webhook {
|
|
2793
2760
|
id: string;
|
|
2794
|
-
_customers_customers_order?: string | null;
|
|
2795
|
-
_order?: string | null;
|
|
2796
2761
|
tenant?: (string | null) | Tenant;
|
|
2797
|
-
name: string;
|
|
2798
|
-
email?: string | null;
|
|
2799
|
-
phone?: string | null;
|
|
2800
|
-
groups?: (string | CustomerGroup)[] | null;
|
|
2801
|
-
/**
|
|
2802
|
-
* Internal notes (not visible to customers)
|
|
2803
|
-
*/
|
|
2804
|
-
note?: string | null;
|
|
2805
|
-
birthDate?: string | null;
|
|
2806
|
-
gender?: ('male' | 'female' | 'other' | 'prefer_not_to_say') | null;
|
|
2807
|
-
isGuest?: boolean | null;
|
|
2808
2762
|
/**
|
|
2809
|
-
*
|
|
2763
|
+
* Webhook name
|
|
2810
2764
|
*/
|
|
2811
|
-
|
|
2765
|
+
name: string;
|
|
2812
2766
|
/**
|
|
2813
|
-
*
|
|
2767
|
+
* Webhook endpoint HTTPS URL. Treat this endpoint as a recipient of sensitive workspace events.
|
|
2814
2768
|
*/
|
|
2815
|
-
|
|
2816
|
-
lastLoginAt?: string | null;
|
|
2769
|
+
url: string;
|
|
2817
2770
|
/**
|
|
2818
|
-
*
|
|
2771
|
+
* HMAC signing secret (encrypted at rest, never returned on read). Reveal or rotate in Admin.
|
|
2819
2772
|
*/
|
|
2820
|
-
|
|
2821
|
-
orders?: {
|
|
2822
|
-
docs?: (string | Order)[];
|
|
2823
|
-
hasNextPage?: boolean;
|
|
2824
|
-
totalDocs?: number;
|
|
2825
|
-
};
|
|
2826
|
-
addresses?: {
|
|
2827
|
-
docs?: (string | CustomerAddress)[];
|
|
2828
|
-
hasNextPage?: boolean;
|
|
2829
|
-
totalDocs?: number;
|
|
2830
|
-
};
|
|
2831
|
-
defaultShippingAddress?: (string | null) | CustomerAddress;
|
|
2832
|
-
defaultBillingAddress?: (string | null) | CustomerAddress;
|
|
2773
|
+
secret: string;
|
|
2833
2774
|
/**
|
|
2834
|
-
*
|
|
2775
|
+
* When the signing secret was first revealed to a tenant-admin (one time).
|
|
2835
2776
|
*/
|
|
2836
|
-
|
|
2837
|
-
lifetimeValue?: number | null;
|
|
2838
|
-
firstOrderAt?: string | null;
|
|
2839
|
-
lastOrderAt?: string | null;
|
|
2840
|
-
profile?: {
|
|
2841
|
-
docs?: (string | CustomerProfile)[];
|
|
2842
|
-
hasNextPage?: boolean;
|
|
2843
|
-
totalDocs?: number;
|
|
2844
|
-
};
|
|
2777
|
+
secretRevealedAt?: string | null;
|
|
2845
2778
|
/**
|
|
2846
|
-
*
|
|
2779
|
+
* Last webhook signing secret rotation time.
|
|
2847
2780
|
*/
|
|
2848
|
-
|
|
2781
|
+
secretRotatedAt?: string | null;
|
|
2849
2782
|
/**
|
|
2850
|
-
*
|
|
2783
|
+
* User who last rotated the webhook signing secret.
|
|
2851
2784
|
*/
|
|
2852
|
-
|
|
2785
|
+
secretRotatedBy?: (string | null) | User;
|
|
2853
2786
|
/**
|
|
2854
|
-
*
|
|
2787
|
+
* Collections to subscribe to. Leave empty to receive every supported collection event.
|
|
2855
2788
|
*/
|
|
2856
|
-
|
|
2789
|
+
subscriptions?: {
|
|
2790
|
+
/**
|
|
2791
|
+
* Receives create/update events for this collection.
|
|
2792
|
+
*/
|
|
2793
|
+
collection: 'tenant-metadata' | 'tenant-logos' | 'images' | 'products' | 'product-variants' | 'product-options' | 'product-option-values' | 'product-categories' | 'product-tags' | 'product-collections' | 'brands' | 'brand-logos' | 'orders' | 'order-items' | 'transactions' | 'fulfillments' | 'fulfillment-items' | 'returns' | 'return-items' | 'carts' | 'cart-items' | 'discounts' | 'shipping-policies' | 'shipping-zones' | 'customers' | 'customer-profiles' | 'customer-addresses' | 'playlists' | 'playlist-categories' | 'playlist-tags' | 'tracks' | 'track-categories' | 'track-tags' | 'galleries' | 'gallery-items' | 'gallery-categories' | 'gallery-tags' | 'links' | 'link-categories' | 'link-tags' | 'forms' | 'form-submissions' | 'articles' | 'article-authors' | 'article-categories' | 'article-tags' | 'documents' | 'document-categories' | 'document-types' | 'canvases' | 'canvas-node-types' | 'canvas-edge-types' | 'canvas-categories' | 'canvas-tags' | 'canvas-nodes' | 'canvas-edges' | 'videos' | 'video-categories' | 'video-tags' | 'live-streams' | 'posts' | 'comments' | 'reactions' | 'reaction-types' | 'bookmarks' | 'post-categories' | 'customer-profile-lists' | 'event-calendars' | 'events' | 'event-categories' | 'event-occurrences' | 'event-tags';
|
|
2794
|
+
id?: string | null;
|
|
2795
|
+
}[] | null;
|
|
2796
|
+
isActive?: boolean | null;
|
|
2797
|
+
lastDispatchedAt?: string | null;
|
|
2798
|
+
updatedAt: string;
|
|
2799
|
+
createdAt: string;
|
|
2800
|
+
deletedAt?: string | null;
|
|
2801
|
+
}
|
|
2802
|
+
/**
|
|
2803
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
2804
|
+
* via the `definition` "tenant-metadata".
|
|
2805
|
+
*/
|
|
2806
|
+
interface TenantMetadatum {
|
|
2807
|
+
id: string;
|
|
2808
|
+
tenant?: (string | null) | Tenant;
|
|
2809
|
+
siteInfo?: {
|
|
2810
|
+
/**
|
|
2811
|
+
* Site title (used in browser tab and SEO)
|
|
2812
|
+
*/
|
|
2813
|
+
title?: string | null;
|
|
2814
|
+
/**
|
|
2815
|
+
* Site description (used for SEO and social media)
|
|
2816
|
+
*/
|
|
2817
|
+
description?: string | null;
|
|
2818
|
+
/**
|
|
2819
|
+
* Comma-separated keywords for SEO
|
|
2820
|
+
*/
|
|
2821
|
+
keywords?: string | null;
|
|
2822
|
+
/**
|
|
2823
|
+
* Site author or company name
|
|
2824
|
+
*/
|
|
2825
|
+
author?: string | null;
|
|
2826
|
+
/**
|
|
2827
|
+
* Full site URL (e.g., https://example.com)
|
|
2828
|
+
*/
|
|
2829
|
+
url?: string | null;
|
|
2830
|
+
};
|
|
2857
2831
|
/**
|
|
2858
|
-
*
|
|
2832
|
+
* Required by Korean e-commerce law
|
|
2859
2833
|
*/
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
isConsented?: boolean | null;
|
|
2870
|
-
consentedAt?: string | null;
|
|
2871
|
-
expiresAt?: string | null;
|
|
2872
|
-
unsubscribedAt?: string | null;
|
|
2873
|
-
};
|
|
2874
|
-
push?: {
|
|
2875
|
-
isConsented?: boolean | null;
|
|
2876
|
-
consentedAt?: string | null;
|
|
2877
|
-
expiresAt?: string | null;
|
|
2878
|
-
unsubscribedAt?: string | null;
|
|
2879
|
-
};
|
|
2834
|
+
businessInfo?: {
|
|
2835
|
+
businessRegistrationNumber?: string | null;
|
|
2836
|
+
businessName?: string | null;
|
|
2837
|
+
ceoName?: string | null;
|
|
2838
|
+
businessAddress?: string | null;
|
|
2839
|
+
businessEmail?: string | null;
|
|
2840
|
+
onlineSalesRegistrationNumber?: string | null;
|
|
2841
|
+
};
|
|
2842
|
+
branding?: {
|
|
2880
2843
|
/**
|
|
2881
|
-
*
|
|
2844
|
+
* Primary logo
|
|
2882
2845
|
*/
|
|
2883
|
-
|
|
2846
|
+
logo?: (string | null) | TenantLogo;
|
|
2847
|
+
/**
|
|
2848
|
+
* Logo for dark mode (optional)
|
|
2849
|
+
*/
|
|
2850
|
+
logoDark?: (string | null) | TenantLogo;
|
|
2851
|
+
/**
|
|
2852
|
+
* Logo mark / Icon (optional)
|
|
2853
|
+
*/
|
|
2854
|
+
logomark?: (string | null) | TenantLogo;
|
|
2855
|
+
/**
|
|
2856
|
+
* Favicon (will be resized automatically)
|
|
2857
|
+
*/
|
|
2858
|
+
favicon?: (string | null) | TenantLogo;
|
|
2859
|
+
/**
|
|
2860
|
+
* Theme color for mobile browsers (hex color)
|
|
2861
|
+
*/
|
|
2862
|
+
themeColor?: string | null;
|
|
2863
|
+
};
|
|
2864
|
+
seo?: {
|
|
2865
|
+
/**
|
|
2866
|
+
* Robots meta tag (e.g., "index, follow" or "noindex, nofollow")
|
|
2867
|
+
*/
|
|
2868
|
+
robots?: string | null;
|
|
2869
|
+
/**
|
|
2870
|
+
* Google Site Verification code
|
|
2871
|
+
*/
|
|
2872
|
+
googleSiteVerification?: string | null;
|
|
2873
|
+
/**
|
|
2874
|
+
* Bing Site Verification code
|
|
2875
|
+
*/
|
|
2876
|
+
bingSiteVerification?: string | null;
|
|
2877
|
+
/**
|
|
2878
|
+
* Naver Site Verification code
|
|
2879
|
+
*/
|
|
2880
|
+
naverSiteVerification?: string | null;
|
|
2881
|
+
/**
|
|
2882
|
+
* Canonical URL (if different from site URL)
|
|
2883
|
+
*/
|
|
2884
|
+
canonicalUrl?: string | null;
|
|
2885
|
+
};
|
|
2886
|
+
analytics?: {
|
|
2887
|
+
/**
|
|
2888
|
+
* Google Analytics ID (e.g., G-XXXXXXXXXX)
|
|
2889
|
+
*/
|
|
2890
|
+
googleAnalyticsId?: string | null;
|
|
2891
|
+
/**
|
|
2892
|
+
* Google Tag Manager ID (e.g., GTM-XXXXXXX)
|
|
2893
|
+
*/
|
|
2894
|
+
googleTagManagerId?: string | null;
|
|
2895
|
+
/**
|
|
2896
|
+
* Facebook Pixel ID
|
|
2897
|
+
*/
|
|
2898
|
+
facebookPixelId?: string | null;
|
|
2899
|
+
/**
|
|
2900
|
+
* LinkedIn Partner ID
|
|
2901
|
+
*/
|
|
2902
|
+
linkedInPartnerId?: string | null;
|
|
2903
|
+
};
|
|
2904
|
+
openGraph?: {
|
|
2905
|
+
/**
|
|
2906
|
+
* Open Graph title (falls back to site title)
|
|
2907
|
+
*/
|
|
2908
|
+
ogTitle?: string | null;
|
|
2909
|
+
/**
|
|
2910
|
+
* Open Graph description (falls back to site description)
|
|
2911
|
+
*/
|
|
2912
|
+
ogDescription?: string | null;
|
|
2913
|
+
/**
|
|
2914
|
+
* Open Graph image (1200x630 recommended)
|
|
2915
|
+
*/
|
|
2916
|
+
ogImage?: (string | null) | Image;
|
|
2917
|
+
/**
|
|
2918
|
+
* Open Graph type
|
|
2919
|
+
*/
|
|
2920
|
+
ogType?: ('website' | 'article' | 'product' | 'profile') | null;
|
|
2921
|
+
/**
|
|
2922
|
+
* Open Graph locale (e.g., ko_KR, en_US)
|
|
2923
|
+
*/
|
|
2924
|
+
ogLocale?: string | null;
|
|
2925
|
+
};
|
|
2926
|
+
twitter?: {
|
|
2927
|
+
/**
|
|
2928
|
+
* Twitter card type
|
|
2929
|
+
*/
|
|
2930
|
+
twitterCard?: ('summary' | 'summary_large_image' | 'app' | 'player') | null;
|
|
2931
|
+
/**
|
|
2932
|
+
* Twitter username for the site (e.g., @yoursite)
|
|
2933
|
+
*/
|
|
2934
|
+
twitterSite?: string | null;
|
|
2935
|
+
/**
|
|
2936
|
+
* Twitter username for the content creator (e.g., @author)
|
|
2937
|
+
*/
|
|
2938
|
+
twitterCreator?: string | null;
|
|
2939
|
+
/**
|
|
2940
|
+
* Twitter title (falls back to OG title or site title)
|
|
2941
|
+
*/
|
|
2942
|
+
twitterTitle?: string | null;
|
|
2943
|
+
/**
|
|
2944
|
+
* Twitter description (falls back to OG or site description)
|
|
2945
|
+
*/
|
|
2946
|
+
twitterDescription?: string | null;
|
|
2947
|
+
/**
|
|
2948
|
+
* Twitter card image (falls back to OG image)
|
|
2949
|
+
*/
|
|
2950
|
+
twitterImage?: (string | null) | Image;
|
|
2884
2951
|
};
|
|
2885
2952
|
/**
|
|
2886
|
-
*
|
|
2953
|
+
* Reusable option name and value lists for the Product Editor. Up to 20 presets.
|
|
2887
2954
|
*/
|
|
2888
|
-
|
|
2955
|
+
optionPresets?: {
|
|
2889
2956
|
/**
|
|
2890
|
-
*
|
|
2957
|
+
* Name to identify this preset (e.g. Basic Clothing Sizes)
|
|
2891
2958
|
*/
|
|
2892
|
-
|
|
2959
|
+
name: string;
|
|
2960
|
+
/**
|
|
2961
|
+
* Options included in this preset. Up to 10.
|
|
2962
|
+
*/
|
|
2963
|
+
options?: {
|
|
2964
|
+
/**
|
|
2965
|
+
* Option name (e.g. Color, Size)
|
|
2966
|
+
*/
|
|
2967
|
+
title?: string | null;
|
|
2968
|
+
/**
|
|
2969
|
+
* Values for this option. Up to 30.
|
|
2970
|
+
*/
|
|
2971
|
+
values?: {
|
|
2972
|
+
/**
|
|
2973
|
+
* Option value (e.g. Red, S)
|
|
2974
|
+
*/
|
|
2975
|
+
value?: string | null;
|
|
2976
|
+
id?: string | null;
|
|
2977
|
+
}[] | null;
|
|
2978
|
+
id?: string | null;
|
|
2979
|
+
}[] | null;
|
|
2980
|
+
id?: string | null;
|
|
2981
|
+
}[] | null;
|
|
2982
|
+
pwa?: {
|
|
2893
2983
|
/**
|
|
2894
|
-
*
|
|
2984
|
+
* Short name for PWA (12 characters max)
|
|
2895
2985
|
*/
|
|
2896
|
-
|
|
2986
|
+
shortName?: string | null;
|
|
2897
2987
|
/**
|
|
2898
|
-
*
|
|
2988
|
+
* Background color for PWA splash screen
|
|
2899
2989
|
*/
|
|
2900
|
-
|
|
2990
|
+
backgroundColor?: string | null;
|
|
2901
2991
|
/**
|
|
2902
|
-
*
|
|
2992
|
+
* PWA display mode
|
|
2903
2993
|
*/
|
|
2904
|
-
|
|
2994
|
+
display?: ('fullscreen' | 'standalone' | 'minimal-ui' | 'browser') | null;
|
|
2905
2995
|
};
|
|
2906
|
-
acceptsTos?: boolean | null;
|
|
2907
|
-
tosVersion?: string | null;
|
|
2908
|
-
/**
|
|
2909
|
-
* Withdrawal reason (internal)
|
|
2910
|
-
*/
|
|
2911
|
-
withdrawReason?: string | null;
|
|
2912
|
-
withdrawnAt?: string | null;
|
|
2913
|
-
/**
|
|
2914
|
-
* Legal retention deadline. Retention cleanup or manual hard-delete paths may purge after this date.
|
|
2915
|
-
*/
|
|
2916
|
-
retainUntil?: string | null;
|
|
2917
|
-
anonymizedAt?: string | null;
|
|
2918
|
-
hashedPassword?: string | null;
|
|
2919
|
-
salt?: string | null;
|
|
2920
|
-
resetPasswordToken?: string | null;
|
|
2921
|
-
resetPasswordExpiresAt?: string | null;
|
|
2922
|
-
loginAttemptCount?: number | null;
|
|
2923
|
-
lockedUntil?: string | null;
|
|
2924
|
-
/**
|
|
2925
|
-
* Account suspension flag. Used with password/JWT revocation paths to block sessions.
|
|
2926
|
-
*/
|
|
2927
|
-
isSuspended?: boolean | null;
|
|
2928
|
-
metadata?: {
|
|
2929
|
-
[k: string]: unknown;
|
|
2930
|
-
} | unknown[] | string | number | boolean | null;
|
|
2931
2996
|
updatedAt: string;
|
|
2932
2997
|
createdAt: string;
|
|
2933
2998
|
deletedAt?: string | null;
|
|
2934
|
-
collection: 'customers';
|
|
2935
2999
|
}
|
|
2936
3000
|
/**
|
|
2937
3001
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2938
|
-
* via the `definition` "
|
|
3002
|
+
* via the `definition` "tenant-logos".
|
|
2939
3003
|
*/
|
|
2940
|
-
interface
|
|
3004
|
+
interface TenantLogo {
|
|
2941
3005
|
id: string;
|
|
2942
|
-
_order?: string | null;
|
|
2943
3006
|
tenant?: (string | null) | Tenant;
|
|
2944
|
-
title?: string | null;
|
|
2945
|
-
/**
|
|
2946
|
-
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
2947
|
-
*/
|
|
2948
|
-
generateSlug?: boolean | null;
|
|
2949
|
-
slug?: string | null;
|
|
2950
|
-
/**
|
|
2951
|
-
* Short summary for listing/cards
|
|
2952
|
-
*/
|
|
2953
|
-
description?: string | null;
|
|
2954
3007
|
/**
|
|
2955
|
-
*
|
|
2956
|
-
*/
|
|
2957
|
-
color?: string | null;
|
|
2958
|
-
image?: (string | null) | Image;
|
|
2959
|
-
isActive?: boolean | null;
|
|
2960
|
-
/**
|
|
2961
|
-
* Show this group as a customer-facing membership badge. The group collection itself remains private.
|
|
2962
|
-
*/
|
|
2963
|
-
customerVisible?: boolean | null;
|
|
2964
|
-
/**
|
|
2965
|
-
* Customer-facing label. Falls back to title when empty.
|
|
2966
|
-
*/
|
|
2967
|
-
publicTitle?: string | null;
|
|
2968
|
-
publicDescription?: string | null;
|
|
2969
|
-
publicBenefits?: {
|
|
2970
|
-
title?: string | null;
|
|
2971
|
-
description?: string | null;
|
|
2972
|
-
id?: string | null;
|
|
2973
|
-
}[] | null;
|
|
2974
|
-
/**
|
|
2975
|
-
* Customer-facing badge color. Example: #2563eb
|
|
3008
|
+
* Describe the image. Used for users who cannot see it, screen readers, and search/share previews.
|
|
2976
3009
|
*/
|
|
2977
|
-
|
|
2978
|
-
badgeImage?: (string | null) | Image;
|
|
3010
|
+
alt?: string | null;
|
|
2979
3011
|
/**
|
|
2980
|
-
*
|
|
3012
|
+
* Low quality image placeholder
|
|
2981
3013
|
*/
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
3014
|
+
lqip?: string | null;
|
|
3015
|
+
palette?: {
|
|
3016
|
+
vibrant?: string | null;
|
|
3017
|
+
muted?: string | null;
|
|
3018
|
+
darkVibrant?: string | null;
|
|
3019
|
+
darkMuted?: string | null;
|
|
3020
|
+
lightVibrant?: string | null;
|
|
3021
|
+
lightMuted?: string | null;
|
|
2990
3022
|
};
|
|
3023
|
+
prefix?: string | null;
|
|
2991
3024
|
updatedAt: string;
|
|
2992
3025
|
createdAt: string;
|
|
2993
3026
|
deletedAt?: string | null;
|
|
3027
|
+
url?: string | null;
|
|
3028
|
+
thumbnailURL?: string | null;
|
|
3029
|
+
filename?: string | null;
|
|
3030
|
+
mimeType?: string | null;
|
|
3031
|
+
filesize?: number | null;
|
|
3032
|
+
width?: number | null;
|
|
3033
|
+
height?: number | null;
|
|
3034
|
+
focalX?: number | null;
|
|
3035
|
+
focalY?: number | null;
|
|
3036
|
+
sizes?: {
|
|
3037
|
+
'16'?: {
|
|
3038
|
+
url?: string | null;
|
|
3039
|
+
width?: number | null;
|
|
3040
|
+
height?: number | null;
|
|
3041
|
+
mimeType?: string | null;
|
|
3042
|
+
filesize?: number | null;
|
|
3043
|
+
filename?: string | null;
|
|
3044
|
+
};
|
|
3045
|
+
'32'?: {
|
|
3046
|
+
url?: string | null;
|
|
3047
|
+
width?: number | null;
|
|
3048
|
+
height?: number | null;
|
|
3049
|
+
mimeType?: string | null;
|
|
3050
|
+
filesize?: number | null;
|
|
3051
|
+
filename?: string | null;
|
|
3052
|
+
};
|
|
3053
|
+
'64'?: {
|
|
3054
|
+
url?: string | null;
|
|
3055
|
+
width?: number | null;
|
|
3056
|
+
height?: number | null;
|
|
3057
|
+
mimeType?: string | null;
|
|
3058
|
+
filesize?: number | null;
|
|
3059
|
+
filename?: string | null;
|
|
3060
|
+
};
|
|
3061
|
+
'128'?: {
|
|
3062
|
+
url?: string | null;
|
|
3063
|
+
width?: number | null;
|
|
3064
|
+
height?: number | null;
|
|
3065
|
+
mimeType?: string | null;
|
|
3066
|
+
filesize?: number | null;
|
|
3067
|
+
filename?: string | null;
|
|
3068
|
+
};
|
|
3069
|
+
'180'?: {
|
|
3070
|
+
url?: string | null;
|
|
3071
|
+
width?: number | null;
|
|
3072
|
+
height?: number | null;
|
|
3073
|
+
mimeType?: string | null;
|
|
3074
|
+
filesize?: number | null;
|
|
3075
|
+
filename?: string | null;
|
|
3076
|
+
};
|
|
3077
|
+
'192'?: {
|
|
3078
|
+
url?: string | null;
|
|
3079
|
+
width?: number | null;
|
|
3080
|
+
height?: number | null;
|
|
3081
|
+
mimeType?: string | null;
|
|
3082
|
+
filesize?: number | null;
|
|
3083
|
+
filename?: string | null;
|
|
3084
|
+
};
|
|
3085
|
+
'512'?: {
|
|
3086
|
+
url?: string | null;
|
|
3087
|
+
width?: number | null;
|
|
3088
|
+
height?: number | null;
|
|
3089
|
+
mimeType?: string | null;
|
|
3090
|
+
filesize?: number | null;
|
|
3091
|
+
filename?: string | null;
|
|
3092
|
+
};
|
|
3093
|
+
};
|
|
2994
3094
|
}
|
|
2995
3095
|
/**
|
|
2996
3096
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
2997
|
-
* via the `definition` "
|
|
3097
|
+
* via the `definition` "tenant-entitlements".
|
|
2998
3098
|
*/
|
|
2999
|
-
interface
|
|
3099
|
+
interface TenantEntitlement {
|
|
3000
3100
|
id: string;
|
|
3001
|
-
tenant
|
|
3002
|
-
|
|
3003
|
-
label?: string | null;
|
|
3004
|
-
recipientName?: string | null;
|
|
3005
|
-
phone?: string | null;
|
|
3006
|
-
postalCode?: string | null;
|
|
3007
|
-
/**
|
|
3008
|
-
* Road-name address (returned by Daum/Naver postal code pickers)
|
|
3009
|
-
*/
|
|
3010
|
-
address1?: string | null;
|
|
3101
|
+
tenant: string | Tenant;
|
|
3102
|
+
plan: 'free' | 'starter' | 'basic' | 'pro' | 'enterprise';
|
|
3011
3103
|
/**
|
|
3012
|
-
*
|
|
3104
|
+
* Lifecycle status for the entitlement. Only active rows participate in current plan resolution.
|
|
3013
3105
|
*/
|
|
3014
|
-
|
|
3106
|
+
status: 'active' | 'scheduled' | 'expired' | 'revoked';
|
|
3107
|
+
sourceType: 'subscription' | 'manual' | 'support' | 'promo' | 'trial' | 'enterprise_contract';
|
|
3108
|
+
sourceSubscription?: (string | null) | Subscription;
|
|
3015
3109
|
/**
|
|
3016
|
-
*
|
|
3110
|
+
* Tie-breaker for overlapping entitlements. Higher values win within the same source precedence.
|
|
3017
3111
|
*/
|
|
3018
|
-
|
|
3112
|
+
priority: number;
|
|
3113
|
+
startsAt: string;
|
|
3019
3114
|
/**
|
|
3020
|
-
*
|
|
3115
|
+
* Entitlement end date. Required by hook validation for promo / trial sources and excluded from current plan resolution after expiry.
|
|
3021
3116
|
*/
|
|
3022
|
-
|
|
3117
|
+
endsAt?: string | null;
|
|
3118
|
+
reason?: string | null;
|
|
3119
|
+
grantedBy?: (string | null) | User;
|
|
3120
|
+
revokedAt?: string | null;
|
|
3121
|
+
revokedBy?: (string | null) | User;
|
|
3122
|
+
updatedAt: string;
|
|
3123
|
+
createdAt: string;
|
|
3124
|
+
deletedAt?: string | null;
|
|
3125
|
+
}
|
|
3126
|
+
/**
|
|
3127
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
3128
|
+
* via the `definition` "subscriptions".
|
|
3129
|
+
*/
|
|
3130
|
+
interface Subscription {
|
|
3131
|
+
id: string;
|
|
3132
|
+
tenant: string | Tenant;
|
|
3133
|
+
plan: 'starter' | 'basic' | 'pro';
|
|
3134
|
+
billingCycle: 'monthly' | 'yearly';
|
|
3023
3135
|
/**
|
|
3024
|
-
*
|
|
3136
|
+
* Payment amount (KRW)
|
|
3025
3137
|
*/
|
|
3026
|
-
|
|
3138
|
+
amount: number;
|
|
3139
|
+
status: 'active' | 'past_due' | 'canceled' | 'expired' | 'suspended';
|
|
3140
|
+
currency: 'KRW' | 'USD';
|
|
3141
|
+
provider: 'toss';
|
|
3142
|
+
currentPeriodStart?: string | null;
|
|
3143
|
+
currentPeriodEnd?: string | null;
|
|
3144
|
+
trialStartAt?: string | null;
|
|
3145
|
+
trialEndAt?: string | null;
|
|
3146
|
+
endedAt?: string | null;
|
|
3147
|
+
pastDueAt?: string | null;
|
|
3027
3148
|
/**
|
|
3028
|
-
*
|
|
3149
|
+
* Toss billing key (AES-256-GCM encrypted)
|
|
3029
3150
|
*/
|
|
3030
|
-
|
|
3151
|
+
billingKey?: string | null;
|
|
3031
3152
|
/**
|
|
3032
|
-
*
|
|
3153
|
+
* Toss customer key (UUID)
|
|
3033
3154
|
*/
|
|
3034
|
-
|
|
3035
|
-
isDefault?: boolean | null;
|
|
3155
|
+
customerKey?: string | null;
|
|
3036
3156
|
/**
|
|
3037
|
-
*
|
|
3157
|
+
* Registered card info
|
|
3038
3158
|
*/
|
|
3039
|
-
|
|
3159
|
+
cardInfo?: {
|
|
3160
|
+
issuerCode?: string | null;
|
|
3161
|
+
/**
|
|
3162
|
+
* Masked card number
|
|
3163
|
+
*/
|
|
3164
|
+
number?: string | null;
|
|
3165
|
+
cardType?: string | null;
|
|
3166
|
+
};
|
|
3040
3167
|
/**
|
|
3041
|
-
*
|
|
3168
|
+
* Provider-owned diagnostic and audit metadata returned by the billing provider. Not a general manual-edit field.
|
|
3042
3169
|
*/
|
|
3043
|
-
|
|
3170
|
+
providerMetadata?: {
|
|
3171
|
+
[k: string]: unknown;
|
|
3172
|
+
} | unknown[] | string | number | boolean | null;
|
|
3173
|
+
cancelAtPeriodEnd?: boolean | null;
|
|
3174
|
+
canceledAt?: string | null;
|
|
3175
|
+
cancelReason?: string | null;
|
|
3176
|
+
retryCount?: number | null;
|
|
3177
|
+
graceDeadline?: string | null;
|
|
3178
|
+
lastPaymentError?: string | null;
|
|
3179
|
+
pendingPlanChange?: {
|
|
3180
|
+
targetPlan?: ('starter' | 'basic' | 'pro') | null;
|
|
3181
|
+
targetAmount?: number | null;
|
|
3182
|
+
effectiveAt?: string | null;
|
|
3183
|
+
};
|
|
3044
3184
|
updatedAt: string;
|
|
3045
3185
|
createdAt: string;
|
|
3046
3186
|
deletedAt?: string | null;
|
|
3047
3187
|
}
|
|
3048
3188
|
/**
|
|
3049
3189
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
3050
|
-
* via the `definition` "
|
|
3190
|
+
* via the `definition` "tenant-purge-jobs".
|
|
3051
3191
|
*/
|
|
3052
|
-
interface
|
|
3192
|
+
interface TenantPurgeJob {
|
|
3053
3193
|
id: string;
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
bio?: string | null;
|
|
3063
|
-
bioRichText?: {
|
|
3064
|
-
root: {
|
|
3065
|
-
type: string;
|
|
3066
|
-
children: {
|
|
3067
|
-
type: any;
|
|
3068
|
-
version: number;
|
|
3069
|
-
[k: string]: unknown;
|
|
3070
|
-
}[];
|
|
3071
|
-
direction: ('ltr' | 'rtl') | null;
|
|
3072
|
-
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
3073
|
-
indent: number;
|
|
3074
|
-
version: number;
|
|
3075
|
-
};
|
|
3076
|
-
[k: string]: unknown;
|
|
3077
|
-
} | null;
|
|
3078
|
-
joinedAt?: string | null;
|
|
3079
|
-
isPublic?: boolean | null;
|
|
3080
|
-
anonymizedAt?: string | null;
|
|
3081
|
-
metadata?: {
|
|
3082
|
-
[k: string]: unknown;
|
|
3083
|
-
} | unknown[] | string | number | boolean | null;
|
|
3194
|
+
tenantId: string;
|
|
3195
|
+
status: 'pending' | 'running' | 'failed' | 'ready-to-delete';
|
|
3196
|
+
currentCollection?: string | null;
|
|
3197
|
+
deletedCount?: number | null;
|
|
3198
|
+
failure?: string | null;
|
|
3199
|
+
completedAt?: string | null;
|
|
3200
|
+
updatedAt: string;
|
|
3201
|
+
createdAt: string;
|
|
3084
3202
|
}
|
|
3085
3203
|
/**
|
|
3086
3204
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
3087
|
-
* via the `definition` "
|
|
3205
|
+
* via the `definition` "billing-history".
|
|
3088
3206
|
*/
|
|
3089
|
-
interface
|
|
3207
|
+
interface BillingHistory {
|
|
3090
3208
|
id: string;
|
|
3091
|
-
tenant
|
|
3092
|
-
|
|
3209
|
+
tenant: string | Tenant;
|
|
3210
|
+
subscription?: (string | null) | Subscription;
|
|
3211
|
+
type: 'payment' | 'refund' | 'plan_change';
|
|
3212
|
+
status: 'success' | 'failed' | 'refunded' | 'partial_refund';
|
|
3093
3213
|
/**
|
|
3094
|
-
*
|
|
3214
|
+
* Amount (KRW)
|
|
3095
3215
|
*/
|
|
3096
|
-
|
|
3097
|
-
variant?: (string | null) | ProductVariant;
|
|
3098
|
-
quantity: number;
|
|
3216
|
+
amount: number;
|
|
3099
3217
|
/**
|
|
3100
|
-
*
|
|
3218
|
+
* Plan at time of payment
|
|
3101
3219
|
*/
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3220
|
+
plan: 'starter' | 'basic' | 'pro';
|
|
3221
|
+
provider: 'toss';
|
|
3222
|
+
currency: 'KRW' | 'USD';
|
|
3223
|
+
billingCycle?: ('monthly' | 'yearly') | null;
|
|
3224
|
+
periodStart?: string | null;
|
|
3225
|
+
periodEnd?: string | null;
|
|
3108
3226
|
/**
|
|
3109
|
-
*
|
|
3227
|
+
* Unique order number
|
|
3110
3228
|
*/
|
|
3111
|
-
|
|
3112
|
-
|
|
3229
|
+
invoiceNumber: string;
|
|
3230
|
+
orderName?: string | null;
|
|
3113
3231
|
/**
|
|
3114
|
-
*
|
|
3232
|
+
* Toss payment key
|
|
3115
3233
|
*/
|
|
3116
|
-
|
|
3234
|
+
paymentKey?: string | null;
|
|
3235
|
+
/**
|
|
3236
|
+
* Full Toss API response
|
|
3237
|
+
*/
|
|
3238
|
+
tossResponse?: {
|
|
3117
3239
|
[k: string]: unknown;
|
|
3118
3240
|
} | unknown[] | string | number | boolean | null;
|
|
3241
|
+
errorMessage?: string | null;
|
|
3119
3242
|
/**
|
|
3120
|
-
*
|
|
3243
|
+
* Original billing record for retry
|
|
3121
3244
|
*/
|
|
3122
|
-
|
|
3245
|
+
retryOf?: (string | null) | BillingHistory;
|
|
3246
|
+
updatedAt: string;
|
|
3247
|
+
createdAt: string;
|
|
3248
|
+
deletedAt?: string | null;
|
|
3249
|
+
}
|
|
3250
|
+
/**
|
|
3251
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
3252
|
+
* via the `definition` "plans".
|
|
3253
|
+
*/
|
|
3254
|
+
interface Plan {
|
|
3255
|
+
id: string;
|
|
3123
3256
|
/**
|
|
3124
|
-
*
|
|
3257
|
+
* Plan identifier (free, starter, basic, pro, enterprise)
|
|
3125
3258
|
*/
|
|
3126
|
-
|
|
3259
|
+
key: string;
|
|
3127
3260
|
/**
|
|
3128
|
-
*
|
|
3261
|
+
* Plan display name
|
|
3129
3262
|
*/
|
|
3130
|
-
|
|
3263
|
+
name: string;
|
|
3131
3264
|
/**
|
|
3132
|
-
*
|
|
3265
|
+
* Reference-only feature list; enforced elsewhere.
|
|
3133
3266
|
*/
|
|
3134
|
-
|
|
3267
|
+
featuresAllowed?: ('ecommerce' | 'customers' | 'playlists' | 'galleries' | 'links' | 'forms' | 'articles' | 'documents' | 'canvas' | 'videos' | 'live-streaming' | 'community' | 'events')[] | null;
|
|
3135
3268
|
/**
|
|
3136
|
-
*
|
|
3269
|
+
* Reference-only quotas such as storageBytes; enforced by entitlement and usage policy elsewhere.
|
|
3137
3270
|
*/
|
|
3138
|
-
|
|
3271
|
+
quotas?: {
|
|
3272
|
+
[k: string]: unknown;
|
|
3273
|
+
} | unknown[] | string | number | boolean | null;
|
|
3139
3274
|
updatedAt: string;
|
|
3140
3275
|
createdAt: string;
|
|
3141
3276
|
deletedAt?: string | null;
|
|
3142
3277
|
}
|
|
3143
3278
|
/**
|
|
3144
3279
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
3145
|
-
* via the `definition` "
|
|
3280
|
+
* via the `definition` "tenant-web-analytics-config".
|
|
3146
3281
|
*/
|
|
3147
|
-
interface
|
|
3282
|
+
interface TenantWebAnalyticsConfig {
|
|
3148
3283
|
id: string;
|
|
3149
3284
|
tenant?: (string | null) | Tenant;
|
|
3150
|
-
|
|
3151
|
-
type: 'payment' | 'refund';
|
|
3152
|
-
status: 'pending' | 'paid' | 'failed' | 'canceled' | 'refunded';
|
|
3153
|
-
order: string | Order;
|
|
3154
|
-
amount?: number | null;
|
|
3155
|
-
/**
|
|
3156
|
-
* Payment method snapshot returned by the provider. Not edited directly.
|
|
3157
|
-
*/
|
|
3158
|
-
paymentMethod?: string | null;
|
|
3285
|
+
enabled?: boolean | null;
|
|
3159
3286
|
/**
|
|
3160
|
-
*
|
|
3287
|
+
* Domains allowed to send analytics events. If empty, browser analytics is blocked.
|
|
3161
3288
|
*/
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
pgOrderId?: string | null;
|
|
3167
|
-
providerEventId?: string | null;
|
|
3168
|
-
providerStatus?: string | null;
|
|
3169
|
-
confirmedAmount?: number | null;
|
|
3170
|
-
confirmedCurrency?: string | null;
|
|
3171
|
-
confirmedAt?: string | null;
|
|
3172
|
-
confirmationSource?: ('provider_webhook' | 'provider_lookup' | 'provider_api_confirm' | 'manual_server') | null;
|
|
3173
|
-
cashReceipt?: {
|
|
3174
|
-
issuanceType?: ('none' | 'personal' | 'business') | null;
|
|
3175
|
-
/**
|
|
3176
|
-
* Personal: phone or cash receipt card number / Business: business registration number
|
|
3177
|
-
*/
|
|
3178
|
-
registrationNumber?: string | null;
|
|
3179
|
-
issueNumber?: string | null;
|
|
3180
|
-
issuedAt?: string | null;
|
|
3181
|
-
};
|
|
3182
|
-
cardInfo?: {
|
|
3183
|
-
brand?: string | null;
|
|
3184
|
-
last4?: string | null;
|
|
3185
|
-
expMonth?: number | null;
|
|
3186
|
-
expYear?: number | null;
|
|
3187
|
-
issuerCode?: string | null;
|
|
3188
|
-
type?: ('credit' | 'debit' | 'gift') | null;
|
|
3189
|
-
owner?: string | null;
|
|
3190
|
-
};
|
|
3191
|
-
failureCode?: string | null;
|
|
3192
|
-
failureMessage?: string | null;
|
|
3289
|
+
allowedOrigins?: {
|
|
3290
|
+
origin: string;
|
|
3291
|
+
id?: string | null;
|
|
3292
|
+
}[] | null;
|
|
3193
3293
|
/**
|
|
3194
|
-
*
|
|
3294
|
+
* Timezone used to group daily analytics. Once data starts coming in, this is locked and cannot be changed.
|
|
3195
3295
|
*/
|
|
3196
|
-
|
|
3296
|
+
timezone: string;
|
|
3197
3297
|
/**
|
|
3198
|
-
*
|
|
3298
|
+
* Automatically locked once the first analytics record is saved. Contact support to unlock.
|
|
3199
3299
|
*/
|
|
3200
|
-
|
|
3201
|
-
metadata?: {
|
|
3202
|
-
[k: string]: unknown;
|
|
3203
|
-
} | unknown[] | string | number | boolean | null;
|
|
3300
|
+
tzLocked?: boolean | null;
|
|
3204
3301
|
updatedAt: string;
|
|
3205
3302
|
createdAt: string;
|
|
3206
3303
|
deletedAt?: string | null;
|
|
3207
3304
|
}
|
|
3208
3305
|
/**
|
|
3209
3306
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
3210
|
-
* via the `definition` "
|
|
3307
|
+
* via the `definition` "tenant-analytics-daily".
|
|
3211
3308
|
*/
|
|
3212
|
-
interface
|
|
3309
|
+
interface TenantAnalyticsDaily {
|
|
3213
3310
|
id: string;
|
|
3214
3311
|
tenant?: (string | null) | Tenant;
|
|
3215
|
-
order: string | Order;
|
|
3216
|
-
status: 'pending' | 'packed' | 'shipped' | 'delivered' | 'failed';
|
|
3217
3312
|
/**
|
|
3218
|
-
*
|
|
3313
|
+
* YYYY-MM-DD (UTC)
|
|
3219
3314
|
*/
|
|
3220
|
-
|
|
3315
|
+
date: string;
|
|
3316
|
+
pageviews: number;
|
|
3221
3317
|
/**
|
|
3222
|
-
*
|
|
3318
|
+
* Estimated via HyperLogLog (±0.81%)
|
|
3223
3319
|
*/
|
|
3224
|
-
|
|
3320
|
+
visitors: number;
|
|
3321
|
+
topPages?: {
|
|
3322
|
+
pathname: string;
|
|
3323
|
+
views: number;
|
|
3324
|
+
id?: string | null;
|
|
3325
|
+
}[] | null;
|
|
3326
|
+
topReferrers?: {
|
|
3327
|
+
source: string;
|
|
3328
|
+
views: number;
|
|
3329
|
+
id?: string | null;
|
|
3330
|
+
}[] | null;
|
|
3331
|
+
topEvents?: {
|
|
3332
|
+
name: string;
|
|
3333
|
+
count: number;
|
|
3334
|
+
id?: string | null;
|
|
3335
|
+
}[] | null;
|
|
3336
|
+
eventsDropped?: {
|
|
3337
|
+
cardinality?: number | null;
|
|
3338
|
+
schema?: number | null;
|
|
3339
|
+
late?: number | null;
|
|
3340
|
+
origin?: number | null;
|
|
3341
|
+
key?: number | null;
|
|
3342
|
+
rate?: number | null;
|
|
3343
|
+
disabled?: number | null;
|
|
3344
|
+
};
|
|
3345
|
+
snapshottedAt?: string | null;
|
|
3346
|
+
/**
|
|
3347
|
+
* Tenant timezone used to bucket this snapshot's date.
|
|
3348
|
+
*/
|
|
3349
|
+
bucketTz: string;
|
|
3350
|
+
/**
|
|
3351
|
+
* Deterministic aggregate schema shape hash for mismatch detection.
|
|
3352
|
+
*/
|
|
3353
|
+
schemaShape: string;
|
|
3354
|
+
/**
|
|
3355
|
+
* Per-event dimension/page/referrer aggregates. Populated by snapshot cron when registered events have Redis data.
|
|
3356
|
+
*/
|
|
3357
|
+
eventDetails?: {
|
|
3358
|
+
eventName: string;
|
|
3359
|
+
count?: number | null;
|
|
3360
|
+
/**
|
|
3361
|
+
* Deterministic schema shape hash for this event detail row.
|
|
3362
|
+
*/
|
|
3363
|
+
schemaShape?: string | null;
|
|
3364
|
+
dimensions?: {
|
|
3365
|
+
dimension: string;
|
|
3366
|
+
values?: {
|
|
3367
|
+
value: string;
|
|
3368
|
+
count: number;
|
|
3369
|
+
id?: string | null;
|
|
3370
|
+
}[] | null;
|
|
3371
|
+
id?: string | null;
|
|
3372
|
+
}[] | null;
|
|
3373
|
+
pages?: {
|
|
3374
|
+
pathname: string;
|
|
3375
|
+
count: number;
|
|
3376
|
+
id?: string | null;
|
|
3377
|
+
}[] | null;
|
|
3378
|
+
referrers?: {
|
|
3379
|
+
source: string;
|
|
3380
|
+
count: number;
|
|
3381
|
+
id?: string | null;
|
|
3382
|
+
}[] | null;
|
|
3383
|
+
id?: string | null;
|
|
3384
|
+
}[] | null;
|
|
3225
3385
|
/**
|
|
3226
|
-
*
|
|
3386
|
+
* MCP tool usage aggregate. Populated by snapshot cron from daily Redis keys.
|
|
3227
3387
|
*/
|
|
3228
|
-
|
|
3229
|
-
|
|
3230
|
-
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3388
|
+
mcpUsage?: {
|
|
3389
|
+
toolCalls?: number | null;
|
|
3390
|
+
sessions?: number | null;
|
|
3391
|
+
convertedSessions?: number | null;
|
|
3392
|
+
conversionRate?: number | null;
|
|
3393
|
+
successfulWrites?: number | null;
|
|
3394
|
+
isPartial?: boolean | null;
|
|
3395
|
+
topTools?: {
|
|
3396
|
+
name: string;
|
|
3397
|
+
count: number;
|
|
3398
|
+
readOnly?: boolean | null;
|
|
3399
|
+
id?: string | null;
|
|
3400
|
+
}[] | null;
|
|
3401
|
+
transports?: {
|
|
3402
|
+
name: string;
|
|
3403
|
+
count: number;
|
|
3404
|
+
id?: string | null;
|
|
3405
|
+
}[] | null;
|
|
3406
|
+
httpDurationMs?: {
|
|
3407
|
+
p50?: number | null;
|
|
3408
|
+
p99?: number | null;
|
|
3409
|
+
buckets?: {
|
|
3410
|
+
bucket: string;
|
|
3411
|
+
label: string;
|
|
3412
|
+
count: number;
|
|
3413
|
+
id?: string | null;
|
|
3414
|
+
}[] | null;
|
|
3415
|
+
};
|
|
3236
3416
|
};
|
|
3237
|
-
/**
|
|
3238
|
-
* Internal fulfillment note. Not shown directly to customers.
|
|
3239
|
-
*/
|
|
3240
|
-
adminNotes?: string | null;
|
|
3241
|
-
metadata?: {
|
|
3242
|
-
[k: string]: unknown;
|
|
3243
|
-
} | unknown[] | string | number | boolean | null;
|
|
3244
3417
|
updatedAt: string;
|
|
3245
3418
|
createdAt: string;
|
|
3246
|
-
deletedAt?: string | null;
|
|
3247
3419
|
}
|
|
3248
3420
|
/**
|
|
3249
3421
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
3250
|
-
* via the `definition` "
|
|
3422
|
+
* via the `definition` "analytics-event-schemas".
|
|
3251
3423
|
*/
|
|
3252
|
-
interface
|
|
3424
|
+
interface AnalyticsEventSchema {
|
|
3253
3425
|
id: string;
|
|
3254
3426
|
tenant?: (string | null) | Tenant;
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3427
|
+
/**
|
|
3428
|
+
* Valid event name pattern.
|
|
3429
|
+
*/
|
|
3430
|
+
eventName: string;
|
|
3431
|
+
enabled: boolean;
|
|
3432
|
+
dimensions?: {
|
|
3433
|
+
key: string;
|
|
3434
|
+
type: 'enum' | 'boolean';
|
|
3435
|
+
/**
|
|
3436
|
+
* Comma-separated values. Required when type=enum, optional otherwise. Boolean auto-derives {true,false}. Max 20 per key.
|
|
3437
|
+
*/
|
|
3438
|
+
allowedValues?: string | null;
|
|
3439
|
+
description?: string | null;
|
|
3440
|
+
id?: string | null;
|
|
3441
|
+
}[] | null;
|
|
3442
|
+
createdBy?: (string | null) | User;
|
|
3443
|
+
updatedBy?: (string | null) | User;
|
|
3258
3444
|
updatedAt: string;
|
|
3259
3445
|
createdAt: string;
|
|
3260
3446
|
deletedAt?: string | null;
|
|
3261
3447
|
}
|
|
3262
3448
|
/**
|
|
3263
3449
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
3264
|
-
* via the `definition` "
|
|
3450
|
+
* via the `definition` "api-usage".
|
|
3265
3451
|
*/
|
|
3266
|
-
interface
|
|
3452
|
+
interface ApiUsage {
|
|
3267
3453
|
id: string;
|
|
3268
3454
|
tenant?: (string | null) | Tenant;
|
|
3269
|
-
returnNumber?: string | null;
|
|
3270
|
-
order: string | Order;
|
|
3271
|
-
type: 'refund' | 'exchange';
|
|
3272
3455
|
/**
|
|
3273
|
-
*
|
|
3456
|
+
* YYYY-MM format
|
|
3274
3457
|
*/
|
|
3275
|
-
|
|
3276
|
-
|
|
3458
|
+
month: string;
|
|
3459
|
+
apiCallCount: number;
|
|
3460
|
+
plan: 'free' | 'starter' | 'basic' | 'pro' | 'enterprise';
|
|
3277
3461
|
/**
|
|
3278
|
-
*
|
|
3462
|
+
* -1 means unlimited
|
|
3279
3463
|
*/
|
|
3280
|
-
|
|
3464
|
+
apiCallLimit: number;
|
|
3281
3465
|
/**
|
|
3282
|
-
*
|
|
3466
|
+
* Storage usage in bytes
|
|
3283
3467
|
*/
|
|
3284
|
-
|
|
3285
|
-
items?: {
|
|
3286
|
-
docs?: (string | ReturnItem)[];
|
|
3287
|
-
hasNextPage?: boolean;
|
|
3288
|
-
totalDocs?: number;
|
|
3289
|
-
};
|
|
3468
|
+
storageUsedBytes?: number | null;
|
|
3290
3469
|
/**
|
|
3291
|
-
*
|
|
3470
|
+
* Storage limit in bytes (-1 means unlimited)
|
|
3292
3471
|
*/
|
|
3293
|
-
|
|
3294
|
-
completedAt?: string | null;
|
|
3472
|
+
storageLimitBytes?: number | null;
|
|
3295
3473
|
/**
|
|
3296
|
-
*
|
|
3474
|
+
* Total document count across all tenant-scoped collections
|
|
3297
3475
|
*/
|
|
3298
|
-
|
|
3299
|
-
refundAmount: number;
|
|
3476
|
+
documentCount?: number | null;
|
|
3300
3477
|
/**
|
|
3301
|
-
*
|
|
3478
|
+
* Number of video documents
|
|
3302
3479
|
*/
|
|
3303
|
-
|
|
3480
|
+
videoCount?: number | null;
|
|
3304
3481
|
/**
|
|
3305
|
-
*
|
|
3482
|
+
* Weighted video minutes used (duration × quality multiplier)
|
|
3306
3483
|
*/
|
|
3307
|
-
|
|
3308
|
-
metadata?: {
|
|
3309
|
-
[k: string]: unknown;
|
|
3310
|
-
} | unknown[] | string | number | boolean | null;
|
|
3311
|
-
updatedAt: string;
|
|
3312
|
-
createdAt: string;
|
|
3313
|
-
deletedAt?: string | null;
|
|
3314
|
-
}
|
|
3315
|
-
/**
|
|
3316
|
-
* This interface was referenced by `Config`'s JSON-Schema
|
|
3317
|
-
* via the `definition` "return-items".
|
|
3318
|
-
*/
|
|
3319
|
-
interface ReturnItem {
|
|
3320
|
-
id: string;
|
|
3321
|
-
tenant?: (string | null) | Tenant;
|
|
3322
|
-
return: string | Return;
|
|
3323
|
-
order: string | Order;
|
|
3324
|
-
status: 'requested' | 'processing' | 'approved' | 'rejected' | 'completed';
|
|
3325
|
-
orderItem: string | OrderItem;
|
|
3326
|
-
product: string | Product;
|
|
3327
|
-
variant?: (string | null) | ProductVariant;
|
|
3328
|
-
quantity: number;
|
|
3329
|
-
restockAction: 'return_to_stock' | 'discard';
|
|
3484
|
+
videoMinutesUsed?: number | null;
|
|
3330
3485
|
/**
|
|
3331
|
-
*
|
|
3486
|
+
* Monthly viewer watch time from Mux Data
|
|
3332
3487
|
*/
|
|
3333
|
-
|
|
3334
|
-
|
|
3488
|
+
deliveryMinutesUsed?: number | null;
|
|
3489
|
+
/**
|
|
3490
|
+
* AI generation count
|
|
3491
|
+
*/
|
|
3492
|
+
aiGenerationCount?: number | null;
|
|
3493
|
+
/**
|
|
3494
|
+
* Timestamp when the usage snapshot cron calculated this monthly aggregate.
|
|
3495
|
+
*/
|
|
3496
|
+
snapshottedAt?: string | null;
|
|
3335
3497
|
updatedAt: string;
|
|
3336
3498
|
createdAt: string;
|
|
3337
|
-
deletedAt?: string | null;
|
|
3338
3499
|
}
|
|
3339
3500
|
/**
|
|
3340
3501
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
@@ -4757,6 +4918,7 @@ interface CanvasNodeType {
|
|
|
4757
4918
|
* Optional #RRGGBB display color for Admin surfaces.
|
|
4758
4919
|
*/
|
|
4759
4920
|
color?: string | null;
|
|
4921
|
+
editorIntent?: ('text' | 'image') | null;
|
|
4760
4922
|
defaultSize?: {
|
|
4761
4923
|
width?: number | null;
|
|
4762
4924
|
height?: number | null;
|
|
@@ -4825,6 +4987,7 @@ interface CanvasEdgeType {
|
|
|
4825
4987
|
* Optional #RRGGBB display color for Admin surfaces.
|
|
4826
4988
|
*/
|
|
4827
4989
|
color?: string | null;
|
|
4990
|
+
isDefaultEdge?: boolean | null;
|
|
4828
4991
|
strokeWidth?: number | null;
|
|
4829
4992
|
isAnimated?: boolean | null;
|
|
4830
4993
|
lineStyle?: ('default' | 'step' | 'smoothstep' | 'bezier') | null;
|
|
@@ -4936,6 +5099,7 @@ interface Post {
|
|
|
4936
5099
|
[k: string]: unknown;
|
|
4937
5100
|
} | null;
|
|
4938
5101
|
categories?: (string | PostCategory)[] | null;
|
|
5102
|
+
tags?: (string | PostTag)[] | null;
|
|
4939
5103
|
/**
|
|
4940
5104
|
* Comments on this post. Author and status are managed in the comments collection.
|
|
4941
5105
|
*/
|
|
@@ -4981,14 +5145,16 @@ interface Post {
|
|
|
4981
5145
|
*/
|
|
4982
5146
|
isPinned?: boolean | null;
|
|
4983
5147
|
/**
|
|
4984
|
-
*
|
|
5148
|
+
* Author/operator discussion toggle. When false, new comments are blocked.
|
|
4985
5149
|
*/
|
|
4986
5150
|
allowsComments?: boolean | null;
|
|
4987
5151
|
visibility?: ('visible' | 'hidden') | null;
|
|
4988
5152
|
/**
|
|
4989
|
-
*
|
|
5153
|
+
* Moderator lock. When true, new comments are blocked regardless of allowsComments.
|
|
4990
5154
|
*/
|
|
4991
5155
|
isLocked?: boolean | null;
|
|
5156
|
+
editedAt?: string | null;
|
|
5157
|
+
isEdited?: boolean | null;
|
|
4992
5158
|
/**
|
|
4993
5159
|
* Last comment or activity timestamp. Updated server-side for sorting and activity indicators.
|
|
4994
5160
|
*/
|
|
@@ -5037,6 +5203,37 @@ interface PostCategory {
|
|
|
5037
5203
|
createdAt: string;
|
|
5038
5204
|
deletedAt?: string | null;
|
|
5039
5205
|
}
|
|
5206
|
+
/**
|
|
5207
|
+
* Post tags are flat labels for search and loose topic grouping.
|
|
5208
|
+
*
|
|
5209
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
5210
|
+
* via the `definition` "post-tags".
|
|
5211
|
+
*/
|
|
5212
|
+
interface PostTag {
|
|
5213
|
+
id: string;
|
|
5214
|
+
_order?: string | null;
|
|
5215
|
+
title?: string | null;
|
|
5216
|
+
/**
|
|
5217
|
+
* When enabled, the slug will auto-generate from the title field on save and autosave.
|
|
5218
|
+
*/
|
|
5219
|
+
generateSlug?: boolean | null;
|
|
5220
|
+
slug?: string | null;
|
|
5221
|
+
/**
|
|
5222
|
+
* Short summary for listing/cards
|
|
5223
|
+
*/
|
|
5224
|
+
description?: string | null;
|
|
5225
|
+
/**
|
|
5226
|
+
* Single representative taxonomy image. Add domain-specific fields for multiple images such as thumbnail and hero variants.
|
|
5227
|
+
*/
|
|
5228
|
+
image?: (string | null) | Image;
|
|
5229
|
+
/**
|
|
5230
|
+
* Optional #RRGGBB hex color for taxonomy badges or filter UI. This does not replace the representative image.
|
|
5231
|
+
*/
|
|
5232
|
+
color?: string | null;
|
|
5233
|
+
updatedAt: string;
|
|
5234
|
+
createdAt: string;
|
|
5235
|
+
deletedAt?: string | null;
|
|
5236
|
+
}
|
|
5040
5237
|
/**
|
|
5041
5238
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
5042
5239
|
* via the `definition` "comments".
|
|
@@ -6176,6 +6373,40 @@ interface EmailLogsSelect<T extends boolean = true> {
|
|
|
6176
6373
|
clickedAt?: T;
|
|
6177
6374
|
bouncedAt?: T;
|
|
6178
6375
|
recipientConsent?: T;
|
|
6376
|
+
commerceNotification?: T | {
|
|
6377
|
+
event?: T;
|
|
6378
|
+
intent?: T;
|
|
6379
|
+
dedupeKey?: T;
|
|
6380
|
+
order?: T;
|
|
6381
|
+
fulfillment?: T;
|
|
6382
|
+
return?: T;
|
|
6383
|
+
customer?: T;
|
|
6384
|
+
};
|
|
6385
|
+
updatedAt?: T;
|
|
6386
|
+
createdAt?: T;
|
|
6387
|
+
}
|
|
6388
|
+
/**
|
|
6389
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
6390
|
+
* via the `definition` "commerce-notification-intents_select".
|
|
6391
|
+
*/
|
|
6392
|
+
interface CommerceNotificationIntentsSelect<T extends boolean = true> {
|
|
6393
|
+
tenant?: T;
|
|
6394
|
+
dedupeKey?: T;
|
|
6395
|
+
event?: T;
|
|
6396
|
+
status?: T;
|
|
6397
|
+
recipientEmail?: T;
|
|
6398
|
+
locale?: T;
|
|
6399
|
+
payload?: T;
|
|
6400
|
+
order?: T;
|
|
6401
|
+
fulfillment?: T;
|
|
6402
|
+
return?: T;
|
|
6403
|
+
customer?: T;
|
|
6404
|
+
emailLog?: T;
|
|
6405
|
+
attempts?: T;
|
|
6406
|
+
nextAttemptAt?: T;
|
|
6407
|
+
lockedAt?: T;
|
|
6408
|
+
processedAt?: T;
|
|
6409
|
+
lastError?: T;
|
|
6179
6410
|
updatedAt?: T;
|
|
6180
6411
|
createdAt?: T;
|
|
6181
6412
|
}
|
|
@@ -6296,6 +6527,14 @@ interface TenantsSelect<T extends boolean = true> {
|
|
|
6296
6527
|
origin?: T;
|
|
6297
6528
|
id?: T;
|
|
6298
6529
|
};
|
|
6530
|
+
commerceNotifications?: T | {
|
|
6531
|
+
orderPaid?: T;
|
|
6532
|
+
orderCanceled?: T;
|
|
6533
|
+
fulfillmentShipped?: T;
|
|
6534
|
+
orderDelivered?: T;
|
|
6535
|
+
returnRequested?: T;
|
|
6536
|
+
returnCompleted?: T;
|
|
6537
|
+
};
|
|
6299
6538
|
members?: T;
|
|
6300
6539
|
updatedAt?: T;
|
|
6301
6540
|
createdAt?: T;
|
|
@@ -6357,6 +6596,18 @@ interface TenantMetadataSelect<T extends boolean = true> {
|
|
|
6357
6596
|
twitterDescription?: T;
|
|
6358
6597
|
twitterImage?: T;
|
|
6359
6598
|
};
|
|
6599
|
+
optionPresets?: T | {
|
|
6600
|
+
name?: T;
|
|
6601
|
+
options?: T | {
|
|
6602
|
+
title?: T;
|
|
6603
|
+
values?: T | {
|
|
6604
|
+
value?: T;
|
|
6605
|
+
id?: T;
|
|
6606
|
+
};
|
|
6607
|
+
id?: T;
|
|
6608
|
+
};
|
|
6609
|
+
id?: T;
|
|
6610
|
+
};
|
|
6360
6611
|
pwa?: T | {
|
|
6361
6612
|
shortName?: T;
|
|
6362
6613
|
backgroundColor?: T;
|
|
@@ -6490,6 +6741,9 @@ interface WebhooksSelect<T extends boolean = true> {
|
|
|
6490
6741
|
name?: T;
|
|
6491
6742
|
url?: T;
|
|
6492
6743
|
secret?: T;
|
|
6744
|
+
secretRevealedAt?: T;
|
|
6745
|
+
secretRotatedAt?: T;
|
|
6746
|
+
secretRotatedBy?: T;
|
|
6493
6747
|
subscriptions?: T | {
|
|
6494
6748
|
collection?: T;
|
|
6495
6749
|
id?: T;
|
|
@@ -6751,6 +7005,7 @@ interface ProductsSelect<T extends boolean = true> {
|
|
|
6751
7005
|
subtitle?: T;
|
|
6752
7006
|
description?: T;
|
|
6753
7007
|
images?: T;
|
|
7008
|
+
primaryMediaItemId?: T;
|
|
6754
7009
|
videos?: T;
|
|
6755
7010
|
content?: T;
|
|
6756
7011
|
variants?: T;
|
|
@@ -6760,6 +7015,8 @@ interface ProductsSelect<T extends boolean = true> {
|
|
|
6760
7015
|
brand?: T;
|
|
6761
7016
|
shippingPolicy?: T;
|
|
6762
7017
|
weight?: T;
|
|
7018
|
+
vendor?: T;
|
|
7019
|
+
productType?: T;
|
|
6763
7020
|
collectionItems?: T;
|
|
6764
7021
|
minOrderQuantity?: T;
|
|
6765
7022
|
maxOrderQuantity?: T;
|
|
@@ -6773,6 +7030,9 @@ interface ProductsSelect<T extends boolean = true> {
|
|
|
6773
7030
|
maxCompareAtPrice?: T;
|
|
6774
7031
|
isPriceRange?: T;
|
|
6775
7032
|
availableForSale?: T;
|
|
7033
|
+
groupingState?: T;
|
|
7034
|
+
groupingEmptyReason?: T;
|
|
7035
|
+
groupingCount?: T;
|
|
6776
7036
|
};
|
|
6777
7037
|
seo?: T | {
|
|
6778
7038
|
title?: T;
|
|
@@ -6793,8 +7053,6 @@ interface ProductsSelect<T extends boolean = true> {
|
|
|
6793
7053
|
isFeatured?: T;
|
|
6794
7054
|
publishedAt?: T;
|
|
6795
7055
|
metadata?: T;
|
|
6796
|
-
vendor?: T;
|
|
6797
|
-
productType?: T;
|
|
6798
7056
|
updatedAt?: T;
|
|
6799
7057
|
createdAt?: T;
|
|
6800
7058
|
deletedAt?: T;
|
|
@@ -6809,7 +7067,6 @@ interface ProductVariantsSelect<T extends boolean = true> {
|
|
|
6809
7067
|
tenant?: T;
|
|
6810
7068
|
product?: T;
|
|
6811
7069
|
title?: T;
|
|
6812
|
-
thumbnail?: T;
|
|
6813
7070
|
images?: T;
|
|
6814
7071
|
sku?: T;
|
|
6815
7072
|
price?: T;
|
|
@@ -6817,6 +7074,8 @@ interface ProductVariantsSelect<T extends boolean = true> {
|
|
|
6817
7074
|
isUnlimited?: T;
|
|
6818
7075
|
stock?: T;
|
|
6819
7076
|
reservedStock?: T;
|
|
7077
|
+
safetyStockThreshold?: T;
|
|
7078
|
+
inventoryAlertState?: T;
|
|
6820
7079
|
barcode?: T;
|
|
6821
7080
|
weight?: T;
|
|
6822
7081
|
requiresShipping?: T;
|
|
@@ -6857,11 +7116,13 @@ interface ProductOptionValuesSelect<T extends boolean = true> {
|
|
|
6857
7116
|
option?: T;
|
|
6858
7117
|
displayLabel?: T;
|
|
6859
7118
|
value?: T;
|
|
6860
|
-
|
|
7119
|
+
swatch?: T | {
|
|
7120
|
+
type?: T;
|
|
7121
|
+
color?: T;
|
|
7122
|
+
mediaItemId?: T;
|
|
7123
|
+
};
|
|
6861
7124
|
generateSlug?: T;
|
|
6862
7125
|
slug?: T;
|
|
6863
|
-
thumbnail?: T;
|
|
6864
|
-
images?: T;
|
|
6865
7126
|
metadata?: T;
|
|
6866
7127
|
updatedAt?: T;
|
|
6867
7128
|
createdAt?: T;
|
|
@@ -8181,6 +8442,7 @@ interface CanvasNodeTypesSelect<T extends boolean = true> {
|
|
|
8181
8442
|
slug?: T;
|
|
8182
8443
|
description?: T;
|
|
8183
8444
|
color?: T;
|
|
8445
|
+
editorIntent?: T;
|
|
8184
8446
|
defaultSize?: T | {
|
|
8185
8447
|
width?: T;
|
|
8186
8448
|
height?: T;
|
|
@@ -8218,6 +8480,7 @@ interface CanvasEdgeTypesSelect<T extends boolean = true> {
|
|
|
8218
8480
|
slug?: T;
|
|
8219
8481
|
description?: T;
|
|
8220
8482
|
color?: T;
|
|
8483
|
+
isDefaultEdge?: T;
|
|
8221
8484
|
strokeWidth?: T;
|
|
8222
8485
|
isAnimated?: T;
|
|
8223
8486
|
lineStyle?: T;
|
|
@@ -8442,6 +8705,7 @@ interface PostsSelect<T extends boolean = true> {
|
|
|
8442
8705
|
title?: T;
|
|
8443
8706
|
content?: T;
|
|
8444
8707
|
categories?: T;
|
|
8708
|
+
tags?: T;
|
|
8445
8709
|
comments?: T;
|
|
8446
8710
|
displayTitle?: T;
|
|
8447
8711
|
status?: T;
|
|
@@ -8464,6 +8728,8 @@ interface PostsSelect<T extends boolean = true> {
|
|
|
8464
8728
|
allowsComments?: T;
|
|
8465
8729
|
visibility?: T;
|
|
8466
8730
|
isLocked?: T;
|
|
8731
|
+
editedAt?: T;
|
|
8732
|
+
isEdited?: T;
|
|
8467
8733
|
lastActivityAt?: T;
|
|
8468
8734
|
lastCommentByProfile?: T;
|
|
8469
8735
|
isFeatured?: T;
|
|
@@ -8565,6 +8831,22 @@ interface PostCategoriesSelect<T extends boolean = true> {
|
|
|
8565
8831
|
createdAt?: T;
|
|
8566
8832
|
deletedAt?: T;
|
|
8567
8833
|
}
|
|
8834
|
+
/**
|
|
8835
|
+
* This interface was referenced by `Config`'s JSON-Schema
|
|
8836
|
+
* via the `definition` "post-tags_select".
|
|
8837
|
+
*/
|
|
8838
|
+
interface PostTagsSelect<T extends boolean = true> {
|
|
8839
|
+
_order?: T;
|
|
8840
|
+
title?: T;
|
|
8841
|
+
generateSlug?: T;
|
|
8842
|
+
slug?: T;
|
|
8843
|
+
description?: T;
|
|
8844
|
+
image?: T;
|
|
8845
|
+
color?: T;
|
|
8846
|
+
updatedAt?: T;
|
|
8847
|
+
createdAt?: T;
|
|
8848
|
+
deletedAt?: T;
|
|
8849
|
+
}
|
|
8568
8850
|
/**
|
|
8569
8851
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
8570
8852
|
* via the `definition` "reports_select".
|
|
@@ -9055,4 +9337,4 @@ declare module 'payload' {
|
|
|
9055
9337
|
}
|
|
9056
9338
|
}
|
|
9057
9339
|
|
|
9058
|
-
export type { Article as A, CustomerProfile as C, Document as D, Form as F, Image as I, Order as O, Product as P, Reaction as R, Tenant as T, Video as V, CustomerProfileList as a, ProductCollection as b, Post as c, Comment as d, Config as e, ArticleAuthor as f, ArticleCategory as g, ArticleTag as h, Cart as i, CartItem as j, PostCategory as k, ProductVariant as l, Transaction as m, Fulfillment as n, Return as o };
|
|
9340
|
+
export type { Article as A, CustomerProfile as C, Document as D, Form as F, Image as I, Order as O, Product as P, Reaction as R, Tenant as T, Video as V, Webhook as W, CustomerProfileList as a, ProductCollection as b, Post as c, Comment as d, Config as e, ArticleAuthor as f, ArticleCategory as g, ArticleTag as h, Cart as i, CartItem as j, PostCategory as k, ProductVariant as l, Transaction as m, Fulfillment as n, Return as o };
|