Автоматизации
`automations->list`, `get`, `create`, `update`, `publish`, `pause`, `resume`, `archive`, `duplicate`, `delete`, `sendTest`, `stats`, `listVersions`, `restoreVersion`, `listStarters`, `listEnrollments`, `getEnrollment`, `enroll` и `exitEnrollment`, а также `events->send`, `sendBatch` и `listNames`.
Все методы
use OpenEmail\Constants\AutomationEnrollmentStatuses;use OpenEmail\Constants\AutomationTriggerKinds; $automation = $client->automations->create([ 'name' => 'Welcome series', 'starter' => 'welcome-series', 'settings' => ['timezone' => 'Europe/London'],]); $definition = $automation['definition'];$definition['trigger'] = ['kind' => AutomationTriggerKinds::EVENT, 'eventName' => 'trial.started', 'filters' => []]; $saved = $client->automations->update($automation['id'], [ 'definition' => $definition, 'expectedUpdatedAt' => $automation['updatedAt'],]); foreach ($saved['problems'] as $problem) { if ($problem['blocking']) { throw new \RuntimeException($problem['message']); }} $client->automations->sendTest($saved['id'], ['stepKey' => $saved['definition']['entry'] ?? '']);$live = $client->automations->publish($saved['id']); $sent = $client->events->send([ 'name' => 'trial.started', 'email' => '[email protected]', 'properties' => ['plan' => 'starter'], 'createContact' => true,], idempotencyKey: 'trial:[email protected]'); foreach ($client->automations->iterateEnrollments($live['id'], status: AutomationEnrollmentStatuses::ACTIVE) as $enrollment) { if ($enrollment['heldFor'] !== null) { echo $enrollment['contact']['email'], ' ', $enrollment['heldFor'], PHP_EOL; }} $stats = $client->automations->stats($live['id']);$history = $client->contacts->listEvents('[email protected]', name: 'trial.started'); $client->automations->pause($live['id']);$client->automations->resume($live['id']); echo count($sent['enrolled']), ' ', $stats['totals']['entered'], ' ', count($history->items), PHP_EOL;Автоматизация хранит definition черновика и работающую версию published. update меняет черновик и настройки, а publish фиксирует черновик как следующую версию и включает автоматизацию. problems говорит, что ещё мешает опубликовать черновик, а expectedUpdatedAt отклоняет с 409 version_conflict сохранение, которое перезаписало бы чужое.
Для чтения нужен automations:read, а для изменения automations:write. publish, resume и sendTest требуют ещё и emails:send. events->send и events->sendBatch требуют contacts:write, а contacts->listEvents требует contacts:read. delete спрашивает код подтверждения у токена доступа OAuth и никогда не спрашивает у API-ключа.
events->sendBatch принимает до 100 событий и никогда не выбрасывает исключение из-за одного плохого события: ответ перечисляет accepted и failed, каждое с index события в отправленном вами массиве.
В attributes контакта лежат свои поля, а автоматизация читает любое из них как attributes.<key>.