Aller à la documentation
API

Envoyer avec un modèle

Le corps stocké fournit le message ; la requête fournit l'enveloppe et les valeurs.

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

Exécute le véritable appel sur votre espace de travail, avec votre propre clé.

POST /templates/{id}/send

Le corps stocké fournit le message ; la requête fournit l'enveloppe et les valeurs.

Exemple

Nécessite templates:write ET emails:send. Honore Idempotency-Key exactement comme POST /emails.

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

Les deux portées, et aucune n'est redondante : templates:write parce que l'appelant atteint un corps stocké, emails:send parce que du courrier quitte l'espace de travail. Une clé autorisée à envoyer ses propres corps ne peut toujours pas envoyer le modèle de quelqu'un d'autre.

Figez version dans tout ce qui est automatisé. Omise, vous résolvez ce qui est publié à cet instant, ce que vous voulez quand le texte appartient à quelqu'un d'autre et non ce que vous voulez le matin où il le réécrit.

subject remplace celui du modèle pour ce seul message, et cancellableForSeconds, tracking et tags se comportent exactement comme sur un envoi ordinaire.

POST /emails accepte un champ template qui fait la même chose, pour un appelant qui construit déjà ses messages là-bas. Cet endpoint existe pour qu'atteindre un corps stocké n'oblige pas à fournir la forme d'un message que vous ne composez pas.

Quand un envoi est refusé

Les props sont un contrat et non une suggestion, et chaque échec ci-dessous survient avant tout envoi. L'alternative, un message qui part avec un blanc là où figurait le numéro de commande, n'est signalée par rien et ne peut pas être rappelée.

CodeStatutCe qui s'est passé
`resource_not_found`404Aucun modèle sur cette connexion avec cet id ou ce slug.
`template_not_published`422Il existe et n'a jamais été publié, ou la version que vous avez nommée est encore un brouillon.
`template_version_not_found`422Vous avez figé une version que ce modèle n'a jamais eue.
`missing_template_prop`422Une prop déclarée required était absente, null ou vide.
`unknown_template_prop`422Vous avez passé une clé que la version ne déclare pas. Le message nomme celles qu'elle déclare.
`unknown_template_slot`422Idem, pour un slot.
`invalid_template_prop`422Une valeur qui n'est ni string, ni number, ni boolean. Un object ou un array ne peut pas être substitué dans du HTML.

param vaut ici template.props.<key> : un client peut donc désigner le champ qu'il a mal renseigné sans analyser le message.