Notification > Notification Hub > API v1.0 사용 가이드 > 템플릿
알림톡 템플릿의 카카오 템플릿 목록을 조회합니다.
요청
GET /template/v1.0/ALIMTALK/templates/{templateId}/kakao-templates
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| templateId | Path | String | O | 템플릿 아이디 |
| limit | Query | Number | X | limit 설정하지 않으면 default 20(최대 1000) |
| offset | Query | Number | X | offset 설정하지 않으면 default 0 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"totalCount" : 1,
"templates" : [ {
"kakaoTemplateCode" : "kakaoTemplateCode",
"kakaoTemplateName" : "템플릿 이름",
"content" : {
"templateMessageType" : "BA",
"templateEmphasizeType" : "NONE",
"templateContent" : "#{이름}님의 주문이 완료되었습니다.",
"templateAd" : "채널 추가하고 이 채널의 마케팅 메시지 등을 카카오톡으로 받기",
"templateExtra" : "* 실시간 예약 특성상 중복 예약이 발생할 수 있으며, 입실이 불가할 경우 예약이 취소될 수 있습니다.\\n* 문의전화: 1234-1234",
"templateTitle" : "123,450원",
"templateSubtitle" : "승인 내역",
"templateHeader" : "주문이 체결되었습니다.",
"templateItem" : {
"list" : [ {
"title" : "아이템 타이틀",
"description" : "아이템 설명"
} ],
"summary" : {
"title" : "요약 타이틀",
"description" : "요약 설명"
}
},
"templateItemHighlight" : {
"title" : "하이라이트 타이틀",
"description" : "하이라이트 설명",
"attachmentId" : "YaX2DA4Weab2",
"imageUrl" : "https://example.com/thumbnail.jpg"
},
"templateRepresentLink" : {
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android"
},
"attachmentId" : "YaX2DA4Weab2",
"templateImageName" : "image.png",
"templateImageUrl" : "https://mud-kage.kakao.com/dn/hAtIc/btshc5wAvF0/sA8gjabh4J34IMqCk0hkBK/img_l.jpg",
"securityFlag" : false,
"categoryCode" : "999999",
"buttons" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "버튼 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ],
"quickReplies" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "바로연결 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ]
},
"reviewStatus" : "APPROVED",
"comments" : [ {
"id" : 1,
"content" : "문의 내용 예시",
"userName" : "사용자 이름",
"createdAt" : "2024-10-29T06:00:01.000+09:00",
"attachments" : [ {
"originalFileName" : "파일명 예시",
"filePath" : "/path/to/file"
} ],
"status" : "REQ"
} ],
"block" : false,
"dormant" : false,
"createdDateTime" : "2024-10-29T06:00:01.000+09:00",
"updatedDateTime" : "2024-10-29T06:00:01.000+09:00"
} ]
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| totalCount | Integer | O | 총 건수 |
| templates | Array | O | |
| templates[].kakaoTemplateCode | String | O | 카카오 템플릿 코드 |
| templates[].kakaoTemplateName | String | O | 템플릿 이름 |
| templates[].content | Object | O | |
| templates[].content.templateMessageType | String | X | 템플릿 메시지 유형(BA: 기본형, EX: 부가 정보형, AD: 채널 추가형, MI: 복합형, default: BA) |
| templates[].content.templateEmphasizeType | String | O | 템플릿 강조 표시 유형 [NONE(강조 없음), TEXT(텍스트 강조), IMAGE(이미지 강조), ITEM_LIST(아이템 리스트 강조)] |
| templates[].content.templateContent | String | X | 템플릿 본문 |
| templates[].content.templateAd | String | X | 채널 추가 안내 메시지(템플릿 메시지 유형: 채널 추가형, 복합형일 경우 고정값) |
| templates[].content.templateExtra | String | X | 템플릿 부가 정보(템플릿 메시지 유형이 [부가 정보형/복합형]일 경우 필수), 치환 변수 사용 불가, URL 포함 가능 |
| templates[].content.templateTitle | String | X | 템플릿 제목(최대 50자, Android: 2줄, 23자 이상 말줄임 처리, iOS : 2줄, 27자 이상 말줄임 처리) |
| templates[].content.templateSubtitle | String | X | 템플릿 보조 문구(최대 50자, Android: 18자 이상 말줄임 처리, iOS : 21자 이상 말줄임 처리) |
| templates[].content.templateHeader | String | X | 템플릿 헤더, 변수 입력 가능 |
| templates[].content.templateItem | Object | X | |
| templates[].content.templateItem.list | Array | O | |
| templates[].content.templateItem.list[].title | String | O | 아이템 타이틀 |
| templates[].content.templateItem.list[].description | String | O | 아이템 설명 |
| templates[].content.templateItem.summary | Object | X | |
| templates[].content.templateItem.summary.title | String | O | 요약 타이틀 |
| templates[].content.templateItem.summary.description | String | O | 요약 설명(변수 및 화폐 단위, 숫자, 쉼표, 마침표만 사용 가능) |
| templates[].content.templateItemHighlight | Object | X | |
| templates[].content.templateItemHighlight.title | String | O | 아이템 하이라이트 타이틀(최대 30자, 섬네일 이미지가 있을 경우, 21자) |
| templates[].content.templateItemHighlight.description | String | O | 아이템 하이라이트 설명(최대 19자, 섬네일 이미지가 있을 경우, 13자) |
| templates[].content.templateItemHighlight.attachmentId | String | X | 템플릿 첨부 파일 ID |
| templates[].content.templateItemHighlight.imageUrl | String | X | 섬네일 이미지 주소 |
| templates[].content.templateRepresentLink | Object | X | |
| templates[].content.templateRepresentLink.linkMo | String | X | 대표 링크 모바일 웹 링크 |
| templates[].content.templateRepresentLink.linkPc | String | X | 대표 링크 PC 웹 링크 |
| templates[].content.templateRepresentLink.schemeIos | String | X | 대표 링크 iOS 앱 링크 |
| templates[].content.templateRepresentLink.schemeAndroid | String | X | 대표 링크 안드로이드 앱 링크 |
| templates[].content.attachmentId | String | X | 템플릿 첨부 파일 ID |
| templates[].content.templateImageName | String | X | 템플릿 이미지 이름 |
| templates[].content.templateImageUrl | String | X | 템플릿 이미지 링크 |
| templates[].content.securityFlag | Boolean | X | 템플릿 보안 여부(default: false) |
| templates[].content.categoryCode | String | X | 템플릿 카테고리 코드(템플릿 카테고리 조회 API 참고, default: 999999) |
| templates[].content.buttons | Array | X | 템플릿 버튼 |
| templates[].content.buttons[].ordering | Integer | O | 템플릿 버튼 순서 |
| templates[].content.buttons[].type | String | O | 템플릿 버튼 유형 [WL(웹 링크), AL(앱 링크), DS(배송 조회), BK(봇 키워드), MD(메시지 전달), BC(상담톡 전환), BT(봇 전환), AC(채널 추가), BF(비즈니스 폼), P1(이미지 보안 전송 플러그인), P2(개인정보 이용 플러그인), P3(원클릭 결제 플러그인), TN(전화하기)] |
| templates[].content.buttons[].name | String | O | 템플릿 버튼 이름 |
| templates[].content.buttons[].linkMo | String | X | 템플릿 버튼 모바일 웹 링크 |
| templates[].content.buttons[].linkPc | String | X | 템플릿 버튼 PC 웹 링크 |
| templates[].content.buttons[].schemeIos | String | X | 템플릿 버튼 iOS 앱 링크 |
| templates[].content.buttons[].schemeAndroid | String | X | 템플릿 버튼 안드로이드 앱 링크 |
| templates[].content.buttons[].bizFormId | Integer | X | 템플릿 버튼 비즈니스폼 ID(BF 타입일 경우, 필수) |
| templates[].content.quickReplies | Array | X | 템플릿 바로 연결 |
| templates[].content.quickReplies[].ordering | Integer | O | 템플릿 바로연결 순서 |
| templates[].content.quickReplies[].type | String | O | 템플릿 바로연결 유형 [WL(웹 링크), AL(앱 링크), BK(봇 키워드), BC(상담톡 전환), BT(봇 전환), BF(비즈니스 폼)] |
| templates[].content.quickReplies[].name | String | O | 템플릿 바로연결 이름 |
| templates[].content.quickReplies[].linkMo | String | X | 템플릿 바로연결 모바일 웹 링크 |
| templates[].content.quickReplies[].linkPc | String | X | 템플릿 바로연결 PC 웹 링크 |
| templates[].content.quickReplies[].schemeIos | String | X | 템플릿 바로연결 iOS 앱 링크 |
| templates[].content.quickReplies[].schemeAndroid | String | X | 템플릿 바로연결 안드로이드 앱 링크 |
| templates[].content.quickReplies[].bizFormId | Integer | X | 템플릿 바로연결 비즈니스폼 ID(BF 타입일 경우, 필수) |
| templates[].reviewStatus | String | O | REGISTERED:요청, REQUESTED:검수 중, APPROVED:승인, REJECTED: 반려 [REGISTERED, REQUESTED, APPROVED, REJECTED] |
| templates[].comments | Array | O | 템플릿 문의 리스트 |
| templates[].comments[].id | Integer | O | 문의 아이디 |
| templates[].comments[].content | String | X | 문의 내용 |
| templates[].comments[].userName | String | O | 작성자 |
| templates[].comments[].createdAt | String | O | 문의 생성 시각 |
| templates[].comments[].attachments | Array | O | 문의 첨부 파일 |
| templates[].comments[].attachments[].originalFileName | String | O | 첨부 파일명 |
| templates[].comments[].attachments[].filePath | String | O | 첨부 파일 경로 |
| templates[].comments[].status | String | O | 문의 상태(REQ: 요청, INQ:문의, APR:승인, REJ:반려, REP: 답변) [REQ, INQ, APR, REJ, REP] |
| templates[].block | Boolean | O | 템플릿 차단 여부 |
| templates[].dormant | Boolean | O | 템플릿 휴면 여부 |
| templates[].createdDateTime | String | O | 템플릿 생성 시각 |
| templates[].updatedDateTime | String | O | 템플릿 수정된 시각 |
요청 예시
### 알림톡 템플릿의 카카오 템플릿 목록 조회
GET {{endpoint}}/template/v1.0/ALIMTALK/templates/{{templateId}}/kakao-templates
curl -X GET "${endpoint}/template/v1.0/ALIMTALK/templates/${templateId}/kakao-templates"
카카오 알림톡 템플릿을 문의할 때 파일을 첨부해 문의합니다.
요청
POST /template/v1.0/ALIMTALK/templates/{templateId}/kakao-templates/{kakaoTemplateCode}/inquiries/do-with-file
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| templateId | Path | String | O | 템플릿 아이디 |
| kakaoTemplateCode | Path | String | O | 카카오 템플릿 코드 |
요청 본문
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| file | Array | O | 문의 파일 |
| comment | String | O | 문의 내용 |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### 파일을 첨부해 카카오 알림톡 템플릿 문의하기
POST {{endpoint}}/template/v1.0/ALIMTALK/templates/{{templateId}}/kakao-templates/{{kakaoTemplateCode}}/inquiries/do-with-file
comment=comment_example
file=@/path/to/file.txt
curl -X POST "${endpoint}/template/v1.0/ALIMTALK/templates/${templateId}/kakao-templates/${kakaoTemplateCode}/inquiries/do-with-file" \
-F "comment=comment_example" \
-F "file=@/path/to/file.txt"
카카오 알림톡 템플릿을 문의합니다.
요청
POST /template/v1.0/ALIMTALK/templates/{templateId}/kakao-templates/{kakaoTemplateCode}/inquiries
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| templateId | Path | String | O | 템플릿 아이디 |
| kakaoTemplateCode | Path | String | O | 카카오 템플릿 코드 |
요청 본문
{
"comment" : "문의 내용 예시"
}
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| comment | String | O | 문의 내용 |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### 카카오 알림톡 템플릿 문의하기
POST {{endpoint}}/template/v1.0/ALIMTALK/templates/{{templateId}}/kakao-templates/{{kakaoTemplateCode}}/inquiries
{
"comment" : "문의 내용 예시"
}
curl -X POST "${endpoint}/template/v1.0/ALIMTALK/templates/${templateId}/kakao-templates/${kakaoTemplateCode}/inquiries" \
-d '{
"comment" : "문의 내용 예시"
}'
템플릿을 등록합니다.
요청
POST /template/v1.0/SMS/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
요청 본문
{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderPhoneNumber" : "01012341234"
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ],
"imageLayoutId" : "YaX2DA4Weab1"
}
}
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateName | String | O | 템플릿 이름 |
| categoryId | String | X | 카테고리 아이디 |
| messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templateLanguage | String | X | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| sender | Object | O | |
| sender.senderPhoneNumber | String | O | 발신 번호 |
| content | Object | O | |
| content.messageType | String | O | 발송 메시지 유형(SMS, LMS, MMS) [SMS, LMS, MMS] |
| content.title | String | X | 메시지 제목 |
| content.body | String | O | 메시지 본문 |
| content.attachmentIds | Array | X | 첨부 파일 아이디 최대 3개 |
| content.imageLayoutId | String | X | 이미지 레이아웃 아이디 |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"templateId" : "A9z0A9z0"
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
요청 예시
### SMS 템플릿 등록
POST {{endpoint}}/template/v1.0/SMS/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderPhoneNumber" : "01012341234"
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ],
"imageLayoutId" : "YaX2DA4Weab1"
}
}
curl -X POST "${endpoint}/template/v1.0/SMS/templates" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderPhoneNumber" : "01012341234"
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ],
"imageLayoutId" : "YaX2DA4Weab1"
}
}'
템플릿 리스트를 조회합니다.
요청
GET /template/v1.0/SMS/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateName | Query | String | X | 템플릿 이름(LIKE 검색) |
| limit | Query | Number | X | limit 설정하지 않으면 default 20(최대 1000) |
| offset | Query | Number | X | offset 설정하지 않으면 default 0 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"totalCount" : 1,
"templates" : [ {
"templateId" : "A9z0A9z0",
"templateName" : "배송 완료",
"categoryId" : "20230131070811m2fDe1rXx80",
"messageChannel" : "SMS",
"messagePurpose" : "NORMAL",
"messagePurposes" : [ "NORMAL" ],
"createdDateTime" : "2024-10-29T06:00:01.000+09:00",
"updatedDateTime" : "2024-10-29T06:00:01.000+09:00"
} ]
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| totalCount | Integer | O | 총 건수 |
| templates | Array | O | |
| templates[].templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
| templates[].templateName | String | O | 템플릿명 |
| templates[].categoryId | String | O | 카테고리 아이디 |
| templates[].messageChannel | String | O | 메시지 채널 [SMS(SMS), ALIMTALK(알림톡), EMAIL(이메일), RCS(RCS), PUSH(푸시)] |
| templates[].messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templates[].messagePurposes | Array | O | |
| templates[].createdDateTime | String | O | 템플릿 생성 시각 |
| templates[].updatedDateTime | String | O | 템플릿 수정된 시각 |
요청 예시
### SMS 템플릿 리스트 조회
GET {{endpoint}}/template/v1.0/SMS/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/SMS/templates" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 상세 조회합니다.
요청
GET /template/v1.0/SMS/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"template" : {
"templateId" : "A9z0A9z0",
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messageChannel" : "SMS",
"messagePurpose" : "NORMAL",
"messagePurposes" : [ "NORMAL" ],
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderPhoneNumber" : "01012341234"
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ],
"imageLayoutId" : "YaX2DA4Weab1"
},
"createdDateTime" : "2024-10-29T06:00:01.000+09:00",
"updatedDateTime" : "2024-10-29T06:00:01.000+09:00"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | X | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| template | Object | X | |
| template.templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
| template.templateName | String | X | 템플릿 이름 |
| template.categoryId | String | X | 카테고리 아이디 |
| template.messageChannel | String | X | 메시지 채널 [SMS(SMS), ALIMTALK(알림톡), EMAIL(이메일), RCS(RCS), PUSH(푸시)] |
| template.messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| template.messagePurposes | Array | X | |
| template.templateLanguage | String | X | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| template.sender | Object | X | |
| template.sender.senderPhoneNumber | String | O | 발신 번호 |
| template.content | Object | X | |
| template.content.messageType | String | O | 발송 메시지 유형(SMS, LMS, MMS) [SMS, LMS, MMS] |
| template.content.title | String | X | 메시지 제목 |
| template.content.body | String | O | 메시지 본문 |
| template.content.attachmentIds | Array | X | 첨부 파일 아이디 최대 3개 |
| template.content.imageLayoutId | String | X | 이미지 레이아웃 아이디 |
| template.createdDateTime | String | X | 템플릿 생성 시각 |
| template.updatedDateTime | String | X | 템플릿 수정된 시각 |
요청 예시
### SMS 템플릿 상세 조회
GET {{endpoint}}/template/v1.0/SMS/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/SMS/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 수정합니다.
요청
PUT /template/v1.0/SMS/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderPhoneNumber" : "01012341234"
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ],
"imageLayoutId" : "YaX2DA4Weab1"
}
}
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateName | String | O | 템플릿 이름 |
| messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templateLanguage | String | X | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| sender | Object | X | |
| sender.senderPhoneNumber | String | O | 발신 번호 |
| content | Object | O | |
| content.messageType | String | O | 발송 메시지 유형(SMS, LMS, MMS) [SMS, LMS, MMS] |
| content.title | String | X | 메시지 제목 |
| content.body | String | O | 메시지 본문 |
| content.attachmentIds | Array | X | 첨부 파일 아이디 최대 3개 |
| content.imageLayoutId | String | X | 이미지 레이아웃 아이디 |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### SMS 템플릿 수정
PUT {{endpoint}}/template/v1.0/SMS/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderPhoneNumber" : "01012341234"
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ],
"imageLayoutId" : "YaX2DA4Weab1"
}
}
curl -X PUT "${endpoint}/template/v1.0/SMS/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderPhoneNumber" : "01012341234"
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ],
"imageLayoutId" : "YaX2DA4Weab1"
}
}'
템플릿을 삭제합니다.
요청
DELETE /template/v1.0/SMS/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### SMS 템플릿 삭제
DELETE {{endpoint}}/template/v1.0/SMS/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X DELETE "${endpoint}/template/v1.0/SMS/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 등록합니다.
요청
POST /template/v1.0/ALIMTALK/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
요청 본문
{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderKey" : "3f8a6b1c5d9e2f7a0b4c8d3e6f1a9b2c5d7e0f4a8b3c",
"senderProfileType" : "NORMAL"
},
"content" : {
"templateMessageType" : "BA",
"templateEmphasizeType" : "NONE",
"templateContent" : "#{이름}님의 주문이 완료되었습니다.",
"templateAd" : "채널 추가하고 이 채널의 마케팅 메시지 등을 카카오톡으로 받기",
"templateExtra" : "* 실시간 예약 특성상 중복 예약이 발생할 수 있으며, 입실이 불가할 경우 예약이 취소될 수 있습니다.\\n* 문의전화: 1234-1234",
"templateTitle" : "123,450원",
"templateSubtitle" : "승인 내역",
"templateHeader" : "주문이 체결되었습니다.",
"templateItem" : {
"list" : [ {
"title" : "아이템 타이틀",
"description" : "아이템 설명"
} ],
"summary" : {
"title" : "요약 타이틀",
"description" : "요약 설명"
}
},
"templateItemHighlight" : {
"title" : "하이라이트 타이틀",
"description" : "하이라이트 설명",
"attachmentId" : "YaX2DA4Weab2",
"imageUrl" : "https://example.com/thumbnail.jpg"
},
"templateRepresentLink" : {
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android"
},
"attachmentId" : "YaX2DA4Weab2",
"templateImageName" : "image.png",
"templateImageUrl" : "https://mud-kage.kakao.com/dn/hAtIc/btshc5wAvF0/sA8gjabh4J34IMqCk0hkBK/img_l.jpg",
"securityFlag" : false,
"categoryCode" : "999999",
"buttons" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "버튼 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ],
"quickReplies" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "바로연결 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ]
},
"additionalProperty" : {
"templateCode" : "templateCode",
"kakaoTemplateCode" : "kakaoTemplateCode"
}
}
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateName | String | O | 템플릿 이름 |
| categoryId | String | X | 카테고리 아이디 |
| messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templateLanguage | String | X | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| sender | Object | X | |
| sender.senderKey | String | X | 발신 프로필 발신키 |
| sender.senderProfileType | String | X | 발신 프로필 타입 [GROUP, NORMAL] |
| content | Object | O | |
| content.templateMessageType | String | X | 템플릿 메시지 유형(BA: 기본형, EX: 부가 정보형, AD: 채널 추가형, MI: 복합형, default: BA) |
| content.templateEmphasizeType | String | O | 템플릿 강조 표시 유형 [NONE(강조 없음), TEXT(텍스트 강조), IMAGE(이미지 강조), ITEM_LIST(아이템 리스트 강조)] |
| content.templateContent | String | X | 템플릿 본문 |
| content.templateAd | String | X | 채널 추가 안내 메시지(템플릿 메시지 유형: 채널 추가형, 복합형일 경우 고정값) |
| content.templateExtra | String | X | 템플릿 부가 정보(템플릿 메시지 유형이 [부가 정보형/복합형]일 경우 필수), 치환 변수 사용 불가, URL 포함 가능 |
| content.templateTitle | String | X | 템플릿 제목(최대 50자, Android: 2줄, 23자 이상 말줄임 처리, iOS : 2줄, 27자 이상 말줄임 처리) |
| content.templateSubtitle | String | X | 템플릿 보조 문구(최대 50자, Android: 18자 이상 말줄임 처리, iOS : 21자 이상 말줄임 처리) |
| content.templateHeader | String | X | 템플릿 헤더, 변수 입력 가능 |
| content.templateItem | Object | X | |
| content.templateItem.list | Array | O | |
| content.templateItem.list[].title | String | O | 아이템 타이틀 |
| content.templateItem.list[].description | String | O | 아이템 설명 |
| content.templateItem.summary | Object | X | |
| content.templateItem.summary.title | String | O | 요약 타이틀 |
| content.templateItem.summary.description | String | O | 요약 설명(변수 및 화폐 단위, 숫자, 쉼표, 마침표만 사용 가능) |
| content.templateItemHighlight | Object | X | |
| content.templateItemHighlight.title | String | O | 아이템 하이라이트 타이틀(최대 30자, 섬네일 이미지가 있을 경우, 21자) |
| content.templateItemHighlight.description | String | O | 아이템 하이라이트 설명(최대 19자, 섬네일 이미지가 있을 경우, 13자) |
| content.templateItemHighlight.attachmentId | String | X | 템플릿 첨부 파일 ID |
| content.templateItemHighlight.imageUrl | String | X | 섬네일 이미지 주소 |
| content.templateRepresentLink | Object | X | |
| content.templateRepresentLink.linkMo | String | X | 대표 링크 모바일 웹 링크 |
| content.templateRepresentLink.linkPc | String | X | 대표 링크 PC 웹 링크 |
| content.templateRepresentLink.schemeIos | String | X | 대표 링크 iOS 앱 링크 |
| content.templateRepresentLink.schemeAndroid | String | X | 대표 링크 안드로이드 앱 링크 |
| content.attachmentId | String | X | 템플릿 첨부 파일 ID |
| content.templateImageName | String | X | 템플릿 이미지 이름 |
| content.templateImageUrl | String | X | 템플릿 이미지 링크 |
| content.securityFlag | Boolean | X | 템플릿 보안 여부(default: false) |
| content.categoryCode | String | X | 템플릿 카테고리 코드(템플릿 카테고리 조회 API 참고, default: 999999) |
| content.buttons | Array | X | 템플릿 버튼 |
| content.buttons[].ordering | Integer | O | 템플릿 버튼 순서 |
| content.buttons[].type | String | O | 템플릿 버튼 유형 [WL(웹 링크), AL(앱 링크), DS(배송 조회), BK(봇 키워드), MD(메시지 전달), BC(상담톡 전환), BT(봇 전환), AC(채널 추가), BF(비즈니스 폼), P1(이미지 보안 전송 플러그인), P2(개인정보 이용 플러그인), P3(원클릭 결제 플러그인), TN(전화하기)] |
| content.buttons[].name | String | O | 템플릿 버튼 이름 |
| content.buttons[].linkMo | String | X | 템플릿 버튼 모바일 웹 링크 |
| content.buttons[].linkPc | String | X | 템플릿 버튼 PC 웹 링크 |
| content.buttons[].schemeIos | String | X | 템플릿 버튼 iOS 앱 링크 |
| content.buttons[].schemeAndroid | String | X | 템플릿 버튼 안드로이드 앱 링크 |
| content.buttons[].bizFormId | Integer | X | 템플릿 버튼 비즈니스폼 ID(BF 타입일 경우, 필수) |
| content.quickReplies | Array | X | 템플릿 바로 연결 |
| content.quickReplies[].ordering | Integer | O | 템플릿 바로연결 순서 |
| content.quickReplies[].type | String | O | 템플릿 바로연결 유형 [WL(웹 링크), AL(앱 링크), BK(봇 키워드), BC(상담톡 전환), BT(봇 전환), BF(비즈니스 폼)] |
| content.quickReplies[].name | String | O | 템플릿 바로연결 이름 |
| content.quickReplies[].linkMo | String | X | 템플릿 바로연결 모바일 웹 링크 |
| content.quickReplies[].linkPc | String | X | 템플릿 바로연결 PC 웹 링크 |
| content.quickReplies[].schemeIos | String | X | 템플릿 바로연결 iOS 앱 링크 |
| content.quickReplies[].schemeAndroid | String | X | 템플릿 바로연결 안드로이드 앱 링크 |
| content.quickReplies[].bizFormId | Integer | X | 템플릿 바로연결 비즈니스폼 ID(BF 타입일 경우, 필수) |
| additionalProperty | Object | O | |
| additionalProperty.templateCode | String | O | 템플릿 코드(영문, 숫자, -, _) |
| additionalProperty.kakaoTemplateCode | String | X | 카카오 템플릿 코드 |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"templateId" : "A9z0A9z0"
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
요청 예시
### 알림톡 템플릿 등록
POST {{endpoint}}/template/v1.0/ALIMTALK/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderKey" : "3f8a6b1c5d9e2f7a0b4c8d3e6f1a9b2c5d7e0f4a8b3c",
"senderProfileType" : "NORMAL"
},
"content" : {
"templateMessageType" : "BA",
"templateEmphasizeType" : "NONE",
"templateContent" : "#{이름}님의 주문이 완료되었습니다.",
"templateAd" : "채널 추가하고 이 채널의 마케팅 메시지 등을 카카오톡으로 받기",
"templateExtra" : "* 실시간 예약 특성상 중복 예약이 발생할 수 있으며, 입실이 불가할 경우 예약이 취소될 수 있습니다.\\n* 문의전화: 1234-1234",
"templateTitle" : "123,450원",
"templateSubtitle" : "승인 내역",
"templateHeader" : "주문이 체결되었습니다.",
"templateItem" : {
"list" : [ {
"title" : "아이템 타이틀",
"description" : "아이템 설명"
} ],
"summary" : {
"title" : "요약 타이틀",
"description" : "요약 설명"
}
},
"templateItemHighlight" : {
"title" : "하이라이트 타이틀",
"description" : "하이라이트 설명",
"attachmentId" : "YaX2DA4Weab2",
"imageUrl" : "https://example.com/thumbnail.jpg"
},
"templateRepresentLink" : {
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android"
},
"attachmentId" : "YaX2DA4Weab2",
"templateImageName" : "image.png",
"templateImageUrl" : "https://mud-kage.kakao.com/dn/hAtIc/btshc5wAvF0/sA8gjabh4J34IMqCk0hkBK/img_l.jpg",
"securityFlag" : false,
"categoryCode" : "999999",
"buttons" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "버튼 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ],
"quickReplies" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "바로연결 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ]
},
"additionalProperty" : {
"templateCode" : "templateCode",
"kakaoTemplateCode" : "kakaoTemplateCode"
}
}
curl -X POST "${endpoint}/template/v1.0/ALIMTALK/templates" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderKey" : "3f8a6b1c5d9e2f7a0b4c8d3e6f1a9b2c5d7e0f4a8b3c",
"senderProfileType" : "NORMAL"
},
"content" : {
"templateMessageType" : "BA",
"templateEmphasizeType" : "NONE",
"templateContent" : "#{이름}님의 주문이 완료되었습니다.",
"templateAd" : "채널 추가하고 이 채널의 마케팅 메시지 등을 카카오톡으로 받기",
"templateExtra" : "* 실시간 예약 특성상 중복 예약이 발생할 수 있으며, 입실이 불가할 경우 예약이 취소될 수 있습니다.\\n* 문의전화: 1234-1234",
"templateTitle" : "123,450원",
"templateSubtitle" : "승인 내역",
"templateHeader" : "주문이 체결되었습니다.",
"templateItem" : {
"list" : [ {
"title" : "아이템 타이틀",
"description" : "아이템 설명"
} ],
"summary" : {
"title" : "요약 타이틀",
"description" : "요약 설명"
}
},
"templateItemHighlight" : {
"title" : "하이라이트 타이틀",
"description" : "하이라이트 설명",
"attachmentId" : "YaX2DA4Weab2",
"imageUrl" : "https://example.com/thumbnail.jpg"
},
"templateRepresentLink" : {
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android"
},
"attachmentId" : "YaX2DA4Weab2",
"templateImageName" : "image.png",
"templateImageUrl" : "https://mud-kage.kakao.com/dn/hAtIc/btshc5wAvF0/sA8gjabh4J34IMqCk0hkBK/img_l.jpg",
"securityFlag" : false,
"categoryCode" : "999999",
"buttons" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "버튼 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ],
"quickReplies" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "바로연결 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ]
},
"additionalProperty" : {
"templateCode" : "templateCode",
"kakaoTemplateCode" : "kakaoTemplateCode"
}
}'
템플릿 리스트를 조회합니다.
요청
GET /template/v1.0/ALIMTALK/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateName | Query | String | X | 템플릿 이름(LIKE 검색) |
| senderKey | Query | String | X | 발신키 |
| templateStatus | Query | String | X | 템플릿 상태 |
| limit | Query | Number | X | limit 설정하지 않으면 default 20(최대 1000) |
| offset | Query | Number | X | offset 설정하지 않으면 default 0 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"totalCount" : 1,
"templates" : [ {
"templateId" : "A9z0A9z0",
"templateName" : "배송 완료",
"categoryId" : "20230131070811m2fDe1rXx80",
"messageChannel" : "SMS",
"messagePurpose" : "NORMAL",
"messagePurposes" : [ "NORMAL" ],
"createdDateTime" : "2024-10-29T06:00:01.000+09:00",
"updatedDateTime" : "2024-10-29T06:00:01.000+09:00"
} ]
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| totalCount | Integer | O | 총 건수 |
| templates | Array | O | |
| templates[].templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
| templates[].templateName | String | O | 템플릿명 |
| templates[].categoryId | String | O | 카테고리 아이디 |
| templates[].messageChannel | String | O | 메시지 채널 [SMS(SMS), ALIMTALK(알림톡), EMAIL(이메일), RCS(RCS), PUSH(푸시)] |
| templates[].messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templates[].messagePurposes | Array | O | |
| templates[].createdDateTime | String | O | 템플릿 생성 시각 |
| templates[].updatedDateTime | String | O | 템플릿 수정된 시각 |
요청 예시
### 알림톡 템플릿 리스트 조회
GET {{endpoint}}/template/v1.0/ALIMTALK/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/ALIMTALK/templates" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
발신자와 관계된 템플릿 리스트를 조회합니다.(발신자 또는 발신자가 포함된 그룹의 템플릿)
요청
GET /template/v1.0/ALIMTALK/senders/{senderKey}/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| senderKey | Path | String | O | 발신키 |
| templateName | Query | String | X | 템플릿 이름(LIKE 검색) |
| templateStatus | Query | String | X | 템플릿 상태 |
| limit | Query | Number | X | limit 설정하지 않으면 default 20(최대 1000) |
| offset | Query | Number | X | offset 설정하지 않으면 default 0 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"totalCount" : 1,
"templates" : [ {
"templateId" : "A9z0A9z0",
"templateName" : "배송 완료",
"categoryId" : "20230131070811m2fDe1rXx80",
"messageChannel" : "SMS",
"messagePurpose" : "NORMAL",
"messagePurposes" : [ "NORMAL" ],
"createdDateTime" : "2024-10-29T06:00:01.000+09:00",
"updatedDateTime" : "2024-10-29T06:00:01.000+09:00"
} ]
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| totalCount | Integer | O | 총 건수 |
| templates | Array | O | |
| templates[].templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
| templates[].templateName | String | O | 템플릿명 |
| templates[].categoryId | String | O | 카테고리 아이디 |
| templates[].messageChannel | String | O | 메시지 채널 [SMS(SMS), ALIMTALK(알림톡), EMAIL(이메일), RCS(RCS), PUSH(푸시)] |
| templates[].messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templates[].messagePurposes | Array | O | |
| templates[].createdDateTime | String | O | 템플릿 생성 시각 |
| templates[].updatedDateTime | String | O | 템플릿 수정된 시각 |
요청 예시
### 알림톡 발신자와 관계된 템플릿 리스트 조회
GET {{endpoint}}/template/v1.0/ALIMTALK/senders/{{senderKey}}/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/ALIMTALK/senders/${senderKey}/templates" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 상세 조회합니다.
요청
GET /template/v1.0/ALIMTALK/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"template" : {
"templateId" : "A9z0A9z0",
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messageChannel" : "SMS",
"messagePurpose" : "NORMAL",
"messagePurposes" : [ "NORMAL" ],
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderKey" : "3f8a6b1c5d9e2f7a0b4c8d3e6f1a9b2c5d7e0f4a8b3c",
"senderProfileId" : "@nhnCloud",
"senderProfileType" : "GROUP"
},
"additionalProperty" : {
"kakaoTemplateCode" : "templateCode",
"templateCode" : "templateCode",
"comments" : [ {
"id" : 1,
"content" : "문의 내용 예시",
"userName" : "사용자 이름",
"createdAt" : "2024-10-29T06:00:01.000+09:00",
"attachments" : [ {
"originalFileName" : "파일명 예시",
"filePath" : "/path/to/file"
} ],
"status" : "REQ"
} ],
"status" : "APPROVED",
"block" : false,
"dormant" : false
},
"content" : {
"templateMessageType" : "BA",
"templateEmphasizeType" : "NONE",
"templateContent" : "#{이름}님의 주문이 완료되었습니다.",
"templateAd" : "채널 추가하고 이 채널의 마케팅 메시지 등을 카카오톡으로 받기",
"templateExtra" : "* 실시간 예약 특성상 중복 예약이 발생할 수 있으며, 입실이 불가할 경우 예약이 취소될 수 있습니다.\\n* 문의전화: 1234-1234",
"templateTitle" : "123,450원",
"templateSubtitle" : "승인 내역",
"templateHeader" : "주문이 체결되었습니다.",
"templateItem" : {
"list" : [ {
"title" : "아이템 타이틀",
"description" : "아이템 설명"
} ],
"summary" : {
"title" : "요약 타이틀",
"description" : "요약 설명"
}
},
"templateItemHighlight" : {
"title" : "하이라이트 타이틀",
"description" : "하이라이트 설명",
"attachmentId" : "YaX2DA4Weab2",
"imageUrl" : "https://example.com/thumbnail.jpg"
},
"templateRepresentLink" : {
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android"
},
"attachmentId" : "YaX2DA4Weab2",
"templateImageName" : "image.png",
"templateImageUrl" : "https://mud-kage.kakao.com/dn/hAtIc/btshc5wAvF0/sA8gjabh4J34IMqCk0hkBK/img_l.jpg",
"securityFlag" : false,
"categoryCode" : "999999",
"buttons" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "버튼 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ],
"quickReplies" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "바로연결 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ]
},
"createdDateTime" : "2024-10-29T06:00:01.000+09:00",
"updatedDateTime" : "2024-10-29T06:00:01.000+09:00"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| template | Object | O | |
| template.templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
| template.templateName | String | O | 템플릿 이름 |
| template.categoryId | String | O | 카테고리 아이디 |
| template.messageChannel | String | O | 메시지 채널 [SMS(SMS), ALIMTALK(알림톡), EMAIL(이메일), RCS(RCS), PUSH(푸시)] |
| template.messagePurpose | String | O | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| template.messagePurposes | Array | O | |
| template.templateLanguage | String | O | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| template.sender | Object | O | |
| template.sender.senderKey | String | O | 발신 프로필 발신키 |
| template.sender.senderProfileId | String | O | 카카오톡 채널명 |
| template.sender.senderProfileType | String | O | 발신 프로필 타입 [GROUP, NORMAL] |
| template.additionalProperty | Object | O | |
| template.additionalProperty.kakaoTemplateCode | String | O | 카카오 템플릿 코드 |
| template.additionalProperty.templateCode | String | O | 템플릿 코드(영문, 숫자, -, _) |
| template.additionalProperty.comments | Array | O | 템플릿 문의 리스트 |
| template.additionalProperty.comments[].id | Integer | O | 문의 아이디 |
| template.additionalProperty.comments[].content | String | X | 문의 내용 |
| template.additionalProperty.comments[].userName | String | O | 작성자 |
| template.additionalProperty.comments[].createdAt | String | O | 문의 생성 시각 |
| template.additionalProperty.comments[].attachments | Array | O | 문의 첨부 파일 |
| template.additionalProperty.comments[].attachments[].originalFileName | String | O | 첨부 파일명 |
| template.additionalProperty.comments[].attachments[].filePath | String | O | 첨부 파일 경로 |
| template.additionalProperty.comments[].status | String | O | 문의 상태(REQ: 요청, INQ:문의, APR:승인, REJ:반려, REP: 답변) [REQ, INQ, APR, REJ, REP] |
| template.additionalProperty.status | String | X | REGISTERED:요청, REQUESTED:검수 중, APPROVED:승인, REJECTED: 반려 [REGISTERED, REQUESTED, APPROVED, REJECTED] |
| template.additionalProperty.block | Boolean | O | 템플릿 차단 여부 기본값: false |
| template.additionalProperty.dormant | Boolean | O | 템플릿 휴면 여부 기본값: false |
| template.content | Object | O | |
| template.content.templateMessageType | String | X | 템플릿 메시지 유형(BA: 기본형, EX: 부가 정보형, AD: 채널 추가형, MI: 복합형, default: BA) |
| template.content.templateEmphasizeType | String | O | 템플릿 강조 표시 유형 [NONE(강조 없음), TEXT(텍스트 강조), IMAGE(이미지 강조), ITEM_LIST(아이템 리스트 강조)] |
| template.content.templateContent | String | X | 템플릿 본문 |
| template.content.templateAd | String | X | 채널 추가 안내 메시지(템플릿 메시지 유형: 채널 추가형, 복합형일 경우 고정값) |
| template.content.templateExtra | String | X | 템플릿 부가 정보(템플릿 메시지 유형이 [부가 정보형/복합형]일 경우 필수), 치환 변수 사용 불가, URL 포함 가능 |
| template.content.templateTitle | String | X | 템플릿 제목(최대 50자, Android: 2줄, 23자 이상 말줄임 처리, iOS : 2줄, 27자 이상 말줄임 처리) |
| template.content.templateSubtitle | String | X | 템플릿 보조 문구(최대 50자, Android: 18자 이상 말줄임 처리, iOS : 21자 이상 말줄임 처리) |
| template.content.templateHeader | String | X | 템플릿 헤더, 변수 입력 가능 |
| template.content.templateItem | Object | X | |
| template.content.templateItem.list | Array | O | |
| template.content.templateItem.list[].title | String | O | 아이템 타이틀 |
| template.content.templateItem.list[].description | String | O | 아이템 설명 |
| template.content.templateItem.summary | Object | X | |
| template.content.templateItem.summary.title | String | O | 요약 타이틀 |
| template.content.templateItem.summary.description | String | O | 요약 설명(변수 및 화폐 단위, 숫자, 쉼표, 마침표만 사용 가능) |
| template.content.templateItemHighlight | Object | X | |
| template.content.templateItemHighlight.title | String | O | 아이템 하이라이트 타이틀(최대 30자, 섬네일 이미지가 있을 경우, 21자) |
| template.content.templateItemHighlight.description | String | O | 아이템 하이라이트 설명(최대 19자, 섬네일 이미지가 있을 경우, 13자) |
| template.content.templateItemHighlight.attachmentId | String | X | 템플릿 첨부 파일 ID |
| template.content.templateItemHighlight.imageUrl | String | X | 섬네일 이미지 주소 |
| template.content.templateRepresentLink | Object | X | |
| template.content.templateRepresentLink.linkMo | String | X | 대표 링크 모바일 웹 링크 |
| template.content.templateRepresentLink.linkPc | String | X | 대표 링크 PC 웹 링크 |
| template.content.templateRepresentLink.schemeIos | String | X | 대표 링크 iOS 앱 링크 |
| template.content.templateRepresentLink.schemeAndroid | String | X | 대표 링크 안드로이드 앱 링크 |
| template.content.attachmentId | String | X | 템플릿 첨부 파일 ID |
| template.content.templateImageName | String | X | 템플릿 이미지 이름 |
| template.content.templateImageUrl | String | X | 템플릿 이미지 링크 |
| template.content.securityFlag | Boolean | X | 템플릿 보안 여부(default: false) |
| template.content.categoryCode | String | X | 템플릿 카테고리 코드(템플릿 카테고리 조회 API 참고, default: 999999) |
| template.content.buttons | Array | X | 템플릿 버튼 |
| template.content.buttons[].ordering | Integer | O | 템플릿 버튼 순서 |
| template.content.buttons[].type | String | O | 템플릿 버튼 유형 [WL(웹 링크), AL(앱 링크), DS(배송 조회), BK(봇 키워드), MD(메시지 전달), BC(상담톡 전환), BT(봇 전환), AC(채널 추가), BF(비즈니스 폼), P1(이미지 보안 전송 플러그인), P2(개인정보 이용 플러그인), P3(원클릭 결제 플러그인), TN(전화하기)] |
| template.content.buttons[].name | String | O | 템플릿 버튼 이름 |
| template.content.buttons[].linkMo | String | X | 템플릿 버튼 모바일 웹 링크 |
| template.content.buttons[].linkPc | String | X | 템플릿 버튼 PC 웹 링크 |
| template.content.buttons[].schemeIos | String | X | 템플릿 버튼 iOS 앱 링크 |
| template.content.buttons[].schemeAndroid | String | X | 템플릿 버튼 안드로이드 앱 링크 |
| template.content.buttons[].bizFormId | Integer | X | 템플릿 버튼 비즈니스폼 ID(BF 타입일 경우, 필수) |
| template.content.quickReplies | Array | X | 템플릿 바로 연결 |
| template.content.quickReplies[].ordering | Integer | O | 템플릿 바로연결 순서 |
| template.content.quickReplies[].type | String | O | 템플릿 바로연결 유형 [WL(웹 링크), AL(앱 링크), BK(봇 키워드), BC(상담톡 전환), BT(봇 전환), BF(비즈니스 폼)] |
| template.content.quickReplies[].name | String | O | 템플릿 바로연결 이름 |
| template.content.quickReplies[].linkMo | String | X | 템플릿 바로연결 모바일 웹 링크 |
| template.content.quickReplies[].linkPc | String | X | 템플릿 바로연결 PC 웹 링크 |
| template.content.quickReplies[].schemeIos | String | X | 템플릿 바로연결 iOS 앱 링크 |
| template.content.quickReplies[].schemeAndroid | String | X | 템플릿 바로연결 안드로이드 앱 링크 |
| template.content.quickReplies[].bizFormId | Integer | X | 템플릿 바로연결 비즈니스폼 ID(BF 타입일 경우, 필수) |
| template.createdDateTime | String | O | 템플릿 생성 시각 |
| template.updatedDateTime | String | O | 템플릿 수정된 시각 |
요청 예시
### 알림톡 템플릿 상세 조회
GET {{endpoint}}/template/v1.0/ALIMTALK/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/ALIMTALK/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 수정합니다.
요청
PUT /template/v1.0/ALIMTALK/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"content" : {
"templateMessageType" : "BA",
"templateEmphasizeType" : "NONE",
"templateContent" : "#{이름}님의 주문이 완료되었습니다.",
"templateAd" : "채널 추가하고 이 채널의 마케팅 메시지 등을 카카오톡으로 받기",
"templateExtra" : "* 실시간 예약 특성상 중복 예약이 발생할 수 있으며, 입실이 불가할 경우 예약이 취소될 수 있습니다.\\n* 문의전화: 1234-1234",
"templateTitle" : "123,450원",
"templateSubtitle" : "승인 내역",
"templateHeader" : "주문이 체결되었습니다.",
"templateItem" : {
"list" : [ {
"title" : "아이템 타이틀",
"description" : "아이템 설명"
} ],
"summary" : {
"title" : "요약 타이틀",
"description" : "요약 설명"
}
},
"templateItemHighlight" : {
"title" : "하이라이트 타이틀",
"description" : "하이라이트 설명",
"attachmentId" : "YaX2DA4Weab2",
"imageUrl" : "https://example.com/thumbnail.jpg"
},
"templateRepresentLink" : {
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android"
},
"attachmentId" : "YaX2DA4Weab2",
"templateImageName" : "image.png",
"templateImageUrl" : "https://mud-kage.kakao.com/dn/hAtIc/btshc5wAvF0/sA8gjabh4J34IMqCk0hkBK/img_l.jpg",
"securityFlag" : false,
"categoryCode" : "999999",
"buttons" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "버튼 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ],
"quickReplies" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "바로연결 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ]
},
"additionalProperty" : {
"kakaoTemplateCode" : "kakaoTemplateCode"
}
}
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateName | String | O | 템플릿 이름 |
| messagePurpose | String | O | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| content | Object | O | |
| content.templateMessageType | String | X | 템플릿 메시지 유형(BA: 기본형, EX: 부가 정보형, AD: 채널 추가형, MI: 복합형, default: BA) |
| content.templateEmphasizeType | String | O | 템플릿 강조 표시 유형 [NONE(강조 없음), TEXT(텍스트 강조), IMAGE(이미지 강조), ITEM_LIST(아이템 리스트 강조)] |
| content.templateContent | String | X | 템플릿 본문 |
| content.templateAd | String | X | 채널 추가 안내 메시지(템플릿 메시지 유형: 채널 추가형, 복합형일 경우 고정값) |
| content.templateExtra | String | X | 템플릿 부가 정보(템플릿 메시지 유형이 [부가 정보형/복합형]일 경우 필수), 치환 변수 사용 불가, URL 포함 가능 |
| content.templateTitle | String | X | 템플릿 제목(최대 50자, Android: 2줄, 23자 이상 말줄임 처리, iOS : 2줄, 27자 이상 말줄임 처리) |
| content.templateSubtitle | String | X | 템플릿 보조 문구(최대 50자, Android: 18자 이상 말줄임 처리, iOS : 21자 이상 말줄임 처리) |
| content.templateHeader | String | X | 템플릿 헤더, 변수 입력 가능 |
| content.templateItem | Object | X | |
| content.templateItem.list | Array | O | |
| content.templateItem.list[].title | String | O | 아이템 타이틀 |
| content.templateItem.list[].description | String | O | 아이템 설명 |
| content.templateItem.summary | Object | X | |
| content.templateItem.summary.title | String | O | 요약 타이틀 |
| content.templateItem.summary.description | String | O | 요약 설명(변수 및 화폐 단위, 숫자, 쉼표, 마침표만 사용 가능) |
| content.templateItemHighlight | Object | X | |
| content.templateItemHighlight.title | String | O | 아이템 하이라이트 타이틀(최대 30자, 섬네일 이미지가 있을 경우, 21자) |
| content.templateItemHighlight.description | String | O | 아이템 하이라이트 설명(최대 19자, 섬네일 이미지가 있을 경우, 13자) |
| content.templateItemHighlight.attachmentId | String | X | 템플릿 첨부 파일 ID |
| content.templateItemHighlight.imageUrl | String | X | 섬네일 이미지 주소 |
| content.templateRepresentLink | Object | X | |
| content.templateRepresentLink.linkMo | String | X | 대표 링크 모바일 웹 링크 |
| content.templateRepresentLink.linkPc | String | X | 대표 링크 PC 웹 링크 |
| content.templateRepresentLink.schemeIos | String | X | 대표 링크 iOS 앱 링크 |
| content.templateRepresentLink.schemeAndroid | String | X | 대표 링크 안드로이드 앱 링크 |
| content.attachmentId | String | X | 템플릿 첨부 파일 ID |
| content.templateImageName | String | X | 템플릿 이미지 이름 |
| content.templateImageUrl | String | X | 템플릿 이미지 링크 |
| content.securityFlag | Boolean | X | 템플릿 보안 여부(default: false) |
| content.categoryCode | String | X | 템플릿 카테고리 코드(템플릿 카테고리 조회 API 참고, default: 999999) |
| content.buttons | Array | X | 템플릿 버튼 |
| content.buttons[].ordering | Integer | O | 템플릿 버튼 순서 |
| content.buttons[].type | String | O | 템플릿 버튼 유형 [WL(웹 링크), AL(앱 링크), DS(배송 조회), BK(봇 키워드), MD(메시지 전달), BC(상담톡 전환), BT(봇 전환), AC(채널 추가), BF(비즈니스 폼), P1(이미지 보안 전송 플러그인), P2(개인정보 이용 플러그인), P3(원클릭 결제 플러그인), TN(전화하기)] |
| content.buttons[].name | String | O | 템플릿 버튼 이름 |
| content.buttons[].linkMo | String | X | 템플릿 버튼 모바일 웹 링크 |
| content.buttons[].linkPc | String | X | 템플릿 버튼 PC 웹 링크 |
| content.buttons[].schemeIos | String | X | 템플릿 버튼 iOS 앱 링크 |
| content.buttons[].schemeAndroid | String | X | 템플릿 버튼 안드로이드 앱 링크 |
| content.buttons[].bizFormId | Integer | X | 템플릿 버튼 비즈니스폼 ID(BF 타입일 경우, 필수) |
| content.quickReplies | Array | X | 템플릿 바로 연결 |
| content.quickReplies[].ordering | Integer | O | 템플릿 바로연결 순서 |
| content.quickReplies[].type | String | O | 템플릿 바로연결 유형 [WL(웹 링크), AL(앱 링크), BK(봇 키워드), BC(상담톡 전환), BT(봇 전환), BF(비즈니스 폼)] |
| content.quickReplies[].name | String | O | 템플릿 바로연결 이름 |
| content.quickReplies[].linkMo | String | X | 템플릿 바로연결 모바일 웹 링크 |
| content.quickReplies[].linkPc | String | X | 템플릿 바로연결 PC 웹 링크 |
| content.quickReplies[].schemeIos | String | X | 템플릿 바로연결 iOS 앱 링크 |
| content.quickReplies[].schemeAndroid | String | X | 템플릿 바로연결 안드로이드 앱 링크 |
| content.quickReplies[].bizFormId | Integer | X | 템플릿 바로연결 비즈니스폼 ID(BF 타입일 경우, 필수) |
| additionalProperty | Object | O | |
| additionalProperty.kakaoTemplateCode | String | O | 카카오 템플릿 코드(영문, 숫자, -, _) |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### 알림톡 템플릿 수정
PUT {{endpoint}}/template/v1.0/ALIMTALK/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"content" : {
"templateMessageType" : "BA",
"templateEmphasizeType" : "NONE",
"templateContent" : "#{이름}님의 주문이 완료되었습니다.",
"templateAd" : "채널 추가하고 이 채널의 마케팅 메시지 등을 카카오톡으로 받기",
"templateExtra" : "* 실시간 예약 특성상 중복 예약이 발생할 수 있으며, 입실이 불가할 경우 예약이 취소될 수 있습니다.\\n* 문의전화: 1234-1234",
"templateTitle" : "123,450원",
"templateSubtitle" : "승인 내역",
"templateHeader" : "주문이 체결되었습니다.",
"templateItem" : {
"list" : [ {
"title" : "아이템 타이틀",
"description" : "아이템 설명"
} ],
"summary" : {
"title" : "요약 타이틀",
"description" : "요약 설명"
}
},
"templateItemHighlight" : {
"title" : "하이라이트 타이틀",
"description" : "하이라이트 설명",
"attachmentId" : "YaX2DA4Weab2",
"imageUrl" : "https://example.com/thumbnail.jpg"
},
"templateRepresentLink" : {
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android"
},
"attachmentId" : "YaX2DA4Weab2",
"templateImageName" : "image.png",
"templateImageUrl" : "https://mud-kage.kakao.com/dn/hAtIc/btshc5wAvF0/sA8gjabh4J34IMqCk0hkBK/img_l.jpg",
"securityFlag" : false,
"categoryCode" : "999999",
"buttons" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "버튼 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ],
"quickReplies" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "바로연결 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ]
},
"additionalProperty" : {
"kakaoTemplateCode" : "kakaoTemplateCode"
}
}
curl -X PUT "${endpoint}/template/v1.0/ALIMTALK/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"content" : {
"templateMessageType" : "BA",
"templateEmphasizeType" : "NONE",
"templateContent" : "#{이름}님의 주문이 완료되었습니다.",
"templateAd" : "채널 추가하고 이 채널의 마케팅 메시지 등을 카카오톡으로 받기",
"templateExtra" : "* 실시간 예약 특성상 중복 예약이 발생할 수 있으며, 입실이 불가할 경우 예약이 취소될 수 있습니다.\\n* 문의전화: 1234-1234",
"templateTitle" : "123,450원",
"templateSubtitle" : "승인 내역",
"templateHeader" : "주문이 체결되었습니다.",
"templateItem" : {
"list" : [ {
"title" : "아이템 타이틀",
"description" : "아이템 설명"
} ],
"summary" : {
"title" : "요약 타이틀",
"description" : "요약 설명"
}
},
"templateItemHighlight" : {
"title" : "하이라이트 타이틀",
"description" : "하이라이트 설명",
"attachmentId" : "YaX2DA4Weab2",
"imageUrl" : "https://example.com/thumbnail.jpg"
},
"templateRepresentLink" : {
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android"
},
"attachmentId" : "YaX2DA4Weab2",
"templateImageName" : "image.png",
"templateImageUrl" : "https://mud-kage.kakao.com/dn/hAtIc/btshc5wAvF0/sA8gjabh4J34IMqCk0hkBK/img_l.jpg",
"securityFlag" : false,
"categoryCode" : "999999",
"buttons" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "버튼 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ],
"quickReplies" : [ {
"ordering" : 1,
"type" : "WL",
"name" : "바로연결 이름",
"linkMo" : "https://m.example.com",
"linkPc" : "https://www.example.com",
"schemeIos" : "example://ios",
"schemeAndroid" : "example://android",
"bizFormId" : 12345
} ]
},
"additionalProperty" : {
"kakaoTemplateCode" : "kakaoTemplateCode"
}
}'
템플릿을 삭제합니다.
요청
DELETE /template/v1.0/ALIMTALK/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### 알림톡 템플릿 삭제
DELETE {{endpoint}}/template/v1.0/ALIMTALK/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X DELETE "${endpoint}/template/v1.0/ALIMTALK/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
!!! danger 더 이상 지원하지 않는 API입니다. * 카카오 알림톡 템플릿 문의하기 를 참고하세요.
알림톡 템플릿을 문의합니다.
요청
POST /template/v1.0/ALIMTALK/templates/{templateId}/inquiries
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
{
"comment" : "문의 내용 예시"
}
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| comment | String | O | 문의 내용 |
응답 본문
요청 예시
### 알림톡 템플릿 문의하기 - Deprecated
POST {{endpoint}}/template/v1.0/ALIMTALK/templates/{{templateId}}/inquiries
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"comment" : "문의 내용 예시"
}
curl -X POST "${endpoint}/template/v1.0/ALIMTALK/templates/${templateId}/inquiries" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"comment" : "문의 내용 예시"
}'
!!! danger 더 이상 지원하지 않는 API입니다. * 카카오 알림톡 템플릿 문의하기 를 참고하세요.
알림톡 템플릿을 문의할 때 파일을 첨부해 문의합니다.
요청
POST /template/v1.0/ALIMTALK/templates/{templateId}/inquiries/do-with-file
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| file | Array | O | 문의 파일 |
| comment | String | O | 문의 내용 |
응답 본문
요청 예시
### 알림톡 템플릿 문의하기(파일 첨부) - Deprecated
POST {{endpoint}}/template/v1.0/ALIMTALK/templates/{{templateId}}/inquiries/do-with-file
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
comment=comment_example
file=@/path/to/file.txt
curl -X POST "${endpoint}/template/v1.0/ALIMTALK/templates/${templateId}/inquiries/do-with-file" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-F "comment=comment_example" \
-F "file=@/path/to/file.txt"
알림톡 템플릿 수정 리스트를 조회합니다.
요청
GET /template/v1.0/ALIMTALK/templates/{templateId}/modifications
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
| limit | Query | Number | X | limit 설정하지 않으면 default 50(최대 1000) |
| offset | Query | Number | X | offset 설정하지 않으면 default 0 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
요청 예시
### 알림톡 템플릿 수정 리스트 조회
GET {{endpoint}}/template/v1.0/ALIMTALK/templates/{{templateId}}/modifications
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/ALIMTALK/templates/${templateId}/modifications" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
알림톡 템플릿 카테고리 리스트를 조회합니다.
요청
GET /template/v1.0/ALIMTALK/template-categories
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"categories" : [ {
"name" : "구매",
"subCategories" : [ {
"code" : "002001",
"name" : "구매완료",
"groupName" : "구매",
"inclusion" : "주문완료, 구매완료 템플릿이 대상입니다.",
"exclusion" : "일정관련 되어 예약, 예약번호가 있는 템플릿의 경우 구매완료에서 제외하고 예약으로 분류합니다."
} ]
} ]
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| categories | Array | O | |
| categories[].name | String | O | 대분류 카테고리 이름 |
| categories[].subCategories | Array | X | 서브 카테고리 |
| categories[].subCategories[].code | String | O | 카테고리 코드 |
| categories[].subCategories[].name | String | O | 중분류 카테고리 이름 |
| categories[].subCategories[].groupName | String | O | 대분류 카테고리 이름 |
| categories[].subCategories[].inclusion | String | O | 카테고리 대상 설명 |
| categories[].subCategories[].exclusion | String | O | 카테고리 제외 설명 |
요청 예시
### 알림톡 템플릿 카테고리 리스트 조회
GET {{endpoint}}/template/v1.0/ALIMTALK/template-categories
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/ALIMTALK/template-categories" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 등록합니다.
요청
POST /template/v1.0/EMAIL/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
요청 본문
{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderMailAddress" : "abcde@nhn.com"
},
"content" : {
"title" : "[NHN Cloud Email][##env##] 모니터링 알림",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
}
}
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateName | String | O | 템플릿 이름 |
| categoryId | String | X | 카테고리 아이디 |
| messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templateLanguage | String | X | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| sender | Object | O | |
| sender.senderMailAddress | String | O | 발신 메일 주소 |
| content | Object | O | |
| content.title | String | X | 템플릿 메일 제목 |
| content.body | String | X | 템플릿 메일 본문 |
| content.attachmentIds | Array | X | 템플릿 첨부 파일 ID |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"templateId" : "A9z0A9z0"
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
요청 예시
### Email 템플릿 등록
POST {{endpoint}}/template/v1.0/EMAIL/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderMailAddress" : "abcde@nhn.com"
},
"content" : {
"title" : "[NHN Cloud Email][##env##] 모니터링 알림",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
}
}
curl -X POST "${endpoint}/template/v1.0/EMAIL/templates" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderMailAddress" : "abcde@nhn.com"
},
"content" : {
"title" : "[NHN Cloud Email][##env##] 모니터링 알림",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
}
}'
템플릿을 상세 조회합니다.
요청
GET /template/v1.0/EMAIL/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"template" : {
"templateId" : "A9z0A9z0",
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messageChannel" : "SMS",
"messagePurpose" : "NORMAL",
"messagePurposes" : [ "NORMAL" ],
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderMailAddress" : "abcde@nhn.com"
},
"content" : {
"title" : "[NHN Cloud Email][##env##] 모니터링 알림",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
},
"createdDateTime" : "2024-10-29T06:00:01.000+09:00",
"updatedDateTime" : "2024-10-29T06:00:01.000+09:00"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | X | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| template | Object | X | |
| template.templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
| template.templateName | String | X | 템플릿 이름 |
| template.categoryId | String | X | 카테고리 아이디 |
| template.messageChannel | String | X | 메시지 채널 [SMS(SMS), ALIMTALK(알림톡), EMAIL(이메일), RCS(RCS), PUSH(푸시)] |
| template.messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| template.messagePurposes | Array | X | |
| template.templateLanguage | String | X | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| template.sender | Object | X | |
| template.sender.senderMailAddress | String | O | 발신 메일 주소 |
| template.content | Object | X | |
| template.content.title | String | X | 템플릿 메일 제목 |
| template.content.body | String | X | 템플릿 메일 본문 |
| template.content.attachmentIds | Array | X | 템플릿 첨부 파일 ID |
| template.createdDateTime | String | X | 템플릿 생성 시각 |
| template.updatedDateTime | String | X | 템플릿 수정된 시각 |
요청 예시
### Email 템플릿 상세 조회
GET {{endpoint}}/template/v1.0/EMAIL/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/EMAIL/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿 리스트를 조회합니다.
요청
GET /template/v1.0/EMAIL/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateName | Query | String | X | 템플릿 이름(LIKE 검색) |
| limit | Query | Number | X | limit 설정하지 않으면 default 20(최대 1000) |
| offset | Query | Number | X | offset 설정하지 않으면 default 0 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"totalCount" : 1,
"templates" : [ {
"templateId" : "A9z0A9z0",
"templateName" : "배송 완료",
"categoryId" : "20230131070811m2fDe1rXx80",
"messageChannel" : "SMS",
"messagePurpose" : "NORMAL",
"messagePurposes" : [ "NORMAL" ],
"createdDateTime" : "2024-10-29T06:00:01.000+09:00",
"updatedDateTime" : "2024-10-29T06:00:01.000+09:00"
} ]
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| totalCount | Integer | O | 총 건수 |
| templates | Array | O | |
| templates[].templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
| templates[].templateName | String | O | 템플릿명 |
| templates[].categoryId | String | O | 카테고리 아이디 |
| templates[].messageChannel | String | O | 메시지 채널 [SMS(SMS), ALIMTALK(알림톡), EMAIL(이메일), RCS(RCS), PUSH(푸시)] |
| templates[].messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templates[].messagePurposes | Array | O | |
| templates[].createdDateTime | String | O | 템플릿 생성 시각 |
| templates[].updatedDateTime | String | O | 템플릿 수정된 시각 |
요청 예시
### Email 템플릿 리스트 조회
GET {{endpoint}}/template/v1.0/EMAIL/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/EMAIL/templates" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 수정합니다.
요청
PUT /template/v1.0/EMAIL/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderMailAddress" : "abcde@nhn.com"
},
"content" : {
"title" : "[NHN Cloud Email][##env##] 모니터링 알림",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
}
}
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateName | String | O | 템플릿 이름 |
| messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templateLanguage | String | X | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| sender | Object | O | |
| sender.senderMailAddress | String | O | 발신 메일 주소 |
| content | Object | O | |
| content.title | String | X | 템플릿 메일 제목 |
| content.body | String | X | 템플릿 메일 본문 |
| content.attachmentIds | Array | X | 템플릿 첨부 파일 ID |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### Email 템플릿 수정
PUT {{endpoint}}/template/v1.0/EMAIL/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderMailAddress" : "abcde@nhn.com"
},
"content" : {
"title" : "[NHN Cloud Email][##env##] 모니터링 알림",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
}
}
curl -X PUT "${endpoint}/template/v1.0/EMAIL/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"senderMailAddress" : "abcde@nhn.com"
},
"content" : {
"title" : "[NHN Cloud Email][##env##] 모니터링 알림",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다.",
"attachmentIds" : [ "YaX2DA4Weab2", "YaX2DA4Weab1" ]
}
}'
템플릿을 삭제합니다.
요청
DELETE /template/v1.0/EMAIL/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### Email 템플릿 삭제
DELETE {{endpoint}}/template/v1.0/EMAIL/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X DELETE "${endpoint}/template/v1.0/EMAIL/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 등록합니다.
요청
POST /template/v1.0/RCS/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
요청 본문
{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"brandId" : "AR.lj0eOjEI7Y",
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"smsType" : "STANDALONE",
"lmsType" : "HORIZONTAL",
"mmsType" : "HORIZONTAL",
"messagebaseId" : "44o4SUjpqnjDuUcH+uHvPg==",
"unsubscribePhoneNumber" : "08012341234",
"cards" : [ {
"title" : "제목",
"description" : "본문",
"attachmentId" : "20240814125609swLmoZTsGr0",
"mTitle" : "메인 타이틀",
"mTitleMedia" : "LT-messagebase.common-2k8ydI",
"title1" : "제목 1",
"title2" : "제목 2",
"title3" : "제목 3",
"description1" : "본문 1",
"description2" : "본문 2",
"description3" : "본문 3",
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
} ],
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
}
}
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateName | String | O | 템플릿 이름 |
| categoryId | String | X | 카테고리 아이디 |
| messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templateLanguage | String | X | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| sender | Object | O | |
| sender.brandId | String | O | 브랜드 아이디 |
| sender.chatbotId | String | O | 대화방(챗봇) 아이디 |
| content | Object | O | |
| content.messageType | String | X | RCS 발송 메시지 유형 [SMS(단문 메시지), LMS(장문 메시지), MMS(멀티미디어 메시지), RBC_TEMPLATE(RCS Biz Center 템플릿)] |
| content.title | String | X | (Deprecated, content.cards[].title 사용) 메시지 제목 |
| content.body | String | X | (Deprecated, content.cards[].description 사용) 메시지 본문 |
| content.smsType | String | X | SMS 타입 [STANDALONE(독립형), UNIFIED_STANDALONE(통합 독립형)] |
| content.lmsType | String | X | LMS 타입 [STANDALONE(독립형), FORMAT_BASIC(기본 형식), FORMAT_TITLE_HIGHLIGHT(제목 강조 형식), FORMAT_PARAGRAPH(문단 형식), UNIFIED_STANDALONE(통합 독립형)] |
| content.mmsType | String | X | MMS 타입(MMS 발송일 경우 필수) [HORIZONTAL(가로형), VERTICAL(세로형), CAROUSEL_MEDIUM(캐러셀 중간형), CAROUSEL_SMALL(캐러셀 소형), UNIFIED_HORIZONTAL(통합 가로형), UNIFIED_VERTICAL(통합 세로형)] |
| content.messagebaseId | String | X | RCS Biz Center 템플릿 아이디 |
| content.unsubscribePhoneNumber | String | X | 수신 거부 번호(광고 발송일 경우 필수) |
| content.cards | Array | X | RCS 카드 |
| content.cards[].title | String | X | 제목 |
| content.cards[].description | String | X | 본문 |
| content.cards[].attachmentId | String | X | 첨부 파일 아이디 ※ 통합 MMS 카드에서 GIF 이미지를 첨부하면 iOS 기기에서는 수신이 불가능합니다. |
| content.cards[].mTitle | String | X | 메인 타이틀 |
| content.cards[].mTitleMedia | String | X | 메인 타이틀 로고 파일 ID |
| content.cards[].title1 | String | X | 제목 1 |
| content.cards[].title2 | String | X | 제목 2 |
| content.cards[].title3 | String | X | 제목 3 |
| content.cards[].description1 | String | X | 본문 1 |
| content.cards[].description2 | String | X | 본문 2 |
| content.cards[].description3 | String | X | 본문 3 |
| content.cards[].buttons | Array | X | RCS 버튼 리스트 |
| content.cards[].buttons[].buttonType | String | X | COMPOSE(대화방 열기), CLIPBOARD(복사하기), DIALER(전화 걸기), MAP_SHOW(지도 보여주기), MAP_QUERY(지도 검색하기), MAP_SHARE(현재 위치 공유하기), URL(URL 연결하기), CALENDAR(일정 등록하기) ※ 통합 메시지 유형에 CLIPBOARD(복사하기) 버튼을 사용하면 iOS 기기에서는 수신이 불가능합니다. [COMPOSE, CLIPBOARD, DIALER, MAP_SHOW, MAP_QUERY, MAP_SHARE, URL, CALENDAR] |
| content.cards[].buttons[].buttonJson | Object | X | |
| content.cards[].buttons[].buttonJson.action | Object | X | 버튼 액션 |
| content.buttons | Array | X | (Deprecated, content.cards[].buttons 사용) RCS 버튼 리스트 |
| content.buttons[].buttonType | String | X | COMPOSE(대화방 열기), CLIPBOARD(복사하기), DIALER(전화 걸기), MAP_SHOW(지도 보여주기), MAP_QUERY(지도 검색하기), MAP_SHARE(현재 위치 공유하기), URL(URL 연결하기), CALENDAR(일정 등록하기) ※ 통합 메시지 유형에 CLIPBOARD(복사하기) 버튼을 사용하면 iOS 기기에서는 수신이 불가능합니다. [COMPOSE, CLIPBOARD, DIALER, MAP_SHOW, MAP_QUERY, MAP_SHARE, URL, CALENDAR] |
| content.buttons[].buttonJson | Object | X | |
| content.buttons[].buttonJson.action | Object | X | 버튼 액션 |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"templateId" : "A9z0A9z0"
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
요청 예시
### RCS 템플릿 등록
POST {{endpoint}}/template/v1.0/RCS/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"brandId" : "AR.lj0eOjEI7Y",
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"smsType" : "STANDALONE",
"lmsType" : "HORIZONTAL",
"mmsType" : "HORIZONTAL",
"messagebaseId" : "44o4SUjpqnjDuUcH+uHvPg==",
"unsubscribePhoneNumber" : "08012341234",
"cards" : [ {
"title" : "제목",
"description" : "본문",
"attachmentId" : "20240814125609swLmoZTsGr0",
"mTitle" : "메인 타이틀",
"mTitleMedia" : "LT-messagebase.common-2k8ydI",
"title1" : "제목 1",
"title2" : "제목 2",
"title3" : "제목 3",
"description1" : "본문 1",
"description2" : "본문 2",
"description3" : "본문 3",
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
} ],
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
}
}
curl -X POST "${endpoint}/template/v1.0/RCS/templates" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"brandId" : "AR.lj0eOjEI7Y",
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"smsType" : "STANDALONE",
"lmsType" : "HORIZONTAL",
"mmsType" : "HORIZONTAL",
"messagebaseId" : "44o4SUjpqnjDuUcH+uHvPg==",
"unsubscribePhoneNumber" : "08012341234",
"cards" : [ {
"title" : "제목",
"description" : "본문",
"attachmentId" : "20240814125609swLmoZTsGr0",
"mTitle" : "메인 타이틀",
"mTitleMedia" : "LT-messagebase.common-2k8ydI",
"title1" : "제목 1",
"title2" : "제목 2",
"title3" : "제목 3",
"description1" : "본문 1",
"description2" : "본문 2",
"description3" : "본문 3",
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
} ],
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
}
}'
템플릿 리스트를 조회합니다.
요청
GET /template/v1.0/RCS/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateName | Query | String | X | 템플릿 이름(LIKE 검색) |
| limit | Query | Number | X | limit 설정하지 않으면 default 20(최대 1000) |
| offset | Query | Number | X | offset 설정하지 않으면 default 0 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"totalCount" : 1,
"templates" : [ {
"templateId" : "A9z0A9z0",
"templateName" : "배송 완료",
"categoryId" : "20230131070811m2fDe1rXx80",
"messageChannel" : "SMS",
"messagePurpose" : "NORMAL",
"messagePurposes" : [ "NORMAL" ],
"createdDateTime" : "2024-10-29T06:00:01.000+09:00",
"updatedDateTime" : "2024-10-29T06:00:01.000+09:00"
} ]
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| totalCount | Integer | O | 총 건수 |
| templates | Array | O | |
| templates[].templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
| templates[].templateName | String | O | 템플릿명 |
| templates[].categoryId | String | O | 카테고리 아이디 |
| templates[].messageChannel | String | O | 메시지 채널 [SMS(SMS), ALIMTALK(알림톡), EMAIL(이메일), RCS(RCS), PUSH(푸시)] |
| templates[].messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templates[].messagePurposes | Array | O | |
| templates[].createdDateTime | String | O | 템플릿 생성 시각 |
| templates[].updatedDateTime | String | O | 템플릿 수정된 시각 |
요청 예시
### RCS 템플릿 리스트 조회
GET {{endpoint}}/template/v1.0/RCS/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/RCS/templates" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 상세 조회합니다.
요청
GET /template/v1.0/RCS/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"template" : {
"templateId" : "A9z0A9z0",
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messageChannel" : "SMS",
"messagePurpose" : "NORMAL",
"messagePurposes" : [ "NORMAL" ],
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"brandId" : "AR.lj0eOjEI7Y",
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"smsType" : "STANDALONE",
"lmsType" : "HORIZONTAL",
"mmsType" : "HORIZONTAL",
"messagebaseId" : "44o4SUjpqnjDuUcH+uHvPg==",
"messagebaseformId" : "SS000000",
"unsubscribePhoneNumber" : "08012341234",
"cards" : [ {
"title" : "제목",
"description" : "본문",
"attachmentId" : "20240814125609swLmoZTsGr0",
"mTitle" : "메인 타이틀",
"mTitleMedia" : "LT-messagebase.common-2k8ydI",
"title1" : "제목 1",
"title2" : "제목 2",
"title3" : "제목 3",
"description1" : "본문 1",
"description2" : "본문 2",
"description3" : "본문 3",
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
} ],
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
},
"additionalProperty" : {
"status" : "SUCCESS",
"approvedDateTime" : "2024-10-29T06:00:01.000+09:00"
},
"createdDateTime" : "2024-10-29T06:00:01.000+09:00",
"updatedDateTime" : "2024-10-29T06:00:01.000+09:00"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | X | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| template | Object | X | |
| template.templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
| template.templateName | String | X | 템플릿 이름 |
| template.categoryId | String | X | 카테고리 아이디 |
| template.messageChannel | String | X | 메시지 채널 [SMS(SMS), ALIMTALK(알림톡), EMAIL(이메일), RCS(RCS), PUSH(푸시)] |
| template.messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| template.messagePurposes | Array | X | |
| template.templateLanguage | String | X | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| template.sender | Object | X | |
| template.sender.brandId | String | O | 브랜드 아이디 |
| template.sender.chatbotId | String | O | 대화방(챗봇) 아이디 |
| template.content | Object | X | |
| template.content.messageType | String | X | RCS 발송 메시지 유형 [SMS(단문 메시지), LMS(장문 메시지), MMS(멀티미디어 메시지), RBC_TEMPLATE(RCS Biz Center 템플릿)] |
| template.content.title | String | X | 메시지 제목 |
| template.content.body | String | X | 메시지 본문 |
| template.content.smsType | String | X | SMS 타입 [STANDALONE(독립형), UNIFIED_STANDALONE(통합 독립형)] |
| template.content.lmsType | String | X | LMS 타입 [STANDALONE(독립형), FORMAT_BASIC(기본 형식), FORMAT_TITLE_HIGHLIGHT(제목 강조 형식), FORMAT_PARAGRAPH(문단 형식), UNIFIED_STANDALONE(통합 독립형)] |
| template.content.mmsType | String | X | MMS 타입(MMS 발송일 경우 필수) [HORIZONTAL(가로형), VERTICAL(세로형), CAROUSEL_MEDIUM(캐러셀 중간형), CAROUSEL_SMALL(캐러셀 소형), UNIFIED_HORIZONTAL(통합 가로형), UNIFIED_VERTICAL(통합 세로형)] |
| template.content.messagebaseId | String | X | RCS Biz Center 템플릿 아이디 |
| template.content.messagebaseformId | String | X | RCS Biz Center 에서 지정한 messageBase 양식 - SS000000(SMS 기본형) - SL000000(LMS 기본형) - OL00000001(LMS Format 기본형) - OL00000002(LMS Format 타이틀 강조형) - OL00000003(LMS Format 문단형) - SMwThT00(MMS 세로형) - SMwThM00(MMS 가로형) - CMwMhM0200(MMS 슬라이드 중간형(2)) - CMwMhM0300(MMS 슬라이드 중간형(3)) - CMwMhM0400(MMS 슬라이드 중간형(4)) - CMwMhM0500(MMS 슬라이드 중간형(5)) - CMwMhM0600(MMS 슬라이드 중간형(6)) - CMwShS0200(MMS 슬라이드 작은형(2)) - CMwShS0300(MMS 슬라이드 작은형(3)) - CMwShS0400(MMS 슬라이드 작은형(4)) - CMwShS0500(MMS 슬라이드 작은형(5)) - CMwShS0600(MMS 슬라이드 작은형(6)) - CLI00001(아이템 상세형) - CLI00002(이미지 강조형 (1:1)) - CLI00003(이미지 강조형 (3:4)) - CLI00004(이미지 & 타이틀 강조형 (1:1)) - CLI00005(이미지 & 타이틀 강조형 (3:4)) - CLI00006(썸네일형 (가로)) - CLI00007(썸네일형 (세로)) - CLI00008(SNS형 (하단버튼)) - CLI00009(SNS형 (중간버튼)) - ITTBNV(썸네일형(세로)) - ITTBNH(썸네일형(가로)) - ITHIMS(이미지 강조형(1:1)) - ITHIMV(이미지 강조형(3:4)) - ITSNSS(SNS형) - ITSNSH(SNS형(중간버튼)) - ITHITS(이미지 & 타이틀 강조형(1:1)) - ITHITV(이미지 & 타이틀 강조형(3:4)) - ITCRM2(슬라이드 형(2)) - ITCRM3(슬라이드 형(3)) - ITCRM4(슬라이드 형(4)) - ITCRM5(슬라이드 형(5)) - ITCRM6(슬라이드 형(6)) - CLT00001(아이템 강조형 DESC) - CLT00002(아이템 강조형 TABLE) - TATA001F(타이틀 자유형 FREE) - TATA001C(타이틀 자유형 CELL) - TATA001D(타이틀 자유형 DESC) - GG000F(타이틀 선택형 FREE) - FF005C(명세서 CELL) - FF005D(명세서 DESC) - FF004C(취소 CELL) - FF004D(취소 DESC) - GG003C(안내 CELL) - GG003D(안내 DESC) - GG002C(인증 CELL) - GG002D(인증 DESC) - GG001C(회원 가입 CELL) - GG001D(회원 가입 DESC) - EE001C(예약 CELL) - EE001D(예약 DESC) - CC003C(배송 CELL) - CC003D(배송 DESC) - FF002C(입금 CELL) - FF002D(입금 DESC) - FF001C(승인 CELL) - FF001D(승인 DESC) - CC002C(주문 CELL) - CC002D(주문 DESC) - CC001C(출고 CELL) - CC001D(출고 DESC) - FF003C(출금 CELL) - FF003D(출금 DESC) - CLL00001(LMS 명세서 A) - CLL00002(LMS 문단형) - CLL00003(LMS 타이들 강조형) - CLL00004(LMS 기본형) - CLL00005(LMS 명세서 B) - CLL00006(LMS 명세서 C) - RPSSAXX001(통합 SMS 카드) - RPLSAXX001(통합 LMS 카드) - RPMSMMX001(통합 MMS 카드 M) - RPMSMTX001(통합 MMS 카드 T) - RPISMMX001(통합 이미지 템플릿 M) - RPISMTX001(통합 이미지 템플릿 T) - RPTDXXX001(통합 정보성 템플릿) - RPTFXXX001(통합 프리 템플릿) [SS000000, SL000000, OL00000001, OL00000002, OL00000003, SMwThT00, SMwThM00, CMwMhM0200, CMwMhM0300, CMwMhM0400, CMwMhM0500, CMwMhM0600, CMwShS0200, CMwShS0300, CMwShS0400, CMwShS0500, CMwShS0600, CLI00001, CLI00002, CLI00003, CLI00004, CLI00005, CLI00006, CLI00007, CLI00008, CLI00009, ITTBNV, ITTBNH, ITHIMS, ITHIMV, ITSNSS, ITSNSH, ITHITS, ITHITV, ITCRM2, ITCRM3, ITCRM4, ITCRM5, ITCRM6, CLT00001, CLT00002, TATA001C, TATA001D, TATA001F, FF005C, FF005D, FF004C, FF004D, GG003C, GG003D, GG002C, GG002D, GG001C, GG001D, GG000F, EE001C, EE001D, CC003C, CC003D, FF002C, FF002D, FF001C, FF001D, CC002C, CC002D, CC001C, CC001D, FF003C, FF003D, CLL00001, CLL00002, CLL00003, CLL00004, CLL00005, CLL00006, RPSSAXX001, RPLSAXX001, RPMSMMX001, RPMSMTX001, RPISMMX001, RPISMTX001, RPTDXXX001, RPTFXXX001] |
| template.content.unsubscribePhoneNumber | String | X | 수신 거부 번호(광고 발송일 경우 필수) |
| template.content.cards | Array | X | RCS 카드 |
| template.content.cards[].title | String | X | 제목 |
| template.content.cards[].description | String | X | 본문 |
| template.content.cards[].attachmentId | String | X | 첨부 파일 아이디 ※ 통합 MMS 카드에서 GIF 이미지를 첨부하면 iOS 기기에서는 수신이 불가능합니다. |
| template.content.cards[].mTitle | String | X | 메인 타이틀 |
| template.content.cards[].mTitleMedia | String | X | 메인 타이틀 로고 파일 ID |
| template.content.cards[].title1 | String | X | 제목 1 |
| template.content.cards[].title2 | String | X | 제목 2 |
| template.content.cards[].title3 | String | X | 제목 3 |
| template.content.cards[].description1 | String | X | 본문 1 |
| template.content.cards[].description2 | String | X | 본문 2 |
| template.content.cards[].description3 | String | X | 본문 3 |
| template.content.cards[].buttons | Array | X | RCS 버튼 리스트 |
| template.content.cards[].buttons[].buttonType | String | X | COMPOSE(대화방 열기), CLIPBOARD(복사하기), DIALER(전화 걸기), MAP_SHOW(지도 보여주기), MAP_QUERY(지도 검색하기), MAP_SHARE(현재 위치 공유하기), URL(URL 연결하기), CALENDAR(일정 등록하기) ※ 통합 메시지 유형에 CLIPBOARD(복사하기) 버튼을 사용하면 iOS 기기에서는 수신이 불가능합니다. [COMPOSE, CLIPBOARD, DIALER, MAP_SHOW, MAP_QUERY, MAP_SHARE, URL, CALENDAR] |
| template.content.cards[].buttons[].buttonJson | Object | X | |
| template.content.cards[].buttons[].buttonJson.action | Object | X | 버튼 액션 |
| template.content.buttons | Array | X | RCS 버튼 리스트 |
| template.content.buttons[].buttonType | String | X | COMPOSE(대화방 열기), CLIPBOARD(복사하기), DIALER(전화 걸기), MAP_SHOW(지도 보여주기), MAP_QUERY(지도 검색하기), MAP_SHARE(현재 위치 공유하기), URL(URL 연결하기), CALENDAR(일정 등록하기) ※ 통합 메시지 유형에 CLIPBOARD(복사하기) 버튼을 사용하면 iOS 기기에서는 수신이 불가능합니다. [COMPOSE, CLIPBOARD, DIALER, MAP_SHOW, MAP_QUERY, MAP_SHARE, URL, CALENDAR] |
| template.content.buttons[].buttonJson | Object | X | |
| template.content.buttons[].buttonJson.action | Object | X | 버튼 액션 |
| template.additionalProperty | Object | X | |
| template.additionalProperty.status | String | X | 템플릿 상태 - SAVE: 저장 - APPROVE_WAIT: 승인 대기 - INSPECTION_START: 검수 시작 - INSPECTION_FINISH: 검수 완료 - APPROVE: 승인 - REJECT: 거부 - MODIFY_APPROVE_WAIT: 수정 승인 대기 - MODIFY_INSPECTION_START: 수정 검수 시작 - MODIFY_INSPECTION_FINISH: 수정 검수 완료 - MODIFY_REJECT: 수정 거부 [SAVE, APPROVE_WAIT, INSPECTION_START, INSPECTION_FINISH, APPROVE, REJECT, MODIFY_APPROVE_WAIT, MODIFY_INSPECTION_START, MODIFY_INSPECTION_FINISH, MODIFY_REJECT] |
| template.additionalProperty.approvedDateTime | String | X | 템플릿 승인 시각 |
| template.createdDateTime | String | X | 템플릿 생성 시각 |
| template.updatedDateTime | String | X | 템플릿 수정된 시각 |
요청 예시
### RCS 템플릿 상세 조회
GET {{endpoint}}/template/v1.0/RCS/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/RCS/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 수정합니다.
요청
PUT /template/v1.0/RCS/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"brandId" : "AR.lj0eOjEI7Y",
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"smsType" : "STANDALONE",
"lmsType" : "HORIZONTAL",
"mmsType" : "HORIZONTAL",
"messagebaseId" : "44o4SUjpqnjDuUcH+uHvPg==",
"unsubscribePhoneNumber" : "08012341234",
"cards" : [ {
"title" : "제목",
"description" : "본문",
"attachmentId" : "20240814125609swLmoZTsGr0",
"mTitle" : "메인 타이틀",
"mTitleMedia" : "LT-messagebase.common-2k8ydI",
"title1" : "제목 1",
"title2" : "제목 2",
"title3" : "제목 3",
"description1" : "본문 1",
"description2" : "본문 2",
"description3" : "본문 3",
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
} ],
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
}
}
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateName | String | O | 템플릿 이름 |
| messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templateLanguage | String | X | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| sender | Object | X | |
| sender.brandId | String | O | 브랜드 아이디 |
| sender.chatbotId | String | O | 대화방(챗봇) 아이디 |
| content | Object | O | |
| content.messageType | String | X | RCS 발송 메시지 유형 [SMS(단문 메시지), LMS(장문 메시지), MMS(멀티미디어 메시지), RBC_TEMPLATE(RCS Biz Center 템플릿)] |
| content.title | String | X | (Deprecated, content.cards[].title 사용) 메시지 제목 |
| content.body | String | X | (Deprecated, content.cards[].description 사용) 메시지 본문 |
| content.smsType | String | X | SMS 타입 [STANDALONE(독립형), UNIFIED_STANDALONE(통합 독립형)] |
| content.lmsType | String | X | LMS 타입 [STANDALONE(독립형), FORMAT_BASIC(기본 형식), FORMAT_TITLE_HIGHLIGHT(제목 강조 형식), FORMAT_PARAGRAPH(문단 형식), UNIFIED_STANDALONE(통합 독립형)] |
| content.mmsType | String | X | MMS 타입(MMS 발송일 경우 필수) [HORIZONTAL(가로형), VERTICAL(세로형), CAROUSEL_MEDIUM(캐러셀 중간형), CAROUSEL_SMALL(캐러셀 소형), UNIFIED_HORIZONTAL(통합 가로형), UNIFIED_VERTICAL(통합 세로형)] |
| content.messagebaseId | String | X | RCS Biz Center 템플릿 아이디 |
| content.unsubscribePhoneNumber | String | X | 수신 거부 번호(광고 발송일 경우 필수) |
| content.cards | Array | X | RCS 카드 |
| content.cards[].title | String | X | 제목 |
| content.cards[].description | String | X | 본문 |
| content.cards[].attachmentId | String | X | 첨부 파일 아이디 ※ 통합 MMS 카드에서 GIF 이미지를 첨부하면 iOS 기기에서는 수신이 불가능합니다. |
| content.cards[].mTitle | String | X | 메인 타이틀 |
| content.cards[].mTitleMedia | String | X | 메인 타이틀 로고 파일 ID |
| content.cards[].title1 | String | X | 제목 1 |
| content.cards[].title2 | String | X | 제목 2 |
| content.cards[].title3 | String | X | 제목 3 |
| content.cards[].description1 | String | X | 본문 1 |
| content.cards[].description2 | String | X | 본문 2 |
| content.cards[].description3 | String | X | 본문 3 |
| content.cards[].buttons | Array | X | RCS 버튼 리스트 |
| content.cards[].buttons[].buttonType | String | X | COMPOSE(대화방 열기), CLIPBOARD(복사하기), DIALER(전화 걸기), MAP_SHOW(지도 보여주기), MAP_QUERY(지도 검색하기), MAP_SHARE(현재 위치 공유하기), URL(URL 연결하기), CALENDAR(일정 등록하기) ※ 통합 메시지 유형에 CLIPBOARD(복사하기) 버튼을 사용하면 iOS 기기에서는 수신이 불가능합니다. [COMPOSE, CLIPBOARD, DIALER, MAP_SHOW, MAP_QUERY, MAP_SHARE, URL, CALENDAR] |
| content.cards[].buttons[].buttonJson | Object | X | |
| content.cards[].buttons[].buttonJson.action | Object | X | 버튼 액션 |
| content.buttons | Array | X | (Deprecated, content.cards[].buttons 사용) RCS 버튼 리스트 |
| content.buttons[].buttonType | String | X | COMPOSE(대화방 열기), CLIPBOARD(복사하기), DIALER(전화 걸기), MAP_SHOW(지도 보여주기), MAP_QUERY(지도 검색하기), MAP_SHARE(현재 위치 공유하기), URL(URL 연결하기), CALENDAR(일정 등록하기) ※ 통합 메시지 유형에 CLIPBOARD(복사하기) 버튼을 사용하면 iOS 기기에서는 수신이 불가능합니다. [COMPOSE, CLIPBOARD, DIALER, MAP_SHOW, MAP_QUERY, MAP_SHARE, URL, CALENDAR] |
| content.buttons[].buttonJson | Object | X | |
| content.buttons[].buttonJson.action | Object | X | 버튼 액션 |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### RCS 템플릿 수정
PUT {{endpoint}}/template/v1.0/RCS/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"brandId" : "AR.lj0eOjEI7Y",
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"smsType" : "STANDALONE",
"lmsType" : "HORIZONTAL",
"mmsType" : "HORIZONTAL",
"messagebaseId" : "44o4SUjpqnjDuUcH+uHvPg==",
"unsubscribePhoneNumber" : "08012341234",
"cards" : [ {
"title" : "제목",
"description" : "본문",
"attachmentId" : "20240814125609swLmoZTsGr0",
"mTitle" : "메인 타이틀",
"mTitleMedia" : "LT-messagebase.common-2k8ydI",
"title1" : "제목 1",
"title2" : "제목 2",
"title3" : "제목 3",
"description1" : "본문 1",
"description2" : "본문 2",
"description3" : "본문 3",
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
} ],
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
}
}
curl -X PUT "${endpoint}/template/v1.0/RCS/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"sender" : {
"brandId" : "AR.lj0eOjEI7Y",
"chatbotId" : "44o4SUjpqnjDuUcH+uHvPg=="
},
"content" : {
"messageType" : "SMS",
"title" : "명절 운영시간 공지",
"body" : "안녕하세요. 금일 고객님 상품 입고되었습니다. 방문해 주세요.",
"smsType" : "STANDALONE",
"lmsType" : "HORIZONTAL",
"mmsType" : "HORIZONTAL",
"messagebaseId" : "44o4SUjpqnjDuUcH+uHvPg==",
"unsubscribePhoneNumber" : "08012341234",
"cards" : [ {
"title" : "제목",
"description" : "본문",
"attachmentId" : "20240814125609swLmoZTsGr0",
"mTitle" : "메인 타이틀",
"mTitleMedia" : "LT-messagebase.common-2k8ydI",
"title1" : "제목 1",
"title2" : "제목 2",
"title3" : "제목 3",
"description1" : "본문 1",
"description2" : "본문 2",
"description3" : "본문 3",
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
} ],
"buttons" : [ {
"buttonType" : "CALENDAR",
"buttonJson" : {
"action" : {
"displayText" : "일정 등록하기",
"calendarAction" : {
"createCalendarEvent" : {
"startTime" : "2024-01-01T00:00:00.000+09:00",
"endTime" : "2024-01-01T00:00:00.000+09:00",
"title" : "일정 제목",
"description" : "일정 설명"
}
}
}
}
} ]
}
}'
템플릿을 삭제합니다.
요청
DELETE /template/v1.0/RCS/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### RCS 템플릿 삭제
DELETE {{endpoint}}/template/v1.0/RCS/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X DELETE "${endpoint}/template/v1.0/RCS/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 등록합니다.
요청
POST /template/v1.0/PUSH/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
요청 본문
{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"content" : {
"unsubscribePhoneNumber" : "대표 번호",
"unsubscribeGuide" : "메뉴 > 설정",
"title" : "제목",
"body" : "내용",
"richMessage" : {
"buttons" : [ {
"name" : "버튼 이름",
"submitName" : "전송 버튼 이름",
"buttonType" : "버튼 타입, REPLY, DEEP_LINK, OPEN_APP, OPEN_URL, DISMISS",
"link" : "버튼을 눌렀을 때, 연결되는 링크",
"hint" : "버튼에 대한 힌트"
} ],
"media" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"androidMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"iosMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"largeIcon" : {
"sourceType" : "큰 아이콘의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE"
},
"group" : {
"key" : "그룹의 키, 여러 개의 메시지를 그룹 단위로 묶는 기능, Android에서만 지원",
"description" : "그룹에 대한 설명"
}
},
"style" : {
"useHtmlStyle" : true
},
"customKey" : "customValue"
}
}
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateName | String | O | 템플릿 이름 |
| categoryId | String | X | 카테고리 아이디 |
| messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templateLanguage | String | X | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| content | Object | O | 푸시 메시지 내용 |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"templateId" : "A9z0A9z0"
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
요청 예시
### Push 템플릿 등록
POST {{endpoint}}/template/v1.0/PUSH/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"content" : {
"unsubscribePhoneNumber" : "대표 번호",
"unsubscribeGuide" : "메뉴 > 설정",
"title" : "제목",
"body" : "내용",
"richMessage" : {
"buttons" : [ {
"name" : "버튼 이름",
"submitName" : "전송 버튼 이름",
"buttonType" : "버튼 타입, REPLY, DEEP_LINK, OPEN_APP, OPEN_URL, DISMISS",
"link" : "버튼을 눌렀을 때, 연결되는 링크",
"hint" : "버튼에 대한 힌트"
} ],
"media" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"androidMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"iosMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"largeIcon" : {
"sourceType" : "큰 아이콘의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE"
},
"group" : {
"key" : "그룹의 키, 여러 개의 메시지를 그룹 단위로 묶는 기능, Android에서만 지원",
"description" : "그룹에 대한 설명"
}
},
"style" : {
"useHtmlStyle" : true
},
"customKey" : "customValue"
}
}
curl -X POST "${endpoint}/template/v1.0/PUSH/templates" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"content" : {
"unsubscribePhoneNumber" : "대표 번호",
"unsubscribeGuide" : "메뉴 > 설정",
"title" : "제목",
"body" : "내용",
"richMessage" : {
"buttons" : [ {
"name" : "버튼 이름",
"submitName" : "전송 버튼 이름",
"buttonType" : "버튼 타입, REPLY, DEEP_LINK, OPEN_APP, OPEN_URL, DISMISS",
"link" : "버튼을 눌렀을 때, 연결되는 링크",
"hint" : "버튼에 대한 힌트"
} ],
"media" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"androidMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"iosMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"largeIcon" : {
"sourceType" : "큰 아이콘의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE"
},
"group" : {
"key" : "그룹의 키, 여러 개의 메시지를 그룹 단위로 묶는 기능, Android에서만 지원",
"description" : "그룹에 대한 설명"
}
},
"style" : {
"useHtmlStyle" : true
},
"customKey" : "customValue"
}
}'
템플릿 리스트를 조회합니다.
요청
GET /template/v1.0/PUSH/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateName | Query | String | X | 템플릿 이름(LIKE 검색) |
| limit | Query | Number | X | limit 설정하지 않으면 default 20(최대 1000) |
| offset | Query | Number | X | offset 설정하지 않으면 default 0 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"totalCount" : 1,
"templates" : [ {
"templateId" : "A9z0A9z0",
"templateName" : "배송 완료",
"categoryId" : "20230131070811m2fDe1rXx80",
"messageChannel" : "SMS",
"messagePurpose" : "NORMAL",
"messagePurposes" : [ "NORMAL" ],
"createdDateTime" : "2024-10-29T06:00:01.000+09:00",
"updatedDateTime" : "2024-10-29T06:00:01.000+09:00"
} ]
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| totalCount | Integer | O | 총 건수 |
| templates | Array | O | |
| templates[].templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
| templates[].templateName | String | O | 템플릿명 |
| templates[].categoryId | String | O | 카테고리 아이디 |
| templates[].messageChannel | String | O | 메시지 채널 [SMS(SMS), ALIMTALK(알림톡), EMAIL(이메일), RCS(RCS), PUSH(푸시)] |
| templates[].messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templates[].messagePurposes | Array | O | |
| templates[].createdDateTime | String | O | 템플릿 생성 시각 |
| templates[].updatedDateTime | String | O | 템플릿 수정된 시각 |
요청 예시
### Push 템플릿 리스트 조회
GET {{endpoint}}/template/v1.0/PUSH/templates
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/PUSH/templates" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 상세 조회합니다.
요청
GET /template/v1.0/PUSH/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"template" : {
"templateId" : "A9z0A9z0",
"templateName" : "템플릿 이름",
"categoryId" : "20230131070811m2fDe1rXx80",
"messageChannel" : "SMS",
"messagePurpose" : "NORMAL",
"messagePurposes" : [ "NORMAL" ],
"templateLanguage" : "PLAIN_TEXT",
"content" : {
"unsubscribePhoneNumber" : "대표 번호",
"unsubscribeGuide" : "메뉴 > 설정",
"title" : "제목",
"body" : "내용",
"richMessage" : {
"buttons" : [ {
"name" : "버튼 이름",
"submitName" : "전송 버튼 이름",
"buttonType" : "버튼 타입, REPLY, DEEP_LINK, OPEN_APP, OPEN_URL, DISMISS",
"link" : "버튼을 눌렀을 때, 연결되는 링크",
"hint" : "버튼에 대한 힌트"
} ],
"media" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"androidMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"iosMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"largeIcon" : {
"sourceType" : "큰 아이콘의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE"
},
"group" : {
"key" : "그룹의 키, 여러 개의 메시지를 그룹 단위로 묶는 기능, Android에서만 지원",
"description" : "그룹에 대한 설명"
}
},
"style" : {
"useHtmlStyle" : true
},
"customKey" : "customValue"
},
"createdDateTime" : "2024-10-29T06:00:01.000+09:00",
"updatedDateTime" : "2024-10-29T06:00:01.000+09:00"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| template | Object | O | |
| template.templateId | String | O | 템플릿 등록 시, 발급된 템플릿 아이디 |
| template.templateName | String | O | 템플릿 이름 |
| template.categoryId | String | O | 카테고리 아이디 |
| template.messageChannel | String | O | 메시지 채널 [SMS(SMS), ALIMTALK(알림톡), EMAIL(이메일), RCS(RCS), PUSH(푸시)] |
| template.messagePurpose | String | O | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| template.messagePurposes | Array | O | |
| template.templateLanguage | String | O | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| template.content | Object | O | 푸시 메시지 내용 |
| template.createdDateTime | String | O | 템플릿 생성 시각 |
| template.updatedDateTime | String | O | 템플릿 수정된 시각 |
요청 예시
### Push 템플릿 상세 조회
GET {{endpoint}}/template/v1.0/PUSH/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/PUSH/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿을 수정합니다.
요청
PUT /template/v1.0/PUSH/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"content" : {
"unsubscribePhoneNumber" : "대표 번호",
"unsubscribeGuide" : "메뉴 > 설정",
"title" : "제목",
"body" : "내용",
"richMessage" : {
"buttons" : [ {
"name" : "버튼 이름",
"submitName" : "전송 버튼 이름",
"buttonType" : "버튼 타입, REPLY, DEEP_LINK, OPEN_APP, OPEN_URL, DISMISS",
"link" : "버튼을 눌렀을 때, 연결되는 링크",
"hint" : "버튼에 대한 힌트"
} ],
"media" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"androidMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"iosMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"largeIcon" : {
"sourceType" : "큰 아이콘의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE"
},
"group" : {
"key" : "그룹의 키, 여러 개의 메시지를 그룹 단위로 묶는 기능, Android에서만 지원",
"description" : "그룹에 대한 설명"
}
},
"style" : {
"useHtmlStyle" : true
},
"customKey" : "customValue"
}
}
| 경로 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateName | String | O | 템플릿 이름 |
| messagePurpose | String | X | 발송 내용 유형 기본값: NORMAL [NORMAL(일반), AD(광고), AUTH(인증)] |
| templateLanguage | String | X | 템플릿 언어 유형 기본값: PLAIN_TEXT [PLAIN_TEXT(일반 텍스트), FREEMARKER(FreeMarker 템플릿)] |
| content | Object | O | 푸시 메시지 내용 |
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### Push 템플릿 수정
PUT {{endpoint}}/template/v1.0/PUSH/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"content" : {
"unsubscribePhoneNumber" : "대표 번호",
"unsubscribeGuide" : "메뉴 > 설정",
"title" : "제목",
"body" : "내용",
"richMessage" : {
"buttons" : [ {
"name" : "버튼 이름",
"submitName" : "전송 버튼 이름",
"buttonType" : "버튼 타입, REPLY, DEEP_LINK, OPEN_APP, OPEN_URL, DISMISS",
"link" : "버튼을 눌렀을 때, 연결되는 링크",
"hint" : "버튼에 대한 힌트"
} ],
"media" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"androidMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"iosMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"largeIcon" : {
"sourceType" : "큰 아이콘의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE"
},
"group" : {
"key" : "그룹의 키, 여러 개의 메시지를 그룹 단위로 묶는 기능, Android에서만 지원",
"description" : "그룹에 대한 설명"
}
},
"style" : {
"useHtmlStyle" : true
},
"customKey" : "customValue"
}
}
curl -X PUT "${endpoint}/template/v1.0/PUSH/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}" \
-d '{
"templateName" : "템플릿 이름",
"messagePurpose" : "NORMAL",
"templateLanguage" : "PLAIN_TEXT",
"content" : {
"unsubscribePhoneNumber" : "대표 번호",
"unsubscribeGuide" : "메뉴 > 설정",
"title" : "제목",
"body" : "내용",
"richMessage" : {
"buttons" : [ {
"name" : "버튼 이름",
"submitName" : "전송 버튼 이름",
"buttonType" : "버튼 타입, REPLY, DEEP_LINK, OPEN_APP, OPEN_URL, DISMISS",
"link" : "버튼을 눌렀을 때, 연결되는 링크",
"hint" : "버튼에 대한 힌트"
} ],
"media" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"androidMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"iosMedia" : {
"sourceType" : "미디어의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE",
"mediaType" : "미디어의 타입, IMAGE, GIF, VIDEO, AUDIO. Android에서는 IMAGE만 지원",
"extension" : "미디어 파일의 확장자, jpg, png",
"expandable" : true
},
"largeIcon" : {
"sourceType" : "큰 아이콘의 위치, REMOTE, LOCAL",
"source" : "미디어가 위치한 곳의 주소, URL, LOCAL_RESOURCE"
},
"group" : {
"key" : "그룹의 키, 여러 개의 메시지를 그룹 단위로 묶는 기능, Android에서만 지원",
"description" : "그룹에 대한 설명"
}
},
"style" : {
"useHtmlStyle" : true
},
"customKey" : "customValue"
}
}'
템플릿을 삭제합니다.
요청
DELETE /template/v1.0/PUSH/templates/{templateId}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
요청 예시
### Push 템플릿 삭제
DELETE {{endpoint}}/template/v1.0/PUSH/templates/{{templateId}}
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X DELETE "${endpoint}/template/v1.0/PUSH/templates/${templateId}" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"
템플릿이 포함하고 있는 파라미터 목록을 조회합니다.
요청
GET /template/v1.0/{messageChannel}/templates/{templateId}/parameters
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
요청 파라미터
| 이름 | 구분 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| X-NC-APP-KEY | Header | String | O | 앱키 |
| X-NHN-Authorization | Header | String | O | 액세스 토큰 |
| messageChannel | Path | Enum | O | 메시지 채널입니다. |
| templateId | Path | String | O | 템플릿 아이디 |
요청 본문
이 API는 요청 본문을 요구하지 않습니다.
응답 본문
{
"header" : {
"isSuccessful" : true,
"resultCode" : 0,
"resultMessage" : "SUCCESS"
},
"templateParameter" : {
"validateTimestamp" : "",
"timestamp" : "",
"validateFailDomainList" : [ {
"domain" : "",
"verifyYn" : "",
"spfYn" : "",
"dkimVerifyYn" : "",
"dmarcYn" : ""
} ]
}
}
| 경로 | 타입 | Not Null | 설명 |
|---|---|---|---|
| header | Object | O | |
| header.isSuccessful | Boolean | O | 요청이 성공했는지 여부를 나타냅니다. 기본값: true |
| header.resultCode | Integer | O | 요청의 결과 코드입니다. 기본값: 0 |
| header.resultMessage | String | O | 요청의 결과 메시지입니다. 기본값: SUCCESS |
| templateParameter | Object | X | 템플릿 파라미터 결과 JSON |
요청 예시
### 템플릿 파라미터 조회
GET {{endpoint}}/template/v1.0/{{messageChannel}}/templates/{{templateId}}/parameters
X-NC-APP-KEY: {appKey}
X-NHN-Authorization: Bearer {accessToken}
curl -X GET "${endpoint}/template/v1.0/${messageChannel}/templates/${templateId}/parameters" \
-H "X-NC-APP-KEY: {appKey}" \
-H "X-NHN-Authorization: Bearer {accessToken}"