perspectapi-ts-sdk 3.6.0 → 4.1.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 +35 -58
- package/dist/index.d.mts +457 -170
- package/dist/index.d.ts +457 -170
- package/dist/index.js +209 -107
- package/dist/index.mjs +208 -107
- package/package.json +1 -1
- package/src/client/newsletter-client.ts +0 -242
- package/src/client/newsletter-management-client.ts +426 -0
- package/src/client/products-client.ts +59 -27
- package/src/index.ts +25 -0
- package/src/perspect-api-client.ts +3 -0
- package/src/types/index.ts +322 -0
package/README.md
CHANGED
|
@@ -688,79 +688,56 @@ const lists = await client.newsletter.getLists(siteName);
|
|
|
688
688
|
console.log('Available lists:', lists.data.lists);
|
|
689
689
|
```
|
|
690
690
|
|
|
691
|
-
#### Newsletter
|
|
691
|
+
#### Newsletter Management APIs
|
|
692
|
+
|
|
693
|
+
`client.newsletter` is now public-only (subscribe/confirm/unsubscribe/preferences/public lists/published campaigns).
|
|
694
|
+
For management operations, use `client.newsletterManagement`.
|
|
692
695
|
|
|
693
696
|
```typescript
|
|
694
|
-
//
|
|
695
|
-
const
|
|
697
|
+
// Sync subscriber by email (canonical create/update path)
|
|
698
|
+
const sync = await client.newsletterManagement.syncSubscription(siteName, {
|
|
699
|
+
email: 'user@example.com',
|
|
700
|
+
name: 'User Name',
|
|
701
|
+
list_ids: ['list_default'],
|
|
702
|
+
resubscribe_override: false
|
|
703
|
+
});
|
|
704
|
+
console.log(sync.data.code); // CREATED, UPDATED, RESUBSCRIBED, ALREADY_UNSUBSCRIBED
|
|
705
|
+
|
|
706
|
+
// List subscribers
|
|
707
|
+
const subscriptions = await client.newsletterManagement.listSubscriptions(siteName, {
|
|
696
708
|
page: 1,
|
|
697
709
|
limit: 100,
|
|
698
|
-
status: 'confirmed'
|
|
699
|
-
list_id: 'list_weekly',
|
|
700
|
-
search: 'john',
|
|
701
|
-
startDate: '2024-01-01',
|
|
702
|
-
endDate: '2024-12-31'
|
|
710
|
+
status: 'confirmed'
|
|
703
711
|
});
|
|
704
712
|
|
|
705
|
-
//
|
|
706
|
-
await client.
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
// Bulk operations
|
|
714
|
-
await client.newsletter.bulkUpdateSubscriptions(siteName, {
|
|
715
|
-
ids: ['sub_123', 'sub_456'],
|
|
716
|
-
action: 'add_to_list',
|
|
717
|
-
list_id: 'list_special_offers'
|
|
713
|
+
// Import with override controls (row-level override wins)
|
|
714
|
+
await client.newsletterManagement.importSubscriptions(siteName, {
|
|
715
|
+
resubscribe_override: false,
|
|
716
|
+
rows: [
|
|
717
|
+
{ email: 'user1@example.com', list_ids: ['list_default'] },
|
|
718
|
+
{ email: 'user2@example.com', resubscribe_override: true }
|
|
719
|
+
]
|
|
718
720
|
});
|
|
719
721
|
|
|
720
|
-
// List management
|
|
721
|
-
|
|
722
|
+
// List + campaign management
|
|
723
|
+
await client.newsletterManagement.createList(siteName, {
|
|
722
724
|
list_name: 'VIP Customers',
|
|
723
725
|
slug: 'vip-customers',
|
|
724
|
-
|
|
725
|
-
is_public: false,
|
|
726
|
-
is_default: false,
|
|
727
|
-
double_opt_in: true,
|
|
728
|
-
welcome_email_enabled: true
|
|
726
|
+
is_public: false
|
|
729
727
|
});
|
|
730
728
|
|
|
731
|
-
await client.
|
|
732
|
-
|
|
733
|
-
|
|
729
|
+
await client.newsletterManagement.createCampaign(siteName, {
|
|
730
|
+
campaign_name: 'Spring Update',
|
|
731
|
+
subject: 'Spring Update',
|
|
732
|
+
markdown_content: '# Hello',
|
|
733
|
+
status: 'draft'
|
|
734
734
|
});
|
|
735
735
|
|
|
736
|
-
//
|
|
737
|
-
const
|
|
738
|
-
|
|
739
|
-
endDate: '2024-12-31',
|
|
740
|
-
list_id: 'list_weekly'
|
|
741
|
-
});
|
|
742
|
-
console.log('Total subscribers:', stats.data.totalSubscribers);
|
|
743
|
-
console.log('Open rate:', stats.data.engagementMetrics.averageOpenRate);
|
|
744
|
-
|
|
745
|
-
// Export subscriptions
|
|
746
|
-
const exportData = await client.newsletter.exportSubscriptions(siteName, {
|
|
747
|
-
format: 'csv', // csv, json, or xlsx
|
|
748
|
-
status: 'confirmed',
|
|
749
|
-
list_id: 'list_weekly'
|
|
750
|
-
});
|
|
751
|
-
console.log('Download URL:', exportData.data.downloadUrl);
|
|
752
|
-
|
|
753
|
-
// Import subscriptions
|
|
754
|
-
const importResult = await client.newsletter.importSubscriptions(siteName, {
|
|
755
|
-
subscriptions: [
|
|
756
|
-
{ email: 'user1@example.com', name: 'User One', lists: ['list_weekly'] },
|
|
757
|
-
{ email: 'user2@example.com', name: 'User Two', lists: ['list_daily'] }
|
|
758
|
-
],
|
|
759
|
-
skip_confirmation: false, // Skip double opt-in for imported users
|
|
760
|
-
update_existing: true // Update if email already exists
|
|
736
|
+
// Exports (csv/json only; xlsx returns UNSUPPORTED_FORMAT)
|
|
737
|
+
const exportData = await client.newsletterManagement.createExport(siteName, {
|
|
738
|
+
format: 'csv'
|
|
761
739
|
});
|
|
762
|
-
console.log(
|
|
763
|
-
console.log('Failed:', importResult.data.failed);
|
|
740
|
+
console.log(exportData.data.downloadUrl);
|
|
764
741
|
```
|
|
765
742
|
|
|
766
743
|
> 📚 **For complete newsletter documentation**, see [docs/newsletter.md](docs/newsletter.md)
|