Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/auth0-email-templates-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Auth0 Management Email Templates API
description: Auth0 Management API v2.
termsOfService: https://auth0.com/web-terms/
contact:
name: Auth0 Support
url: https://support.auth0.com
version: '2.0'
servers:
- url: https://{tenantDomain}/api/v2
variables:
tenantDomain:
default: '{TENANT}.auth0.com'
description: Auth0 Tenant Domain
security:
- bearerAuth: []
tags:
- name: email-templates
paths:
/email-templates:
post:
summary: Create an Email Template
description: Create an email template.
tags:
- email-templates
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEmailTemplateRequestContent'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CreateEmailTemplateRequestContent'
responses:
'200':
description: Template successfully created.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEmailTemplateResponseContent'
'400':
description: Invalid request URI. The message will vary depending on the cause.
x-description-1: Invalid request body. The message will vary depending on the cause.
'401':
description: Invalid token.
x-description-1: Invalid signature received for JSON Web Token validation.
'403':
description: 'Insufficient scope; expected: create:email_templates.'
'409':
description: Template (templateName) already exists.
'429':
description: Too many requests. Check the X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers.
operationId: post_email-templates
x-release-lifecycle: GA
x-operation-name: create
x-operation-group: emailTemplates
security:
- bearerAuth: []
- oAuth2ClientCredentials:
- create:email_templates
/email-templates/{templateName}:
get:
summary: Get an Email Template
description: Retrieve an email template by pre-defined name. These names are `verify_email`, `verify_email_by_code`, `reset_email`, `reset_email_by_code`, `welcome_email`, `blocked_account`, `stolen_credentials`, `enrollment_email`, `mfa_oob_code`, `user_invitation`, and `async_approval`. The names `change_password`, and `password_reset` are also supported for legacy scenarios.
tags:
- email-templates
parameters:
- name: templateName
in: path
description: Template name. Can be `verify_email`, `verify_email_by_code`, `reset_email`, `reset_email_by_code`, `welcome_email`, `blocked_account`, `stolen_credentials`, `enrollment_email`, `mfa_oob_code`, `user_invitation`, `async_approval`, `change_password` (legacy), or `password_reset` (legacy).
required: true
schema:
$ref: '#/components/schemas/EmailTemplateNameEnum'
responses:
'200':
description: Template successfully retrieved.
content:
application/json:
schema:
$ref: '#/components/schemas/GetEmailTemplateResponseContent'
'400':
description: Invalid request URI. The message will vary depending on the cause.
'401':
description: Invalid token.
x-description-1: Invalid signature received for JSON Web Token validation.
'403':
description: 'Insufficient scope; expected: read:email_templates.'
'429':
description: Too many requests. Check the X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers.
operationId: get_email-templates_by_templateName
x-release-lifecycle: GA
x-operation-name: get
x-operation-group: emailTemplates
security:
- bearerAuth: []
- oAuth2ClientCredentials:
- read:email_templates
patch:
summary: Patch an Email Template
description: Modify an email template.
tags:
- email-templates
parameters:
- name: templateName
in: path
description: Template name. Can be `verify_email`, `verify_email_by_code`, `reset_email`, `reset_email_by_code`, `welcome_email`, `blocked_account`, `stolen_credentials`, `enrollment_email`, `mfa_oob_code`, `user_invitation`, `async_approval`, `change_password` (legacy), or `password_reset` (legacy).
required: true
schema:
$ref: '#/components/schemas/EmailTemplateNameEnum'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEmailTemplateRequestContent'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/UpdateEmailTemplateRequestContent'
responses:
'200':
description: Template successfully updated.
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEmailTemplateResponseContent'
'400':
description: Invalid request body. The message will vary depending on the cause.
'401':
description: Invalid token.
x-description-1: Invalid signature received for JSON Web Token validation.
'403':
description: 'Insufficient scope; expected: update:email_templates.'
'404':
description: Template not found and cannot be updated.
'429':
description: Too many requests. Check the X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers.
operationId: patch_email-templates_by_templateName
x-release-lifecycle: GA
x-operation-name: update
x-operation-group: emailTemplates
security:
- bearerAuth: []
- oAuth2ClientCredentials:
- update:email_templates
put:
summary: Update an Email Template
description: Update an email template.
tags:
- email-templates
parameters:
- name: templateName
in: path
description: Template name. Can be `verify_email`, `verify_email_by_code`, `reset_email`, `reset_email_by_code`, `welcome_email`, `blocked_account`, `stolen_credentials`, `enrollment_email`, `mfa_oob_code`, `user_invitation`, `async_approval`, `change_password` (legacy), or `password_reset` (legacy).
required: true
schema:
$ref: '#/components/schemas/EmailTemplateNameEnum'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SetEmailTemplateRequestContent'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SetEmailTemplateRequestContent'
responses:
'200':
description: Template successfully updated.
content:
application/json:
schema:
$ref: '#/components/schemas/SetEmailTemplateResponseContent'
'400':
description: Invalid request body. The message will vary depending on the cause.
'401':
description: Invalid token.
x-description-1: Invalid signature received for JSON Web Token validation.
'403':
description: 'Insufficient scope; expected: update:email_templates.'
'404':
description: Template not found.
'429':
description: Too many requests. Check the X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers.
operationId: put_email-templates_by_templateName
x-release-lifecycle: GA
x-operation-name: set
x-operation-group: emailTemplates
security:
- bearerAuth: []
- oAuth2ClientCredentials:
- update:email_templates
components:
schemas:
CreateEmailTemplateRequestContent:
type: object
additionalProperties: false
required:
- template
- body
- from
- subject
- syntax
- enabled
properties:
template:
$ref: '#/components/schemas/EmailTemplateNameEnum'
body:
type:
- string
- 'null'
description: Body of the email template.
from:
type:
- string
- 'null'
description: Senders `from` email address.
default: sender@auth0.com
resultUrl:
type:
- string
- 'null'
description: URL to redirect the user to after a successful action.
subject:
type:
- string
- 'null'
description: Subject line of the email.
syntax:
type:
- string
- 'null'
description: Syntax of the template body.
default: liquid
urlLifetimeInSeconds:
type:
- number
- 'null'
description: Lifetime in seconds that the link within the email will be valid for.
minimum: 0
includeEmailInRedirect:
type: boolean
description: Whether the `reset_email` and `verify_email` templates should include the user's email address as the `email` parameter in the returnUrl (true) or whether no email address should be included in the redirect (false). Defaults to true.
enabled:
type:
- boolean
- 'null'
description: Whether the template is enabled (true) or disabled (false).
SetEmailTemplateResponseContent:
type: object
additionalProperties: false
required:
- template
- body
- from
- subject
- syntax
- enabled
properties:
template:
$ref: '#/components/schemas/EmailTemplateNameEnum'
body:
type:
- string
- 'null'
description: Body of the email template.
from:
type:
- string
- 'null'
description: Senders `from` email address.
default: sender@auth0.com
resultUrl:
type:
- string
- 'null'
description: URL to redirect the user to after a successful action.
subject:
type:
- string
- 'null'
description: Subject line of the email.
syntax:
type:
- string
- 'null'
description: Syntax of the template body.
default: liquid
urlLifetimeInSeconds:
type:
- number
- 'null'
description: Lifetime in seconds that the link within the email will be valid for.
minimum: 0
includeEmailInRedirect:
type: boolean
description: Whether the `reset_email` and `verify_email` templates should include the user's email address as the `email` parameter in the returnUrl (true) or whether no email address should be included in the redirect (false). Defaults to true.
enabled:
type:
- boolean
- 'null'
description: Whether the template is enabled (true) or disabled (false).
EmailTemplateNameEnum:
type: string
description: Template name. Can be `verify_email`, `verify_email_by_code`, `reset_email`, `reset_email_by_code`, `welcome_email`, `blocked_account`, `stolen_credentials`, `enrollment_email`, `mfa_oob_code`, `user_invitation`, `async_approval`, `change_password` (legacy), or `password_reset` (legacy).
default: verify_email
enum:
- verify_email
- verify_email_by_code
- reset_email
- reset_email_by_code
- welcome_email
- blocked_account
- stolen_credentials
- enrollment_email
- mfa_oob_code
- user_invitation
- change_password
- password_reset
- async_approval
UpdateEmailTemplateResponseContent:
type: object
additionalProperties: false
properties:
template:
$ref: '#/components/schemas/EmailTemplateNameEnum'
body:
type:
- string
- 'null'
description: Body of the email template.
from:
type:
- string
- 'null'
description: Senders `from` email address.
default: sender@auth0.com
resultUrl:
type:
- string
- 'null'
description: URL to redirect the user to after a successful action.
subject:
type:
- string
- 'null'
description: Subject line of the email.
syntax:
type:
- string
- 'null'
description: Syntax of the template body.
default: liquid
urlLifetimeInSeconds:
type:
- number
- 'null'
description: Lifetime in seconds that the link within the email will be valid for.
minimum: 0
includeEmailInRedirect:
type: boolean
description: Whether the `reset_email` and `verify_email` templates should include the user's email address as the `email` parameter in the returnUrl (true) or whether no email address should be included in the redirect (false). Defaults to true.
enabled:
type:
- boolean
- 'null'
description: Whether the template is enabled (true) or disabled (false).
UpdateEmailTemplateRequestContent:
type: object
additionalProperties: false
properties:
template:
$ref: '#/components/schemas/EmailTemplateNameEnum'
body:
type:
- string
- 'null'
description: Body of the email template.
from:
type:
- string
- 'null'
description: Senders `from` email address.
default: sender@auth0.com
resultUrl:
type:
- string
- 'null'
description: URL to redirect the user to after a successful action.
subject:
type:
- string
- 'null'
description: Subject line of the email.
syntax:
type:
- string
- 'null'
description: Syntax of the template body.
default: liquid
urlLifetimeInSeconds:
type:
- number
- 'null'
description: Lifetime in seconds that the link within the email will be valid for.
minimum: 0
includeEmailInRedirect:
type: boolean
description: Whether the `reset_email` and `verify_email` templates should include the user's email address as the `email` parameter in the returnUrl (true) or whether no email address should be included in the redirect (false). Defaults to true.
enabled:
type:
- boolean
- 'null'
description: Whether the template is enabled (true) or disabled (false).
GetEmailTemplateResponseContent:
type: object
additionalProperties: false
properties:
template:
$ref: '#/components/schemas/EmailTemplateNameEnum'
body:
type:
- string
- 'null'
description: Body of the email template.
from:
type:
- string
- 'null'
description: Senders `from` email address.
default: sender@auth0.com
resultUrl:
type:
- string
- 'null'
description: URL to redirect the user to after a successful action.
subject:
type:
- string
- 'null'
description: Subject line of the email.
syntax:
type:
- string
- 'null'
description: Syntax of the template body.
default: liquid
urlLifetimeInSeconds:
type:
- number
- 'null'
description: Lifetime in seconds that the link within the email will be valid for.
minimum: 0
includeEmailInRedirect:
type: boolean
description: Whether the `reset_email` and `verify_email` templates should include the user's email address as the `email` parameter in the returnUrl (true) or whether no email address should be included in the redirect (false). Defaults to true.
enabled:
type:
- boolean
- 'null'
description: Whether the template is enabled (true) or disabled (false).
CreateEmailTemplateResponseContent:
type: object
additionalProperties: false
required:
- template
- body
- from
- subject
- syntax
- enabled
properties:
template:
$ref: '#/components/schemas/EmailTemplateNameEnum'
body:
type:
- string
- 'null'
description: Body of the email template.
from:
type:
- string
- 'null'
description: Senders `from` email address.
default: sender@auth0.com
resultUrl:
type:
- string
- 'null'
description: URL to redirect the user to after a successful action.
subject:
type:
- string
- 'null'
description: Subject line of the email.
syntax:
type:
- string
- 'null'
description: Syntax of the template body.
default: liquid
urlLifetimeInSeconds:
type:
- number
- 'null'
description: Lifetime in seconds that the link within the email will be valid for.
minimum: 0
includeEmailInRedirect:
type: boolean
description: Whether the `reset_email` and `verify_email` templates should include the user's email address as the `email` parameter in the returnUrl (true) or whether no email address should be included in the redirect (false). Defaults to true.
enabled:
type:
- boolean
- 'null'
description: Whether the template is enabled (true) or disabled (false).
SetEmailTemplateRequestContent:
type: object
additionalProperties: false
required:
- template
- body
- from
- subject
- syntax
- enabled
properties:
template:
$ref: '#/components/schemas/EmailTemplateNameEnum'
body:
type:
- string
- 'null'
description: Body of the email template.
from:
type:
- string
- 'null'
description: Senders `from` email address.
default: sender@auth0.com
resultUrl:
type:
- string
- 'null'
description: URL to redirect the user to after a successful action.
subject:
type:
- string
- 'null'
description: Subject line of the email.
syntax:
type:
- string
- 'null'
description: Syntax of the template body.
default: liquid
urlLifetimeInSeconds:
type:
- number
- 'null'
description: Lifetime in seconds that the link within the email will be valid for.
minimum: 0
includeEmailInRedirect:
type: boolean
description: Whether the `reset_email` and `verify_email` templates should include the user's email address as the `email` parameter in the returnUrl (true) or whether no email address should be included in the redirect (false). Defaults to true.
enabled:
type:
- boolean
- 'null'
description: Whether the template is enabled (true) or disabled (false).
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: jwt
oAuth2ClientCredentials:
type: oauth2
flows:
clientCredentials:
tokenUrl: /oauth/token/
x-form-parameters:
audience: /api/v2/
scopes:
create:actions: Create Actions
read:actions: Read Actions
update:actions: Update Actions
delete:actions: Delete Actions
read:anomaly_blocks: Read Anomaly Blocks
delete:anomaly_blocks: Delete Anomaly Blocks
read:attack_protection: Read Attack Protection
update:attack_protection: Update Attack Protection
create:authentication_methods: Create Authentication Methods
read:authentication_methods: Read Authentication Methods
update:authentication_methods: Update Authentication Methods
delete:authentication_methods: Delete Authentication Methods
read:branding: Read Branding
update:branding: Update Branding
delete:branding: Delete Branding
create:client_credentials: Create Client Credentials
read:client_credentials: Read Client Credentials
update:client_credentials: Update Client Credentials
delete:client_credentials: Delete Client Credentials
create:client_grants: Create Client Grants
read:client_grants: Read Client Grants
update:client_grants: Update Client Grants
delete:client_grants: Delete Client Grants
read:client_keys: Read Client Keys
update:client_keys: Update Client Keys
read:client_summary: Read Client Summary
update:client_token_vault_privileged_access: Update Client Token Vault Privileged Access
create:clients: Create Clients
read:clients: Read Clients
update:clients: Update Clients
delete:clients: Delete Clients
create:connection_profiles: Create Connection Profiles
read:connection_profiles: Read Connection Profiles
update:connection_profiles: Update Connection Profiles
delete:connection_profiles: Delete Connection Profiles
create:connections: Create Connections
read:connections: Read Connections
update:connections: Update Connections
delete:connections: Delete Connections
create:connections_keys: Create Connections Keys
read:connections_keys: Read Connections Keys
update:connections_keys: Update Connections Keys
read:current_user: Read Current User
delete:current_user: Delete Current User
create:current_user_device_credentials: Create Current User Device Credentials
delete:current_user_device_credentials: Delete Current User Device Credentials
update:current_user_identities: Update Current User Identities
update:current_user_metadata: Update Current User Metadata
create:custom_domains: Create Custom Domains
read:custom_domains: Read Custom Domains
update:custom_domains: Update Custom Domains
delete:custom_domains: Delete Custom Domains
create:custom_signing_keys: Create Custom Signing Keys
read:custom_signing_keys: Read Custom Signing Keys
update:custom_signing_keys: Update Custom Signing Keys
delete:custom_signing_keys: Delete Custom Signing Keys
read:device_credentials: Read Device Credentials
delete:device_credentials: Delete Device Credentials
create:directory_provisionings: Create Directory Provisionings
read:directory_provisionings: Read Directory Provisionings
update:directory_provisionings: Update Directory Provisionings
delete:directory_provisionings: Delete Directory Provisionings
create:email_provider: Create Email Provider
read:email_provider: Read Email Provider
update:email_provider: Update Email Provider
delete:email_provider: Delete Email Provider
create:email_templates: Create Email Templates
read:email_templates: Read Email Templates
update:email_templates: Update Email Templates
create:encryption_keys: Create Encryption Keys
read:encryption_keys: Read Encryption Keys
update:encryption_keys: Update Encryption Keys
delete:encryption_keys: Delete Encryption Keys
read:event_deliveries: Read Event Deliveries
update:event_deliveries: Update Event Deliveries
create:event_streams: Create Event Streams
read:event_streams: Read Event Streams
update:event_streams: Update Event Streams
delete:event_streams: Delete Event Streams
read:events: Read Events
read:federated_connections_tokens: Read Federated Connections Tokens
delete:federated_connections_tokens: Delete Federated Connections Tokens
create:flows: Create Flows
read:flows: Read Flows
update:flows: Update Flows
delete:flows: Delete Flows
read:flows_executions: Read Flows Executions
delete:flows_executions: Delete Flows Executions
create:flows_vault_connections: Create Flows Vault Connections
read:flows_vault_connections: Read Flows Vault Connections
update:flows_vault_connections: Update Flows Vault Connections
delete:flows_vault_connections: Delete Flows Vault Connections
create:forms: Create Forms
read:forms: Read Forms
update:forms: Update Forms
delete:forms: Delete Forms
read:grants: Read Grants
delete:grants: Delete Grants
read:group_members: Read Group Members
read:groups: Read Groups
delete:groups: Delete Groups
create:guardian_enrollment_tickets: Create Guardian Enrollment Tickets
read:guardian_enrollments: Read Guardian Enrollments
delete:guardian_enrollments: Delete Guardian Enrollments
read:guardian_factors: Read Guardian Factors
update:guardian_factors: Update Guardian Factors
create:hooks: Create Hooks
read:hooks: Read Hooks
update:hooks: Update Hooks
delete:hooks: Delete Hooks
create:log_streams: Create Log Streams
read:log_streams: Read Log Streams
update:log_streams: Update Log Streams
delete:log_streams: Delete Log Streams
read:logs: Read Logs
read:logs_users: Read Logs Users
read:mfa_policies: Read Mfa Policies
update:mfa_policies: Update Mfa Policies
create:network_acls: Create Network Acls
read:network_acls: Read Network Acls
update:network_acls: Update Network Acls
delete:network_acls: Delete Network Acls
create:organization_client_grants: Create Organization Client Grants
read:organization_client_grants: Read Organization Client Grants
delete:organization_client_grants: Delete Organization Client Grants
create:organization_connections: Create Organization Connections
read:organization_connections: Read Organization Connections
update:organization_connections: Update Organization Connections
delete:organization_connections: Delete Organization Connections
create:organization_discovery_domains: Create Organization Discovery Domains
read:organization_discovery_domains: Read Organization Discovery Domains
update:organization_discovery_domains: Update Organization Discovery Domains
delete:organization_discovery_domains: Delete Organization Discovery Domains
create:organization_invitations: Create Organization Invitations
read:organization_invitations: Read Organization Invitations
delete:organization_invitations: Delete Organization Invitations
create:organization_member_roles: Create Organization Member Roles
read:organization_member_roles: Read Organization Member Roles
delete:organization_member_roles: Delete Organization Member Roles
create:organization_members: Create Organization Members
read:organization_members: Read Organization Members
delete:organization_members: Delete Organization Members
create:organizations: Create Organizations
read:organizations: Read Organizations
update:organizations: Update Organizations
delete:organizations: Delete Organizations
read:organizations_summary: Read Organizations Summary
create:phone_providers: Create Phone Providers
read:phone_providers: Read Phone Providers
update:phone_providers: Update Phone Providers
delete:phone_providers: Delete Phone Providers
create:phone_templates: Create Phone Templates
read:phone_templates: Read Phone Templates
update:phone_templates: Update Phone Templates
delete:phone_templates: Delete Phone Templates
read:prompts: Read Prompts
update:prompts: Update Prompts
read:refresh_tokens: Read Refresh Tokens
update:refresh_tokens: Update Refresh Tokens
delete:refresh_tokens: Delete Refresh Tokens
create:resource_servers: Create Resource Servers
read:resource_servers: Read Resource Servers
update:resource_servers: Update Resource Servers
delete:resource_servers: Delete Resource Servers
create:role_members: Create Role Members
read:role_members: Read Role Members
delete:role_members: Delete Role Members
create:roles: Create Roles
read:roles: Read Roles
update:roles: Update Roles
delete:roles: Delete Roles
create:rules: Create Rules
read:rules: Read Rules
update:rules: Update Rules
delete:rules: Delete Rules
read:rules_configs: Read Rules Configs
update:rules_configs: Update Rules Configs
delete:rules_configs: Delete Rules Configs
create:scim_config: Create Scim Config
read:scim_config: Read Scim Config
update:scim_config: Update Scim Config
delete:scim_config: Delete Scim Config
create:scim_token: Create Scim Token
read:scim_token: Read Scim Token
delete:scim_token: Delete Scim Token
read:self_service_profile_custom_texts: Read Self Service Profile Custom Texts
update:self_service_profile_custom_texts: Update Self Service Profile Custom Texts
create:self_service_profiles: Create Self Service Profiles
read:self_service_profiles: Read Self Service Profiles
update:self_service_profiles: Update Self Service Profiles
delete:self_service_profiles: Delete Self Service Profiles
read:sessions: Read Sessions
update:sessions: Update Sessions
delete:sessions: Delete Sessions
create:signing_keys: Create Signing Keys
read:signing_keys: Read Signing Keys
update:signing_keys: Update Signing Keys
create:sso_access_tickets: Create Sso Access Tickets
delete:sso_access_tickets: Delete Sso Access Tickets
read:stats: Read Stats
read:tenant_settings: Read Tenant Settings
update:tenant_settings: Update Tenant Settings
create:token_exchange_profiles: Create Token Exchange Profiles
read:token_exchange_profiles: Read Token Exchange Profiles
update:token_exchange_profiles: Update Token Exchange Profiles
delete:token_exchange_profiles: Delete Token Exchange Profiles
create:user_attribute_profiles: Create User Attribute Profiles
read:user_attribute_profiles: Read User Attribute Profiles
update:user_attribute_profiles: Update User Attribute Profiles
delete:user_attribute_profiles: Delete User Attribute Profiles
read:user_idp_tokens: Read User Idp Tokens
create:user_tickets: Create User Tickets
create:users: Create Users
read:users: Read Users
update:users: Update Users
delete:users: Delete Users
update:users_app_metadata: Update Users App Metadata
create:vdcs_temp
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/auth0/refs/heads/main/openapi/auth0-email-templates-api-openapi.yml