Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,21 @@
# createsend-python history

## v7.0.0 - 19 Nov, 2021
## v7.0.0 - 15 Dec, 2021
* Upgrades to Createsend API v3.3 which includes new breaking changes
* Breaking: 'client.campaigns' now returned an object to support pagination (use .Results to get the array of campaigns)
* Added 'Tags' as another field that is returned in 'client.scheduled', 'client.drafts' and client.campaigns'
* Added 'Name' as another field that is returned in 'campaign.summary'
* Add new support for 'client.tags' endpoint (ie: getting list of tags for the client)
* Add support for pagination, filtering and sorting to 'client.campaigns' endpoint
* Add Python 3.10 to `tox.ini`
* Adding support for returning ListJoinedDate for each subscriber.
* List.Active()
* List.Bounced()
* List.Unsubscribed()
* List.Unconfirmed()
* List.Deleted()
* Segment.Subscribers()
* Subscriber.Get()

## v6.1.2 - 10 Feb, 2021
* Add `excludemessagebody` parameter for Transactional message details endpoint
Expand Down
33 changes: 33 additions & 0 deletions samples/lists.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from createsend import *

auth = {
'access_token': 'YOUR_ACCESS_TOKEN',
'refresh_token': 'YOUR_REFRESH_TOKEN' }
listId = 'YOUR_LIST_ID'

list = List(auth, listId)

# Get list of active subscribers in a list
print("List of active subscribers:")
for cm in list.active().Results:
print(" - %s" % cm.EmailAddress)

# Get list of bounced subscribers in a list
print("List of bounced subscribers:")
for cm in list.bounced().Results:
print(" - %s" % cm.EmailAddress)

# Get list of unconfirmed subscribers in a list
print("List of unconfirmed subscribers:")
for cm in list.unconfirmed().Results:
print(" - %s" % cm.EmailAddress)

# Get list of unsubscribed subscribers in a list
print("List of unsubscribed subscribers:")
for cm in list.unsubscribed().Results:
print(" - %s" % cm.EmailAddress)

# Get list of deleted subscribers in a list
print("List of deleted subscribers:")
for cm in list.deleted().Results:
print(" - %s" % cm.EmailAddress)
13 changes: 13 additions & 0 deletions samples/segments.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from createsend import *

auth = {
'access_token': 'YOUR_ACCESS_TOKEN',
'refresh_token': 'YOUR_REFRESH_TOKEN' }
segmentId = 'YOUR_SEGMENT_ID'

segment = Segment(auth, segmentId)

# Get list of active subscribers in a segment
print("List of active subscribers:")
for cm in segment.subscribers().Results:
print(" - %s" % cm.EmailAddress)
14 changes: 14 additions & 0 deletions samples/subscribers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from createsend import *

auth = {
'access_token': 'YOUR_ACCESS_TOKEN',
'refresh_token': 'YOUR_REFRESH_TOKEN' }
listId = 'YOUR_LIST_ID'
emailAddress = 'YOUR_SUBSCRIBER_EMAIL_ADDRESS'

subscriber = Subscriber(auth, listId, emailAddress)

