Wyślij z szablonu
Zapisana treść dostarcza wiadomość; żądanie dostarcza kopertę i wartości.
Uruchamia prawdziwe wywołanie na twojej przestrzeni roboczej, twoim własnym kluczem.
POST /templates/{id}/send
Zapisana treść dostarcza wiadomość; żądanie dostarcza kopertę i wartości.
Przykład
Wymaga templates:write ORAZ emails:send. Honoruje Idempotency-Key dokładnie tak jak POST /emails.
curl -X POST "$OE/templates/order-shipped/send" -H "$AUTH" \ -H "Content-Type: application/json" -H "Idempotency-Key: order:AC-4192:shipped" \ -d '{ "from": "Acme Dispatch <[email protected]>", "to": ["[email protected]"], "version": 5, "props": { "orderId": "AC-4192", "customer": "Ada" } }'{ "object": "email", "id": "msg_c5f21cc6…", "status": "queued", "from": "[email protected]", "subject": "Order AC-4192 is on its way", "template": { "id": "order-shipped", "version": 5 }}Oba zakresy i żaden nie jest zbędny: templates:write, bo wywołujący sięga po zapisaną treść, emails:send, bo poczta opuszcza przestrzeń roboczą. Klucz, który może wysyłać własne treści, wciąż nie może wysłać cudzego szablonu.
Przypinaj version we wszystkim, co zautomatyzowane. Pominięty — rozstrzygasz to, co jest opublikowane w danej chwili, czyli to, czego chcesz, gdy treść należy do kogoś innego, i nie to, czego chcesz tego ranka, gdy ją przepiszą.
subject nadpisuje temat szablonu tylko dla tej wiadomości, a cancellableForSeconds, tracking i tags zachowują się dokładnie tak jak przy zwykłej wysyłce.
POST /emails przyjmuje pole template, które robi to samo, z myślą o wywołującym, który i tak buduje tam wiadomości. Ten endpoint istnieje po to, by sięgnięcie po zapisaną treść nie wymagało podawania kształtu wiadomości, której wcale nie komponujesz.
Kiedy wysyłka zostaje odrzucona
Propsy to kontrakt, a nie sugestia, i każda poniższa awaria zachodzi, zanim cokolwiek zostanie wysłane. Alternatywa, czyli wiadomość wychodząca z pustym miejscem tam, gdzie miał być numer zamówienia, nie jest przez nic zgłaszana i nie da się jej odwołać.
| Kod | Status | Co się stało |
|---|---|---|
| `resource_not_found` | 404 | Na tym połączeniu nie ma szablonu o tym identyfikatorze ani slugu. |
| `template_not_published` | 422 | Istnieje i nigdy nie był publikowany, albo wskazana wersja jest nadal robocza. |
| `template_version_not_found` | 422 | Przypiąłeś version, której ten szablon nigdy nie miał. |
| `missing_template_prop` | 422 | Prop zadeklarowany jako required był nieobecny, null albo pusty. |
| `unknown_template_prop` | 422 | Przekazałeś klucz, którego ta wersja nie deklaruje. Komunikat wymienia te, które deklaruje. |
| `unknown_template_slot` | 422 | To samo, dla slotu. |
| `invalid_template_prop` | 422 | Wartość, która nie jest stringiem, liczbą ani booleanem. Obiektu ani tablicy nie da się podstawić do HTML-a. |
param przy tych błędach to template.props.<key>, więc klient może wskazać pole, które źle podał, bez parsowania komunikatu.