# Templates
## Create Template
`print_mail.templates.create(TemplateCreateParams**kwargs) -> Template`
**post** `/print-mail/v1/templates`
Create a template. Note that if you want to create a template that works with our template editor, you must use our dashboard.
### Parameters
- `description: Optional[str]`
An optional string describing this resource. Will be visible in the API and the dashboard.
- `html: Optional[str]`
The HTML content of this template.
- `metadata: Optional[Dict[str, object]]`
See the section on Metadata.
### Returns
- `class Template: …`
- `id: str`
A unique ID prefixed with template_
- `created_at: datetime`
The UTC time at which this resource was created.
- `live: bool`
`true` if this is a live mode resource else `false`.
- `object: Literal["template"]`
Always `template`.
- `"template"`
- `updated_at: datetime`
The UTC time at which this resource was last updated.
- `description: Optional[str]`
An optional string describing this resource. Will be visible in the API and the dashboard.
- `html: Optional[str]`
The HTML content of this template.
- `metadata: Optional[Dict[str, object]]`
See the section on Metadata.
### Example
```python
import os
from postgrid import PostGrid
client = PostGrid(
print_mail_api_key=os.environ.get("POSTGRID_PRINT_MAIL_API_KEY"), # This is the default and can be omitted
)
template = client.print_mail.templates.create(
description="Test",
html="Hello {{to.firstName}}",
)
print(template.id)
```
#### Response
```json
{
"id": "template_tBnVEzz878mXLbHQaz86j8",
"object": "template",
"live": false,
"description": "Test",
"html": "Hello {{to.firstName}}!",
"createdAt": "2020-11-12T23:23:47.974Z",
"updatedAt": "2020-11-12T23:23:47.974Z"
}
```
## List Templates
`print_mail.templates.list(TemplateListParams**kwargs) -> SyncSkipLimit[Template]`
**get** `/print-mail/v1/templates`
Get a list of templates.
### Parameters
- `limit: Optional[int]`
- `search: Optional[str]`
You can supply any string to help narrow down the list of resources. For example, if you pass `"New York"` (quoted), it will return resources that have that string present somewhere in their response. Alternatively, you can supply a structured search query. See the documentation on `StructuredSearchQuery` for more details.
- `skip: Optional[int]`
### Returns
- `class Template: …`
- `id: str`
A unique ID prefixed with template_
- `created_at: datetime`
The UTC time at which this resource was created.
- `live: bool`
`true` if this is a live mode resource else `false`.
- `object: Literal["template"]`
Always `template`.
- `"template"`
- `updated_at: datetime`
The UTC time at which this resource was last updated.
- `description: Optional[str]`
An optional string describing this resource. Will be visible in the API and the dashboard.
- `html: Optional[str]`
The HTML content of this template.
- `metadata: Optional[Dict[str, object]]`
See the section on Metadata.
### Example
```python
import os
from postgrid import PostGrid
client = PostGrid(
print_mail_api_key=os.environ.get("POSTGRID_PRINT_MAIL_API_KEY"), # This is the default and can be omitted
)
page = client.print_mail.templates.list()
page = page.data[0]
print(page.id)
```
#### Response
```json
{
"object": "list",
"limit": 10,
"skip": 0,
"totalCount": 1,
"data": [
{
"id": "template_tBnVEzz878mXLbHQaz86j8",
"object": "template",
"live": false,
"description": "Test",
"html": "Hello {{to.firstName}}!",
"createdAt": "2020-11-12T23:23:47.974Z",
"updatedAt": "2020-11-12T23:23:47.974Z"
}
]
}
```
## Get Template
`print_mail.templates.retrieve(strid) -> Template`
**get** `/print-mail/v1/templates/{id}`
Retrieve a template by ID.
### Parameters
- `id: str`
### Returns
- `class Template: …`
- `id: str`
A unique ID prefixed with template_
- `created_at: datetime`
The UTC time at which this resource was created.
- `live: bool`
`true` if this is a live mode resource else `false`.
- `object: Literal["template"]`
Always `template`.
- `"template"`
- `updated_at: datetime`
The UTC time at which this resource was last updated.
- `description: Optional[str]`
An optional string describing this resource. Will be visible in the API and the dashboard.
- `html: Optional[str]`
The HTML content of this template.
- `metadata: Optional[Dict[str, object]]`
See the section on Metadata.
### Example
```python
import os
from postgrid import PostGrid
client = PostGrid(
print_mail_api_key=os.environ.get("POSTGRID_PRINT_MAIL_API_KEY"), # This is the default and can be omitted
)
template = client.print_mail.templates.retrieve(
"id",
)
print(template.id)
```
#### Response
```json
{
"id": "template_tBnVEzz878mXLbHQaz86j8",
"object": "template",
"live": false,
"description": "Test",
"html": "Hello {{to.firstName}}!",
"createdAt": "2020-11-12T23:23:47.974Z",
"updatedAt": "2020-11-12T23:23:47.974Z"
}
```
## Update Template
`print_mail.templates.update(strid, TemplateUpdateParams**kwargs) -> Template`
**post** `/print-mail/v1/templates/{id}`
Update a template by ID.
### Parameters
- `id: str`
- `description: Optional[str]`
An optional string describing this resource. Will be visible in the API and the dashboard.
- `html: Optional[str]`
The HTML content of this template.
- `metadata: Optional[Dict[str, object]]`
See the section on Metadata.
### Returns
- `class Template: …`
- `id: str`
A unique ID prefixed with template_
- `created_at: datetime`
The UTC time at which this resource was created.
- `live: bool`
`true` if this is a live mode resource else `false`.
- `object: Literal["template"]`
Always `template`.
- `"template"`
- `updated_at: datetime`
The UTC time at which this resource was last updated.
- `description: Optional[str]`
An optional string describing this resource. Will be visible in the API and the dashboard.
- `html: Optional[str]`
The HTML content of this template.
- `metadata: Optional[Dict[str, object]]`
See the section on Metadata.
### Example
```python
import os
from postgrid import PostGrid
client = PostGrid(
print_mail_api_key=os.environ.get("POSTGRID_PRINT_MAIL_API_KEY"), # This is the default and can be omitted
)
template = client.print_mail.templates.update(
id="id",
description="Test",
html="Hello {{to.firstName}}!",
)
print(template.id)
```
#### Response
```json
{
"id": "template_tBnVEzz878mXLbHQaz86j8",
"object": "template",
"live": false,
"description": "Test",
"html": "Hello {{to.firstName}}!",
"createdAt": "2020-11-12T23:23:47.974Z",
"updatedAt": "2020-11-12T23:23:47.974Z"
}
```
## Delete Template
`print_mail.templates.delete(strid) -> TemplateDeleteResponse`
**delete** `/print-mail/v1/templates/{id}`
Delete a template by ID. Note that this operation cannot be undone.
### Parameters
- `id: str`
### Returns
- `class TemplateDeleteResponse: …`
- `id: str`
A unique ID prefixed with template_
- `deleted: Literal[true]`
- `true`
- `object: Literal["template"]`
Always `template`.
- `"template"`
### Example
```python
import os
from postgrid import PostGrid
client = PostGrid(
print_mail_api_key=os.environ.get("POSTGRID_PRINT_MAIL_API_KEY"), # This is the default and can be omitted
)
template = client.print_mail.templates.delete(
"id",
)
print(template.id)
```
#### Response
```json
{
"id": "template_sqF12lZ1VlBb",
"deleted": true,
"object": "template"
}
```
## Domain Types
### Template
- `class Template: …`
- `id: str`
A unique ID prefixed with template_
- `created_at: datetime`
The UTC time at which this resource was created.
- `live: bool`
`true` if this is a live mode resource else `false`.
- `object: Literal["template"]`
Always `template`.
- `"template"`
- `updated_at: datetime`
The UTC time at which this resource was last updated.
- `description: Optional[str]`
An optional string describing this resource. Will be visible in the API and the dashboard.
- `html: Optional[str]`
The HTML content of this template.
- `metadata: Optional[Dict[str, object]]`
See the section on Metadata.