# Get the details for a subscriber
subscriberDetail = subscriber.get()
for property, value in vars(subscriberDetail).items():
print(property, ":", value)
5 changes: 5 additions & 0 deletions test/fixtures/active_subscribers.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "subs+7t8787Y@example.com",
"Name": "Person One",
"Date": "2010-10-25 10:28:00",
"ListJoinedDate": "2010-10-24 10:28:00",
"State": "Active",
"CustomFields": [
{
Expand Down Expand Up @@ -33,6 +34,7 @@
"EmailAddress": "subs+7878787y8ggg@example.com",
"Name": "Person Two",
"Date": "2010-10-25 12:17:00",
"ListJoinedDate": "2010-10-25 12:17:00",
"State": "Active",
"CustomFields": [
{
Expand All @@ -46,6 +48,7 @@
"EmailAddress": "subs+7890909i0ggg@example.com",
"Name": "Person Three",
"Date": "2010-10-25 12:52:00",
"ListJoinedDate": "2010-10-25 12:52:00",
"State": "Active",
"CustomFields": [
{
Expand All @@ -59,6 +62,7 @@
"EmailAddress": "subs@example.com",
"Name": "Person Four",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": ""
Expand All @@ -67,6 +71,7 @@
"EmailAddress": "joey@example.com",
"Name": "Person Five",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": "Gmail"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "subs+7t8787Y@example.com",
"Name": "Person One",
"Date": "2010-10-25 10:28:00",
"ListJoinedDate": "2010-10-24 10:28:00",
"State": "Active",
"CustomFields": [
{
Expand Down Expand Up @@ -34,6 +35,7 @@
"EmailAddress": "subs+7878787y8ggg@example.com",
"Name": "Person Two",
"Date": "2010-10-25 12:17:00",
"ListJoinedDate": "2010-10-25 12:17:00",
"State": "Active",
"CustomFields": [
{
Expand All @@ -48,6 +50,7 @@
"EmailAddress": "subs+7890909i0ggg@example.com",
"Name": "Person Three",
"Date": "2010-10-25 12:52:00",
"ListJoinedDate": "2010-10-25 12:52:00",
"State": "Active",
"CustomFields": [
{
Expand All @@ -62,6 +65,7 @@
"EmailAddress": "subs@example.com",
"Name": "Person Four",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": "",
Expand All @@ -71,6 +75,7 @@
"EmailAddress": "joey@example.com",
"Name": "Person Five",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": [],
"ReadsEmailWith": "Gmail",
Expand All @@ -84,4 +89,4 @@
"RecordsOnThisPage": 5,
"TotalNumberOfRecords": 5,
"NumberOfPages": 1
}
}
1 change: 1 addition & 0 deletions test/fixtures/bounced_subscribers.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "bouncedsubscriber@example.com",
"Name": "Bounced One",
"Date": "2010-10-25 13:11:00",
"ListJoinedDate": "2010-10-25 13:11:00",
"State": "Bounced",
"CustomFields": [],
"ReadsEmailWith": ""
Expand Down
5 changes: 5 additions & 0 deletions test/fixtures/deleted_subscribers.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "subscriber@example.com",
"Name": "Deleted One",
"Date": "2010-10-25 13:11:00",
"ListJoinedDate": "2010-10-25 13:11:00",
"State": "Deleted",
"CustomFields": [],
"ReadsEmailWith": "Gmail"
Expand All @@ -12,6 +13,7 @@
"EmailAddress": "subscriberone@example.com",
"Name": "Subscriber",
"Date": "2010-10-25 13:04:00",
"ListJoinedDate": "2010-10-25 13:04:00",
"State": "Deleted",
"CustomFields": [
{
Expand All @@ -25,6 +27,7 @@
"EmailAddress": "example+1@example.com",
"Name": "Example One",
"Date": "2010-10-26 10:56:00",
"ListJoinedDate": "2010-10-26 10:56:00",
"State": "Deleted",
"CustomFields": [],
"ReadsEmailWith": ""
Expand All @@ -33,6 +36,7 @@
"EmailAddress": "example+2@example.com",
"Name": "Example Two",
"Date": "2010-10-26 10:56:00",
"ListJoinedDate": "2010-10-26 10:56:00",
"State": "Deleted",
"CustomFields": [],
"ReadsEmailWith": ""
Expand All @@ -41,6 +45,7 @@
"EmailAddress": "example+3@example.com",
"Name": "Example Three",
"Date": "2010-10-26 10:56:00",
"ListJoinedDate": "2010-10-26 10:56:00",
"State": "Deleted",
"CustomFields": [],
"ReadsEmailWith": "Gmail"
Expand Down
2 changes: 2 additions & 0 deletions test/fixtures/segment_subscribers.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
"EmailAddress": "personone@example.com",
"Name": "Person One",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": []
},
{
"EmailAddress": "persontwo@example.com",
"Name": "Person Two",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": []
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "personone@example.com",
"Name": "Person One",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": [],
"ConsentToTrack": "Yes"
Expand All @@ -12,6 +13,7 @@
"EmailAddress": "persontwo@example.com",
"Name": "Person Two",
"Date": "2010-10-27 13:13:00",
"ListJoinedDate": "2010-10-27 13:13:00",
"State": "Active",
"CustomFields": [],
"ConsentToTrack": "No"
Expand Down
1 change: 1 addition & 0 deletions test/fixtures/subscriber_details.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"EmailAddress": "subscriber@example.com",
"Name": "Subscriber One",
"Date": "2010-10-25 10:28:00",
"ListJoinedDate": "2010-10-25 10:28:00",
"State": "Active",
"CustomFields": [
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"EmailAddress": "subscriber@example.com",
"Name": "Subscriber One",
"Date": "2010-10-25 10:28:00",
"ListJoinedDate": "2010-10-25 10:28:00",
"State": "Active",
"CustomFields": [
{
Expand Down
2 changes: 2 additions & 0 deletions test/fixtures/unconfirmed_subscribers.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "subs+7t8787Y@example.com",
"Name": "Unconfirmed One",
"Date": "2010-10-25 10:28:00",
"ListJoinedDate": "2010-10-25 10:28:00",
"State": "Unconfirmed",
"CustomFields": [
{
Expand All @@ -17,6 +18,7 @@
"EmailAddress": "subs+7878787y8ggg@example.com",
"Name": "Unconfirmed Two",
"Date": "2010-10-25 12:17:00",
"ListJoinedDate": "2010-10-25 12:17:00",
"State": "Unconfirmed",
"CustomFields": [
{
Expand Down
5 changes: 5 additions & 0 deletions test/fixtures/unsubscribed_subscribers.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"EmailAddress": "subscriber@example.com",
"Name": "Unsub One",
"Date": "2010-10-25 13:11:00",
"ListJoinedDate": "2010-10-25 13:11:00",
"State": "Unsubscribed",
"CustomFields": [],
"ReadsEmailWith": "Gmail"
Expand All @@ -12,6 +13,7 @@
"EmailAddress": "subscriberone@example.com",
"Name": "Subscriber",
"Date": "2010-10-25 13:04:00",
"ListJoinedDate": "2010-10-25 13:04:00",
"State": "Unsubscribed",
"CustomFields": [
{
Expand All @@ -25,6 +27,7 @@
"EmailAddress": "example+1@example.com",
"Name": "Example One",
"Date": "2010-10-26 10:56:00",
"ListJoinedDate": "2010-10-26 10:56:00",
"State": "Unsubscribed",
"CustomFields": [],
"ReadsEmailWith": ""
Expand All @@ -33,6 +36,7 @@
"EmailAddress": "example+2@example.com",
"Name": "Example Two",
"Date": "2010-10-26 10:56:00",
"ListJoinedDate": "2010-10-26 10:56:00",
"State": "Unsubscribed",
"CustomFields": [],
"ReadsEmailWith": ""
Expand All @@ -41,6 +45,7 @@
"EmailAddress": "example+3@example.com",
"Name": "Example Three",
"Date": "2010-10-26 10:56:00",
"ListJoinedDate": "2010-10-26 10:56:00",
"State": "Unsubscribed",
"CustomFields": [],
"ReadsEmailWith": "Gmail"
Expand Down
5 changes: 5 additions & 0 deletions test/test_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ def test_active(self):
"subs+7t8787Y@example.com")
self.assertEquals(res.Results[0].Name, "Person One")
self.assertEquals(res.Results[0].Date, "2010-10-25 10:28:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-24 10:28:00")
self.assertEquals(res.Results[0].State, "Active")
self.assertEquals(len(res.Results[0].CustomFields), 5)
self.assertEquals(res.Results[0].CustomFields[0].Key, "website")
Expand Down Expand Up @@ -177,6 +178,7 @@ def test_active_with_tracking_preference_included(self):
"subs+7t8787Y@example.com")
self.assertEquals(res.Results[0].Name, "Person One")
self.assertEquals(res.Results[0].Date, "2010-10-25 10:28:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-24 10:28:00")
self.assertEquals(res.Results[0].State, "Active")
self.assertEquals(len(res.Results[0].CustomFields), 5)
self.assertEquals(res.Results[0].CustomFields[0].Key, "website")
Expand Down Expand Up @@ -226,6 +228,7 @@ def test_unsubscribed(self):
res.Results[0].EmailAddress, "subscriber@example.com")
self.assertEquals(res.Results[0].Name, "Unsub One")
self.assertEquals(res.Results[0].Date, "2010-10-25 13:11:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-25 13:11:00")
self.assertEquals(res.Results[0].State, "Unsubscribed")
self.assertEquals(len(res.Results[0].CustomFields), 0)
self.assertEquals(res.Results[0].ReadsEmailWith, "Gmail")
Expand All @@ -247,6 +250,7 @@ def test_deleted(self):
res.Results[0].EmailAddress, "subscriber@example.com")
self.assertEquals(res.Results[0].Name, "Deleted One")
self.assertEquals(res.Results[0].Date, "2010-10-25 13:11:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-25 13:11:00")
self.assertEquals(res.Results[0].State, "Deleted")
self.assertEquals(len(res.Results[0].CustomFields), 0)
self.assertEquals(res.Results[0].ReadsEmailWith, "Gmail")
Expand All @@ -268,6 +272,7 @@ def test_bounced(self):
"bouncedsubscriber@example.com")
self.assertEquals(res.Results[0].Name, "Bounced One")
self.assertEquals(res.Results[0].Date, "2010-10-25 13:11:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-25 13:11:00")
self.assertEquals(res.Results[0].State, "Bounced")
self.assertEquals(len(res.Results[0].CustomFields), 0)
self.assertEquals(res.Results[0].ReadsEmailWith, "")
Expand Down
2 changes: 2 additions & 0 deletions test/test_segment.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ def test_subscribers(self):
self.assertEquals(res.Results[0].EmailAddress, "personone@example.com")
self.assertEquals(res.Results[0].Name, "Person One")
self.assertEquals(res.Results[0].Date, "2010-10-27 13:13:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-27 13:13:00")
self.assertEquals(res.Results[0].State, "Active")
self.assertEquals(res.Results[0].CustomFields, [])

Expand All @@ -66,6 +67,7 @@ def test_subscribers_with_tracking_information_included(self):
self.assertEquals(res.Results[0].EmailAddress, "personone@example.com")
self.assertEquals(res.Results[0].Name, "Person One")
self.assertEquals(res.Results[0].Date, "2010-10-27 13:13:00")
self.assertEquals(res.Results[0].ListJoinedDate, "2010-10-27 13:13:00")
self.assertEquals(res.Results[0].State, "Active")
self.assertEquals(res.Results[0].CustomFields, [])
self.assertEquals(res.Results[0].ConsentToTrack, "Yes")
Expand Down
Loading