Automatizaciones
`automations.list`, `get`, `create`, `update`, `publish`, `pause`, `resume`, `archive`, `duplicate`, `delete`, `send_test`, `stats`, `list_versions`, `restore_version`, `list_starters`, `list_enrollments`, `get_enrollment`, `enroll` y `exit_enrollment`, con `events.send`, `send_batch` y `list_names`.
Todos los métodos
from openemail import openemail automation = openemail.automations.create({ 'name': 'Welcome series', 'starter': 'welcome-series', 'settings': {'timezone': 'Europe/London'},}) saved = openemail.automations.update(automation['id'], { 'definition': { **automation['definition'], 'trigger': {'kind': 'event', 'eventName': 'trial.started', 'filters': []}, }, 'expectedUpdatedAt': automation['updatedAt'],}) blocking = [problem for problem in saved['problems'] if problem['blocking']]if blocking: raise RuntimeError(blocking[0]['message']) openemail.automations.send_test(saved['id'], {'stepKey': saved['definition']['entry'] or ''})live = openemail.automations.publish(saved['id']) sent = openemail.events.send( { 'name': 'trial.started', 'email': '[email protected]', 'properties': {'plan': 'starter'}, 'createContact': True, }, idempotency_key='trial:[email protected]',) for enrollment in openemail.automations.iterate_enrollments(live['id'], status='active'): if enrollment['heldFor']: print(enrollment['contact']['email'], enrollment['heldFor']) stats = openemail.automations.stats(live['id'])history = openemail.contacts.list_events('[email protected]', name='trial.started') openemail.automations.pause(live['id'])openemail.automations.resume(live['id']) print(sent['enrolled'], stats['totals']['entered'], len(history['items']))Una automatización guarda un borrador definition y la versión published que se ejecuta. update cambia el borrador y los ajustes, y publish congela el borrador como la siguiente versión y activa la automatización. problems dice qué impide todavía publicar un borrador, y expectedUpdatedAt rechaza con 409 version_conflict un guardado que sobrescribiría el de otra persona.
Leer requiere automations:read y cambiar requiere automations:write. publish, resume y send_test también requieren emails:send. events.send y events.send_batch requieren contacts:write, y contacts.list_events requiere contacts:read. delete pide un código de verificación a un token de acceso OAuth, y a una clave de API nunca.
events.send_batch acepta hasta 100 eventos y nunca lanza un error por un solo evento incorrecto: la respuesta lista accepted y failed, cada uno con el index del evento en la lista que enviaste.
attributes en un contacto guarda sus campos personalizados, y una automatización lee uno como attributes.<key>.
Referencia
automations.list()Referencia completaautomations.list_all()Referencia completaautomations.iterate()Referencia completaautomations.get()Referencia completaautomations.create()Referencia completaautomations.update()Referencia completaautomations.delete()Referencia completaautomations.publish()Referencia completaautomations.pause()Referencia completaautomations.resume()Referencia completaautomations.archive()Referencia completaautomations.duplicate()Referencia completaautomations.send_test()Referencia completaautomations.stats()Referencia completaautomations.list_versions()Referencia completaautomations.restore_version()Referencia completaautomations.list_starters()Referencia completaautomations.list_enrollments()Referencia completaautomations.list_all_enrollments()Referencia completaautomations.iterate_enrollments()Referencia completaautomations.get_enrollment()Referencia completaautomations.enroll()Referencia completaautomations.exit_enrollment()Referencia completaevents.send()Referencia completaevents.send_batch()Referencia completaevents.list_names()Referencia completacontacts.list_events()Referencia completacontacts.list_all_events()Referencia completacontacts.iterate_events()Referencia completa