From 49562cb201e0121eb89329e1598188de703ae5bc Mon Sep 17 00:00:00 2001 From: Jarrod Swift Date: Tue, 28 Mar 2023 13:13:22 +1030 Subject: [PATCH 1/9] Add "Get a Webhook" endpoint #187 --- src/BigCommerce/Api/Webhooks/WebhooksApi.php | 24 +++++++++++++++++++ src/BigCommerce/Client.php | 6 +++++ .../ResourceModels/ResourceModel.php | 9 +++++++ .../ResourceModels/Webhook/Webhook.php | 24 +++++++++++++++++++ .../Webhook/WebhookResponse.php | 22 +++++++++++++++++ .../Api/Webhooks/WebhooksApiTest.php | 17 +++++++++++++ .../BigCommerce/responses/webhooks__get.json | 16 +++++++++++++ 7 files changed, 118 insertions(+) create mode 100644 src/BigCommerce/Api/Webhooks/WebhooksApi.php create mode 100644 src/BigCommerce/ResourceModels/Webhook/Webhook.php create mode 100644 src/BigCommerce/ResponseModels/Webhook/WebhookResponse.php create mode 100644 tests/BigCommerce/Api/Webhooks/WebhooksApiTest.php create mode 100644 tests/BigCommerce/responses/webhooks__get.json diff --git a/src/BigCommerce/Api/Webhooks/WebhooksApi.php b/src/BigCommerce/Api/Webhooks/WebhooksApi.php new file mode 100644 index 00000000..14cb7c8b --- /dev/null +++ b/src/BigCommerce/Api/Webhooks/WebhooksApi.php @@ -0,0 +1,24 @@ +getResource()); + } +} diff --git a/src/BigCommerce/Client.php b/src/BigCommerce/Client.php index 26557145..fd8e4c6a 100644 --- a/src/BigCommerce/Client.php +++ b/src/BigCommerce/Client.php @@ -15,6 +15,7 @@ use BigCommerce\ApiV3\Api\Sites\SitesApi; use BigCommerce\ApiV3\Api\StoreLogs\StoreLogsApi; use BigCommerce\ApiV3\Api\Themes\ThemesApi; +use BigCommerce\ApiV3\Api\Webhooks\WebhooksApi; use BigCommerce\ApiV3\Api\Widgets\WidgetsApi; use BigCommerce\ApiV3\Api\CustomTemplateAssociations\CustomTemplateAssociationsApi; use BigCommerce\ApiV3\Api\Wishlists\WishlistsApi; @@ -223,6 +224,11 @@ public function storeLogs(): StoreLogsApi return new StoreLogsApi($this); } + public function webhook(int $id): WebhooksApi + { + return new WebhooksApi($this, $id); + } + protected function defaultBaseUrl(): string { return self::API_URI; diff --git a/src/BigCommerce/ResourceModels/ResourceModel.php b/src/BigCommerce/ResourceModels/ResourceModel.php index 12ab1877..76a6ede1 100644 --- a/src/BigCommerce/ResourceModels/ResourceModel.php +++ b/src/BigCommerce/ResourceModels/ResourceModel.php @@ -54,6 +54,15 @@ protected function buildPropertyObject(string $property, string $className): voi } } + protected function buildHashArray(string $property): void + { + if (!is_null($this->optionObject) && isset($this->optionObject->$property)) { + $this->$property = (array) $this->optionObject->$property; + + unset($this->optionObject->$property); + } + } + /** * Override this function to implement custom build functionality */ diff --git a/src/BigCommerce/ResourceModels/Webhook/Webhook.php b/src/BigCommerce/ResourceModels/Webhook/Webhook.php new file mode 100644 index 00000000..66634cdd --- /dev/null +++ b/src/BigCommerce/ResourceModels/Webhook/Webhook.php @@ -0,0 +1,24 @@ +webhook; + } + + protected function addData(stdClass $rawData): void + { + $this->webhook = new Webhook($rawData); + } +} diff --git a/tests/BigCommerce/Api/Webhooks/WebhooksApiTest.php b/tests/BigCommerce/Api/Webhooks/WebhooksApiTest.php new file mode 100644 index 00000000..dfda0004 --- /dev/null +++ b/tests/BigCommerce/Api/Webhooks/WebhooksApiTest.php @@ -0,0 +1,17 @@ +setReturnData('webhooks__get.json'); + $webhook = $this->getApi()->webhook(18048287)->get()->getWebhook(); + + $this->assertEquals('https://665b65a6.ngrok.io/webhooks', $webhook->destination); + $this->assertEquals('string', $webhook->headers['custom']); + } +} \ No newline at end of file diff --git a/tests/BigCommerce/responses/webhooks__get.json b/tests/BigCommerce/responses/webhooks__get.json new file mode 100644 index 00000000..26f26ef8 --- /dev/null +++ b/tests/BigCommerce/responses/webhooks__get.json @@ -0,0 +1,16 @@ +{ + "data": { + "id": 18048287, + "client_id": "m9r6keqmo7h7f23btnpwernbez1kglkl", + "store_hash": "sftg45fsd", + "created_at": 1561488106, + "updated_at": 1561488106, + "scope": "store/order/*", + "destination": "https://665b65a6.ngrok.io/webhooks", + "is_active": true, + "headers": { + "custom": "string" + } + }, + "meta": {} +} \ No newline at end of file From 248fceeb6fe861ab96a747fc6ab59c8e6e7f2337 Mon Sep 17 00:00:00 2001 From: Jarrod Swift Date: Wed, 29 Mar 2023 15:12:59 +1030 Subject: [PATCH 2/9] Add "Get Webhooks" endpoint #187 --- src/BigCommerce/Api/Webhooks/WebhooksApi.php | 31 ++++++++++++++----- src/BigCommerce/Client.php | 5 +++ .../Webhook/WebhooksResponse.php | 21 +++++++++++++ .../Api/Webhooks/WebhooksApiTest.php | 9 +++++- .../responses/webhooks__get_all.json | 16 ++++++++++ 5 files changed, 73 insertions(+), 9 deletions(-) create mode 100644 src/BigCommerce/ResponseModels/Webhook/WebhooksResponse.php create mode 100644 tests/BigCommerce/responses/webhooks__get_all.json diff --git a/src/BigCommerce/Api/Webhooks/WebhooksApi.php b/src/BigCommerce/Api/Webhooks/WebhooksApi.php index 14cb7c8b..ceb372ff 100644 --- a/src/BigCommerce/Api/Webhooks/WebhooksApi.php +++ b/src/BigCommerce/Api/Webhooks/WebhooksApi.php @@ -2,23 +2,38 @@ namespace BigCommerce\ApiV3\Api\Webhooks; -use BigCommerce\ApiV3\Api\Generic\GetResource; -use BigCommerce\ApiV3\Api\Generic\V3ApiBase; +use BigCommerce\ApiV3\Api\Generic\ResourceApi; use BigCommerce\ApiV3\ResponseModels\Webhook\WebhookResponse; +use BigCommerce\ApiV3\ResponseModels\Webhook\WebhooksResponse; -class WebhooksApi extends V3ApiBase +class WebhooksApi extends ResourceApi { - use GetResource; - public const WEBHOOK_ENDPOINT = 'hooks/%d'; + public const WEBHOOKS_ENDPOINT = 'hooks'; + public const RESOURCE_NAME = 'hooks'; - public function singleResourceUrl(): string + public function get(): WebhookResponse + { + return new WebhookResponse($this->getResource()); + } + + protected function singleResourceEndpoint(): string { return self::WEBHOOK_ENDPOINT; } - public function get(): WebhookResponse + protected function multipleResourcesEndpoint(): string { - return new WebhookResponse($this->getResource()); + return self::WEBHOOKS_ENDPOINT; + } + + protected function resourceName(): string + { + return self::RESOURCE_NAME; + } + + public function getAll(array $filters = [], int $page = 1, int $limit = 250): WebhooksResponse + { + return new WebhooksResponse($this->getAllResources($filters, $page, $limit)); } } diff --git a/src/BigCommerce/Client.php b/src/BigCommerce/Client.php index fd8e4c6a..16a5f1f2 100644 --- a/src/BigCommerce/Client.php +++ b/src/BigCommerce/Client.php @@ -229,6 +229,11 @@ public function webhook(int $id): WebhooksApi return new WebhooksApi($this, $id); } + public function webhooks(): WebhooksApi + { + return new WebhooksApi($this); + } + protected function defaultBaseUrl(): string { return self::API_URI; diff --git a/src/BigCommerce/ResponseModels/Webhook/WebhooksResponse.php b/src/BigCommerce/ResponseModels/Webhook/WebhooksResponse.php new file mode 100644 index 00000000..67d132ac --- /dev/null +++ b/src/BigCommerce/ResponseModels/Webhook/WebhooksResponse.php @@ -0,0 +1,21 @@ +getData(); + } + protected function resourceClass(): string + { + return Webhook::class; + } +} diff --git a/tests/BigCommerce/Api/Webhooks/WebhooksApiTest.php b/tests/BigCommerce/Api/Webhooks/WebhooksApiTest.php index dfda0004..94f44663 100644 --- a/tests/BigCommerce/Api/Webhooks/WebhooksApiTest.php +++ b/tests/BigCommerce/Api/Webhooks/WebhooksApiTest.php @@ -14,4 +14,11 @@ public function testCanGetWebhook() $this->assertEquals('https://665b65a6.ngrok.io/webhooks', $webhook->destination); $this->assertEquals('string', $webhook->headers['custom']); } -} \ No newline at end of file + + public function testCanGetWebhooks() + { + $this->setReturnData('webhooks__get_all.json'); + $webhooks = $this->getApi()->webhooks()->getAll()->getWebhooks(); + $this->assertEquals('store/order/*', $webhooks[0]->scope); + } +} diff --git a/tests/BigCommerce/responses/webhooks__get_all.json b/tests/BigCommerce/responses/webhooks__get_all.json new file mode 100644 index 00000000..727bebd9 --- /dev/null +++ b/tests/BigCommerce/responses/webhooks__get_all.json @@ -0,0 +1,16 @@ +{ + "data": [{ + "id": 18048287, + "client_id": "m9r6keqmo7h7f23btnpwernbez1kglkl", + "store_hash": "sftg45fsd", + "created_at": 1561488106, + "updated_at": 1561488106, + "scope": "store/order/*", + "destination": "https://665b65a6.ngrok.io/webhooks", + "is_active": true, + "headers": { + "custom": "string" + } + }], + "meta": {} +} \ No newline at end of file From 976196ebf8dcd551ff55d7225f747fbcc4260935 Mon Sep 17 00:00:00 2001 From: Jarrod Swift Date: Wed, 29 Mar 2023 15:25:35 +1030 Subject: [PATCH 3/9] Add Create and Update a Webhook endpoints #187 --- src/BigCommerce/Api/Webhooks/WebhooksApi.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/BigCommerce/Api/Webhooks/WebhooksApi.php b/src/BigCommerce/Api/Webhooks/WebhooksApi.php index ceb372ff..f3b655f4 100644 --- a/src/BigCommerce/Api/Webhooks/WebhooksApi.php +++ b/src/BigCommerce/Api/Webhooks/WebhooksApi.php @@ -3,6 +3,7 @@ namespace BigCommerce\ApiV3\Api\Webhooks; use BigCommerce\ApiV3\Api\Generic\ResourceApi; +use BigCommerce\ApiV3\ResourceModels\Webhook\Webhook; use BigCommerce\ApiV3\ResponseModels\Webhook\WebhookResponse; use BigCommerce\ApiV3\ResponseModels\Webhook\WebhooksResponse; @@ -17,6 +18,20 @@ public function get(): WebhookResponse return new WebhookResponse($this->getResource()); } + /** + * Creates a webhook. Only one webhook at a time can be created. Custom headers can be added. + * Destination URL must be served on port 443 (custom ports are not currently supported). + */ + public function create(Webhook $webhook): WebhookResponse + { + return new WebhookResponse($this->createResource($webhook)); + } + + public function update(Webhook $webhook): WebhookResponse + { + return new WebhookResponse($this->updateResource($webhook)); + } + protected function singleResourceEndpoint(): string { return self::WEBHOOK_ENDPOINT; From 66a79fa727e3d797b5131856ce462f823de976e8 Mon Sep 17 00:00:00 2001 From: Jarrod Swift Date: Thu, 30 Mar 2023 13:31:44 +1030 Subject: [PATCH 4/9] Add Webhook Events endpoint #187 --- .../Api/Webhooks/WebhookEventsApi.php | 27 +++++++++++++++++++ src/BigCommerce/Api/Webhooks/WebhooksApi.php | 7 ++++- .../ResourceModels/Webhook/WebhookEvent.php | 15 +++++++++++ .../Webhook/WebhookEventsResponse.php | 22 +++++++++++++++ .../Api/Webhooks/WebhookEventsApiTest.php | 16 +++++++++++ .../responses/webhooks__events__get_all.json | 24 +++++++++++++++++ 6 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 src/BigCommerce/Api/Webhooks/WebhookEventsApi.php create mode 100644 src/BigCommerce/ResourceModels/Webhook/WebhookEvent.php create mode 100644 src/BigCommerce/ResponseModels/Webhook/WebhookEventsResponse.php create mode 100644 tests/BigCommerce/Api/Webhooks/WebhookEventsApiTest.php create mode 100644 tests/BigCommerce/responses/webhooks__events__get_all.json diff --git a/src/BigCommerce/Api/Webhooks/WebhookEventsApi.php b/src/BigCommerce/Api/Webhooks/WebhookEventsApi.php new file mode 100644 index 00000000..73e6a3b7 --- /dev/null +++ b/src/BigCommerce/Api/Webhooks/WebhookEventsApi.php @@ -0,0 +1,27 @@ +getAllResources($filters, $page, $limit)); + } +} diff --git a/src/BigCommerce/Api/Webhooks/WebhooksApi.php b/src/BigCommerce/Api/Webhooks/WebhooksApi.php index f3b655f4..980307e9 100644 --- a/src/BigCommerce/Api/Webhooks/WebhooksApi.php +++ b/src/BigCommerce/Api/Webhooks/WebhooksApi.php @@ -27,7 +27,7 @@ public function create(Webhook $webhook): WebhookResponse return new WebhookResponse($this->createResource($webhook)); } - public function update(Webhook $webhook): WebhookResponse + public function update(Webhook $webhook): WebhookResponse { return new WebhookResponse($this->updateResource($webhook)); } @@ -51,4 +51,9 @@ public function getAll(array $filters = [], int $page = 1, int $limit = 250): We { return new WebhooksResponse($this->getAllResources($filters, $page, $limit)); } + + public function events(): WebhookEventsApi + { + return new WebhookEventsApi($this->getClient()); + } } diff --git a/src/BigCommerce/ResourceModels/Webhook/WebhookEvent.php b/src/BigCommerce/ResourceModels/Webhook/WebhookEvent.php new file mode 100644 index 00000000..919d4d6c --- /dev/null +++ b/src/BigCommerce/ResourceModels/Webhook/WebhookEvent.php @@ -0,0 +1,15 @@ +getData(); + } + + protected function resourceClass(): string + { + return WebhookEvent::class; + } +} diff --git a/tests/BigCommerce/Api/Webhooks/WebhookEventsApiTest.php b/tests/BigCommerce/Api/Webhooks/WebhookEventsApiTest.php new file mode 100644 index 00000000..651629db --- /dev/null +++ b/tests/BigCommerce/Api/Webhooks/WebhookEventsApiTest.php @@ -0,0 +1,16 @@ +setReturnData('webhooks__events__get_all.json'); + $events = $this->getApi()->webhooks()->events()->getAll()->getEvents(); + + $this->assertEquals('store/sku/inventory/updated', $events[0]->scope); + } +} diff --git a/tests/BigCommerce/responses/webhooks__events__get_all.json b/tests/BigCommerce/responses/webhooks__events__get_all.json new file mode 100644 index 00000000..c84307a3 --- /dev/null +++ b/tests/BigCommerce/responses/webhooks__events__get_all.json @@ -0,0 +1,24 @@ +{ + "data": [ + { + "scope": "store/sku/inventory/updated", + "store_id": "25967773", + "data": { + "product": "new", + "stock": 123 + }, + "hash": "0c20013b66c630f5c7473eef26bd71089bb461b4", + "created_at": 1680144702, + "producer": "stores/xxbwhvt3gd" + } + ], + "meta": { + "pagination": { + "total": 1, + "count": 1, + "per_page": 250, + "current_page": 1, + "total_pages": 1 + } + } +} \ No newline at end of file From 89a1fef5220f1f0c673ca89ba273de3324d39445 Mon Sep 17 00:00:00 2001 From: Jarrod Swift Date: Thu, 30 Mar 2023 14:41:52 +1030 Subject: [PATCH 5/9] Add Webhook Admin endpoints #187 --- .../Api/Webhooks/WebhookAdminApi.php | 41 +++++++++++++++++++ src/BigCommerce/Api/Webhooks/WebhooksApi.php | 5 +++ .../ResourceModels/Webhook/BlockedDomain.php | 22 ++++++++++ .../Webhook/BlockedDomainReason.php | 12 ++++++ .../ResourceModels/Webhook/Webhook.php | 4 +- .../Webhook/WebhookAdminInfo.php | 28 +++++++++++++ .../Webhook/AdminInfoResponse.php | 22 ++++++++++ .../Api/Webhooks/WebhookAdminApiTest.php | 16 ++++++++ .../responses/webhooks__admin__get.json | 35 ++++++++++++++++ 9 files changed, 183 insertions(+), 2 deletions(-) create mode 100644 src/BigCommerce/Api/Webhooks/WebhookAdminApi.php create mode 100644 src/BigCommerce/ResourceModels/Webhook/BlockedDomain.php create mode 100644 src/BigCommerce/ResourceModels/Webhook/BlockedDomainReason.php create mode 100644 src/BigCommerce/ResourceModels/Webhook/WebhookAdminInfo.php create mode 100644 src/BigCommerce/ResponseModels/Webhook/AdminInfoResponse.php create mode 100644 tests/BigCommerce/Api/Webhooks/WebhookAdminApiTest.php create mode 100644 tests/BigCommerce/responses/webhooks__admin__get.json diff --git a/src/BigCommerce/Api/Webhooks/WebhookAdminApi.php b/src/BigCommerce/Api/Webhooks/WebhookAdminApi.php new file mode 100644 index 00000000..ae1d834d --- /dev/null +++ b/src/BigCommerce/Api/Webhooks/WebhookAdminApi.php @@ -0,0 +1,41 @@ + $isActive]; + return new AdminInfoResponse($this->getResource($filter)); + } + + /** + * Update email addresses that are sent notification emails when any domain associated with the API account + * is denylisted or when a webhook is deactivated. Supports upsert functionality in the case that no email + * address exists yet. + */ + public function upsertEmails(array $emails): void + { + $this->getClient()->getRestClient()->put( + $this->singleResourceUrl(), + [ + RequestOptions::JSON => ['emails' => $emails] + ] + ); + } +} diff --git a/src/BigCommerce/Api/Webhooks/WebhooksApi.php b/src/BigCommerce/Api/Webhooks/WebhooksApi.php index 980307e9..255b7b13 100644 --- a/src/BigCommerce/Api/Webhooks/WebhooksApi.php +++ b/src/BigCommerce/Api/Webhooks/WebhooksApi.php @@ -56,4 +56,9 @@ public function events(): WebhookEventsApi { return new WebhookEventsApi($this->getClient()); } + + public function admin(): WebhookAdminApi + { + return new WebhookAdminApi($this->getClient()); + } } diff --git a/src/BigCommerce/ResourceModels/Webhook/BlockedDomain.php b/src/BigCommerce/ResourceModels/Webhook/BlockedDomain.php new file mode 100644 index 00000000..270a8e5d --- /dev/null +++ b/src/BigCommerce/ResourceModels/Webhook/BlockedDomain.php @@ -0,0 +1,22 @@ +adminInfo; + } + + protected function addData(stdClass $rawData): void + { + $this->adminInfo = new WebhookAdminInfo($rawData); + } +} diff --git a/tests/BigCommerce/Api/Webhooks/WebhookAdminApiTest.php b/tests/BigCommerce/Api/Webhooks/WebhookAdminApiTest.php new file mode 100644 index 00000000..68521717 --- /dev/null +++ b/tests/BigCommerce/Api/Webhooks/WebhookAdminApiTest.php @@ -0,0 +1,16 @@ +setReturnData('webhooks__admin__get.json'); + $info = $this->getApi()->webhooks()->admin()->get()->getAdminInfo(); + + $this->assertEquals('https://httpstat.us/200', $info->hooks_list[1]->destination); + } +} diff --git a/tests/BigCommerce/responses/webhooks__admin__get.json b/tests/BigCommerce/responses/webhooks__admin__get.json new file mode 100644 index 00000000..32658a18 --- /dev/null +++ b/tests/BigCommerce/responses/webhooks__admin__get.json @@ -0,0 +1,35 @@ +{ + "data": { + "emails": [ + "jarrod.swift@aligent.com.au" + ], + "hooks_list": [ + { + "id": 25967773, + "client_id": "6qczasxdcbgvjubghnynimwthwr", + "store_hash": "xxabcdt9gd", + "scope": "store/sku/inventory/updated", + "destination": "https://aligent.com.au/test", + "headers": null, + "is_active": true, + "created_at": 1680144702, + "updated_at": 1680144702, + "events_history_enabled": false + }, + { + "id": 25967774, + "client_id": "6qczasxdcbgvjubghnynimwthwr", + "store_hash": "xxabcdt9gd", + "scope": "store/sku/inventory/updated", + "destination": "https://httpstat.us/200", + "headers": null, + "is_active": true, + "created_at": 1680144907, + "updated_at": 1680144907, + "events_history_enabled": false + } + ], + "blocked_domains": [] + }, + "meta": {} +} \ No newline at end of file From 8b5f176f3e509f41ab65fc5c336d452e8ce31a4a Mon Sep 17 00:00:00 2001 From: Jarrod Swift Date: Thu, 30 Mar 2023 16:41:30 +1030 Subject: [PATCH 6/9] Empty release notes --- RELEASE_NOTES.md | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 7b3f737b..e7dde534 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,16 +1,6 @@ -This release adds support for a number of new and extended BigCommerce V3 API endpoints. -### New Features +### Issues Fixed -- Implement the [System Logs](https://developer.bigcommerce.com/api-reference/6908d02370409-get-system-logs) - endpoint (#185) -- Implement the [Pages](https://developer.bigcommerce.com/api-reference/d74089ee212a2-delete-pages) API (#184) -- Implement extra Customer V3 endpoints (#181): - - [Get stored instruments](https://developer.bigcommerce.com/api-reference/b735a25b3a0b8-get-stored-instruments) - - [Customer Settings](https://developer.bigcommerce.com/api-reference/0c31a6d25e5ea-get-customer-settings) - - [Customer Settings per Channel](https://developer.bigcommerce.com/api-reference/d5e66c45b0415-get-customer-settings-per-channel) - - [Validate credentials](https://developer.bigcommerce.com/api-reference/3d731215a3dcb-validate-a-customer-credentials) -- Add the ability to send and receive Images via the Product API, not just the Product Images api (#175) -- Implement the [Wishlists](https://developer.bigcommerce.com/api-reference/03d6065d6f6e5-wishlist) API (#186) +### New Features From 5ab3d41d79f29e85bde7133185656cf5c918b066 Mon Sep 17 00:00:00 2001 From: Andrew Minion Date: Tue, 2 May 2023 13:52:17 -0500 Subject: [PATCH 7/9] allow nullable product meta_description --- src/BigCommerce/ResourceModels/Catalog/Product/Product.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BigCommerce/ResourceModels/Catalog/Product/Product.php b/src/BigCommerce/ResourceModels/Catalog/Product/Product.php index 6c98df79..d9bfa981 100644 --- a/src/BigCommerce/ResourceModels/Catalog/Product/Product.php +++ b/src/BigCommerce/ResourceModels/Catalog/Product/Product.php @@ -63,7 +63,7 @@ class Product extends ResourceModel public int $order_quantity_maximum; public string $page_title; public array $meta_keywords; - public string $meta_description; + public ?string $meta_description; public string $date_created; public string $date_modified; public int $view_count; From eb573d591b9e2bf6c9910d284d6b21d260eb8543 Mon Sep 17 00:00:00 2001 From: Jarrod Swift Date: Fri, 5 May 2023 14:13:49 +0930 Subject: [PATCH 8/9] Update release notes --- RELEASE_NOTES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index b0c11e78..4f206bc8 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,7 @@ ### Issues Fixed + ### New Features +Adds support for Webhooks API (#187) From 4d3638689dcf65b2c13aa321417dd47980cd705c Mon Sep 17 00:00:00 2001 From: Jarrod Swift Date: Fri, 5 May 2023 14:24:25 +0930 Subject: [PATCH 9/9] Update release notes for 1.12 --- RELEASE_NOTES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 4f206bc8..d2bbf4f0 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,6 +1,7 @@ ### Issues Fixed +Allow null `meta_description` on Product (Thanks @macbookandrew) ### New Features