Record an acceptance, render the filled PDF, and email it.
Order is deliberate: render the PDF, INSERT the acceptance row (born at the
transient email_status="pending"), then send, then one narrow update that
stamps email_status / email_error and nothing else. The acceptance is
durable before anything leaves the building, so a Mongo failure after a
successful send can never leave a customer holding a PDF and a download link
for a record that does not exist. A failed insert returns 503 and sends
nothing. A mail failure cannot lose the acceptance either:
send_agreement_emails never raises, it returns a status.
Contract enum on the returned and persisted email_status:
sent | skipped_no_provider | failed. pending is an internal
pre-send value that is never returned to a client and never survives a
successful request; a row left at pending means the delivery outcome
could not be stamped and is reconcilable from the log.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "https://example.com/memory/licensing/redistribution/accept" \ -H "Content-Type: application/json" \ -d '{}'null{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}