Gonder API examples
Target https://youhost.tld:apiport/
Use basic authorization for request.
All request in /api route send as parameter "request". For example:
/api/groups?request={"cmd":"get","offset":0,"limit":100}
or send JSON in body with Content-Type: application/json
Method POST or GET
Standard error response example:
{"status": "error", "message": "Something error text"}
and success response example:
{"status": "success", "message": ""}
Contents
Groups
Target URI: /api/groups
Get groups list
{
"cmd":"get",
"offset":0,
"limit":100,
"sort":
[
{"field":"recid","direction":"DESC"}
],
"search":
[
{
"field":"recid",
"operator":"begins",
"value":"12"
}
]
}
response:
{
"total":2,
"records":
[
{"recid":2,"name":"Group 2"},
{"recid":1,"name":"Group 1"}
]
}
Add group
{
"cmd":"add"
}
create new group with name "New group" and return added ID in response:
{
"recid":3
}
Save groups name
{
"cmd":"save",
"offset":0,
"limit":100,
"changes":
[
{
"recid":3,
"name":"New name for group 3"
},
{
"recid":5,
"name":"New name for group 5"
}
]
}
response:
{
"total":3,
"records":
[
{"recid":3, "name":"New name for group 3"},
{"recid":5,"name":"New name for group 5"}
]
}
Campaigns
Target URI: /api/campaigns
Get campaigns list
{
"cmd":"get",
"id":3,
"limit":100,
"offset":0,
"search":
[
{
"field":"name",
"operator":"begins",
"value":"Best"
}
],
"sort":
[
{"field":"name","direction":"ASC"}
]
}
response:
{
"total":2,
"records":
[
{"recid":16,"name":"Best A campaign"},
{"recid":7,"name":"Best B campaign"}
]
}
Add campaign
{
"cmd":"add"
}
create new campaign with name "New campaign" and return added ID in response:
{
"recid":3
}
Save campaigns name
{
"cmd":"save",
"limit":100,
"offset":0,
"changes":
[
{"recid":1,"name":"My campaign 1"},
{"recid":4,"name":"My campaign 4"}
]
}
response:
{
"total":2,
"records":
[
{"recid":1,"name":"Campaign 1"},
{"recid":4,"name":"My campaign 4"}
]
}
Clone campaign
{
"cmd":"clone",
"id":23
}
clone campaign in new campaign this name "[Clone] Original campaign name" and return added ID in response:
{
"recid":32,
"name": "[Clone] Original campaign name"
}
Campaign
Target URI: /api/campaign
Get campaign parameters
{
"cmd":"get",
"id":2
}
response:
{
"recid":2,
"name":"My campaign with id 2",
"profileId":1,
"subject":"Hello from Gonder",
"senderId":1,
"startDate":1479808800,
"endDate":1480100400,
"sendUnsubscribe":true,
"accepted":true,
"compressHTML": false,
"template":"<h1>My cool mail template<h1>"
}
Save campaign parameters
{
"cmd":"save",
"id":2,
"content":
{
"name":"My campaign with id 2",
"profileId":1,
"subject":"Hello from Gonder",
"senderId":1,
"startDate":1479808800,
"endDate":1480100400,
"sendUnsubscribe":true,
"accepted":true,
"compressHTML": false,
"template":"<h1>My cool mail template<h1>"
}
}
response:
{
"recid":2,
"name":"My campaign with id 2",
"profileId":1,
"subject":"Hello from Gonder",
"senderId":1,
"startDate":1479808800,
"endDate":1480100400,
"sendUnsubscribe":true,
"accepted":true,
"compressHTML": false,
"template":"<h1>My cool mail template<h1>"
}
Set campaign accept status
{
"cmd":"accept",
"campaign":31,
"select": true
}
response standard json error or success
Helpers
Profile list
Target URI: /api/profilelist
{
"cmd":"get"
}
response
[
{"id":1,"text":"Default"},
{"id":2,"text":"Second IP"},
{"id":3,"text":"Group from all IP"}
]
Sender list
Target URI: /api/profilelist
{
"cmd":"get",
"id":2
}
response
[
{"id":1,"text":"Gonder (gonder@email.tld)"},
{"id":4,"text":"Go Sender (gonder@email.tld)"}
]
Recipients
Target URI: /api/recipients
Get recipients list
{
"cmd":"get",
"campaign":1,
"limit":100,
"offset":0,
"sort":
[
{"field":"email","direction":"asc"}
],
"search":
[
{
"field":"email",
"operator":"contains",
"value":"mail.ru"
},
{
"field":"result",
"operator":"is",
"value":"Ok"
}
],
"searchLogic":"AND"
}
response:
{
"total":2,
"records":
[
{
"recid":2,
"name":"Bob",
"email":"bob@email.com",
"open": true,
"result":"Ok"
},{
"recid":1,
"name":"Alice",
"email":"alice@email.com",
"open": false,
"result":""
}
]
}
Get recipient parameters
{
"cmd":"get",
"recipient":2
}
response:
{
"total":2,
"records":
[
{"key":"Reference","value":"Bob Sinclair"},
{"key":"Gender","value":"Man"}
]
}
Add recipients to campaign
{
"cmd":"add",
"campaign":2,
"recipients":
[
{
"name":"Bob",
"email":"bob@email.tld",
"params":
[
{
"key":"Age",
"value":"25"
},
{
"key":"Gender",
"value":"male"
}
]
},
{
"name":"Alice",
"email":"alice@email.tld",
"params":
[
{
"key":"Age",
"value":"21"
},
{
"key":"Gender",
"value":"female"
}
]
}
]
}
response
{"status": "success", "message": ""}
or error
{"status": "error", "message": "Something error text"}
Upload recipients file list
{
"cmd":"upload",
"campaign":2,
"fileName":"my_subscribers.xlsx",
"fileContent":"base64 coded file content"
}
response:
{
"status": "success",
"message": "/tmp/gonder_recipient_load_763792762"
}
Upload recipients file progress
{
"cmd":"progress",
"name":"/tmp/gonder_recipient_load_763792762"
}
response progress in percent:
{
"status": "success",
"message": 45
}
response finish (progress not found)
{
"status": "error",
"message": "not found"
}
Clear all recipients from campaign
{
"cmd":"clear",
"campaign":21
}
response standard json error or success
Mark recipients with result code 4XX (safe bounce) for resend
{
"cmd":"resend4xx",
"campaign":31
}
response standard json error or success
Remove duplicated recipients email list
{
"cmd":"deduplicate",
"campaign":38
}
response standard json success with message as count removed recipients or standard error json
Mark unavaible latest 30 days recipients email (by latest smtp response) list
{
"cmd":"unavaible",
"campaign":22
}
response standard json success with message as count marked recipients or standard error json
Reports
Started campaigns
request example /report/started
response show id's running campaigns
{"started":["22","43","56"]}
Campaign summary
request example /report/summary?campaign=2318
response
{
"Campaign": {
"Start": 1522945800,
"name": "My best campaign"
},
"OpenMailCount": 4234,
"OpenWebVersionCount": 41,
"RecipientJumpCount": 152,
"SendCount": 26153,
"SuccessSendCount": 25660,
"UnsubscribeCount": 3
}
Campaign clicks count
request example /report/clickcount?campaign=2318
response show count clicks to links
{
"[Соц.сеть/Facebook]http://www.facebook.com/JaguarRussia/": 68,
"[Соц.сеть/Instagram]http://instagram.com/jaguarrussia": 32,
"[Соц.сеть/Twitter]https://twitter.com/JaguarRussia": 26,
"[Соц.сеть/YouTube]http://www.youtube.com/user/JaguarRussia": 19
}
Campaign recipients list
request example /report/recipients?campaign=2318
response show count clicks to links
[
{
"id":1726190,
"email":"Alice@mail.tld",
"name":"Alice",
"date":1524505276,
"open":true,
"status":"Ok"
},
{
"id":1726191,
"email":"bob@mail.tld",
"name":"Bob",
"date":1524505275,
"open":false,
"status":"Ok"
}
]
Recipient clicks
request example /report/clicks?recipient=1726190
response show count clicks to links
[
{
"url":"web_version",
"date":1524505287
},
{
"url":"open_trace",
"date":1524505288
},
{
"url": "[Pikabu]https://pikabu.ru/",
"date":1524505355
}
]
Campaign or group unsubscribed
request example show unsubscribe from campaign
/report/unsubscribed?campaign=3317
or from group
/report/unsubscribed?group=7
[
{
"email": "Alice@mail.tld",
"date": 1545908606,
"extra": [
{
"Unsubscribed": "from header link"
}
]
},
{
"email": "bob@mail.tld",
"date": 1545908621
},
{
"email": "stive@mail.tld",
"date": 1545908632,
"extra": [
{
"why": "No time to read"
}
]
},
{
"email": "ivan@mail.tld",
"date": 1545908634
}
]