Automatisations
`automations.list`, `get`, `create`, `update`, `publish`, `pause`, `resume`, `archive`, `duplicate`, `delete`, `sendTest`, `stats`, `listVersions`, `restoreVersion`, `listStarters`, `listEnrollments`, `getEnrollment`, `enroll` et `exitEnrollment`, avec `events.send`, `sendBatch` et `listNames`.
Toutes les méthodes
const automation = await openemail.automations.create({ name: 'Welcome series', starter: 'welcome-series', settings: { timezone: 'Europe/London' },}) const saved = await openemail.automations.update(automation.id, { definition: { ...automation.definition, trigger: { kind: 'event', eventName: 'trial.started', filters: [] } }, expectedUpdatedAt: automation.updatedAt,}) if (saved.problems.some((problem) => problem.blocking)) throw new Error(saved.problems[0]?.message) await openemail.automations.sendTest(saved.id, { stepKey: saved.definition.entry ?? '' })const live = await openemail.automations.publish(saved.id) const sent = await openemail.events.send( { name: 'trial.started', email: '[email protected]', properties: { plan: 'starter' }, createContact: true }, { idempotencyKey: 'trial:[email protected]' },) for await (const enrollment of openemail.automations.iterateEnrollments(live.id, { status: 'active' })) { if (enrollment.heldFor) console.log(enrollment.contact.email, enrollment.heldFor)} const stats = await openemail.automations.stats(live.id)const history = await openemail.contacts.listEvents('[email protected]', { name: 'trial.started' }) await openemail.automations.pause(live.id)await openemail.automations.resume(live.id) console.log(sent.enrolled, stats.totals.entered, history.items.length)Une automatisation garde une definition de brouillon et la version published qui s'exécute. update modifie le brouillon et les paramètres, et publish fige le brouillon comme prochaine version et active l'automatisation. problems dit ce qui empêche encore la publication d'un brouillon, et expectedUpdatedAt refuse avec 409 version_conflict un enregistrement qui écraserait celui de quelqu'un d'autre.
La lecture nécessite automations:read et la modification automations:write. publish, resume et sendTest nécessitent aussi emails:send. events.send et events.sendBatch nécessitent contacts:write, et contacts.listEvents nécessite contacts:read. delete demande un code de vérification à un jeton d'accès OAuth, jamais à une clé API.
events.sendBatch accepte jusqu'à 100 événements et ne lève jamais d'exception pour un seul événement invalide : la réponse liste accepted et failed, chacun avec l'index de l'événement dans le tableau envoyé.