From c887a22a3d79b73f3b9aaa0e3b6204a5a111c4d8 Mon Sep 17 00:00:00 2001 From: Dan Date: Thu, 23 Jul 2026 13:56:26 +0300 Subject: [PATCH 1/3] OpenAPI 1.21.1 --- CHANGELOG.md | 11 + README.md | 486 ++++++++++++++++++++++++++++++++- src/AudienceSegments.php | 11 + src/Campaigns.php | 3 + src/Components.php | 25 ++ src/EmailMessages.php | 13 + src/EventPatterns.php | 38 +++ src/LoopsClient.php | 2 + src/Themes.php | 25 ++ src/Workflows.php | 170 ++++++++++++ tests/AudienceSegmentsTest.php | 46 ++++ tests/ComponentsTest.php | 64 +++++ tests/EmailMessagesTest.php | 62 +++++ tests/EventPatternsTest.php | 83 ++++++ tests/ThemesTest.php | 61 +++++ tests/WorkflowsTest.php | 294 +++++++++++++++++++- 16 files changed, 1387 insertions(+), 7 deletions(-) create mode 100644 src/EventPatterns.php create mode 100644 tests/EventPatternsTest.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 22ad4a0..6626ddf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## v3.2.0 - Jul 23, 2026 + +OpenAPI 1.21.1: + +- Added workflow write APIs: `workflows->create()`, `workflows->update()`, `workflows->changeMailingList()`, `workflows->createNode()`, `workflows->updateNode()`, `workflows->deleteNode()`, `workflows->addBranch()`, and `workflows->deleteNodeRecursive()`. +- Added `eventPatterns->list()`, `eventPatterns->get()`, and `eventPatterns->getByName()`. +- Added `audienceSegments->create()`. +- Added `themes->create()` / `themes->update()` and `components->create()` / `components->update()`. +- Added `emailMessages->guardian()` and extra update fields (`cc_email`, `bcc_email`, `language_code`, `email_format`). +- `campaigns->update()` now rejects empty payloads. + ## v3.1.1 - Jun 30, 2026 `$name` is no longer required when updating campaigns. diff --git a/README.md b/README.md index 5f80839..00f3465 100644 --- a/README.md +++ b/README.md @@ -118,8 +118,12 @@ You can use custom contact properties in API calls. Please make sure to [add cus - [dedicatedSendingIps->list()](#dedicatedsendingips-list) - [themes->list()](#themes-list) - [themes->get()](#themes-get) +- [themes->create()](#themes-create) +- [themes->update()](#themes-update) - [components->list()](#components-list) - [components->get()](#components-get) +- [components->create()](#components-create) +- [components->update()](#components-update) - [campaigns->list()](#campaigns-list) - [campaigns->create()](#campaigns-create) - [campaigns->get()](#campaigns-get) @@ -129,13 +133,26 @@ You can use custom contact properties in API calls. Please make sure to [add cus - [campaignGroups->get()](#campaigngroups-get) - [campaignGroups->update()](#campaigngroups-update) - [audienceSegments->list()](#audiencesegments-list) +- [audienceSegments->create()](#audiencesegments-create) - [audienceSegments->get()](#audiencesegments-get) - [workflows->list()](#workflows-list) +- [workflows->create()](#workflows-create) - [workflows->get()](#workflows-get) +- [workflows->update()](#workflows-update) +- [workflows->changeMailingList()](#workflows-changemailinglist) - [workflows->getNode()](#workflows-getnode) +- [workflows->createNode()](#workflows-createnode) +- [workflows->updateNode()](#workflows-updatenode) +- [workflows->deleteNode()](#workflows-deletenode) +- [workflows->addBranch()](#workflows-addbranch) +- [workflows->deleteNodeRecursive()](#workflows-deletenoderecursive) +- [eventPatterns->list()](#eventpatterns-list) +- [eventPatterns->get()](#eventpatterns-get) +- [eventPatterns->getByName()](#eventpatterns-getbyname) - [emailMessages->get()](#emailmessages-get) - [emailMessages->update()](#emailmessages-update) - [emailMessages->preview()](#emailmessages-preview) +- [emailMessages->guardian()](#emailmessages-guardian) - [transactionalGroups->list()](#transactionalgroups-list) - [transactionalGroups->create()](#transactionalgroups-create) - [transactionalGroups->get()](#transactionalgroups-get) @@ -1159,6 +1176,57 @@ $result = $loops->themes->get(theme_id: 'clo5p8q0r0132ntx6flkunw89'); --- +### themes->create() + +Create an email theme. + +[API Reference](https://loops.so/docs/api-reference/create-theme) + +#### Parameters + +| Name | Type | Required | Notes | +| --------- | ------ | -------- | --------------------------------------------------------------------- | +| `$name` | string | Yes | The theme name. | +| `$styles` | array | No | Style attributes matching LMX `