이메일 템플릿 API
이메일 템플릿 API는 애플리케이션의 이메일 프리셋 뒤에 있는 재사용 가능한 이메일 템플릿을 관리합니다. 이는 Control Panel의 이메일 편집기에서 만드는 것과 동일한 템플릿입니다. 각 템플릿은 로케일별 제목, 발신자 정보, 편집기 콘텐츠를 저장하며, 연결된 이메일 프리셋의 코드로 식별됩니다. 이 코드를 사용하여 Notify (이메일 페이로드 email_template) 또는 Customer Journey의 이메일 보내기 지점을 통해 템플릿을 보낼 수 있습니다.
기본 URL
Anchor link tohttps://rpc-api.svc-nue.pushwoosh.com모든 엔드포인트는 HTTPS를 통해 제공됩니다. 요청과 응답은 별도로 명시되지 않는 한 application/json을 사용합니다.
모든 요청에는 서버 API 토큰이 포함된 Authorization 헤더가 있어야 합니다.
Authorization: Api YOUR_API_TOKEN- 필드 이름 지정: 요청 본문과 쿼리/경로 매개변수는
lowerCamelCase(예:previewSettings,searchByLabel,includeHtml)를 허용합니다. 서버는 두 가지 케이스 모두를 언마샬링합니다. 응답은 항상 프로토 필드 이름을 사용하여snake_case(per_page,email_template,sender_info,preview_settings등)로 마샬링됩니다. 아래의 응답 예시와 객체 참조는 해당 케이스를 사용합니다. code: 모든 템플릿 응답은 내부 템플릿 ID가 아닌 연결된 이메일 프리셋의 코드를 전달합니다. 이 동일한 코드를Get,Update,Delete및 위의 메시징/여정 API에 전달하십시오.- 채워지지 않은 필드: 응답에는 비어 있거나 0 값인 경우에도 모든 필드가 포함됩니다.
오류 응답
Anchor link to| HTTP 상태 | 의미 |
|---|---|
400 Bad Request | 잘못된 인수 — 필수 필드가 누락되었거나 형식이 잘못되었거나, 전제 조건이 실패했습니다(예: 여전히 Journey에서 사용 중인 템플릿 삭제). |
401 Unauthorized | Authorization 헤더가 누락되었거나 유효하지 않습니다. |
403 Forbidden | 애플리케이션 또는 프리셋이 호출자의 계정에 속하지 않습니다. |
404 Not Found | 템플릿, 프리셋 또는 애플리케이션을 찾을 수 없습니다. |
500 Internal Server Error | 예기치 않은 서버 측 오류입니다. |
엔드포인트
Anchor link to| 메서드 | 경로 | 설명 |
|---|---|---|
POST | /api/email_templates | 새 이메일 템플릿 생성 |
GET | /api/email_templates | 애플리케이션의 이메일 템플릿 목록 조회 |
GET | /api/email_templates/{code} | 단일 이메일 템플릿 조회 |
PUT | /api/email_templates/{code} | 이메일 템플릿 업데이트 |
DELETE | /api/email_templates/{code} | 이메일 템플릿 삭제 |
POST | /api/email_templates:clone | 이메일 템플릿을 애플리케이션으로 복제 |
애플리케이션에 새 이메일 템플릿(편집기 콘텐츠와 연결된 이메일 프리셋)을 생성하고 생성된 템플릿 코드를 반환합니다.
POST /api/email_templates
요청 본문
Anchor link to| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
application | string | 예 | 템플릿을 생성할 Pushwoosh 애플리케이션 코드입니다. |
name | string | 예 | 템플릿 이름, 1–255자. |
content | object | 예 | 이메일 콘텐츠 객체입니다. |
label | string | 아니요 | 자유 텍스트 레이블, 최대 255자. |
categories | array of strings | 아니요 | 템플릿에 태그를 지정할 카테고리 이름입니다. |
previewSettings | object | 아니요 | 임의의 편집기 미리보기 설정으로, 있는 그대로 저장되고 반환됩니다. |
system | boolean | 아니요 | 템플릿을 시스템 템플릿(예: 동기화된 블록 조각과 같은 내부 기능)으로 표시합니다. 시스템 템플릿은 List에서 숨겨지지만(아래 참고 참조) 코드로 접근할 수 있습니다. 기본값은 false입니다. |
요청 예시
Anchor link to{ "application": "XXXXX-XXXXX", "name": "Welcome email", "label": "onboarding", "categories": ["lifecycle"], "content": { "senderInfo": { "from": { "email": "hello@acme.com", "name": "Acme" }, "replyTo": { "email": "support@acme.com", "name": "Acme Support" } }, "subject": { "en": "Welcome to Acme!", "default": "Welcome to Acme!" }, "pushwoosh": { "html": "<html><body>Welcome, {name|string|there}!</body></html>", "localizationData": { "default": { "name": "there" } } } }}{ "email_template": { ... } }를 반환합니다. 생성된 이메일 템플릿 객체이지만 content는 포함하지 않습니다(이 엔드포인트는 이를 다시 반향하지 않습니다). 콘텐츠를 다시 읽어야 하는 경우 반환된 code로 Get을 호출하십시오.
페이징, 정렬, 이름, 레이블 또는 카테고리별 필터링을 사용하여 애플리케이션의 이메일 템플릿(콘텐츠 제외, 메타데이터만)을 나열합니다.
GET /api/email_templates
쿼리 매개변수
Anchor link to| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
application | string | 예 | 템플릿을 나열할 애플리케이션 코드입니다. |
orderBy | string | 아니요 | NAME(기본값), CREATED 또는 UPDATED입니다. |
orderDirection | string | 아니요 | ASC(기본값) 또는 DESC입니다. |
page | integer | 아니요 | 0부터 시작하는 페이지 인덱스입니다. |
perPage | integer | 아니요 | 페이지 크기입니다. 생략하거나 0일 경우 기본값은 100입니다. 이 엔드포인트는 명시적인 최대값을 강제하지 않습니다. |
searchByName | string | 아니요 | 템플릿의 이름 또는 코드에 대한 부분 문자열 일치(like %value%)입니다. 둘 중 하나만 일치하면 됩니다. |
searchByLabel | string | 아니요 | 레이블에 대한 부분 문자열 일치(like %label%) 또는 strictSearchByLabel이 true일 때 정확한 일치입니다. |
strictSearchByLabel | boolean | 아니요 | searchByLabel에 대해 부분 문자열 대신 정확한 일치를 사용합니다. |
searchByCategory | array of strings | 아니요 | 여러 카테고리 중 하나로 필터링하려면 매개변수를 반복합니다(예: ?searchByCategory=lifecycle&searchByCategory=promo). |
| 필드 | 유형 | 설명 |
|---|---|---|
email_templates | array of objects | 현재 페이지의 이메일 템플릿 객체입니다. 모든 항목에서 content는 null입니다. |
page | integer | 반환된 페이지 인덱스입니다. |
per_page | integer | 이 응답에 사용된 페이지 크기입니다. |
total | integer | 모든 페이지에 걸쳐 필터와 일치하는 총 템플릿 수입니다. |
응답 예시
Anchor link to{ "email_templates": [ { "code": "AAAAA-BBBBB", "name": "Welcome email", "label": "onboarding", "categories": ["lifecycle"] } ], "page": 0, "per_page": 100, "total": 1}코드로 단일 이메일 템플릿을 반환하며, 발신자 정보, 로케일별 제목 및 전체 편집기 콘텐츠를 포함합니다.
GET /api/email_templates/{code}
경로 매개변수
Anchor link to| 매개변수 | 유형 | 설명 |
|---|---|---|
code | string | 템플릿의 코드(연결된 이메일 프리셋 코드)입니다. |
쿼리 매개변수
Anchor link to| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
includeHtml | boolean | 아니요 | 렌더링된 html을 편집기 콘텐츠와 함께 반환할지 여부입니다. 기본값은 true입니다. 이를 건너뛰려면 false로 설정하십시오. 일반적으로 페이로드의 절반 이상을 차지하며, 편집기 콘텐츠는 이미 템플릿을 설명합니다. |
전체 이메일 템플릿 객체인 { "email_template": { ... } }를 반환합니다.
업데이트
Anchor link to코드로 기존 이메일 템플릿을 업데이트하고 제공된 필드를 덮어씁니다.
PUT /api/email_templates/{code}
경로 매개변수
Anchor link to| 매개변수 | 유형 | 설명 |
|---|---|---|
code | string | 업데이트할 템플릿의 코드입니다. |
요청 본문
Anchor link to| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
name | string | 아니요 | 새 이름, 1–255자. 현재 이름을 유지하려면 생략합니다. |
content | object | 아니요 | 저장된 콘텐츠를 완전히 대체하는 새 이메일 콘텐츠 객체입니다. 콘텐츠를 변경하지 않으려면 생략합니다. |
label | string | 아니요 | 새 레이블입니다. 항상 덮어쓰여집니다. 지우려면 생략하거나 ""를 보냅니다. |
categories | array of strings | 아니요 | 새로운 전체 카테고리 이름 집합입니다. 카테고리를 변경하지 않으려면 생략하고, 지우려면 []를 보냅니다. |
previewSettings | object | 아니요 | 새 미리보기 설정입니다. 변경하지 않으려면 생략합니다. |
요청 예시
Anchor link to{ "name": "Welcome email v2", "label": "onboarding", "content": { "senderInfo": { "from": { "email": "hello@acme.com", "name": "Acme" } }, "subject": { "default": "Welcome to Acme — updated!" }, "pushwoosh": { "html": "<html>...</html>", "localizationData": {} } }}업데이트된 이메일 템플릿 객체인 { "email_template": { ... } }를 반환하며, 이 또한 content는 포함하지 않습니다. 콘텐츠를 다시 읽어야 하는 경우 Get을 호출하십시오.
코드로 이메일 템플릿과 연결된 프리셋을 삭제하고 저장된 콘텐츠를 제거합니다.
DELETE /api/email_templates/{code}
경로 매개변수
Anchor link to| 매개변수 | 유형 | 설명 |
|---|---|---|
code | string | 삭제할 템플릿의 코드입니다. |
성공 시 빈 객체: {}.
이메일 템플릿(콘텐츠 및 프리셋)을 대상 애플리케이션으로 복제하며, 선택적으로 새 이름으로 복제할 수 있습니다.
POST /api/email_templates:clone
요청 본문
Anchor link to| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
emailPresetCode | string | 예 | 복제할 템플릿의 code(Create, Get, List 또는 Update에서 반환됨)입니다. 연결된 이메일 프리셋의 코드이므로 여기서는 emailPresetCode로 명명되었습니다. 규칙을 참조하십시오. |
application | string | 예 | 대상 애플리케이션 코드입니다. 동일한 애플리케이션이거나 동일한 계정이 소유한 다른 애플리케이션일 수 있습니다. |
name | string | 아니요 | 복제본의 이름, 1–255자. 기본값은 원본 템플릿의 이름입니다. |
요청 예시
Anchor link to{ "emailPresetCode": "AAAAA-BBBBB", "application": "YYYYY-YYYYY", "name": "Welcome email (copy)"}| 필드 | 유형 | 설명 |
|---|---|---|
email_preset_code | string | 새 템플릿의 code — Get/Update/Delete가 code라고 부르는 것과 동일한 식별자입니다. |
객체 참조
Anchor link to아래 필드 이름은 Get, List, Update, Create가 실제로 반환하는 것과 일치합니다 — snake_case 프로토 필드 이름(규칙 참조). 이 동일한 구조를 요청 본문(Create, Update)으로 다시 보낼 때, 위의 요청 예시에서 사용된 lowerCamelCase 형식도 작동합니다. 서버는 입력 시 두 가지 케이스 모두를 허용합니다.
이메일 템플릿 객체
Anchor link to| 필드 | 유형 | 설명 |
|---|---|---|
code | string | 연결된 이메일 프리셋의 코드입니다. API의 다른 모든 곳에서 이 템플릿을 식별합니다. |
name | string | 템플릿 이름입니다. |
label | string | 자유 텍스트 레이블입니다. |
categories | array of strings | 카테고리 이름입니다. |
content | object | 이메일 콘텐츠 객체입니다. Get에 의해서만 채워집니다. Create, List, Update 응답에서는 null입니다. |
preview_settings | object | 임의의 편집기 미리보기 설정입니다. |
created | string (RFC 3339) | 생성 타임스탬프입니다. |
updated | string (RFC 3339) | 마지막 업데이트 타임스탬프입니다. |
이메일 콘텐츠 객체
Anchor link to| 필드 | 유형 | 설명 |
|---|---|---|
sender_info | object | 발신자 정보 객체 — from 및 reply_to 주소입니다. |
subject | object (map) | 로케일별 제목, 예: { "en": "Subject", "default": "Subject" }. |
unlayer / pushwoosh / smartcards | object | 편집기 콘텐츠입니다. 이 중 정확히 하나만 설정해야 합니다. 이는 어떤 편집기가 템플릿을 생성했는지(그리고 렌더링할 것인지) 선택합니다. 아래의 편집기 종류를 참조하십시오. |
편집기 종류
Anchor link to| 종류 | 필드 | 필수 하위 필드 | 설명 |
|---|---|---|---|
unlayer | html, localization_data, editor_config | editor_config, localization_data | 드래그 앤 드롭 블록 편집기(Unlayer)입니다. editor_config는 Unlayer 디자인 JSON입니다. |
pushwoosh | html, localization_data | localization_data | Pushwoosh 자체의 HTML 기반 편집기입니다. 프로그래밍 방식/API 작성 템플릿에 권장됩니다. |
smartcards | html, localization_data, content | content, localization_data | Smart Cards 블록 편집기입니다. content는 해당 편집기별 JSON입니다. |
모든 종류에서 html은 렌더링된 출력입니다. localization_data는 해당 편집기 자체의 로케일별 콘텐츠입니다. 로케일 코드(en, es, default, …)로 키가 지정된 객체이며, 각 값은 해당 로케일의 편집기 필드 사본입니다. 내부 구조는 편집기별로 다르며 이 API에는 불투명합니다. API는 이를 있는 그대로 저장하고 반환합니다. 모든 종류에 대해 Create/Update에서 필수입니다(지역화할 내용이 없으면 {}를 보내십시오).
html 또는 localization_data 값 내부의 텍스트에는 동적 콘텐츠 태그(예: {name|string|there})가 포함될 수 있습니다. 이 태그는 이메일이 실제로 전송될 때 수신자의 장치 태그에 대해 확인됩니다. 이 API는 이를 확인하지 않고, 입력한 텍스트를 그대로 저장하고 반환합니다.
발신자 정보 객체
Anchor link to| 필드 | 유형 | 설명 |
|---|---|---|
from | object | { "email": string, "name": string } — 발신자 주소입니다. |
reply_to | object | { "email": string, "name": string } — 회신 주소입니다. |
두 email 하위 필드는 비어 있지 않을 때 유효한 이메일 주소여야 합니다.