List email template versions
/v1/email/templates/{template_ref}/versionsbird email templates versions list <template-ref>curl -X GET "https://us1.platform.bird.com/v1/email/templates/{template_ref}/versions" \
-H "Authorization: Bearer $TOKEN" \
--url-query "limit=25"{
"data": [
{
"id": "emv_01krdgeqcxet5s7t44vh8rt9mg",
"template_id": "emt_01krdgeqcxet5s7t44vh8rt9mg",
"status": "published",
"variables": [
{
"type": "code"
}
],
"default_language": "pt-BR",
"available_languages": [
"en",
"pt-BR"
],
"updated_by": {
"id": "usr_01krdgeqcxet5s7t44vh8rt9mg",
"type": "user"
}
}
],
"next_cursor": "eyJ2IjoxLCJzIjoiXCIyMDI2LTA1LTI1VDE0OjAzOjEwWlwiIiwiaSI6IjAxOTJmM2IxLTRjN2UtN2EyYi05ZDYxLThmM2E1YzJlN2I0MCJ9",
"prev_cursor": null,
"refresh_cursor": "eyJ2IjoxLCJzIjoiXCIyMDI2LTA1LTI1VDE2OjQyOjAxWlwiIiwiaSI6IjAxOTJmM2IxLTllMDQtN2NkMy1iODE3LTJhNmY0ZDFjOGUwOSJ9"
}
Returns the template's versions as a cursor page (the current draft plus all published versions), newest first. Each entry names its languages without returning their content. Templates retain every language of every submitted version, so listing their content would grow the response with the template's history. Read a single version for its content.
参数
template_refstringThe template's id (emt_…) or slug. A built-in system template's bird_ slug also resolves here, to its one permanently published version.
查询参数
limitintegerMaximum number of items to return per page.
starting_afterstringCursor from the next_cursor field of a previous list response. Returns items immediately after the cursor position in the current sort order.
ending_beforestringCursor from the prev_cursor or refresh_cursor field of a previous list response. Returns items immediately before the cursor position in the current sort order. prev_cursor returns the preceding page. refresh_cursor anchors at the first row of that response, which on a newest-first sort is how to fetch the items that have appeared since.
响应载荷
dataOne page of the template's versions, newest first. Each entry describes a version and which languages it holds. Read a single version if you want its actual content.
显示子属性
data.idTemplate version ID.
data.template_idThe template this version belongs to.
data.version_numberSequential published-version number (1, 2, 3…). Null while the version is a draft.
data.statusWhether this version is still being edited or has been published. It records
the version's publication history: a version that a later one replaced stays
published. The template's live_version_id names the version a send
resolves to now.
archived is reserved and no version carries it yet. Version retirement will
produce it, so it is declared here ahead of that feature: a client written
against this list today keeps working when the first archived version arrives,
rather than the value's arrival being a breaking change.
Possible values: draft, published, archived
data.revisionThe version's revision counter.
data.variablesInput definitions this version uses, including caller parameters and reserved Bird inputs. An entry with system false is yours to send in template.parameters. An entry with system true names a reserved Bird key; supported paths receive Bird values. A draft can also report unsupported reserved paths, including bare bird, whose constraint explains that no Bird value fills them. Correct these paths before publishing. Naming a reserved Bird key in a send is rejected with a 422.
The list combines all the languages, because languages do not have to use the same inputs: if the English body uses discount_code and the French body uses shipping_date, both appear here. A send requires values only for the caller parameters referenced by its resolved language. Preview each language to see its inputs. Extra parameters are ignored; omitting a caller parameter referenced by the resolved language returns a 422 naming it.
显示子属性
data.variables.keyThe key this slot is filled by. When system is true it is the reserved bird key or a dotted path beneath it, such as bird.contact.first_name, and naming it in a send is rejected. Otherwise, on email and SMS it is the key you set in the send's parameters object, and on WhatsApp the name you repeat on the matching parameter inside components, or, for a template whose placeholders are positional, the position itself as 1, 2 and so on.
data.variables.typeThe value type this slot accepts. Built-in SMS templates use typed slots (code, amount and the rest), each of which rejects a value that does not match its constraint. Email, WhatsApp and workspace SMS templates use text. Workspace SMS parameters must be scalar values. Open enum: treat an unrecognized value as a future type rather than an error.
Possible values (may grow over time): code, ttl, count, ref, date, date_time, amount, currency, text
data.variables.requiredWhether the send must supply this variable. Omitting a required value returns 422 on email, SMS, and WhatsApp sends. Always false when system is true, because you do not supply that slot's value.
data.variables.constraintA plain-language description of what values this variable accepts. When system is true it names where Bird takes the value from instead, because there is no value for you to send.
data.variables.sensitiveWhether this slot's value is redacted from stored message content. A placeholder replaces the sensitive value in message history; transport queues can still carry the text needed for delivery.
data.variables.systemWhether the value comes from Bird rather than from the send. Absent means false. Only email templates have system slots, identified by the reserved bird key or a dotted path beneath it; every SMS and WhatsApp slot is yours to fill. A draft can also name a reserved key no Bird value fills, including bird itself: constraint says so, and publishing that draft is rejected.
data.default_languageThe language this version treats as its default: the one a send uses when it names none, and the last resort when a requested language is not available.
data.available_languagesThe languages this version holds, as BCP-47 tags: the keys its languages map would return, without the content itself.
data.created_atWhen this version was created.
data.published_atWhen this version was published, or null if it has not been published.
data.updated_byWho last saved this version: a member's own session, an OAuth token delegated from one, or a workspace API key. Publishing freezes a version, so on a published one this is whoever published it. Null means no actor is on record: a built-in template, which is code-defined rather than stored, or a version last saved by an API key before this field existed. Every other version has one, even when its display_name could not be resolved (a member whose account is gone, say).
显示子属性
data.updated_by.idActor identifier.
data.updated_by.typeNew actor types may be added. Treat unrecognized values as future types, not errors.
user: a member's own session.api_key: a workspace API key.oauth_token: a token issued to a caller on a member's behalf.system: an action we perform without a customer actor.sso: an organization's SSO connection.service_account: a workspace's connected Integration acting with no member behind it.automation: an automation execution in your workspace.
Possible values (may grow over time): user, api_key, oauth_token, system, sso, service_account, automation
data.updated_by.display_nameThe label the actor is shown under: typically a member's name or email address, or the API key's name. Null when it could not be resolved.
next_cursorCursor for the next page. Pass back as starting_after to advance forward. null when no next page exists.
prev_cursorCursor for the previous page. Pass back as ending_before to step backward. null when no previous page exists.
refresh_cursorRefresh anchor, the first row of this response. Pass back as ending_before to fetch what precedes it in the current sort order. On a newest-first sort those are the items that have appeared since; on any other sort they are the items that sort earlier, so refreshing such a list means re-fetching it instead. Non-null whenever data is non-empty; null only on an empty page. Distinct from prev_cursor.