Menu
Platform
AI
App store purchases
Database
Flags
Jobs and cron
Localization
Monitoring
Notifications
Payments
Queues
Sandboxes
Webhooks
Getting Started
Authentication
KV Store
Deploy & Infrastructure
Reference
Create a template
Creates a template.
Creates a template.
- Path
POST https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/templates - Scope
notify:write - Effect
write— a successful call changes state. - Collection templates
- Query
template_id,validate_only
#Request
| Field | Type | What it is |
|---|---|---|
parent | string | The parent to create in. Required. |
template_id | string | The template id, the final name segment; the server assigns one when empty. |
template | Template | The template to create; only caller-writable fields are read. Required. |
validate_only | bool | Validate and return the result without writing anything. |
#Template
| Field | Type | What it is |
|---|---|---|
name | string | orgs/{org}/projects/{project}/envs/{env}/templates/{template}. |
meta | ResourceMeta | Resource metadata. |
spec | TemplateSpec | Desired state. Required. |
#ResourceMeta
| Field | Type | What it is |
|---|---|---|
labels | map<string, string> | Caller-writable, indexed labels (AIP-122 label rules). |
annotations | map<string, string> | Caller-writable, unindexed annotations. |
display_name | string | Caller-writable human-readable name. |
#TemplateSpec
| Field | Type | What it is |
|---|---|---|
email | EmailContent | Email content. |
sms | SmsContent | SMS content. |
push | PushContent | Push content. |
inbox | InboxContent | In-app inbox content. |
send_limit | SendLimit | A per-recipient send limit on messages rendered from this template; unset admits every message. |
#EmailContent
| Field | Type | What it is |
|---|---|---|
sender_address | string | The From address; its domain is a verified Email Domain. Required. |
subject | string | The subject. Required. |
html_body | string | The HTML body. |
text_body | string | The plain-text body. |
sender_name | string | The From display name, for example the app's name. |
#SmsContent
| Field | Type | What it is |
|---|---|---|
sender | string | The SMS Sender. Required. |
body | string | The body. Required. |
#PushContent
| Field | Type | What it is |
|---|---|---|
title | string | The title. Required. |
body | string | The body. |
data | struct | Data delivered with the notification. |
#InboxContent
| Field | Type | What it is |
|---|---|---|
title | string | The title. Required. |
body | string | The body. |
action_uri | string | Where the item links. |
#SendLimit
| Field | Type | What it is |
|---|---|---|
min_interval | duration | At least this long between two messages to one recipient. |
max_per_hour | int32 | At most this many messages to one recipient in any hour; 0 is no limit. |
#Response
| Field | Type | What it is |
|---|---|---|
name | string | orgs/{org}/projects/{project}/envs/{env}/templates/{template}. |
uid | string | tpl_<cell><ulid>; never reused. Output only. |
meta | ResourceMeta | Resource metadata. |
spec | TemplateSpec | Desired state. Required. |
status | TemplateStatus | Observed state. Output only. |
#ResourceMeta
| Field | Type | What it is |
|---|---|---|
generation | int64 | Increases by one on every change to spec. Output only. |
etag | string | Strong ETag (AIP-154): changes on any change to spec, status, or metadata. Send it back as If-Match or etag to make Update and Delete conditional; a mismatch fails with ABORTED / 409 ETAG_MISMATCH. Output only. |
create_time | timestamp | When the Resource was created. Output only. |
update_time | timestamp | When the Resource last changed. Output only. |
delete_time | timestamp | Set while the Resource is being deleted. Output only. |
labels | map<string, string> | Caller-writable, indexed labels (AIP-122 label rules). |
annotations | map<string, string> | Caller-writable, unindexed annotations. |
display_name | string | Caller-writable human-readable name. |
creator | string | The principal that created the Resource. Output only. |
#TemplateSpec
| Field | Type | What it is |
|---|---|---|
email | EmailContent | Email content. |
sms | SmsContent | SMS content. |
push | PushContent | Push content. |
inbox | InboxContent | In-app inbox content. |
send_limit | SendLimit | A per-recipient send limit on messages rendered from this template; unset admits every message. |
#TemplateStatus
| Field | Type | What it is |
|---|---|---|
observed_generation | int64 | The generation this status was computed from. Output only. |
conditions | Condition[] | Ready, Reconciling, Stalled. Output only. |
version | int64 | The version the current spec is; messages pin it. Output only. |
#EmailContent
| Field | Type | What it is |
|---|---|---|
sender_address | string | The From address; its domain is a verified Email Domain. Required. |
subject | string | The subject. Required. |
html_body | string | The HTML body. |
text_body | string | The plain-text body. |
sender_name | string | The From display name, for example the app's name. |
#SmsContent
| Field | Type | What it is |
|---|---|---|
sender | string | The SMS Sender. Required. |
body | string | The body. Required. |
#PushContent
| Field | Type | What it is |
|---|---|---|
title | string | The title. Required. |
body | string | The body. |
data | struct | Data delivered with the notification. |
#InboxContent
| Field | Type | What it is |
|---|---|---|
title | string | The title. Required. |
body | string | The body. |
action_uri | string | Where the item links. |
#SendLimit
| Field | Type | What it is |
|---|---|---|
min_interval | duration | At least this long between two messages to one recipient. |
max_per_hour | int32 | At most this many messages to one recipient in any hour; 0 is no limit. |
#Condition
| Field | Type | What it is |
|---|---|---|
type | string | The condition type, for example Ready. |
status | ConditionStatus | Whether the condition holds. One of true, false, unknown. |
observed_generation | int64 | The generation this observation was made against. |
reason | string | A machine-readable UpperCamelCase reason. |
message | string | A customer-safe human-readable message. |
severity | Severity | How severe a FALSE condition is. One of info, warning, error. |
transition_time | timestamp | When status last changed. |
#Errors
UNAUTHENTICATED— No valid key or token was presented.PERMISSION_DENIED— The key lacks the method's permission.UNKNOWN_FIELD— The request has a field the schema does not know.INVALID_FIELD— A field failed validation.RESOURCE_ALREADY_EXISTS— A Resource with this name exists.IDEMPOTENCY_KEY_REUSED— An Idempotency-Key was reused with another body.IDEMPOTENCY_IN_PROGRESS— The first call with this Idempotency-Key is still running.PLAN_LIMIT_REACHED— The plan's limit is reached.
Every error arrives in the body Errors describes.
#Examples
curl -X POST "https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/templates" \
-H "Authorization: Bearer $SYLPHX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"spec":{}}'