API
إنشاء أتمتة
ينشئ مسودة من `definition`، أو من `starter`، أو مسودة فارغة إن لم ترسل أيًّا منهما، ويعيد الأتمتة كاملة. ولا يعمل شيء حتى تنشرها.
POST/automations
ينفّذ الاستدعاء الحقيقي على مساحة عملك.
POST /automations
ينشئ مسودة من definition، أو من starter، أو مسودة فارغة إن لم ترسل أيًّا منهما، ويعيد الأتمتة كاملة. ولا يعمل شيء حتى تنشرها.
مثال
يتطلب automations:write.
curl -X POST "$OE/automations" -H "$AUTH" -H 'content-type: application/json' -d '{ "name": "Welcome series", "starter": "welcome-series", "settings": { "timezone": "Europe/London" }}'{ "object": "automation", "id": "aut_7c2e9a1f4b8d30c65e1a9f27", "name": "Welcome series", "description": null, "status": "live", "triggerKind": "audience_joined", "stepCount": 4, "emailCount": 2, "hasUnpublishedChanges": false, "publishedVersion": 2, "pausedReason": null, "lastError": null, "counts": { "active": 38, "completed": 412, "exited": 9 }, "createdBy": "q7Vd3kX9mT2pLw8RzN4bYc6HfJ1sGa5E", "publishedAt": "2026-10-02T09:14:00.000Z", "pausedAt": null, "archivedAt": null, "createdAt": "2026-10-01T16:40:12.000Z", "updatedAt": "2026-10-02T09:14:00.000Z", "definition": { "trigger": { "kind": "audience_joined", "audienceId": "aud_4c1b8e2a7d9f05c36b4e8a71", "includeImported": false }, "entry": "welcome", "steps": [ { "key": "welcome", "kind": "send_email", "next": "pause", "templateId": "tpl_9c1f0a4b7e05d3862c1f0a44", "templateVersion": null, "from": { "email": "[email protected]", "name": "Acme" }, "replyTo": null, "subject": null, "props": { "firstName": { "source": "contact", "field": "firstName" } } }, { "key": "pause", "kind": "wait", "next": "opened", "wait": { "mode": "duration", "amount": 3, "unit": "days" } }, { "key": "opened", "kind": "branch", "condition": { "kind": "email_opened", "stepKey": "welcome" }, "yes": null, "no": "nudge" }, { "key": "nudge", "kind": "send_email", "next": null, "templateId": "tpl_8f3a1c2e9b7d4a60", "templateVersion": null, "from": { "email": "[email protected]", "name": "Acme" }, "replyTo": null, "subject": "{{firstName|Hello}}, did you see this?", "props": {} } ] }, "published": { "trigger": { "kind": "audience_joined", "…": "…" }, "entry": "welcome", "steps": ["…"] }, "settings": { "timezone": "Europe/London", "sendWindow": { "days": [1, 2, 3, 4, 5], "startMinute": 540, "endMinute": 1020 }, "reentryDays": null, "exitOnLeave": true, "listAudienceId": null }, "problems": []}يجوز أن تكون المسودة غير مكتملة. وكل ما ينقصها يعود في problems، والنشر وحده يشترط تعريفًا كاملًا.
التعريف الذي يخلّ بالبنية نفسها، كخطوتين بمفتاح واحد أو خطوة يوصَل إليها من موضعين، يُرفض بـ 422 invalid_automation.
يقبل settings أي مجموعة جزئية من الإعدادات، وتحتفظ البقية بقيمها الافتراضية. والقيمة الافتراضية لـ timezone هي UTC.
تتسع مساحة العمل افتراضيًا لـ 100 أتمتة. وتُرفض التالية بـ 422 workspace_limit_reached.