woocommerce-rest-api-docs/source/includes/wp-api-v2/_webhooks.md

1077 lines
42 KiB
Markdown

# Webhooks #
The webhooks API allows you to create, view, update, and delete individual, or a batch, of webhooks.
Webhooks can be managed via the WooCommerce settings screen or by using the REST API endpoints. The `WC_Webhook` class manages all data storage and retrieval of the webhook custom post type, as well as enqueuing webhook actions and processing/delivering/logging webhooks. On `woocommerce_init`, active webhooks are loaded.
Each webhook has:
* `status`: active (delivers payload), paused (delivery paused by admin), disabled (delivery paused by failure).
* `topic`: determines which resource events the webhook is triggered for.
* `delivery URL`: URL where the payload is delivered, must be HTTP or HTTPS.
* `secret`: an optional secret key that is used to generate a HMAC-SHA256 hash of the request body so the receiver can verify authenticity of the webhook.
* `hooks`: an array of hook names that are added and bound to the webhook for processing.
### Topics ###
The topic is a combination resource (e.g. order) and event (e.g. created) and maps to one or more hook names (e.g. `woocommerce_checkout_order_processed`). Webhooks can be created using the topic name and the appropriate hooks are automatically added.
Core topics are:
* Coupons: `coupon.created`, `coupon.updated` and `coupon.deleted`.
* Customers: `customer.created`, `customer.updated` and `customer.deleted`.
* Orders: `order.created`, `order.updated` and `order.deleted`.
* Products: `product.created`, `product.updated` and `product.deleted`.
Custom topics can also be used which map to a single hook name, for example you could add a webhook with topic `action.woocommerce_add_to_cart` that is triggered on that event. Custom topics pass the first hook argument to the payload, so in this example the `cart_item_key` would be included in the payload.
### Delivery/payload ###
Delivery is performed using `wp_remote_post()` (HTTP POST) and processed in the background by default using wp-cron. A few custom headers are added to the request to help the receiver process the webhook:
* `X-WC-Webhook-Source`: `http://example.com/`.
* `X-WC-Webhook-Topic` - e.g. `order.updated`.
* `X-WC-Webhook-Resource` - e.g. `order`.
* `X-WC-Webhook-Event` - e.g. `updated`.
* `X-WC-Webhook-Signature` - a base64 encoded HMAC-SHA256 hash of the payload.
* `X-WC-Webhook-ID` - webhook's post ID.
* `X-WC-Webhook-Delivery-ID` - delivery log ID (a comment).
The payload is JSON encoded and for API resources (coupons, customers, orders, products), the response is exactly the same as if requested via the REST API.
### Logging ###
Requests/responses are logged as comments on the webhook custom post type. Each delivery log includes:
* Request duration.
* Request URL, method, headers, and body.
* Response Code, message, headers, and body.
Only the 25 most recent delivery logs are kept in order to reduce comment table bloat.
After 5 consecutive failed deliveries (as defined by a non HTTP 2xx response code), the webhook is disabled and must be edited via the REST API to re-enable.
Delivery logs can be fetched through the REST API endpoint or in code using `WC_Webhook::get_delivery_logs()`.
### Visual interface ###
You can find the Webhooks interface going to "WooCommerce" > "Settings" > "API" > "Webhooks", see our [Visual Webhooks docs](https://docs.woocommerce.com/document/webhooks/) for more details.
## Webhook properties ##
| Attribute | Type | Description |
| ------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id` | integer | Unique identifier for the resource. <i class="label label-info">read-only</i> |
| `name` | string | A friendly name for the webhook. |
| `status` | string | Webhook status. Options: `active`, `paused` and `disabled`. Default is `active`. |
| `topic` | string | Webhook topic. <i class="label label-info">mandatory</i> |
| `resource` | string | Webhook resource. <i class="label label-info">read-only</i> |
| `event` | string | Webhook event. <i class="label label-info">read-only</i> |
| `hooks` | array | WooCommerce action names associated with the webhook. <i class="label label-info">read-only</i> |
| `delivery_url` | string | The URL where the webhook payload is delivered. <i class="label label-info">read-only</i> <i class="label label-info">mandatory</i> |
| `secret` | string | Secret key used to generate a hash of the delivered webhook and provided in the request headers. This will default is a MD5 hash from the current user's ID|username if not provided. <i class="label label-info">write-only</i> <i class="label label-info">mandatory</i> |
| `date_created` | date-time | The date the webhook was created, in the site's timezone. <i class="label label-info">read-only</i> |
| `date_created_gmt` | date-time | The date the webhook was created, as GMT. <i class="label label-info">read-only</i> |
| `date_modified` | date-time | The date the webhook was last modified, in the site's timezone. <i class="label label-info">read-only</i> |
| `date_modified_gmt` | date-time | The date the webhook was last modified, as GMT. <i class="label label-info">read-only</i> |
### Webhook delivery properties ###
| Attribute | Type | Description |
| ------------------ | --------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `id` | integer | Unique identifier for the resource. <i class="label label-info">read-only</i> |
| `duration` | string | The delivery duration, in seconds. <i class="label label-info">read-only</i> |
| `summary` | string | A friendly summary of the response including the HTTP response code, message, and body. <i class="label label-info">read-only</i> |
| `request_url` | string | The URL where the webhook was delivered. <i class="label label-info">read-only</i> |
| `request_headers` | array | Request headers. <i class="label label-info">read-only</i> |
| `request_body` | string | Request body. <i class="label label-info">read-only</i> |
| `response_code` | string | The HTTP response code from the receiving server. <i class="label label-info">read-only</i> |
| `response_message` | string | The HTTP response message from the receiving server. <i class="label label-info">read-only</i> |
| `response_headers` | array | Array of the response headers from the receiving server. <i class="label label-info">read-only</i> |
| `response_body` | string | The response body from the receiving server. <i class="label label-info">read-only</i> |
| `date_created` | date-time | The date the webhook delivery was logged, in the site's timezone. <i class="label label-info">read-only</i> |
| `date_created_gmt` | date-time | The date the webhook delivery was logged, GMT. <i class="label label-info">read-only</i> |
#### Request header properties ####
| Attribute | Type | Description |
|----------------------------|---------|--------------------------------------------------------------------------------------------------------------------------------------|
| `User-Agent` | string | The request user agent, default is "WooCommerce/{version} Hookshot (WordPress/{version})". <i class="label label-info">read-only</i> |
| `Content-Type` | string | The request content-type, default is "application/json". <i class="label label-info">read-only</i> |
| `X-WC-Webhook-Source` | string | The webhook source. <i class="label label-info">read-only</i> |
| `X-WC-Webhook-Topic` | string | The webhook topic. <i class="label label-info">read-only</i> |
| `X-WC-Webhook-Resource` | string | The webhook resource. <i class="label label-info">read-only</i> |
| `X-WC-Webhook-Event` | string | The webhook event. <i class="label label-info">read-only</i> |
| `X-WC-Webhook-Signature` | string | A base64 encoded HMAC-SHA256 hash of the payload. <i class="label label-info">read-only</i> |
| `X-WC-Webhook-ID` | integer | The webhook's ID. <i class="label label-info">read-only</i> |
| `X-WC-Webhook-Delivery-ID` | integer | The delivery ID. <i class="label label-info">read-only</i> |
## Create a webhook ##
This API helps you to create a new webhook.
### HTTP request ###
<div class="api-endpoint">
<div class="endpoint-data">
<i class="label label-post">POST</i>
<h6>/wp-json/wc/v2/webhooks</h6>
</div>
</div>
```shell
curl -X POST https://example.com/wp-json/wc/v2/webhooks \
-u consumer_key:consumer_secret \
-H "Content-Type: application/json" \
-d '{
"name": "Order updated",
"topic": "order.updated",
"delivery_url": "http://requestb.in/1g0sxmo1"
}'
```
```javascript
const data = {
name: "Order updated",
topic: "order.updated",
delivery_url: "http://requestb.in/1g0sxmo1"
};
WooCommerce.post("webhooks", data)
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.log(error.response.data);
});
```
```php
<?php
$data = [
'name' => 'Order updated',
'topic' => 'order.updated',
'delivery_url' => 'http://requestb.in/1g0sxmo1'
];
print_r($woocommerce->post('webhooks', $data));
?>
```
```python
data = {
"name": "Order updated",
"topic": "order.updated",
"delivery_url": "http://requestb.in/1g0sxmo1"
}
print(wcapi.post("webhooks", data).json())
```
```ruby
data = {
name: "Order updated",
topic: "order.updated",
delivery_url: "http://requestb.in/1g0sxmo1"
}
woocommerce.post("webhooks", data).parsed_response
```
> JSON response example:
```json
{
"id": 142,
"name": "Order updated",
"status": "active",
"topic": "order.updated",
"resource": "order",
"event": "updated",
"hooks": [
"woocommerce_process_shop_order_meta",
"woocommerce_api_edit_order",
"woocommerce_order_edit_status",
"woocommerce_order_status_changed"
],
"delivery_url": "http://requestb.in/1g0sxmo1",
"date_created": "2016-05-15T23:17:52",
"date_created_gmt": "2016-05-15T20:17:52",
"date_modified": "2016-05-15T23:17:52",
"date_modified_gmt": "2016-05-15T20:17:52",
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks"
}
]
}
}
```
## Retrieve a webhook ##
This API lets you retrieve and view a specific webhook.
### HTTP request ###
<div class="api-endpoint">
<div class="endpoint-data">
<i class="label label-get">GET</i>
<h6>/wp-json/wc/v2/webhooks/&lt;id&gt;</h6>
</div>
</div>
```shell
curl https://example.com/wp-json/wc/v2/webhooks/142 \
-u consumer_key:consumer_secret
```
```javascript
WooCommerce.get("webhooks/142")
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.log(error.response.data);
});
```
```php
<?php print_r($woocommerce->get('webhooks/142')); ?>
```
```python
print(wcapi.get("webhooks/142").json())
```
```ruby
woocommerce.get("webhooks/142").parsed_response
```
> JSON response example:
```json
{
"id": 142,
"name": "Order updated",
"status": "active",
"topic": "order.updated",
"resource": "order",
"event": "updated",
"hooks": [
"woocommerce_process_shop_order_meta",
"woocommerce_api_edit_order",
"woocommerce_order_edit_status",
"woocommerce_order_status_changed"
],
"delivery_url": "http://requestb.in/1g0sxmo1",
"date_created": "2016-05-15T23:17:52",
"date_created_gmt": "2016-05-15T20:17:52",
"date_modified": "2016-05-15T23:17:52",
"date_modified_gmt": "2016-05-15T20:17:52",
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks"
}
]
}
}
```
## List all webhooks ##
This API helps you to view all the webhooks.
### HTTP request ###
<div class="api-endpoint">
<div class="endpoint-data">
<i class="label label-get">GET</i>
<h6>/wp-json/wc/v2/webhooks</h6>
</div>
</div>
```shell
curl https://example.com/wp-json/wc/v2/webhooks \
-u consumer_key:consumer_secret
```
```javascript
WooCommerce.get("webhooks")
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.log(error.response.data);
});
```
```php
<?php print_r($woocommerce->get('webhooks')); ?>
```
```python
print(wcapi.get("webhooks").json())
```
```ruby
woocommerce.get("webhooks").parsed_response
```
> JSON response example:
```json
[
{
"id": 143,
"name": "Customer created",
"status": "active",
"topic": "customer.created",
"resource": "customer",
"event": "created",
"hooks": [
"user_register",
"woocommerce_created_customer",
"woocommerce_api_create_customer"
],
"delivery_url": "http://requestb.in/1g0sxmo1",
"date_created": "2016-05-15T23:17:52",
"date_created_gmt": "2016-05-15T20:17:52",
"date_modified": "2016-05-15T23:17:52",
"date_modified_gmt": "2016-05-15T20:17:52",
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/143"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks"
}
]
}
},
{
"id": 142,
"name": "Order updated",
"status": "active",
"topic": "order.updated",
"resource": "order",
"event": "updated",
"hooks": [
"woocommerce_process_shop_order_meta",
"woocommerce_api_edit_order",
"woocommerce_order_edit_status",
"woocommerce_order_status_changed"
],
"delivery_url": "http://requestb.in/1g0sxmo1",
"date_created": "2016-05-15T23:17:52",
"date_created_gmt": "2016-05-15T20:17:52",
"date_modified": "2016-05-15T23:17:52",
"date_modified_gmt": "2016-05-15T20:17:52",
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks"
}
]
}
}
]
```
#### Available parameters ####
| Parameter | Type | Description |
| --------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `context` | string | Scope under which the request is made; determines fields present in response. Options: `view` and `edit`. Default is `view`. |
| `page` | integer | Current page of the collection. Default is `1`. |
| `per_page` | integer | Maximum number of items to be returned in result set. Default is `10`. |
| `search` | string | Limit results to those matching a string. |
| `after` | string | Limit response to resources published after a given ISO8601 compliant date. |
| `before` | string | Limit response to resources published before a given ISO8601 compliant date. |
| `dates_are_gmt` | boolean | Interpret `after` and `before` as UTC dates when `true`. |
| `exclude` | array | Ensure result set excludes specific IDs. |
| `include` | array | Limit result set to specific ids. |
| `offset` | integer | Offset the result set by a specific number of items. |
| `order` | string | Order sort attribute ascending or descending. Options: `asc` and `desc`. Default is `desc`. |
| `orderby` | string | Sort collection by object attribute. Options: `date`, `id`, `include`, `title` and `slug`. Default is `date`. |
| `status` | string | Limit result set to webhooks assigned a specific status. Options: `all`, `active`, `paused` and `disabled`. Default is `all`. |
## Update a webhook ##
This API lets you make changes to a webhook.
### HTTP request ###
<div class="api-endpoint">
<div class="endpoint-data">
<i class="label label-put">PUT</i>
<h6>/wp-json/wc/v2/webhook/&lt;id&gt;</h6>
</div>
</div>
```shell
curl -X PUT https://example.com/wp-json/wc/v2/webhook/142 \
-u consumer_key:consumer_secret \
-H "Content-Type: application/json" \
-d '{
"status": "paused"
}'
```
```javascript
const data = {
status: "paused"
}
WooCommerce.put("webhooks/142", data)
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.log(error.response.data);
});
```
```php
<?php
$data = [
'status' => 'paused'
];
print_r($woocommerce->put('webhooks/142', $data));
?>
```
```python
data = {
"status": "paused"
}
print(wcapi.put("webhooks/142", data).json())
```
```ruby
data = {
status: "paused"
}
woocommerce.put("webhooks/142", data).parsed_response
```
> JSON response example:
```json
{
"id": 142,
"name": "Order updated",
"status": "paused",
"topic": "order.updated",
"resource": "order",
"event": "updated",
"hooks": [
"woocommerce_process_shop_order_meta",
"woocommerce_api_edit_order",
"woocommerce_order_edit_status",
"woocommerce_order_status_changed"
],
"delivery_url": "http://requestb.in/1g0sxmo1",
"date_created": "2016-05-15T23:17:52",
"date_created_gmt": "2016-05-15T20:17:52",
"date_modified": "2016-05-15T17:30:12",
"date_modified_gmt": "2016-05-15T20:30:12",
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks"
}
]
}
}
```
## Delete a webhook ##
This API helps you delete a webhook.
### HTTP request ###
<div class="api-endpoint">
<div class="endpoint-data">
<i class="label label-delete">DELETE</i>
<h6>/wp-json/wc/v2/webhooks/&lt;id&gt;</h6>
</div>
</div>
```shell
curl -X DELETE https://example.com/wp-json/wc/v2/webhooks/142 \
-u consumer_key:consumer_secret
```
```javascript
WooCommerce.delete("webhooks/142")
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.log(error.response.data);
});
```
```php
<?php print_r($woocommerce->delete('webhooks/142')); ?>
```
```python
print(wcapi.delete("webhooks/142").json())
```
```ruby
woocommerce.delete("webhooks/142").parsed_response
```
> JSON response example:
```json
{
"id": 142,
"name": "Order updated",
"status": "paused",
"topic": "order.updated",
"resource": "order",
"event": "updated",
"hooks": [
"woocommerce_process_shop_order_meta",
"woocommerce_api_edit_order",
"woocommerce_order_edit_status",
"woocommerce_order_status_changed"
],
"delivery_url": "http://requestb.in/1g0sxmo1",
"date_created": "2016-05-15T23:17:52",
"date_created_gmt": "2016-05-15T20:17:52",
"date_modified": "2016-05-15T23:30:12",
"date_modified_gmt": "2016-05-15T20:30:12",
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks"
}
]
}
}
```
#### Available parameters ####
| Parameter | Type | Description |
|-----------|--------|----------------------------------------------------------------------------|
| `force` | string | Use `true` whether to permanently delete the webhook, Default is `false`. |
## Batch update webhooks ##
This API helps you to batch create, update and delete multiple webhooks.
<aside class="notice">
Note: By default it's limited to up to 100 objects to be created, updated or deleted.
</aside>
### HTTP request ###
<div class="api-endpoint">
<div class="endpoint-data">
<i class="label label-post">POST</i>
<h6>/wp-json/wc/v2/webhooks/batch</h6>
</div>
</div>
```shell
curl -X POST https://example.com//wp-json/wc/v2/webhooks/batch \
-u consumer_key:consumer_secret \
-H "Content-Type: application/json" \
-d '{
"create": [
{
"name": "Coupon created",
"topic": "coupon.created",
"delivery_url": "http://requestb.in/1g0sxmo1"
},
{
"name": "Customer deleted",
"topic": "customer.deleted",
"delivery_url": "http://requestb.in/1g0sxmo1"
}
],
"delete": [
143
]
}'
```
```javascript
const data = {
create: [
{
name: "Round toe",
topic: "coupon.created",
delivery_url: "http://requestb.in/1g0sxmo1"
},
{
name: "Customer deleted",
topic: "customer.deleted",
delivery_url: "http://requestb.in/1g0sxmo1"
}
],
delete: [
143
]
};
WooCommerce.post("webhooks/batch", data)
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.log(error.response.data);
});
```
```php
<?php
$data = [
'create' => [
[
'name' => 'Round toe',
'topic' => 'coupon.created',
'delivery_url' => 'http://requestb.in/1g0sxmo1'
],
[
'name' => 'Customer deleted',
'topic' => 'customer.deleted',
'delivery_url' => 'http://requestb.in/1g0sxmo1'
]
],
'delete' => [
143
]
];
print_r($woocommerce->post('webhooks/batch', $data));
?>
```
```python
data = {
"create": [
{
"name": "Round toe",
"topic": "coupon.created",
"delivery_url": "http://requestb.in/1g0sxmo1"
},
{
"name": "Customer deleted",
"topic": "customer.deleted",
"delivery_url": "http://requestb.in/1g0sxmo1"
}
],
"delete": [
143
]
}
print(wcapi.post("webhooks/batch", data).json())
```
```ruby
data = {
create: [
{
name: "Round toe",
topic: "coupon.created",
delivery_url: "http://requestb.in/1g0sxmo1"
},
{
name: "Customer deleted",
topic: "customer.deleted",
delivery_url: "http://requestb.in/1g0sxmo1"
}
],
delete: [
143
]
}
woocommerce.post("webhooks/batch", data).parsed_response
```
> JSON response example:
```json
{
"create": [
{
"id": 146,
"name": "Coupon created",
"status": "active",
"topic": "coupon.created",
"resource": "coupon",
"event": "created",
"hooks": [
"woocommerce_process_shop_coupon_meta",
"woocommerce_api_create_coupon"
],
"delivery_url": "http://requestb.in/1g0sxmo1",
"date_created": "2016-05-25T01:56:26",
"date_created_gmt": "2016-05-24T22:56:26",
"date_modified": "2016-05-25T01:56:26",
"date_modified_gmt": "2016-05-24T22:56:26",
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/146"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks"
}
]
}
},
{
"id": 147,
"name": "Customer deleted",
"status": "active",
"topic": "customer.deleted",
"resource": "customer",
"event": "deleted",
"hooks": [
"delete_user"
],
"delivery_url": "http://requestb.in/1g0sxmo1",
"date_created": "2016-05-25T01:56:30",
"date_created_gmt": "2016-05-24T22:56:30",
"date_modified": "2016-05-25T01:56:30",
"date_modified_gmt": "2016-05-24T22:56:30",
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/147"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks"
}
]
}
}
],
"delete": [
{
"id": 143,
"name": "Webhook created on May 24, 2016 @ 03:20 AM",
"status": "active",
"topic": "customer.created",
"resource": "customer",
"event": "created",
"hooks": [
"user_register",
"woocommerce_created_customer",
"woocommerce_api_create_customer"
],
"delivery_url": "http://requestb.in/1g0sxmo1",
"date_created": "2016-05-15T23:17:52",
"date_created_gmt": "2016-05-15T20:17:52",
"date_modified": "2016-05-15T23:17:52",
"date_modified_gmt": "2016-05-15T20:17:52",
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/143"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks"
}
]
}
}
]
}
```
## Retrieve webhook delivery ##
This API lets you retrieve and view a specific webhook delivery.
### HTTP request ###
<div class="api-endpoint">
<div class="endpoint-data">
<i class="label label-get">GET</i>
<h6>/wp-json/wc/v2/webhooks/&lt;id&gt;/deliveries/&lt;delivery_id&gt;</h6>
</div>
</div>
```shell
curl https://example.com/wp-json/wc/v2/webhooks/142/deliveries/54 \
-u consumer_key:consumer_secret
```
```javascript
WooCommerce.get("webhooks/142/deliveries/54")
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.log(error.response.data);
});
```
```php
<?php print_r($woocommerce->get('webhooks/142/deliveries/54')); ?>
```
```python
print(wcapi.get("webhooks/142/deliveries/54").json())
```
```ruby
woocommerce.get("webhooks/142/deliveries/54").parsed_response
```
> JSON response example:
```json
{
"id": 54,
"duration": "0.40888",
"summary": "HTTP 200 OK: ok",
"request_method": "POST",
"request_url": "http://requestb.in/1g0sxmo1",
"request_headers": {
"User-Agent": "WooCommerce/2.6.0 Hookshot (WordPress/4.5.2)",
"Content-Type": "application/json",
"X-WC-Webhook-Source": "http://example.com/",
"X-WC-Webhook-Topic": "order.updated",
"X-WC-Webhook-Resource": "order",
"X-WC-Webhook-Event": "updated",
"X-WC-Webhook-Signature": "J72iu7hL93aUt2dFnyOBoBypwbmP6nt6Aor33nnOHxU=",
"X-WC-Webhook-ID": 142,
"X-WC-Webhook-Delivery-ID": 54
},
"request_body": "{\"order\":{\"id\":118,\"order_number\":118,\"order_key\":\"wc_order_5728e9a347a2d\",\"created_at\":\"2016-05-03T18:10:00Z\",\"updated_at\":\"2016-05-16T03:30:30Z\",\"completed_at\":\"2016-05-16T03:29:19Z\",\"status\":\"completed\",\"currency\":\"BRL\",\"total\":\"14.00\",\"subtotal\":\"4.00\",\"total_line_items_quantity\":2,\"total_tax\":\"0.00\",\"total_shipping\":\"10.00\",\"cart_tax\":\"0.00\",\"shipping_tax\":\"0.00\",\"total_discount\":\"0.00\",\"shipping_methods\":\"Flat Rate\",\"payment_details\":{\"method_id\":\"bacs\",\"method_title\":\"Direct Bank Transfer\",\"paid\":true},\"billing_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\",\"company\":\"\",\"address_1\":\"969 Market\",\"address_2\":\"\",\"city\":\"San Francisco\",\"state\":\"CA\",\"postcode\":\"94103\",\"country\":\"US\",\"email\":\"john.doe@claudiosmweb.com\",\"phone\":\"(555) 555-5555\"},\"shipping_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\",\"company\":\"\",\"address_1\":\"969 Market\",\"address_2\":\"\",\"city\":\"San Francisco\",\"state\":\"CA\",\"postcode\":\"94103\",\"country\":\"US\"},\"note\":\"\",\"customer_ip\":\"127.0.0.1\",\"customer_user_agent\":\"curl/7.47.0\",\"customer_id\":0,\"view_order_url\":\"http://example.com/my-account/view-order/118\",\"line_items\":[{\"id\":8,\"subtotal\":\"4.00\",\"subtotal_tax\":\"0.00\",\"total\":\"4.00\",\"total_tax\":\"0.00\",\"price\":\"2.00\",\"quantity\":2,\"tax_class\":null,\"name\":\"Woo Single #2\",\"product_id\":99,\"sku\":\"12345\",\"meta\":[]}],\"shipping_lines\":[{\"id\":9,\"method_id\":\"flat_rate\",\"method_title\":\"Flat Rate\",\"total\":\"10.00\"}],\"tax_lines\":[],\"fee_lines\":[],\"coupon_lines\":[],\"is_vat_exempt\":false,\"customer\":{\"id\":0,\"email\":\"john.doe@claudiosmweb.com\",\"first_name\":\"John\",\"last_name\":\"Doe\",\"billing_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\",\"company\":\"\",\"address_1\":\"969 Market\",\"address_2\":\"\",\"city\":\"San Francisco\",\"state\":\"CA\",\"postcode\":\"94103\",\"country\":\"US\",\"email\":\"john.doe@claudiosmweb.com\",\"phone\":\"(555) 555-5555\"},\"shipping_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\",\"company\":\"\",\"address_1\":\"969 Market\",\"address_2\":\"\",\"city\":\"San Francisco\",\"state\":\"CA\",\"postcode\":\"94103\",\"country\":\"US\"}}}}",
"response_code": "200",
"response_message": "OK",
"response_headers": {
"connection": "close",
"server": "gunicorn/19.3.0",
"date": "Tue, 16 May 2016 03:30:31 GMT",
"content-type": "text/html; charset=utf-8",
"content-length": "2",
"sponsored-by": "https://www.runscope.com",
"via": "1.1 vegur"
},
"response_body": "ok",
"date_created": "2016-05-16T06:30:31",
"date_created_gmt": "2016-05-16T03:30:31",
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142/deliveries/54"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142/deliveries"
}
],
"up": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142"
}
]
}
}
```
<aside class="notice">
View the <a href="#webhooks-delivery-properties">Webhooks Delivery properties</a> for more details on this response.
</aside>
## List all webhook deliveries ##
This API helps you to view all deliveries from a specific webhooks.
### HTTP request ###
<div class="api-endpoint">
<div class="endpoint-data">
<i class="label label-get">GET</i>
<h6>/wp-json/wc/v2/webhooks/&lt;id&gt;/deliveries</h6>
</div>
</div>
```shell
curl https://example.com/wp-json/wc/v2/webhooks/142/deliveries \
-u consumer_key:consumer_secret
```
```javascript
WooCommerce.get("webhooks/142/deliveries")
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.log(error.response.data);
});
```
```php
<?php print_r($woocommerce->get('webhooks/142/deliveries')); ?>
```
```python
print(wcapi.get("webhooks/142/deliveries").json())
```
```ruby
woocommerce.get("webhooks/142/deliveries").parsed_response
```
> JSON response example:
```json
[
{
"id": 54,
"duration": "0.40888",
"summary": "HTTP 200 OK: ok",
"request_method": "POST",
"request_url": "http://requestb.in/1g0sxmo1",
"request_headers": {
"User-Agent": "WooCommerce/2.6.0 Hookshot (WordPress/4.5.2)",
"Content-Type": "application/json",
"X-WC-Webhook-Source": "http://example.com/",
"X-WC-Webhook-Topic": "order.updated",
"X-WC-Webhook-Resource": "order",
"X-WC-Webhook-Event": "updated",
"X-WC-Webhook-Signature": "J72iu7hL93aUt2dFnyOBoBypwbmP6nt6Aor33nnOHxU=",
"X-WC-Webhook-ID": 142,
"X-WC-Webhook-Delivery-ID": 54
},
"request_body": "{\"order\":{\"id\":118,\"order_number\":118,\"order_key\":\"wc_order_5728e9a347a2d\",\"created_at\":\"2016-05-03T18:10:00Z\",\"updated_at\":\"2016-05-16T03:30:30Z\",\"completed_at\":\"2016-05-16T03:29:19Z\",\"status\":\"completed\",\"currency\":\"BRL\",\"total\":\"14.00\",\"subtotal\":\"4.00\",\"total_line_items_quantity\":2,\"total_tax\":\"0.00\",\"total_shipping\":\"10.00\",\"cart_tax\":\"0.00\",\"shipping_tax\":\"0.00\",\"total_discount\":\"0.00\",\"shipping_methods\":\"Flat Rate\",\"payment_details\":{\"method_id\":\"bacs\",\"method_title\":\"Direct Bank Transfer\",\"paid\":true},\"billing_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\",\"company\":\"\",\"address_1\":\"969 Market\",\"address_2\":\"\",\"city\":\"San Francisco\",\"state\":\"CA\",\"postcode\":\"94103\",\"country\":\"US\",\"email\":\"john.doe@claudiosmweb.com\",\"phone\":\"(555) 555-5555\"},\"shipping_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\",\"company\":\"\",\"address_1\":\"969 Market\",\"address_2\":\"\",\"city\":\"San Francisco\",\"state\":\"CA\",\"postcode\":\"94103\",\"country\":\"US\"},\"note\":\"\",\"customer_ip\":\"127.0.0.1\",\"customer_user_agent\":\"curl/7.47.0\",\"customer_id\":0,\"view_order_url\":\"http://example.com/my-account/view-order/118\",\"line_items\":[{\"id\":8,\"subtotal\":\"4.00\",\"subtotal_tax\":\"0.00\",\"total\":\"4.00\",\"total_tax\":\"0.00\",\"price\":\"2.00\",\"quantity\":2,\"tax_class\":null,\"name\":\"Woo Single #2\",\"product_id\":99,\"sku\":\"12345\",\"meta\":[]}],\"shipping_lines\":[{\"id\":9,\"method_id\":\"flat_rate\",\"method_title\":\"Flat Rate\",\"total\":\"10.00\"}],\"tax_lines\":[],\"fee_lines\":[],\"coupon_lines\":[],\"is_vat_exempt\":false,\"customer\":{\"id\":0,\"email\":\"john.doe@claudiosmweb.com\",\"first_name\":\"John\",\"last_name\":\"Doe\",\"billing_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\",\"company\":\"\",\"address_1\":\"969 Market\",\"address_2\":\"\",\"city\":\"San Francisco\",\"state\":\"CA\",\"postcode\":\"94103\",\"country\":\"US\",\"email\":\"john.doe@claudiosmweb.com\",\"phone\":\"(555) 555-5555\"},\"shipping_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\",\"company\":\"\",\"address_1\":\"969 Market\",\"address_2\":\"\",\"city\":\"San Francisco\",\"state\":\"CA\",\"postcode\":\"94103\",\"country\":\"US\"}}}}",
"response_code": "200",
"response_message": "OK",
"response_headers": {
"connection": "close",
"server": "gunicorn/19.3.0",
"date": "Tue, 16 May 2016 03:30:31 GMT",
"content-type": "text/html; charset=utf-8",
"content-length": "2",
"sponsored-by": "https://www.runscope.com",
"via": "1.1 vegur"
},
"response_body": "ok",
"date_created": "2016-05-16T06:30:31",
"date_created_gmt": "2016-05-16T03:30:31",
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142/deliveries/54"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142/deliveries"
}
],
"up": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142"
}
]
}
},
{
"id": 53,
"duration": "0.7615",
"summary": "HTTP 200 OK: ok",
"request_method": "POST",
"request_url": "http://requestb.in/1g0sxmo1",
"request_headers": {
"User-Agent": "WooCommerce/2.6.0 Hookshot (WordPress/4.5.2)",
"Content-Type": "application/json",
"X-WC-Webhook-Source": "http://example.com/",
"X-WC-Webhook-Topic": "order.updated",
"X-WC-Webhook-Resource": "order",
"X-WC-Webhook-Event": "updated",
"X-WC-Webhook-Signature": "Z996ccyueeoqdXZFq2ND2ETpsPGrXmWKj+yvQ0c2N1w=",
"X-WC-Webhook-ID": 142,
"X-WC-Webhook-Delivery-ID": 53
},
"request_body": "{\"order\":{\"id\":118,\"order_number\":118,\"order_key\":\"wc_order_5728e9a347a2d\",\"created_at\":\"2016-05-03T18:10:00Z\",\"updated_at\":\"2016-05-16T03:29:13Z\",\"completed_at\":\"2016-05-16T03:29:19Z\",\"status\":\"completed\",\"currency\":\"BRL\",\"total\":\"14.00\",\"subtotal\":\"4.00\",\"total_line_items_quantity\":2,\"total_tax\":\"0.00\",\"total_shipping\":\"10.00\",\"cart_tax\":\"0.00\",\"shipping_tax\":\"0.00\",\"total_discount\":\"0.00\",\"shipping_methods\":\"Flat Rate\",\"payment_details\":{\"method_id\":\"bacs\",\"method_title\":\"Direct Bank Transfer\",\"paid\":true},\"billing_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\",\"company\":\"\",\"address_1\":\"969 Market\",\"address_2\":\"\",\"city\":\"San Francisco\",\"state\":\"CA\",\"postcode\":\"94103\",\"country\":\"US\",\"email\":\"john.doe@claudiosmweb.com\",\"phone\":\"(555) 555-5555\"},\"shipping_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\",\"company\":\"\",\"address_1\":\"969 Market\",\"address_2\":\"\",\"city\":\"San Francisco\",\"state\":\"CA\",\"postcode\":\"94103\",\"country\":\"US\"},\"note\":\"\",\"customer_ip\":\"127.0.0.1\",\"customer_user_agent\":\"curl/7.47.0\",\"customer_id\":0,\"view_order_url\":\"http://example.com/my-account/view-order/118\",\"line_items\":[{\"id\":8,\"subtotal\":\"4.00\",\"subtotal_tax\":\"0.00\",\"total\":\"4.00\",\"total_tax\":\"0.00\",\"price\":\"2.00\",\"quantity\":2,\"tax_class\":null,\"name\":\"Woo Single #2\",\"product_id\":99,\"sku\":\"12345\",\"meta\":[]}],\"shipping_lines\":[{\"id\":9,\"method_id\":\"flat_rate\",\"method_title\":\"Flat Rate\",\"total\":\"10.00\"}],\"tax_lines\":[],\"fee_lines\":[],\"coupon_lines\":[],\"is_vat_exempt\":false,\"customer\":{\"id\":0,\"email\":\"john.doe@claudiosmweb.com\",\"first_name\":\"John\",\"last_name\":\"Doe\",\"billing_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\",\"company\":\"\",\"address_1\":\"969 Market\",\"address_2\":\"\",\"city\":\"San Francisco\",\"state\":\"CA\",\"postcode\":\"94103\",\"country\":\"US\",\"email\":\"john.doe@claudiosmweb.com\",\"phone\":\"(555) 555-5555\"},\"shipping_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\",\"company\":\"\",\"address_1\":\"969 Market\",\"address_2\":\"\",\"city\":\"San Francisco\",\"state\":\"CA\",\"postcode\":\"94103\",\"country\":\"US\"}}}}",
"response_code": "200",
"response_message": "OK",
"response_headers": {
"connection": "close",
"server": "gunicorn/19.3.0",
"date": "Tue, 16 May 2016 03:29:20 GMT",
"content-type": "text/html; charset=utf-8",
"content-length": "2",
"sponsored-by": "https://www.runscope.com",
"via": "1.1 vegur"
},
"response_body": "ok",
"date_created": "2016-05-16T06:29:19",
"date_created_gmt": "2016-05-16T03:29:19",
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142/deliveries/53"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142/deliveries"
}
],
"up": [
{
"href": "https://example.com/wp-json/wc/v2/webhooks/142"
}
]
}
}
]
```