Drip PHP API Wrapper
, (*1)
Requirements
- PHP 5.6 or greater
- PHP JSON extension
- PHP cURL extension
Installation
Composer Installation
Run the following command in the terminal:, (*2)
composer require mmollick/drip-php
Or add the following to your composer.json file:, (*3)
``` json
{
"require": {
"mmollick/drip-php":"~0.1.0"
}
}, (*4)
### Manual Installation
This package conforms to the PSR-4 autoloading standard. To include it in your project we recommend using composer, however you can use your own PSR-4 autoloader or manually load all the files contained in the `src` directory to load this library.
Usage
---
This package allows you use it in both an object-oriented or singleton approach depending on your preferences. All authentication and request methods are available with either approach.
### Initialization as Singleton
Specify your authentication credentials with either the `setTokenCredentials` or `setOAuthAccessToken` static methods on the Drip class.
```php
// Authenticating w/ API key
\MMollick\Drip\Drip::setTokenCredentials($accountId, $api_key)
// Authenticating w/ OAuth access_token
\MMollick\Drip\Drip::setOAuthAccessToken($accountId, $access_token)
Initialization as Object
Using the object-oriented approach allows you to create multiple isolated instances of the Drip API. To do this first create new a \MMollick\Drip\Auth object and pass this into a new \MMollick\Drip\Request object., (*5)
// Authentication w/ API Key
$auth = new \MMollick\Drip\Auth($account_id, $api_key);
$drip = new \MMollick\Drip\Request($auth);
// Authentication w/ OAuth access_token
$authUsingOauth = new \MMollick\Drip\Auth($account_id, $access_token, true);
$dripUsingOauth = new \MMollick\Drip\Request($authUsingOauth);
Error Handling
This library will throw one of several exceptions when an error occurs either with the Request or the package itself. It's recommended that requests are made within in a try...catch block to properly handle errors as they arise. See the example below., (*6)
try {
$drip->getSubscribers();
}
catch (\MMollick\Drip\Errors\AuthException $e) {
// Authentication failed, check API keys
}
catch (\MMollick\Drip\Errors\ValidationException $e) {
//The request failed validation, see message or $e->getErrors() for more info
}
catch (\MMollick\Drip\Errors\ApiExceptions $e) {
// Non-specific API error returned, see message or $e->getErrors() for more info
}
catch (\MMollick\Drip\Errors\RateLimitException $e) {
// Requests are being throttled, try the request again in a while
}
catch (\MMollick\Drip\Errors\HttpClientException $e) {
// Most likely a network or Curl related error, see the message for more details
}
catch (\MMollick\Drip\Errors\GeneralException $e) {
// A generic exception, see message for details
}
catch (\Exception $e) {
// Catch anything else just for good measure
}
Methods
All of the request methods can be accessed statically from the \MMollick\Drip\Drip class or by calling them from the \MMollick\Drip\Request object., (*7)
Account
| Actions |
Methods |
| List accounts |
getAccounts() |
| Fetch an account |
getAccount($account_id) |
Broadcasts
| Actions |
Methods |
| List broadcasts |
getBroadcasts($options = []) |
| Fetch a broadcast |
getBroadcast($broadcast_id) |
Campaigns
| Actions |
Request Methods |
| List campaigns |
getCampaigns($options = []) |
| Fetch a campaign |
getCampaign($campaign_id) |
| Activate a campaign |
activateCampaign($campaign_id) |
| Pause a campaign |
pauseCampaign($campaign_id) |
| List campaign subscribers |
listCampaignSubscribers($campaign_id, $options = []) |
| Subscribe to a campaign |
subscribeToCampaign($campaign_id, $subscriber) |
Campaign Subscriptions
| Actions |
Methods |
| List subscriber's subscriptions |
See listSubscribersSubscriptions in Subscribers |
Conversions
| Actions |
Methods |
| List all conversions |
getConversions($options = []) |
| Fetch a conversion |
getConversion($conversion_id) |
Custom Fields
| Actions |
Methods |
| List all custom fields |
getCustomFields() |
Events
| Actions |
Methods |
| Track an event |
recordEvent($payload) |
| Track a batch of events |
recordEvents($events) |
| List all custom event actions |
listActions() |
| Actions |
Methods |
| List all forms |
getForms($options = []) |
| Fetch a form |
getForm($form_id) |
Purchases
| Actions |
Methods |
| List purchases for a subscriber |
getPurchasesForSubscriber($id_or_email, $options = []) |
| Create a purchase |
addPurchaseToSubscriber($id_or_email, $purchase_id) |
| Fetch a purchase |
getPurchaseForSubscriber($id_or_email, $payload) |
Subscribers
| Actions |
Methods |
| List subscribers |
getSubscribers($options = []) |
| Create/update a subscriber |
createOrUpdateSubscriber($email, $payload = {}) |
| Create/update a batch of subscribers |
createOrUpdateSubscribers($subscribers) |
| Unsubscribe a batch of subscribers |
unsubscribeSubscribers($subscribers) |
| Fetch a subscriber |
getSubscriber($id_or_email) |
| Delete |
deleteSubscriber($id_or_email) |
| Subscribe to a campaign |
See subscribeToCampaign in Campaigns |
| Unsubscribe from all mailings |
removeSubscriberFromAllMailings($id_or_email) |
| Unsubscribe from campaigns |
removeSubscriberFromCampaigns($id_or_email, $campaign_id = null) |
| List subscriber's subscriptions |
listSubscribersSubscriptions($subscriber_id) |
| Actions |
Methods |
| List tags |
getTags() |
| Apply a tag |
applyTag($email, $tag) |
| Remove a tag |
removeTag($email, $tag) |
Webhooks
| Actions |
Methods |
| List webhooks |
getWebhooks() |
| Fetch a webhook |
getWebhook($webhook_id) |
| Create a new webhook |
createWebhook($payload) |
| Delete a webhook |
deleteWebhook($webhook_id) |
Workflows
| Actions |
Methods |
| List workflows |
getWorkflows($options = []) |
| Fetch a workflow |
getWorkflow($workflow_id) |
| Activate a workflow |
activateWorkflow($workflow_id) |
| Pause a workflow |
pauseWorkflow($workflow_id) |
| Start a subscriber on a workflow |
addSubscriberToWorkflow($workflow_id, $options = []) |
| Remove a subscriber from a workflow |
removeSubscriberFromWorkflow($workflow_id, $id_or_email) |
Workflow Triggers
| Actions |
Methods |
| List workflow triggers |
getWorkflowTriggers($workflow_id) |
| Create a workflow trigger |
createWorkflowTrigger($workflow_id, $options = []) |
| Update a workflow trigger |
updateWorkflowTrigger($workflow_id, $options = []) |
Contributing
1) Fork it ( https://github.com/mmollick/drip-php/fork )
2) Create your feature branch (git checkout -b my-new-feature)
3) Commit your changes (git commit -am 'Add some feature')
- Add tests when relevant
- If you add a new method to the Request class or the Request traits be sure to include the static declaration in Drip.php's phpdoc
4) Push to the branch (git push origin my-new-feature)
- Fix linting issues Code-Climate Identifies
5) Create a new Pull Request, (*8)
Support
This package is open-source and maintained by the community. Drip does not directly participate in the maintenance of this package. Any issues with this package should be addressed by opening a new issue., (*9)