      1: <?php
      2:
      3: class Mandrill_Webhooks {
      4:     public function __construct(Mandrill $master) {
      5:         $this->master = $master;
      6:     }
      7:
      8:     /**
      9:      * Get the list of all webhooks defined on the account
     10:      * @return array the webhooks associated with the account
     11:      *     - return[] struct the individual webhook info
     12:      *         - id integer a unique integer indentifier for the webhook
     13:      *         - url string The URL that the event data will be posted to
     14:      *         - description string a description of the webhook
     15:      *         - auth_key string the key used to requests for this webhook
     16:      *         - events array The message events that will be posted to the hook
     17:      *             - events[] string the individual message event (send, hard_bounce, soft_bounce, open, click, spam, unsub, or reject)
     18:      *         - created_at string the date and time that the webhook was created as a UTC string in YYYY-MM-DD HH:MM:SS format
     19:      *         - last_sent_at string the date and time that the webhook last successfully received events as a UTC string in YYYY-MM-DD HH:MM:SS format
     20:      *         - batches_sent integer the number of event batches that have ever been sent to this webhook
     21:      *         - events_sent integer the total number of events that have ever been sent to this webhook
     22:      *         - last_error string if we've ever gotten an error trying to post to this webhook, the last error that we've seen
     23:      */
     24:     public function getList() {
     25:         $_params = array();
     26:         return $this->master->call('webhooks/list', $_params);
     27:     }
     28:
     29:     /**
     30:      * Add a new webhook
     31:      * @param string $url the URL to POST batches of events
     32:      * @param string $description an optional description of the webhook
     33:      * @param array $events an optional list of events that will be posted to the webhook
     34:      *     - events[] string the individual event to listen for
     35:      * @return struct the information saved about the new webhook
     36:      *     - id integer a unique integer indentifier for the webhook
     37:      *     - url string The URL that the event data will be posted to
     38:      *     - description string a description of the webhook
     39:      *     - auth_key string the key used to requests for this webhook
     40:      *     - events array The message events that will be posted to the hook
     41:      *         - events[] string the individual message event (send, hard_bounce, soft_bounce, open, click, spam, unsub, or reject)
     42:      *     - created_at string the date and time that the webhook was created as a UTC string in YYYY-MM-DD HH:MM:SS format
     43:      *     - last_sent_at string the date and time that the webhook last successfully received events as a UTC string in YYYY-MM-DD HH:MM:SS format
     44:      *     - batches_sent integer the number of event batches that have ever been sent to this webhook
     45:      *     - events_sent integer the total number of events that have ever been sent to this webhook
     46:      *     - last_error string if we've ever gotten an error trying to post to this webhook, the last error that we've seen
     47:      */
     48:     public function add($url, $description=null, $events=array()) {
     49:         $_params = array("url" => $url, "description" => $description, "events" => $events);
     50:         return $this->master->call('webhooks/add', $_params);
     51:     }
     52:
     53:     /**
     54:      * Given the ID of an existing webhook, return the data about it
     55:      * @param integer $id the unique identifier of a webhook belonging to this account
     56:      * @return struct the information about the webhook
     57:      *     - id integer a unique integer indentifier for the webhook
     58:      *     - url string The URL that the event data will be posted to
     59:      *     - description string a description of the webhook
     60:      *     - auth_key string the key used to requests for this webhook
     61:      *     - events array The message events that will be posted to the hook
     62:      *         - events[] string the individual message event (send, hard_bounce, soft_bounce, open, click, spam, unsub, or reject)
     63:      *     - created_at string the date and time that the webhook was created as a UTC string in YYYY-MM-DD HH:MM:SS format
     64:      *     - last_sent_at string the date and time that the webhook last successfully received events as a UTC string in YYYY-MM-DD HH:MM:SS format
     65:      *     - batches_sent integer the number of event batches that have ever been sent to this webhook
     66:      *     - events_sent integer the total number of events that have ever been sent to this webhook
     67:      *     - last_error string if we've ever gotten an error trying to post to this webhook, the last error that we've seen
     68:      */
     69:     public function info($id) {
     70:         $_params = array("id" => $id);
     71:         return $this->master->call('webhooks/info', $_params);
     72:     }
     73:
     74:     /**
     75:      * Update an existing webhook
     76:      * @param integer $id the unique identifier of a webhook belonging to this account
     77:      * @param string $url the URL to POST batches of events
     78:      * @param string $description an optional description of the webhook
     79:      * @param array $events an optional list of events that will be posted to the webhook
     80:      *     - events[] string the individual event to listen for
     81:      * @return struct the information for the updated webhook
     82:      *     - id integer a unique integer indentifier for the webhook
     83:      *     - url string The URL that the event data will be posted to
     84:      *     - description string a description of the webhook
     85:      *     - auth_key string the key used to requests for this webhook
     86:      *     - events array The message events that will be posted to the hook
     87:      *         - events[] string the individual message event (send, hard_bounce, soft_bounce, open, click, spam, unsub, or reject)
     88:      *     - created_at string the date and time that the webhook was created as a UTC string in YYYY-MM-DD HH:MM:SS format
     89:      *     - last_sent_at string the date and time that the webhook last successfully received events as a UTC string in YYYY-MM-DD HH:MM:SS format
     90:      *     - batches_sent integer the number of event batches that have ever been sent to this webhook
     91:      *     - events_sent integer the total number of events that have ever been sent to this webhook
     92:      *     - last_error string if we've ever gotten an error trying to post to this webhook, the last error that we've seen
     93:      */
     94:     public function update($id, $url, $description=null, $events=array()) {
     95:         $_params = array("id" => $id, "url" => $url, "description" => $description, "events" => $events);
     96:         return $this->master->call('webhooks/update', $_params);
     97:     }
     98:
     99:     /**
    100:      * Delete an existing webhook
    101:      * @param integer $id the unique identifier of a webhook belonging to this account
    102:      * @return struct the information for the deleted webhook
    103:      *     - id integer a unique integer indentifier for the webhook
    104:      *     - url string The URL that the event data will be posted to
    105:      *     - description string a description of the webhook
    106:      *     - auth_key string the key used to requests for this webhook
    107:      *     - events array The message events that will be posted to the hook
    108:      *         - events[] string the individual message event (send, hard_bounce, soft_bounce, open, click, spam, unsub, or reject)
    109:      *     - created_at string the date and time that the webhook was created as a UTC string in YYYY-MM-DD HH:MM:SS format
    110:      *     - last_sent_at string the date and time that the webhook last successfully received events as a UTC string in YYYY-MM-DD HH:MM:SS format
    111:      *     - batches_sent integer the number of event batches that have ever been sent to this webhook
    112:      *     - events_sent integer the total number of events that have ever been sent to this webhook
    113:      *     - last_error string if we've ever gotten an error trying to post to this webhook, the last error that we've seen
    114:      */
    115:     public function delete($id) {
    116:         $_params = array("id" => $id);
    117:         return $this->master->call('webhooks/delete', $_params);
    118:     }
    119:
    120: }
    121:
    122:
    123: