Upsert a project's email template override
Saves the project's override for one kind. The body is a Go template rendered with the same variables as the built-in defaults: `ActionURL`, `ProjectName`, `Expiry`, `ProjectDomain`, `Email`. The body must reference `{{.ActionURL}}` at least once (the actionable link always comes from IdentityX) and must render; violations are rejected with 422-style validation errors. The authenticated actor must be an admin or owner of the project.
/projects/{project_id}/email-templates/{kind}Saves the project's override for one kind. The body is a Go
template rendered with the same variables as the built-in
defaults: ActionURL, ProjectName, Expiry, ProjectDomain,
Email. The body must reference {{.ActionURL}} at least once
(the actionable link always comes from IdentityX) and must render;
violations are rejected with 422-style validation errors. The
authenticated actor must be an admin or owner of the project.
JWT issued by IdentityX, signed with Ed25519
In: header
Path Parameters
Project ID.
Email template kind.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Request body for PUT /projects/{project_id}/email-templates/{kind}.
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X PUT "https://example.com/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08/email-templates/verify" \ -H "Content-Type: application/json" \ -d '{ "subject": "Welcome to Acme — confirm your email", "body": "<p>Hi there!</p>\\n<p><a href=\\"{{.ActionURL}}\\">Confirm my email</a></p>\\n" }'{
"kind": "verify",
"subject": "string",
"body": "string",
"source": "default"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 400,
"title": "Validation Failed"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 401,
"title": "Unauthenticated"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 403,
"title": "Insufficient Role"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 404,
"title": "Not Found"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 500,
"title": "Internal Server Error"
}{
"detail": "string",
"instance": "../dictionary",
"errors": [
{
"field": "string",
"message": "string"
}
],
"type": "http://example.com",
"status": 503,
"title": "Identity Unavailable"
}Delete a project's email template override DELETE
Removes the project's override for one kind, restoring the built-in default. Deleting a kind that has no override is a no-op. The authenticated actor must be an admin or owner of the project.
Get a project's current terms of service GET
Returns the project's current terms document, or 404 when the project has none (a project without terms requires no acceptance). Public: frontends render the document on signup and notice pages without authenticating.