Ga direct naar de documentatie
API

Versturen met een template

De opgeslagen body levert het bericht; het verzoek levert de envelop en de waarden.

POSTapi.openemail.uk/templates/{id}/send

Voert de echte aanroep uit op je workspace, met je eigen sleutel.

POST /templates/{id}/send

De opgeslagen body levert het bericht; het verzoek levert de envelop en de waarden.

Voorbeeld

Vereist templates:write ÉN emails:send. Respecteert Idempotency-Key precies zoals POST /emails dat doet.

curl
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" }  }'
Antwoord
{  "object": "email",  "id": "msg_c5f21cc6…",  "status": "queued",  "from": "[email protected]",  "subject": "Order AC-4192 is on its way",  "template": { "id": "order-shipped", "version": 5 }}

Beide scopes, en geen van beide is overbodig: templates:write omdat de aanroeper bij een opgeslagen body komt, emails:send omdat er post de workspace verlaat. Een sleutel die zijn eigen bodies mag versturen kan nog steeds niet de template van iemand anders versturen.

Leg version vast in alles wat geautomatiseerd is. Laat je hem weg, dan los je op wat op dat moment gepubliceerd is, wat je wilt als iemand anders de tekst beheert en niet wat je wilt op de ochtend dat diegene hem herschrijft.

subject overschrijft dat van de template alleen voor dit bericht, en cancellableForSeconds, tracking en tags gedragen zich precies zoals bij een gewone verzending.

POST /emails accepteert een template-veld dat hetzelfde doet, voor een aanroeper die daar al berichten opbouwt. Dit endpoint bestaat zodat het bereiken van een opgeslagen body niet vereist dat je de vorm aanlevert van een bericht dat je niet opstelt.

Wanneer een verzending wordt geweigerd

Props zijn een contract en geen suggestie, en elke fout hieronder gebeurt voordat er iets wordt verstuurd. Het alternatief, een bericht dat de deur uit gaat met een leegte waar het ordernummer hoorde, wordt door niets gemeld en kan niet worden teruggehaald.

CodeStatusWat er gebeurde
`resource_not_found`404Geen template op deze connectie met die id of slug.
`template_not_published`422Hij bestaat en is nooit gepubliceerd, of de versie die je noemde is nog een concept.
`template_version_not_found`422Je legde een version vast die deze template nooit heeft gehad.
`missing_template_prop`422Een als required gedeclareerde prop ontbrak, was null of was leeg.
`unknown_template_prop`422Je gaf een sleutel mee die de versie niet declareert. Het bericht noemt de sleutels die hij wel kent.
`unknown_template_slot`422Hetzelfde, maar voor een slot.
`invalid_template_prop`422Een waarde die geen string, number of boolean is. Een object of een array kan niet in HTML worden gesubstitueerd.

param is hierbij template.props.<key>, zodat een client naar het veld kan wijzen dat hij verkeerd had zonder het bericht te parsen.