1- # SendPulse REST client library  
1+ SendPulse REST client library
2+ ================ 
3+ 
4+ [ ![ License] ( http://poser.pugx.org/sendpulse/rest-api/license )] ( https://packagist.org/packages/sendpulse/rest-api ) 
5+ [ ![ Total Downloads] ( http://poser.pugx.org/sendpulse/rest-api/downloads )] ( https://packagist.org/packages/sendpulse/rest-api ) 
6+ [ ![ PHP Version Require] ( http://poser.pugx.org/sendpulse/rest-api/require/php )] ( https://packagist.org/packages/sendpulse/rest-api ) 
27
38A simple SendPulse REST client library and example for PHP.
49
510API Documentation [ https://sendpulse.com/api ] ( https://sendpulse.com/api ) 
611
7- ### Installing  
12+ 
13+ ### Requirements  
14+ 
15+ -  php: >=7.1.0
16+ -  ext-json: *
17+ -  ext-curl: *
18+ 
19+ 
20+ ### Installation  
821
922Via Composer:
1023
1124``` bash 
1225composer require sendpulse/rest-api
1326``` 
1427
15- ### Usage  
28+ ### Example  
1629
1730``` php 
1831<?php
@@ -29,114 +42,170 @@ require 'vendor/autoload.php';
2942
3043use Sendpulse\RestApi\ApiClient;
3144use Sendpulse\RestApi\Storage\FileStorage;
45+ use Sendpulse\RestApi\ApiClientException;
3246
3347// API credentials from https://login.sendpulse.com/settings/#api
3448define('API_USER_ID', '');
3549define('API_SECRET', '');
3650define('PATH_TO_ATTACH_FILE', __FILE__);
3751
38- $SPApiClient = new ApiClient(API_USER_ID, API_SECRET, new FileStorage());
52+ $apiClient = new ApiClient(API_USER_ID, API_SECRET, new FileStorage());
53+ 
3954
4055/*
41-  * Example: Get Mailing Lists
56+  * Send GET request
57+  * 
58+  * Example: Get a List of Mailing Lists
4259 */
43- var_dump($SPApiClient->listAddressBooks());
60+ try {
61+     $addressBooks = $apiClient->get('addressbooks', [
62+         'limit' => 100,
63+         'offset' => 0
64+     ]);
65+ 
66+     var_dump($addressBooks);
67+ } catch (ApiClientException $e) {
68+     var_dump([
69+         'message' => $e->getMessage(),
70+         'http_code' => $e->getCode(),
71+         'response' => $e->getResponse(),
72+         'curl_errors' => $e->getCurlErrors(),
73+         'headers' => $e->getHeaders()
74+     ]);
75+ }
76+ 
4477
4578/*
79+  * Send POST request 
80+  * 
4681 * Example: Add new email to mailing lists
4782 */
48-  $bookID = 123;
49-  $emails = array(
50-     array(
51- 52-         'variables' => array(
53-             'phone' => '+12345678900',
54-             'name' => 'User Name',
55-         )
56-     )
57- );
58-  $additionalParams = array(
59-    'confirmation' => 'force',
60-    'sender_email' => '
[email protected] ',
61- );
62-  // With confirmation
63- var_dump($SPApiClient->addEmails($bookID, $emails, $additionalParams));
64- 
65- // Without confirmation
66- var_dump($SPApiClient->addEmails($bookID, $emails));
67- 
83+ try {
84+     $addEmailsResult = $apiClient->post('addressbooks/33333/emails', [
85+         'emails' => [
86+             [
87+ 88+                 'variables' => [
89+                     'phone' => '+123456789',
90+                     'my_var' => 'my_var_value'
91+                 ]
92+             ], [
93+ 94+                 'variables' => [
95+                     'phone' => '+987654321',
96+                     'my_var' => 'my_var_value'
97+                 ]
98+             ]
99+         ]
100+     ]);
101+ 
102+     var_dump($addEmailsResult);
103+ } catch (ApiClientException $e) {
104+     var_dump([
105+         'message' => $e->getMessage(),
106+         'http_code' => $e->getCode(),
107+         'response' => $e->getResponse(),
108+         'curl_errors' => $e->getCurlErrors(),
109+         'headers' => $e->getHeaders()
110+     ]);
111+ }
112+  
113+  
68114/*
69-  * Example: Send mail using SMTP
115+  * Send PUT request 
116+  * 
117+  * Example: Edit a Mailing List
70118 */
71- $email = array(
72-     'html' => '<p >Hello!</p >',
73-     'text' => 'Hello!',
74-     'subject' => 'Mail subject',
75-     'from' => array(
76-         'name' => 'John',
77- 78-     ),
79-     'to' => array(
80-         array(
81-             'name' => 'Subscriber Name',
82- 83-         ),
84-     ),
85-     'bcc' => array(
86-         array(
87-             'name' => 'Manager',
88- 89-         ),
90-     ),
91-     'attachments' => array(
92-         'file.txt' => file_get_contents(PATH_TO_ATTACH_FILE),
93-     ),
94- );
95- var_dump($SPApiClient->smtpSendMail($email));
119+ try {
120+     $addEmailsResult = $apiClient->put('addressbooks/33333', [
121+         'name' => "New Name"
122+     ]);
123+ 
124+     var_dump($addEmailsResult);
125+ } catch (ApiClientException $e) {
126+     var_dump([
127+         'message' => $e->getMessage(),
128+         'http_code' => $e->getCode(),
129+         'response' => $e->getResponse(),
130+         'curl_errors' => $e->getCurlErrors(),
131+         'headers' => $e->getHeaders()
132+     ]);
133+ }
134+ 
96135
97136/*
98-  * Example: create new push
137+  * Send PATCH request 
138+  * 
139+  * Example: Edit Scheduled Campaign
99140 */
100- $task = array(
101-     'title' => 'Hello!',
102-     'body' => 'This is my first push message',
103-     'website_id' => 1,
104-     'ttl' => 20,
105-     'stretch_time' => 0,
106- );
107- 
108- // This is optional
109- $additionalParams = array(
110-     'link' => 'http://yoursite.com',
111-     'filter_browsers' => 'Chrome,Safari',
112-     'filter_lang' => 'en',
113-     'filter' => '{"variable_name":"some","operator":"or","conditions":[{"condition":"likewith","value":"a"},{"condition":"notequal","value":"b"}]}',
114- );
115- var_dump($SPApiClient->createPushTask($task, $additionalParams));
116- ``` 
141+ try {
142+     $editScheduledCampaignResult = $apiClient->patch('campaigns/333333', [
143+         "name" => "My_API_campaign",
144+         "sender_name" => "sender",
145+         "sender_email" => "
[email protected] ",
146+         "subject" => "Hello customer",
147+         "template_id" => 351594,
148+         "send_date" => "2023-10-21 11:45:00"
149+     ]);
150+ 
151+     var_dump($editScheduledCampaignResult);
152+ } catch (\Sendpulse\RestApi\ApiClientException $e) {
153+     var_dump([
154+         'message' => $e->getMessage(),
155+         'http_code' => $e->getCode(),
156+         'response' => $e->getResponse(),
157+         'curl_errors' => $e->getCurlErrors(),
158+         'headers' => $e->getHeaders()
159+     ]);
160+ }
117161
118- ### Usage Automation360  
119162
120- ``` php 
121- <?php
163+ /*
164+  * Send DELETE request 
165+  * 
166+  * Example: Delete Emails from a Mailing List
167+  */
168+ try {
169+     $removeEmailsResult = $apiClient->delete('addressbooks/33333/emails', [
170+ 171+     ]);
172+ 
173+     var_dump($removeEmailsResult);
174+ } catch (ApiClientException $e) {
175+     var_dump([
176+         'message' => $e->getMessage(),
177+         'http_code' => $e->getCode(),
178+         'response' => $e->getResponse(),
179+         'curl_errors' => $e->getCurlErrors(),
180+         'headers' => $e->getHeaders()
181+     ]);
182+ }
122183
123- require 'vendor/autoload.php';
184+ /*
185+  * Example: Start Automation360 event
186+  */
187+ try {
188+     $startEventResult = $apiClient->post('events/name/my_event_name', [
189+ 190+         "phone" => "+123456789",
191+         "products" => [
192+             [
193+                 "id" => "id value",
194+                 "name" => "name value"
195+             ]
196+         ]
197+     ]);
198+ 
199+     var_dump($startEventResult);
200+ } catch (ApiClientException $e) {
201+     var_dump([
202+         'message' => $e->getMessage(),
203+         'http_code' => $e->getCode(),
204+         'response' => $e->getResponse(),
205+         'curl_errors' => $e->getCurlErrors(),
206+         'headers' => $e->getHeaders()
207+     ]);
208+ }
124209
125- use Sendpulse\RestApi\Automation360;
126- 
127- // https://login.sendpulse.com/emailservice/events/
128- $eventHash = 'EVENT_HASH';
129- 130- $phone = '380931112233';
131- $variables = [
132-     'user_id' => 123123,
133-     'event_date' => date('Y-m-d'),
134-     'firstname' => 'Name',
135-     'lastname' => 'Family',
136-     'age' => 23
137- ];
138- $automationClient =  new Automation360($eventHash);
139- $result = $automationClient->sendEventToSendpulse($email, $phone, $variables);
140- 
141- var_dump($result);
142210``` 
211+ 
0 commit comments