템플릿이 수십 개가 되면 화면 스크롤로는 현황을 파악하기 어려워요. 검수 상태·채널별로 걸러서 파일로 받아 정리할 때 써요.
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
format |
String | 선택 | csv(서버 기본)·json |
scope |
String | 선택 | private(기본, 내 자체 템플릿)·official(공식 카탈로그)·all |
ksp_id |
String | 선택 | 채널 필터. sender_id 로도 받아요 |
status |
String | 선택 | 검수 상태 필터. ins 로도 받고 벤더 문자열(APR 등)도 받아요 |
include_content |
Boolean | 선택 | 본문 포함 여부 (기본 false) |
열 구성
두 형식의 열이 같아요.
| 열 | 설명 |
|---|---|
| code | 템플릿 코드 |
| name | 템플릿 이름 |
| kind | 공식 또는 자체 |
| channel | 채널(yellow_id) |
| category | 분류 |
| msg_type | BA·EX·AD·MI |
| emphasize_type | NONE·TEXT·IMAGE·ITEM_LIST |
| vendor_status | 등록전·대기·정상·중단 |
| inspection_status | 등록(REG)·검수요청(REQ)·승인(APR)·등록거절(KRR)·승인반려(REJ) |
| reject_reason | 반려 사유. 여러 건이면 / 로 이어 붙여요 |
| variables | 필수 변수. ; 로 이어 붙여요 |
| button_count | 버튼 개수 |
| version | 버전 |
| created_at | 생성 시각 (Asia/Seoul) |
| synced_at | 마지막 동기화 시각 |
include_content=true 면 content 열이 마지막에 붙어요. 숫자 코드가 아니라 사람이 읽는 라벨로 내보내요.
코드 예제
curl -X GET "https://message.bootapi.com/alimtalk/templates/export?format=csv&status=APR" \
-H "Authorization: Basic {base64(client_key:secret_key)}" \
-o templates.csvbashrequire 'bootpay'
commerce = BootpayStore::RestClient.new(client_key: 'your-commerce-client-key', secret_key: 'your-commerce-secret-key')
# 구조화된 데이터로 받기 (SDK 기본값)
response = commerce.alimtalk_template_export(status: 'APR')
puts response.data[:count]
# CSV 원문으로 받기
csv = commerce.alimtalk_template_export(format: 'csv', status: 'APR')
File.write('templates.csv', csv.data[:body])rubyRuby SDK 는 기본이 JSON 이에요
서버 기본값은 csv 지만, SDK 는 format: 'json' 을 기본으로 둬요. CSV 본문은 JSON 이 아니라서 공용 응답 파서를 통과하지 못하기 때문이에요. format: 'csv' 를 주면 파싱하지 않고 원문을 data[:body] 에 담아 돌려줘요.
응답
CSV
text/csv; charset=utf-8 로 내려오고 UTF-8 BOM 이 붙어 있어요. 엑셀에서 바로 열어도 한글이 깨지지 않아요. 파일명은 alimtalk_templates_YYYYMMDD.csv 형식이에요.
JSON
{
"list": [
{
"code": "BT_A58A7B_1A2B3C4D",
"name": "예약 확정 안내",
"kind": "자체",
"channel": "@부트페이",
"category": null,
"msg_type": "BA",
"emphasize_type": "NONE",
"vendor_status": "정상",
"inspection_status": "승인(APR)",
"reject_reason": "",
"variables": "company_name;user_name;booking_date",
"button_count": 1,
"version": 1,
"created_at": "2026-08-27 10:00:00",
"synced_at": "2026-08-27 10:05:00"
}
],
"count": 1,
"headers": ["code", "name", "kind", "channel", "category", "msg_type", "emphasize_type", "vendor_status", "inspection_status", "reject_reason", "variables", "button_count", "version", "created_at", "synced_at"]
}json에러 코드
| 코드 | error_code | 메시지 | 대처 방법 |
|---|---|---|---|
3031 |
EXPORT_LIMIT_EXCEEDED |
내보내기 상한 초과 | 1회 5,000건까지예요. ksp_id·status 로 범위를 좁혀요 |
