> For the complete documentation index, see [llms.txt](https://api-docs.myhappyforce.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://api-docs.myhappyforce.com/docs/api-reference/announcement-templates.md).

# Announcement Templates

Read and manage the global catalog of reusable announcement templates (e.g. "See you later {name}!"). Shared by every company; read by announcement authors, managed by admins.

## Update a template

> Updates an existing template identified by its id. All editable fields are replaced; the \`id\` is preserved.

```json
{"openapi":"3.1.0","info":{"title":"Happyforce API","version":"v1"},"tags":[{"name":"Announcement Templates","description":"Read and manage the global catalog of reusable announcement templates (e.g. \"See you later {name}!\"). Shared by every company; read by announcement authors, managed by admins."}],"servers":[{"url":"{url}","description":"API URL","variables":{"url":{"description":"API Environment","enum":["https://api.happyforce.com","https://staging.happyforce.com","http://localhost:9000"],"default":"https://api.happyforce.com"}}}],"security":[{"companyAPISessionId":[]}],"components":{"securitySchemes":{"companyAPISessionId":{"type":"apiKey","description":"SessionId","name":"SessionId","in":"header"}},"schemas":{"AnnouncementTemplateDTO":{"type":"object","description":"Global reusable announcement template shared by all companies (e.g. \"See you later {name}!\"). Placeholder tokens are stored verbatim.","properties":{"id":{"type":"string","description":"Unique template identifier","readOnly":true},"key":{"type":"string","description":"Stable business key / slug identifying the template"},"title":{"$ref":"#/components/schemas/MultiLanguage","description":"Template title (multilingual). May contain placeholder tokens such as {name}."},"body":{"$ref":"#/components/schemas/MultiLanguage","description":"Template body/message (multilingual). May contain placeholder tokens such as {name}."},"resume":{"$ref":"#/components/schemas/MultiLanguage","description":"Optional short summary/subtitle seed text (multilingual)"},"category":{"type":"string","description":"Grouping shown in the dashboard template picker"},"coverImageURL":{"type":"string","description":"Cover/illustration image URL associated with the template"},"order":{"type":"integer","format":"int32","description":"Display ordering within the catalog (ascending)"},"enabled":{"type":"boolean","description":"Whether the template is offered to authors; disabled templates are hidden from the picker"},"placeholders":{"type":"array","description":"Placeholder tokens the template exposes, for the dashboard token palette","items":{"type":"string"}}},"required":["key","title"]},"MultiLanguage":{"type":"object","description":"A translatable text value: a required default value plus optional per-language overrides keyed by language tag (e.g. \"es\", \"en\", \"pt-BR\"). Consumers resolve the user's language from langValues (falling back to the base language, then to defaultValue).","properties":{"defaultValue":{"type":"string","description":"Fallback text used when there is no entry in langValues for the requested language.","minLength":1},"langValues":{"type":"object","additionalProperties":{"type":"string"},"description":"Per-language overrides keyed by language tag (e.g. \"es\", \"en\", \"pt-BR\")."},"valid":{"type":"boolean"}},"required":["defaultValue"]}}},"paths":{"/api/v1/company/announcements/templates/{templateId}":{"put":{"tags":["Announcement Templates"],"summary":"Update a template","description":"Updates an existing template identified by its id. All editable fields are replaced; the `id` is preserved.","operationId":"updateAnnouncementTemplate","parameters":[{"name":"templateId","in":"path","description":"Template identifier","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/AnnouncementTemplateDTO"}}},"required":true},"responses":{"200":{"description":"Template updated","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AnnouncementTemplateDTO"}}}},"412":{"description":"Template not found, validation failed, or key conflict","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AnnouncementTemplateDTO"}}}}}}}}}
```

## Delete a template

> Deletes a template from the global catalog, identified by its id.

```json
{"openapi":"3.1.0","info":{"title":"Happyforce API","version":"v1"},"tags":[{"name":"Announcement Templates","description":"Read and manage the global catalog of reusable announcement templates (e.g. \"See you later {name}!\"). Shared by every company; read by announcement authors, managed by admins."}],"servers":[{"url":"{url}","description":"API URL","variables":{"url":{"description":"API Environment","enum":["https://api.happyforce.com","https://staging.happyforce.com","http://localhost:9000"],"default":"https://api.happyforce.com"}}}],"security":[{"companyAPISessionId":[]}],"components":{"securitySchemes":{"companyAPISessionId":{"type":"apiKey","description":"SessionId","name":"SessionId","in":"header"}},"schemas":{"AnnouncementTemplateDTO":{"type":"object","description":"Global reusable announcement template shared by all companies (e.g. \"See you later {name}!\"). Placeholder tokens are stored verbatim.","properties":{"id":{"type":"string","description":"Unique template identifier","readOnly":true},"key":{"type":"string","description":"Stable business key / slug identifying the template"},"title":{"$ref":"#/components/schemas/MultiLanguage","description":"Template title (multilingual). May contain placeholder tokens such as {name}."},"body":{"$ref":"#/components/schemas/MultiLanguage","description":"Template body/message (multilingual). May contain placeholder tokens such as {name}."},"resume":{"$ref":"#/components/schemas/MultiLanguage","description":"Optional short summary/subtitle seed text (multilingual)"},"category":{"type":"string","description":"Grouping shown in the dashboard template picker"},"coverImageURL":{"type":"string","description":"Cover/illustration image URL associated with the template"},"order":{"type":"integer","format":"int32","description":"Display ordering within the catalog (ascending)"},"enabled":{"type":"boolean","description":"Whether the template is offered to authors; disabled templates are hidden from the picker"},"placeholders":{"type":"array","description":"Placeholder tokens the template exposes, for the dashboard token palette","items":{"type":"string"}}},"required":["key","title"]},"MultiLanguage":{"type":"object","description":"A translatable text value: a required default value plus optional per-language overrides keyed by language tag (e.g. \"es\", \"en\", \"pt-BR\"). Consumers resolve the user's language from langValues (falling back to the base language, then to defaultValue).","properties":{"defaultValue":{"type":"string","description":"Fallback text used when there is no entry in langValues for the requested language.","minLength":1},"langValues":{"type":"object","additionalProperties":{"type":"string"},"description":"Per-language overrides keyed by language tag (e.g. \"es\", \"en\", \"pt-BR\")."},"valid":{"type":"boolean"}},"required":["defaultValue"]}}},"paths":{"/api/v1/company/announcements/templates/{templateId}":{"delete":{"tags":["Announcement Templates"],"summary":"Delete a template","description":"Deletes a template from the global catalog, identified by its id.","operationId":"deleteAnnouncementTemplate","parameters":[{"name":"templateId","in":"path","description":"Template identifier","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Template deleted","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AnnouncementTemplateDTO"}}}},"412":{"description":"Template not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AnnouncementTemplateDTO"}}}}}}}}}
```

## List templates for authoring

> Returns the enabled templates of the global catalog, ordered for display in the dashboard picker. Placeholder tokens (e.g. \`{name}\`) are returned verbatim; the client substitutes them when the author picks a template.

```json
{"openapi":"3.1.0","info":{"title":"Happyforce API","version":"v1"},"tags":[{"name":"Announcement Templates","description":"Read and manage the global catalog of reusable announcement templates (e.g. \"See you later {name}!\"). Shared by every company; read by announcement authors, managed by admins."}],"servers":[{"url":"{url}","description":"API URL","variables":{"url":{"description":"API Environment","enum":["https://api.happyforce.com","https://staging.happyforce.com","http://localhost:9000"],"default":"https://api.happyforce.com"}}}],"security":[{"companyAPISessionId":[]}],"components":{"securitySchemes":{"companyAPISessionId":{"type":"apiKey","description":"SessionId","name":"SessionId","in":"header"}},"schemas":{"AnnouncementTemplateDTO":{"type":"object","description":"Global reusable announcement template shared by all companies (e.g. \"See you later {name}!\"). Placeholder tokens are stored verbatim.","properties":{"id":{"type":"string","description":"Unique template identifier","readOnly":true},"key":{"type":"string","description":"Stable business key / slug identifying the template"},"title":{"$ref":"#/components/schemas/MultiLanguage","description":"Template title (multilingual). May contain placeholder tokens such as {name}."},"body":{"$ref":"#/components/schemas/MultiLanguage","description":"Template body/message (multilingual). May contain placeholder tokens such as {name}."},"resume":{"$ref":"#/components/schemas/MultiLanguage","description":"Optional short summary/subtitle seed text (multilingual)"},"category":{"type":"string","description":"Grouping shown in the dashboard template picker"},"coverImageURL":{"type":"string","description":"Cover/illustration image URL associated with the template"},"order":{"type":"integer","format":"int32","description":"Display ordering within the catalog (ascending)"},"enabled":{"type":"boolean","description":"Whether the template is offered to authors; disabled templates are hidden from the picker"},"placeholders":{"type":"array","description":"Placeholder tokens the template exposes, for the dashboard token palette","items":{"type":"string"}}},"required":["key","title"]},"MultiLanguage":{"type":"object","description":"A translatable text value: a required default value plus optional per-language overrides keyed by language tag (e.g. \"es\", \"en\", \"pt-BR\"). Consumers resolve the user's language from langValues (falling back to the base language, then to defaultValue).","properties":{"defaultValue":{"type":"string","description":"Fallback text used when there is no entry in langValues for the requested language.","minLength":1},"langValues":{"type":"object","additionalProperties":{"type":"string"},"description":"Per-language overrides keyed by language tag (e.g. \"es\", \"en\", \"pt-BR\")."},"valid":{"type":"boolean"}},"required":["defaultValue"]}}},"paths":{"/api/v1/company/announcements/templates":{"get":{"tags":["Announcement Templates"],"summary":"List templates for authoring","description":"Returns the enabled templates of the global catalog, ordered for display in the dashboard picker. Placeholder tokens (e.g. `{name}`) are returned verbatim; the client substitutes them when the author picks a template.","operationId":"getAnnouncementTemplates","responses":{"200":{"description":"Enabled templates, ordered ascending","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AnnouncementTemplateDTO"}}}}}}}}}}
```

## Create a template

> Creates a new template in the global catalog. The \`key\` must be unique and the default \`title\` must be non-empty; the generated \`id\` is returned.

```json
{"openapi":"3.1.0","info":{"title":"Happyforce API","version":"v1"},"tags":[{"name":"Announcement Templates","description":"Read and manage the global catalog of reusable announcement templates (e.g. \"See you later {name}!\"). Shared by every company; read by announcement authors, managed by admins."}],"servers":[{"url":"{url}","description":"API URL","variables":{"url":{"description":"API Environment","enum":["https://api.happyforce.com","https://staging.happyforce.com","http://localhost:9000"],"default":"https://api.happyforce.com"}}}],"security":[{"companyAPISessionId":[]}],"components":{"securitySchemes":{"companyAPISessionId":{"type":"apiKey","description":"SessionId","name":"SessionId","in":"header"}},"schemas":{"AnnouncementTemplateDTO":{"type":"object","description":"Global reusable announcement template shared by all companies (e.g. \"See you later {name}!\"). Placeholder tokens are stored verbatim.","properties":{"id":{"type":"string","description":"Unique template identifier","readOnly":true},"key":{"type":"string","description":"Stable business key / slug identifying the template"},"title":{"$ref":"#/components/schemas/MultiLanguage","description":"Template title (multilingual). May contain placeholder tokens such as {name}."},"body":{"$ref":"#/components/schemas/MultiLanguage","description":"Template body/message (multilingual). May contain placeholder tokens such as {name}."},"resume":{"$ref":"#/components/schemas/MultiLanguage","description":"Optional short summary/subtitle seed text (multilingual)"},"category":{"type":"string","description":"Grouping shown in the dashboard template picker"},"coverImageURL":{"type":"string","description":"Cover/illustration image URL associated with the template"},"order":{"type":"integer","format":"int32","description":"Display ordering within the catalog (ascending)"},"enabled":{"type":"boolean","description":"Whether the template is offered to authors; disabled templates are hidden from the picker"},"placeholders":{"type":"array","description":"Placeholder tokens the template exposes, for the dashboard token palette","items":{"type":"string"}}},"required":["key","title"]},"MultiLanguage":{"type":"object","description":"A translatable text value: a required default value plus optional per-language overrides keyed by language tag (e.g. \"es\", \"en\", \"pt-BR\"). Consumers resolve the user's language from langValues (falling back to the base language, then to defaultValue).","properties":{"defaultValue":{"type":"string","description":"Fallback text used when there is no entry in langValues for the requested language.","minLength":1},"langValues":{"type":"object","additionalProperties":{"type":"string"},"description":"Per-language overrides keyed by language tag (e.g. \"es\", \"en\", \"pt-BR\")."},"valid":{"type":"boolean"}},"required":["defaultValue"]}}},"paths":{"/api/v1/company/announcements/templates":{"post":{"tags":["Announcement Templates"],"summary":"Create a template","description":"Creates a new template in the global catalog. The `key` must be unique and the default `title` must be non-empty; the generated `id` is returned.","operationId":"createAnnouncementTemplate","requestBody":{"content":{"*/*":{"schema":{"$ref":"#/components/schemas/AnnouncementTemplateDTO"}}},"required":true},"responses":{"200":{"description":"Template created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AnnouncementTemplateDTO"}}}},"412":{"description":"Validation failed or the key already exists","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AnnouncementTemplateDTO"}}}}}}}}}
```

## List all templates for management

> Returns every template of the global catalog, including disabled ones, for admin management. Ordered by \`order\` ascending.

```json
{"openapi":"3.1.0","info":{"title":"Happyforce API","version":"v1"},"tags":[{"name":"Announcement Templates","description":"Read and manage the global catalog of reusable announcement templates (e.g. \"See you later {name}!\"). Shared by every company; read by announcement authors, managed by admins."}],"servers":[{"url":"{url}","description":"API URL","variables":{"url":{"description":"API Environment","enum":["https://api.happyforce.com","https://staging.happyforce.com","http://localhost:9000"],"default":"https://api.happyforce.com"}}}],"security":[{"companyAPISessionId":[]}],"components":{"securitySchemes":{"companyAPISessionId":{"type":"apiKey","description":"SessionId","name":"SessionId","in":"header"}},"schemas":{"AnnouncementTemplateDTO":{"type":"object","description":"Global reusable announcement template shared by all companies (e.g. \"See you later {name}!\"). Placeholder tokens are stored verbatim.","properties":{"id":{"type":"string","description":"Unique template identifier","readOnly":true},"key":{"type":"string","description":"Stable business key / slug identifying the template"},"title":{"$ref":"#/components/schemas/MultiLanguage","description":"Template title (multilingual). May contain placeholder tokens such as {name}."},"body":{"$ref":"#/components/schemas/MultiLanguage","description":"Template body/message (multilingual). May contain placeholder tokens such as {name}."},"resume":{"$ref":"#/components/schemas/MultiLanguage","description":"Optional short summary/subtitle seed text (multilingual)"},"category":{"type":"string","description":"Grouping shown in the dashboard template picker"},"coverImageURL":{"type":"string","description":"Cover/illustration image URL associated with the template"},"order":{"type":"integer","format":"int32","description":"Display ordering within the catalog (ascending)"},"enabled":{"type":"boolean","description":"Whether the template is offered to authors; disabled templates are hidden from the picker"},"placeholders":{"type":"array","description":"Placeholder tokens the template exposes, for the dashboard token palette","items":{"type":"string"}}},"required":["key","title"]},"MultiLanguage":{"type":"object","description":"A translatable text value: a required default value plus optional per-language overrides keyed by language tag (e.g. \"es\", \"en\", \"pt-BR\"). Consumers resolve the user's language from langValues (falling back to the base language, then to defaultValue).","properties":{"defaultValue":{"type":"string","description":"Fallback text used when there is no entry in langValues for the requested language.","minLength":1},"langValues":{"type":"object","additionalProperties":{"type":"string"},"description":"Per-language overrides keyed by language tag (e.g. \"es\", \"en\", \"pt-BR\")."},"valid":{"type":"boolean"}},"required":["defaultValue"]}}},"paths":{"/api/v1/company/announcements/templates/all":{"get":{"tags":["Announcement Templates"],"summary":"List all templates for management","description":"Returns every template of the global catalog, including disabled ones, for admin management. Ordered by `order` ascending.","operationId":"getAllAnnouncementTemplates","responses":{"200":{"description":"All templates, including disabled ones","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AnnouncementTemplateDTO"}}}}}}}}}}
```
