# 브랜드 메시지 전송

## 1. SendBMSText - 텍스트 전송

카카오톡 채널을 추가한 사용자 또는 마케팅 정보 수신에 동의한 사용자에게 텍스트형 광고성 메시지를 전송합니다. (최대 1,000건)

- 비채널 친구에게 브랜드 메시지를 전송하기 위해서는 등록된 비즈니스 채널에 대해 브랜드 메시지 채널 신청이 필요합니다.
- 전송실패시 대체문자를 전송할 수 있고, 이 경우 문자(SMS/LMS) 요금이 과금됩니다.

```java
String sendBMSText(String corpNum, BMS bms, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- bms `type: BMS` `length: -` `required: Y` `description: 브랜드 메시지 정보`
  - plusFriendID `type: String` `length: 30` `required: Y` `description: 검색용 아이디`
  - targeting `type: String` `length: 1` `required: Y` `description: 전송대상`
    - `I`: 채널 친구
    - `N`: 비채널 친구
    - `M`: 전체
  - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
    - 기본값 : false
    - 동보 전송인 경우 입력
  - content `type: String` `length: 1,300` `required: 조건부` `description: 브랜드 메시지 내용`
    - 줄바꿈 최대 99회
    - 동보 전송인 경우 필수
  - unsubscribeNo `type: String` `length: 13` `required: 조건부` `description: 080 수신거부 번호`
    - {targeting}="N" or "M" 인 경우 필수
  - altYN `type: Boolean` `length: -` `required: N` `description: 대체문자 전송 여부`
    - 기본값 : false
  - sendNum `type: String` `length: 20` `required: 조건부` `description: 발신번호`
    - 대체문자 전송시 필수
    - 팝빌에 등록되지 않은 발신번호를 입력하는 경우 오류 반환
  - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
    - 대체문자 내용이 90byte 초과한 경우에만 적용
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
    - 대체문자 전송 시 필수
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altUnsubscribeNo `type: String` `length: 20` `required: 조건부` `description: 대체문자 080 수신거부 번호`
    - 대체문자 전송 시 필수
  - reserveDT `type: String` `length: 14` `required: N` `description: 전송 예약일시`
    - 형식 : yyyyMMddHHmmss
    - 예약 가능 시간 08:00\~20:50
    - 기본값 : 즉시전송
  - requestNum `type: String` `length: 36` `required: N` `description: 요청번호`
    - 파트너가 접수 단위를 식별하기 위해 할당하는 관리번호
    - 영문 대소문자, 숫자, 특수문자('-', '\_')만 이용 가능
  - btns `type: List<KakaoButton>` `length: 5` `required: 조건부` `description: 버튼 목록`
    - 최대 5개 (쿠폰을 포함하는 경우 최대 4개)
    - 동보 전송인 경우 입력
    - n `type: String` `length: 14` `required: Y` `description: 버튼명`
    - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
      - `WL`: 웹링크
      - `AL`: 앱링크
      - `MD`: 메시지전달
      - `BK`: 봇키워드
      - `AC`: 채널추가
    - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
      - {t} = "AL" 경우 iOS 앱링크 적용
      - {t} = "WL" 경우 Mobile 웹링크 적용
      - {t} = "WL" or "AL" 경우 필수
    - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
      - {t} = "AL" 경우 Android 앱링크 적용
      - {t} = "WL" 경우 PC 웹링크 적용
      - {t} = "WL" or "AL" 경우 필수
  - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
    - 채널 쿠폰 사용 시 linkAndroid, linkIos 중 1개 필수
    - 외부 쿠폰 사용 시 linkMobile 필수
    - 동보 전송인 경우 입력
    - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
      - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
      - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
      - `배송비 할인 쿠폰`
      - `#{7자 이내} 무료 쿠폰`
      - `#{7자 이내} UP 쿠폰`
    - description `type: String` `length: 12` `required: Y` `description: 쿠폰 설명`
      - 줄바꿈 사용 불가
    - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
    - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
    - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
    - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
  - receivers `type: KakaoReceiver[ ]` `length: 1,000` `required: Y` `description: 수신자 목록`
    - receiverNum `type: String` `length: 20` `required: Y` `description: 수신번호`
    - receiverName `type: String` `length: 70` `required: N` `description: 수신자명`
    - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
      - 기본값 : false
      - 대량 전송인 경우 입력
    - content `type: String` `length: 1,300` `required: 조건부` `description: 브랜드 메시지 내용`
      - 줄바꿈 최대 99회
      - 대량 전송인 경우 필수
    - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
      - 대량전송 경우 사용
      - 메시지 길이가 90byte 초과한 경우에만 적용
      - 단위 : byte
      - 대량 전송인 경우 입력
    - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
      - 대체문자 전송 시 필수
      - 단위 : byte
      - 대량 전송인 경우 입력
    - interOPRefKey `type: String` `length: 20` `required: N` `description: 파트너 지정키`
      - 카카오톡 대량/동보전송시 파트너가 개별건마다 입력할 수 있는 값
    - btns `type: List<KakaoButton>` `length: 5` `required: 조건부` `description: 버튼 목록`
      - 최대 5개 (쿠폰을 포함하는 경우 최대 4개)
      - 대량 전송인 경우 입력
      - n `type: String` `length: 14` `required: Y` `description: 버튼명`
      - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
        - `WL`: 웹링크
        - `AL`: 앱링크
        - `MD`: 메시지전달
        - `BK`: 봇키워드
        - `AC`: 채널추가
      - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 iOS 앱링크 적용
        - {t} = "WL" 경우 Mobile 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
      - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 Android 앱링크 적용
        - {t} = "WL" 경우 PC 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
    - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
      - 채널 쿠폰 사용 시 linkAndroid, linkIos 중 1개 필수
      - 외부 쿠폰 사용 시 linkMobile 필수
      - 대량 전송인 경우 입력
      - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
        - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
        - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
        - `배송비 할인 쿠폰`
        - `#{7자 이내} 무료 쿠폰`
        - `#{7자 이내} UP 쿠폰`
      - description `type: String` `length: 12` `required: Y` `description: 쿠폰 설명`
        - 줄바꿈 사용 불가
      - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
      - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
      - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
      - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 요청에 대한 접수번호(receiptNum)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 2-1. SendBMSImage - 이미지 전송

카카오톡 채널을 추가한 사용자 또는 마케팅 정보 수신에 동의한 사용자에게 이미지형 광고성 메시지를 전송합니다. (최대 1,000건)

- 비채널 친구에게 브랜드 메시지를 전송하기 위해서는 등록된 비즈니스 채널에 대해 브랜드 메시지 채널 신청이 필요합니다.
- 브랜드 메시지 전송 전에 [\[UploadImage - 이미지 업로드\]](https://developers.popbill.com/reference/kakaotalk/java/api/send-bms#UploadImage) API로 이미지 업로드가 필요합니다.
- 전송실패시 대체문자를 전송할 수 있고, 이 경우 문자(SMS/LMS) 요금이 과금됩니다.

```java
String sendBMSImage(String corpNum, BMS bms, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- bms `type: BMS` `length: -` `required: Y` `description: 브랜드 메시지 정보`
  - plusFriendID `type: String` `length: 30` `required: Y` `description: 검색용 아이디`
  - targeting `type: String` `length: 1` `required: Y` `description: 전송대상`
    - `I`: 채널 친구
    - `N`: 비채널 친구
    - `M`: 전체
  - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
    - 기본값 : false
    - 동보 전송인 경우 입력
  - imageUrl `type: String` `length: 500` `required: 조건부` `description: 이미지 URL`
    - [\[UploadImage - 이미지 업로드\]](#UploadImage) API로 응답받은 URL
    - 동보 전송인 경우 필수
  - imageLink `type: String` `length: 500` `required: N` `description: 이미지 링크 URL`
    - 이미지를 클릭하면 연결되는 URL
    - 동보 전송인 경우 입력
  - content `type: String` `length: 1,300` `required: 조건부` `description: 브랜드 메시지 내용`
    - 줄바꿈 최대 99회
    - 동보 전송인 경우 필수
  - unsubscribeNo `type: String` `length: 13` `required: 조건부` `description: 080 수신거부 번호`
    - {targeting}="N" or "M" 인 경우 필수
  - altYN `type: Boolean` `length: -` `required: N` `description: 대체문자 전송 여부`
    - 기본값 : false
  - sendNum `type: String` `length: 20` `required: 조건부` `description: 발신번호`
    - 대체문자 전송시 필수
    - 팝빌에 등록되지 않은 발신번호를 입력하는 경우 오류 반환
  - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
    - 대체문자 내용이 90byte 초과한 경우에만 적용
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
    - 대체문자 전송 시 필수
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altUnsubscribeNo `type: String` `length: 20` `required: 조건부` `description: 대체문자 080 수신거부 번호`
    - 대체문자 전송 시 필수
  - reserveDT `type: String` `length: 14` `required: N` `description: 전송 예약일시`
    - 형식 : yyyyMMddHHmmss
    - 예약 가능 시간 08:00\~20:50
    - 기본값 : 즉시전송
  - requestNum `type: String` `length: 36` `required: N` `description: 요청번호`
    - 파트너가 접수 단위를 식별하기 위해 할당하는 관리번호
    - 영문 대소문자, 숫자, 특수문자('-', '\_')만 이용 가능
  - btns `type: List<KakaoButton>` `length: 5` `required: 조건부` `description: 버튼 목록`
    - 최대 5개 (쿠폰을 포함하는 경우 최대 4개)
    - 동보 전송인 경우 입력
    - n `type: String` `length: 14` `required: Y` `description: 버튼명`
    - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
      - `WL`: 웹링크
      - `AL`: 앱링크
      - `MD`: 메시지전달
      - `BK`: 봇키워드
      - `AC`: 채널추가
    - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
      - {t} = "AL" 경우 iOS 앱링크 적용
      - {t} = "WL" 경우 Mobile 웹링크 적용
      - {t} = "WL" or "AL" 경우 필수
    - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
      - {t} = "AL" 경우 Android 앱링크 적용
      - {t} = "WL" 경우 PC 웹링크 적용
      - {t} = "WL" or "AL" 경우 필수
  - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
    - 채널 쿠폰 사용 시 linkAndroid, linkIos 중 1개 필수
    - 외부 쿠폰 사용 시 linkMobile 필수
    - 동보 전송인 경우 입력
    - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
      - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
      - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
      - `배송비 할인 쿠폰`
      - `#{7자 이내} 무료 쿠폰`
      - `#{7자 이내} UP 쿠폰`
    - description `type: String` `length: 12` `required: Y` `description: 쿠폰 설명`
      - 줄바꿈 사용 불가
    - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
    - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
    - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
    - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
  - receivers `type: KakaoReceiver[ ]` `length: 1,000` `required: Y` `description: 수신자 목록`
    - receiverNum `type: String` `length: 20` `required: Y` `description: 수신번호`
    - receiverName `type: String` `length: 70` `required: N` `description: 수신자명`
    - imageUrl `type: String` `length: 500` `required: 조건부` `description: 이미지 URL`
      - [\[UploadImage - 이미지 업로드\]](#UploadImage) API로 응답받은 URL
      - 대량 전송인 경우 필수
    - imageLink `type: String` `length: 500` `required: N` `description: 이미지 링크 URL`
      - 이미지를 클릭하면 연결되는 URL
      - 대량 전송인 경우 입력
    - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
      - 기본값 : false
      - 대량 전송인 경우 입력
    - content `type: String` `length: 1,300` `required: 조건부` `description: 브랜드 메시지 내용`
      - 줄바꿈 최대 99회
      - 대량 전송인 경우 필수
    - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
      - 대량전송 경우 사용
      - 메시지 길이가 90byte 초과한 경우에만 적용
      - 단위 : byte
      - 대량 전송인 경우 입력
    - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
      - 대체문자 전송 시 필수
      - 단위 : byte
      - 대량 전송인 경우 입력
    - interOPRefKey `type: String` `length: 20` `required: N` `description: 파트너 지정키`
      - 카카오톡 대량/동보전송시 파트너가 개별건마다 입력할 수 있는 값
    - btns `type: List<KakaoButton>` `length: 5` `required: 조건부` `description: 버튼 목록`
      - 최대 5개 (쿠폰을 포함하는 경우 최대 4개)
      - 대량 전송인 경우 입력
      - n `type: String` `length: 14` `required: Y` `description: 버튼명`
      - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
        - `WL`: 웹링크
        - `AL`: 앱링크
        - `MD`: 메시지전달
        - `BK`: 봇키워드
        - `AC`: 채널추가
      - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 iOS 앱링크 적용
        - {t} = "WL" 경우 Mobile 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
      - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 Android 앱링크 적용
        - {t} = "WL" 경우 PC 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
    - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
      - 채널 쿠폰 사용 시 linkAndroid, linkIos 중 1개 필수
      - 외부 쿠폰 사용 시 linkMobile 필수
      - 대량 전송인 경우 입력
      - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
        - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
        - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
        - `배송비 할인 쿠폰`
        - `#{7자 이내} 무료 쿠폰`
        - `#{7자 이내} UP 쿠폰`
      - description `type: String` `length: 12` `required: Y` `description: 쿠폰 설명`
        - 줄바꿈 사용 불가
      - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
      - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
      - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
      - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 요청에 대한 접수번호(receiptNum)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 2-2. UploadImage - 이미지 업로드

브랜드 메시지 전송에 사용할 이미지를 업로드합니다.

```java
String uploadImage(String corpNum, File file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: File` `length: -` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 2:1이상 3:4이하
  - 권장 사이즈 - 800\*400px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 이미지 URL(imageUrl)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 2-3. UploadImageBinary - 이미지 업로드 (바이너리)

브랜드 메시지 전송에 사용할 바이너리 형식의 이미지를 업로드합니다.

```java
String uploadImageBinary(String corpNum, KakaoUploadFile file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: KakaoUploadFile` `length: -` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 2:1이상 3:4이하
  - 권장 사이즈 - 800\*400px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
  - fileName `type: String` `length: -` `required: Y` `description: 파일명`
  - fileData `type: InputStream` `length: -` `required: Y` `description: 바이너리 데이터`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 이미지 URL(imageUrl)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 3-1. SendBMSWideImage - 와이드 이미지 전송

카카오톡 채널을 추가한 사용자 또는 마케팅 정보 수신에 동의한 사용자에게 와이드 이미지형 광고성 메시지를 전송합니다. (최대 1,000건)

- 비채널 친구에게 브랜드 메시지를 전송하기 위해서는 등록된 비즈니스 채널에 대해 브랜드 메시지 채널 신청이 필요합니다.
- 브랜드 메시지 전송 전에 [\[UploadWideImage - 와이드 이미지 업로드\]](https://developers.popbill.com/reference/kakaotalk/java/api/send-bms#UploadWideImage) API로 이미지 업로드가 필요합니다.
- 전송실패시 대체문자를 전송할 수 있고, 이 경우 문자(SMS/LMS) 요금이 과금됩니다.

```java
String sendBMSWideImage(String corpNum, BMS bms, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- bms `type: BMS` `length: -` `required: Y` `description: 브랜드 메시지 정보`
  - plusFriendID `type: String` `length: 30` `required: Y` `description: 검색용 아이디`
  - targeting `type: String` `length: 1` `required: Y` `description: 전송대상`
    - `I`: 채널 친구
    - `N`: 비채널 친구
    - `M`: 전체
  - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
    - 기본값 : false
    - 동보 전송인 경우 입력
  - imageUrl `type: String` `length: 500` `required: 조건부` `description: 이미지 URL`
    - [\[UploadWideImage - 와이드 이미지 업로드\]](#UploadWideImage) API로 응답받은 URL
    - 동보 전송인 경우 필수
  - imageLink `type: String` `length: 500` `required: N` `description: 이미지 링크 URL`
    - 이미지를 클릭하면 연결되는 URL
    - 동보 전송인 경우 입력
  - content `type: String` `length: 76` `required: 조건부` `description: 브랜드 메시지 내용`
    - 줄바꿈 최대 5회
    - 동보 전송인 경우 필수
  - unsubscribeNo `type: String` `length: 13` `required: 조건부` `description: 080 수신거부 번호`
    - {targeting}="N" or "M" 인 경우 필수
  - altYN `type: Boolean` `length: -` `required: N` `description: 대체문자 전송 여부`
    - 기본값 : false
  - sendNum `type: String` `length: 20` `required: 조건부` `description: 발신번호`
    - 대체문자 전송시 필수
    - 팝빌에 등록되지 않은 발신번호를 입력하는 경우 오류 반환
  - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
    - 대체문자 내용이 90byte 초과한 경우에만 적용
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
    - 대체문자 전송 시 필수
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altUnsubscribeNo `type: String` `length: 20` `required: 조건부` `description: 대체문자 080 수신거부 번호`
    - 대체문자 전송 시 필수
  - reserveDT `type: String` `length: 14` `required: N` `description: 전송 예약일시`
    - 형식 : yyyyMMddHHmmss
    - 예약 가능 시간 08:00\~20:50
    - 기본값 : 즉시전송
  - requestNum `type: String` `length: 36` `required: N` `description: 요청번호`
    - 파트너가 접수 단위를 식별하기 위해 할당하는 관리번호
    - 영문 대소문자, 숫자, 특수문자('-', '\_')만 이용 가능
  - btns `type: List<KakaoButton>` `length: 2` `required: N` `description: 버튼 목록`
    - 최대 2개
    - 동보 전송인 경우 입력
    - n `type: String` `length: 8` `required: Y` `description: 버튼명`
    - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
      - `WL`: 웹링크
      - `AL`: 앱링크
      - `MD`: 메시지전달
      - `BK`: 봇키워드
      - `AC`: 채널추가
    - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
      - {t} = "AL" 경우 iOS 앱링크 적용
      - {t} = "WL" 경우 Mobile 웹링크 적용
      - {t} = "WL" or "AL" 경우 필수
    - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
      - {t} = "AL" 경우 Android 앱링크 적용
      - {t} = "WL" 경우 PC 웹링크 적용
      - {t} = "WL" or "AL" 경우 필수
  - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
    - 채널 쿠폰 사용 시 linkAndroid, linkIos 중 1개 필수
    - 외부 쿠폰 사용 시 linkMobile 필수
    - 동보 전송인 경우 입력
    - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
      - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
      - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
      - `배송비 할인 쿠폰`
      - `#{7자 이내} 무료 쿠폰`
      - `#{7자 이내} UP 쿠폰`
    - description `type: String` `length: 18` `required: Y` `description: 쿠폰 설명`
      - 줄바꿈 사용 불가
    - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
    - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
    - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
    - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
  - receivers `type: KakaoReceiver[ ]` `length: 1,000` `required: Y` `description: 수신자 목록`
    - receiverNum `type: String` `length: 20` `required: Y` `description: 수신번호`
    - receiverName `type: String` `length: 70` `required: N` `description: 수신자명`
    - imageUrl `type: String` `length: 500` `required: 조건부` `description: 이미지 URL`
      - [\[UploadWideImage - 와이드 이미지 업로드\]](#UploadWideImage) API로 응답받은 URL
      - 대량 전송인 경우 필수
    - imageLink `type: String` `length: 500` `required: N` `description: 이미지 링크 URL`
      - 이미지를 클릭하면 연결되는 URL
      - 대량 전송인 경우 입력
    - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
      - 기본값 : false
      - 대량 전송인 경우 입력
    - content `type: String` `length: 76` `required: 조건부` `description: 브랜드 메시지 내용`
      - 줄바꿈 최대 5회
      - 대량 전송인 경우 필수
    - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
      - 대량전송 경우 사용
      - 메시지 길이가 90byte 초과한 경우에만 적용
      - 단위 : byte
      - 대량 전송인 경우 입력
    - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
      - 대체문자 전송 시 필수
      - 단위 : byte
      - 대량 전송인 경우 입력
    - interOPRefKey `type: String` `length: 20` `required: N` `description: 파트너 지정키`
      - 카카오톡 대량/동보전송시 파트너가 개별건마다 입력할 수 있는 값
    - btns `type: List<KakaoButton>` `length: 2` `required: N` `description: 버튼 목록`
      - 최대 2개
      - 대량 전송인 경우 입력
      - n `type: String` `length: 8` `required: Y` `description: 버튼명`
      - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
        - `WL`: 웹링크
        - `AL`: 앱링크
        - `MD`: 메시지전달
        - `BK`: 봇키워드
        - `AC`: 채널추가
      - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 iOS 앱링크 적용
        - {t} = "WL" 경우 Mobile 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
      - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 Android 앱링크 적용
        - {t} = "WL" 경우 PC 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
    - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
      - 채널 쿠폰 사용 시 linkAndroid, linkIos 중 1개 필수
      - 외부 쿠폰 사용 시 linkMobile 필수
      - 대량 전송인 경우 입력
      - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
        - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
        - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
        - `배송비 할인 쿠폰`
        - `#{7자 이내} 무료 쿠폰`
        - `#{7자 이내} UP 쿠폰`
      - description `type: String` `length: 18` `required: Y` `description: 쿠폰 설명`
        - 줄바꿈 사용 불가
      - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
      - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
      - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
      - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 요청에 대한 접수번호(receiptNum)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 3-2. UploadWideImage - 와이드 이미지 업로드

브랜드 메시지 와이드 이미지 전송에 사용할 이미지를 업로드합니다.

```java
String uploadWideImage(String corpNum, File file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: File` `length: -` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 2:1이상 1:1이하
  - 권장 사이즈 - 800\*600px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 이미지 URL(imageUrl)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 3-3. UploadWideImageBinary - 와이드 이미지 업로드 (바이너리)

브랜드 메시지 와이드 이미지 전송에 사용할 바이너리 형식의 이미지를 업로드합니다.

```java
String uploadWideImageBinary(String corpNum, KakaoUploadFile file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: KakaoUploadFile` `length: -` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 2:1이상 1:1이하
  - 권장 사이즈 - 800\*600px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
  - fileName `type: String` `length: -` `required: Y` `description: 파일명`
  - fileData `type: InputStream` `length: -` `required: Y` `description: 바이너리 데이터`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 이미지 URL(imageUrl)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 4-1. SendBMSWideList - 리스트 전송

카카오톡 채널을 추가한 사용자 또는 마케팅 정보 수신에 동의한 사용자에게 와이드 리스트형 광고성 메시지를 전송합니다. (최대 1,000건)

- 비채널 친구에게 브랜드 메시지를 전송하기 위해서는 등록된 비즈니스 채널에 대해 브랜드 메시지 채널 신청이 필요합니다.
- 전송실패시 대체문자를 전송할 수 있고, 이 경우 문자(SMS/LMS) 요금이 과금됩니다.

```java
String sendBMSWideList(String corpNum, BMS bms, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- bms `type: BMS` `length: -` `required: Y` `description: 브랜드 메시지 정보`
  - plusFriendID `type: String` `length: 30` `required: Y` `description: 검색용 아이디`
  - targeting `type: String` `length: 1` `required: Y` `description: 전송대상`
    - `I`: 채널 친구
    - `N`: 비채널 친구
    - `M`: 전체
  - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
    - 기본값 : false
    - 동보 전송인 경우 입력
  - header `type: String` `length: 20` `required: 조건부` `description: 제목`
    - 동보 전송인 경우 필수
  - unsubscribeNo `type: String` `length: 13` `required: 조건부` `description: 080 수신거부 번호`
    - {targeting}="N" or "M" 인 경우 필수
  - altYN `type: Boolean` `length: -` `required: N` `description: 대체문자 전송 여부`
    - 기본값 : false
  - sendNum `type: String` `length: 20` `required: 조건부` `description: 발신번호`
    - 대체문자 전송시 필수
    - 팝빌에 등록되지 않은 발신번호를 입력하는 경우 오류 반환
  - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
    - 대체문자 내용이 90byte 초과한 경우에만 적용
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
    - 대체문자 전송 시 필수
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altUnsubscribeNo `type: String` `length: 20` `required: 조건부` `description: 대체문자 080 수신거부 번호`
    - 대체문자 전송 시 필수
  - reserveDT `type: String` `length: 14` `required: N` `description: 전송 예약일시`
    - 형식 : yyyyMMddHHmmss
    - 예약 가능 시간 08:00\~20:50
    - 기본값 : 즉시전송
  - requestNum `type: String` `length: 36` `required: N` `description: 요청번호`
    - 파트너가 접수 단위를 식별하기 위해 할당하는 관리번호
    - 영문 대소문자, 숫자, 특수문자('-', '\_')만 이용 가능
  - item `type: List<KakaoItem>` `length: 5` `required: 조건부` `description: 아이템 목록`
    - 최소 3개, 최대 5개
    - 동보 전송인 경우 필수
    - title `type: String` `length: 30` `required: Y` `description: 타이틀`
      - 메인 아이템은 최대 25자, 서브 아이템은 30자 줄바꿈 최대 1개
    - imageUrl `type: String` `length: 500` `required: Y` `description: 이미지 URL`
      - 메인 아이템인 경우 [\[UploadWideListMainImage - 리스트 메인 이미지 업로드\]](#UploadWideListMainImage) API로 응답받은 URL
      - 서브 아이템인 경우 [\[UploadWideListImage - 리스트 서브 이미지 업로드\]](#UploadWideListImage) API로 응답받은 URL
    - linkMobile `type: String` `length: 1,000` `required: Y` `description: Mobile 웹링크`
    - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
    - linkAndroid `type: String` `length: 1,000` `required: N` `description: Android 앱링크`
    - linkIos `type: String` `length: 1,000` `required: N` `description: iOS 앱링크`
  - btns `type: List<KakaoButton>` `length: 2` `required: N` `description: 버튼 목록`
    - 최대 2개
    - 동보 전송인 경우 입력
    - n `type: String` `length: 8` `required: Y` `description: 버튼명`
    - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
      - `WL`: 웹링크
      - `AL`: 앱링크
      - `MD`: 메시지전달
      - `BK`: 봇키워드
      - `AC`: 채널추가
    - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
      - {t} = "AL" 경우 iOS 앱링크 적용
      - {t} = "WL" 경우 Mobile 웹링크 적용
      - {t} = "WL" or "AL" 경우 필수
    - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
      - {t} = "AL" 경우 Android 앱링크 적용
      - {t} = "WL" 경우 PC 웹링크 적용
      - {t} = "WL" or "AL" 경우 필수
  - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
    - 채널 쿠폰 사용 시 linkAndroid, linkIos 중 1개 필수
    - 외부 쿠폰 사용 시 linkMobile 필수
    - 동보 전송인 경우 입력
    - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
      - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
      - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
      - `배송비 할인 쿠폰`
      - `#{7자 이내} 무료 쿠폰`
      - `#{7자 이내} UP 쿠폰`
    - description `type: String` `length: 18` `required: Y` `description: 쿠폰 설명`
      - 줄바꿈 사용 불가
    - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
    - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
    - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
    - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
  - receivers `type: KakaoReceiver[ ]` `length: 1,000` `required: Y` `description: 수신자 목록`
    - receiverNum `type: String` `length: 20` `required: Y` `description: 수신번호`
    - receiverName `type: String` `length: 70` `required: N` `description: 수신자명`
    - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
      - 기본값 : false
      - 대량 전송인 경우 입력
    - header `type: String` `length: 20` `required: 조건부` `description: 제목`
      - 대량 전송인 경우 필수
    - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
      - 대량전송 경우 사용
      - 메시지 길이가 90byte 초과한 경우에만 적용
      - 단위 : byte
      - 대량 전송인 경우 입력
    - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
      - 대체문자 전송 시 필수
      - 단위 : byte
      - 대량 전송인 경우 입력
    - interOPRefKey `type: String` `length: 20` `required: N` `description: 파트너 지정키`
      - 카카오톡 대량/동보전송시 파트너가 개별건마다 입력할 수 있는 값
    - item `type: List<KakaoItem>` `length: 5` `required: 조건부` `description: 아이템 목록`
      - 최소 3개, 최대 5개
      - 대량 전송인 경우 필수
      - title `type: String` `length: 30` `required: Y` `description: 타이틀`
        - 메인 아이템은 최대 25자, 서브 아이템은 30자 줄바꿈 최대 1개
      - imageUrl `type: String` `length: 500` `required: Y` `description: 이미지 URL`
        - 메인 아이템인 경우 [\[UploadWideListMainImage - 리스트 메인 이미지 업로드\]](#UploadWideListMainImage) API로 응답받은 URL
        - 서브 아이템인 경우 [\[UploadWideListImage - 리스트 서브 이미지 업로드\]](#UploadWideListImage) API로 응답받은 URL
      - linkMobile `type: String` `length: 1,000` `required: Y` `description: Mobile 웹링크`
      - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
      - linkAndroid `type: String` `length: 1,000` `required: N` `description: Android 앱링크`
      - linkIos `type: String` `length: 1,000` `required: N` `description: iOS 앱링크`
    - btns `type: List<KakaoButton>` `length: 2` `required: N` `description: 버튼 목록`
      - 최대 2개
      - 대량 전송인 경우 입력
      - n `type: String` `length: 8` `required: Y` `description: 버튼명`
      - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
        - `WL`: 웹링크
        - `AL`: 앱링크
        - `MD`: 메시지전달
        - `BK`: 봇키워드
        - `AC`: 채널추가
      - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 iOS 앱링크 적용
        - {t} = "WL" 경우 Mobile 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
      - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 Android 앱링크 적용
        - {t} = "WL" 경우 PC 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
    - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
      - 채널 쿠폰 사용 시 linkAndroid, linkIos 중 1개 필수
      - 외부 쿠폰 사용 시 linkMobile 필수
      - 대량 전송인 경우 입력
      - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
        - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
        - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
        - `배송비 할인 쿠폰`
        - `#{7자 이내} 무료 쿠폰`
        - `#{7자 이내} UP 쿠폰`
      - description `type: String` `length: 18` `required: Y` `description: 쿠폰 설명`
        - 줄바꿈 사용 불가
      - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
      - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
      - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
      - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 요청에 대한 접수번호(receiptNum)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 4-2. UploadWideListMainImage - 리스트 메인 이미지 업로드

브랜드 메시지 리스트 전송에 사용할 메인 이미지를 업로드합니다.

```java
String uploadWideListMainImage(String corpNum, File file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: File` `length: -` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 고정비율 2:1
  - 권장 사이즈 800\*400px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 이미지 URL(imageUrl)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 4-3. UploadWideListMainImageBinary - 리스트 메인 이미지 업로드 (바이너리)

브랜드 메시지 리스트 전송에 사용할 바이너리 형식의 메인 이미지를 업로드합니다.

```java
String uploadWideListMainImageBinary(String corpNum, KakaoUploadFile file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: KakaoUploadFile` `length: -` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 고정비율 2:1
  - 권장 사이즈 800\*400px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
  - fileName `type: String` `length: -` `required: Y` `description: 파일명`
  - fileData `type: InputStream` `length: -` `required: Y` `description: 바이너리 데이터`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 이미지 URL(imageUrl)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 4-4. UploadWideListImage - 리스트 서브 이미지 업로드

브랜드 메시지 리스트 전송에 사용할 서브 이미지를 업로드합니다.

```java
ListImageResponse uploadWideListImage(String corpNum, File[] file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: File[ ]` `length: 3` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 1:1 고정비율
  - 권장 사이즈 - 800\*800px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
  - 업로드 요청 최대 파일수 - 3개
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**ListImageResponse**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`
- ImageResult `type: ImageResult[ ]` `length: -` `description: 이미지 업로드 결과`
  - formField `type: String` `length: -` `description: 이미지 인덱스`
    - 이미지 구분을 위한 식별값
  - imageUrl `type: String` `length: -` `description: 이미지 URL`

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 4-5. UploadWideListImageBinary - 리스트 서브 이미지 업로드 (바이너리)

브랜드 메시지 리스트 전송에 사용할 바이너리 형식의 서브 이미지를 업로드합니다.

```java
ListImageResponse uploadWideListImageBinary(String corpNum, KakaoUploadFile[] file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: KakaoUploadFile[ ]` `length: 3` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 1:1 고정비율
  - 권장 사이즈 - 800\*800px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
  - 업로드 요청 최대 파일수 - 3개
  - fileName `type: String` `length: -` `required: Y` `description: 파일명`
  - fileData `type: InputStream` `length: -` `required: Y` `description: 바이너리 데이터`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**ListImageResponse**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`
- ImageResult `type: ImageResult[ ]` `length: -` `description: 이미지 업로드 결과`
  - formField `type: String` `length: -` `description: 이미지 인덱스`
    - 이미지 구분을 위한 식별값
  - imageUrl `type: String` `length: -` `description: 이미지 URL`

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 5-1. SendBMSCarouselFeed - 캐러셀 전송

카카오톡 채널을 추가한 사용자 또는 마케팅 정보 수신에 동의한 사용자에게 캐러셀 피드형 광고성 메시지를 전송합니다. (최대 1,000건)

- 비채널 친구에게 브랜드 메시지를 전송하기 위해서는 등록된 비즈니스 채널에 대해 브랜드 메시지 채널 신청이 필요합니다.
- 전송실패시 대체문자를 전송할 수 있고, 이 경우 문자(SMS/LMS) 요금이 과금됩니다.

```java
String sendBMSCarouselFeed(String corpNum, BMS bms, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- bms `type: BMS` `length: -` `required: Y` `description: 브랜드 메시지 정보`
  - plusFriendID `type: String` `length: 30` `required: Y` `description: 검색용 아이디`
  - targeting `type: String` `length: 1` `required: Y` `description: 전송대상`
    - `I`: 채널 친구
    - `N`: 비채널 친구
    - `M`: 전체
  - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
    - 기본값 : false
    - 동보 전송인 경우 입력
  - unsubscribeNo `type: String` `length: 13` `required: 조건부` `description: 080 수신거부 번호`
    - {targeting}="N" or "M" 인 경우 필수
  - altYN `type: Boolean` `length: -` `required: N` `description: 대체문자 전송 여부`
    - 기본값 : false
  - sendNum `type: String` `length: 20` `required: 조건부` `description: 발신번호`
    - 대체문자 전송시 필수
    - 팝빌에 등록되지 않은 발신번호를 입력하는 경우 오류 반환
  - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
    - 대체문자 내용이 90byte 초과한 경우에만 적용
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
    - 대체문자 전송 시 필수
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altUnsubscribeNo `type: String` `length: 20` `required: 조건부` `description: 대체문자 080 수신거부 번호`
    - 대체문자 전송 시 필수
  - reserveDT `type: String` `length: 14` `required: N` `description: 전송 예약일시`
    - 형식 : yyyyMMddHHmmss
    - 예약 가능 시간 08:00\~20:50
    - 기본값 : 즉시전송
  - requestNum `type: String` `length: 36` `required: N` `description: 요청번호`
    - 파트너가 접수 단위를 식별하기 위해 할당하는 관리번호
    - 영문 대소문자, 숫자, 특수문자('-', '\_')만 이용 가능
  - carousel `type: List<KakaoCarousel>` `length: 6` `required: 조건부` `description: 캐러셀 목록`
    - 최소 2개, 최대 6개
    - 동보 전송인 경우 필수
    - header `type: String` `length: 20` `required: Y` `description: 제목`
    - content `type: String` `length: 180` `required: Y` `description: 내용`
    - imageUrl `type: String` `length: 500` `required: Y` `description: 이미지 URL`
      - [\[UploadCarouselFeedImage - 이미지 업로드\]](#UploadCarouselFeedImage) API로 응답받은 URL
    - imageLink `type: String` `length: 500` `required: N` `description: 이미지 링크 URL`
      - 이미지를 클릭하면 연결되는 URL
    - btns `type: List<KakaoButton>` `length: 2` `required: N` `description: 버튼 목록`
      - 최소 1개, 최대 2개
      - n `type: String` `length: 8` `required: Y` `description: 버튼명`
      - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
        - `WL`: 웹링크
        - `AL`: 앱링크
        - `MD`: 메시지전달
        - `BK`: 봇키워드
        - `AC`: 채널추가
      - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 iOS 앱링크 적용
        - {t} = "WL" 경우 Mobile 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
      - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 Android 앱링크 적용
        - {t} = "WL" 경우 PC 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
    - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
      - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
        - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
        - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
        - `배송비 할인 쿠폰`
        - `#{7자 이내} 무료 쿠폰`
        - `#{7자 이내} UP 쿠폰`
      - description `type: String` `length: 12` `required: Y` `description: 쿠폰 설명`
        - 줄바꿈 사용 불가
      - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
      - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
      - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
      - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
  - tail `type: KakaoCarouselTail` `length: -` `required: N` `description: 캐러셀 더보기`
    - 동보 전송인 경우 입력
    - linkMobile `type: String` `length: 1,000` `required: Y` `description: Mobile 웹링크`
    - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
    - linkAndroid `type: String` `length: 1,000` `required: N` `description: Android 앱링크`
    - linkIos `type: String` `length: 1,000` `required: N` `description: iOS 앱링크`
  - receivers `type: KakaoReceiver[ ]` `length: 1,000` `required: Y` `description: 수신자 목록`
    - receiverNum `type: String` `length: 20` `required: Y` `description: 수신번호`
    - receiverName `type: String` `length: 70` `required: N` `description: 수신자명`
    - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
      - 기본값 : false
      - 대량 전송인 경우 입력
    - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
      - 대량전송 경우 사용
      - 메시지 길이가 90byte 초과한 경우에만 적용
      - 단위 : byte
      - 대량 전송인 경우 입력
    - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
      - 대체문자 전송 시 필수
      - 단위 : byte
      - 대량 전송인 경우 입력
    - interOPRefKey `type: String` `length: 20` `required: N` `description: 파트너 지정키`
      - 카카오톡 대량/동보전송시 파트너가 개별건마다 입력할 수 있는 값
    - carousel `type: List<KakaoCarousel>` `length: 6` `required: 조건부` `description: 캐러셀 목록`
      - 최소 2개, 최대 6개
      - 대량 전송인 경우 필수
      - header `type: String` `length: 20` `required: Y` `description: 제목`
      - content `type: String` `length: 180` `required: Y` `description: 내용`
      - imageUrl `type: String` `length: 500` `required: Y` `description: 이미지 URL`
        - [\[UploadCarouselFeedImage - 이미지 업로드\]](#UploadCarouselFeedImage) API로 응답받은 URL
      - imageLink `type: String` `length: 500` `required: N` `description: 이미지 링크 URL`
        - 이미지를 클릭하면 연결되는 URL
      - btns `type: List<KakaoButton>` `length: 2` `required: N` `description: 버튼 목록`
        - 최소 1개, 최대 2개
        - n `type: String` `length: 8` `required: Y` `description: 버튼명`
        - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
          - `WL`: 웹링크
          - `AL`: 앱링크
          - `MD`: 메시지전달
          - `BK`: 봇키워드
          - `AC`: 채널추가
        - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
          - {t} = "AL" 경우 iOS 앱링크 적용
          - {t} = "WL" 경우 Mobile 웹링크 적용
          - {t} = "WL" or "AL" 경우 필수
        - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
          - {t} = "AL" 경우 Android 앱링크 적용
          - {t} = "WL" 경우 PC 웹링크 적용
          - {t} = "WL" or "AL" 경우 필수
      - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
        - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
          - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
          - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
          - `배송비 할인 쿠폰`
          - `#{7자 이내} 무료 쿠폰`
          - `#{7자 이내} UP 쿠폰`
        - description `type: String` `length: 12` `required: Y` `description: 쿠폰 설명`
          - 줄바꿈 사용 불가
        - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
        - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
        - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
        - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
    - tail `type: KakaoCarouselTail` `length: -` `required: N` `description: 캐러셀 더보기`
      - 대량 전송인 경우 입력
      - linkMobile `type: String` `length: 1,000` `required: Y` `description: Mobile 웹링크`
      - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
      - linkAndroid `type: String` `length: 1,000` `required: N` `description: Android 앱링크`
      - linkIos `type: String` `length: 1,000` `required: N` `description: iOS 앱링크`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 요청에 대한 접수번호(receiptNum)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 5-2. UploadCarouselFeedImage - 캐러셀 이미지 업로드

브랜드 메시지 캐러셀 전송에 사용할 이미지를 업로드합니다.

```java
ListImageResponse uploadCarouselFeedImage(String corpNum, File[ ] file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: File[ ]` `length: 10` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 2:1이상 3:4이하
  - 권장 사이즈 - 800\*600px 또는 800\*400px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
  - 업로드 요청 최대 파일수 - 10개
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**ListImageResponse**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`
- ImageResult `type: ImageResult[ ]` `length: -` `description: 이미지 업로드 결과`
  - formField `type: String` `length: -` `description: 이미지 인덱스`
    - 이미지 구분을 위한 식별값
  - imageUrl `type: String` `length: -` `description: 이미지 URL`

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 5-3. UploadCarouselFeedImageBinary - 캐러셀 이미지 업로드 (바이너리)

브랜드 메시지 캐러셀 전송에 사용할 이미지를 업로드합니다.

```java
ListImageResponse uploadCarouselFeedImageBinary(String corpNum, KakaoUploadFile[] file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: KakaoUploadFile[ ]` `length: 10` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 2:1이상 3:4이하
  - 권장 사이즈 - 800\*600px 또는 800\*400px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
  - 업로드 요청 최대 파일수 - 10개
  - fileName `type: String` `length: -` `required: Y` `description: 파일명`
  - fileData `type: InputStream` `length: -` `required: Y` `description: 바이너리 데이터`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**ListImageResponse**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`
- ImageResult `type: ImageResult[ ]` `length: -` `description: 이미지 업로드 결과`
  - formField `type: String` `length: -` `description: 이미지 인덱스`
    - 이미지 구분을 위한 식별값
  - imageUrl `type: String` `length: -` `description: 이미지 URL`

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 6-1. SendBMSCommerce - 커머스 전송

카카오톡 채널을 추가한 사용자 또는 마케팅 정보 수신에 동의한 사용자에게 커머스형 광고성 메시지를 전송합니다. (최대 1,000건)

- 비채널 친구에게 브랜드 메시지를 전송하기 위해서는 등록된 비즈니스 채널에 대해 브랜드 메시지 채널 신청이 필요합니다.
- 전송실패시 대체문자를 전송할 수 있고, 이 경우 문자(SMS/LMS) 요금이 과금됩니다.

```java
String sendBMSCommerce(String corpNum, BMS bms, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- bms `type: BMS` `length: -` `required: Y` `description: 브랜드 메시지 정보`
  - plusFriendID `type: String` `length: 30` `required: Y` `description: 검색용 아이디`
  - targeting `type: String` `length: 1` `required: Y` `description: 전송대상`
    - `I`: 채널 친구
    - `N`: 비채널 친구
    - `M`: 전체
  - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
    - 기본값 : false
    - 동보 전송인 경우 입력
  - imageUrl `type: String` `length: 500` `required: 조건부` `description: 이미지 URL`
    - [\[UploadCommerceImage - 커머스 이미지 업로드\]](#UploadCommerceImage) API로 응답받은 URL
    - 동보 전송인 경우 필수
  - imageLink `type: String` `length: 500` `required: N` `description: 이미지 링크 URL`
    - 이미지를 클릭하면 연결되는 URL
  - addContent `type: String` `length: 34` `required: N` `description: 부가메시지`
    - 줄바꿈 최대 1회
    - 동보 전송인 경우 입력
  - unsubscribeNo `type: String` `length: 13` `required: 조건부` `description: 080 수신거부 번호`
    - {targeting}="N" or "M" 인 경우 필수
  - altYN `type: Boolean` `length: -` `required: N` `description: 대체문자 전송 여부`
    - 기본값 : false
  - sendNum `type: String` `length: 20` `required: 조건부` `description: 발신번호`
    - 대체문자 전송시 필수
    - 팝빌에 등록되지 않은 발신번호를 입력하는 경우 오류 반환
  - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
    - 대체문자 내용이 90byte 초과한 경우에만 적용
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
    - 대체문자 전송 시 필수
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altUnsubscribeNo `type: String` `length: 20` `required: 조건부` `description: 대체문자 080 수신거부 번호`
    - 대체문자 전송 시 필수
  - reserveDT `type: String` `length: 14` `required: N` `description: 전송 예약일시`
    - 형식 : yyyyMMddHHmmss
    - 예약 가능 시간 08:00\~20:50
    - 기본값 : 즉시전송
  - requestNum `type: String` `length: 36` `required: N` `description: 요청번호`
    - 파트너가 접수 단위를 식별하기 위해 할당하는 관리번호
    - 영문 대소문자, 숫자, 특수문자('-', '\_')만 이용 가능
  - commerce `type: KakaoCommerce` `length: -` `required: 조건부` `description: 커머스 정보`
    - 동보 전송인 경우 필수
    - title `type: String` `length: 30` `required: Y` `description: 상품명`
    - regularPrice `type: Integer` `length: -` `required: Y` `description: 정상가격`
      - 0 \~ 99,999,999
    - discountType `type: String` `length: 1` `required: N` `description: 할인유형`
      - `R`: 할인율
      - `F`: 할인금액
      - 미입력 : 할인없음
    - discount `type: Integer` `length: -` `required: 조건부` `description: 할인율/할인금액`
      - {discountType}="R" 경우 1 \~ 100\
        {discountType}="F" 경우 0 \~ 999,999
    - discountPrice `type: Integer` `length: -` `required: 조건부` `description: 할인가격`
      - 0 \~ 99,999,999
      - 할인 적용 후 최종 가격
      - {discountType} 입력 시 필수
  - btns `type: List<KakaoButton>` `length: 2` `required: 조건부` `description: 버튼 목록`
    - 최소 1개, 최대 2개
    - 동보 전송인 경우 필수
    - n `type: String` `length: 8` `required: Y` `description: 버튼명`
    - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
      - `WL`: 웹링크
      - `AL`: 앱링크
      - `MD`: 메시지전달
      - `BK`: 봇키워드
      - `AC`: 채널추가
    - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
      - {t} = "AL" 경우 iOS 앱링크 적용
      - {t} = "WL" 경우 Mobile 웹링크 적용
      - {t} = "WL" or "AL" 경우 필수
    - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
      - {t} = "AL" 경우 Android 앱링크 적용
      - {t} = "WL" 경우 PC 웹링크 적용
      - {t} = "WL" or "AL" 경우 필수
  - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
    - 채널 쿠폰 사용 시 linkAndroid, linkIos 중 1개 필수
    - 외부 쿠폰 사용 시 linkMobile 필수
    - 동보 전송인 경우 입력
    - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
      - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
      - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
      - `배송비 할인 쿠폰`
      - `#{7자 이내} 무료 쿠폰`
      - `#{7자 이내} UP 쿠폰`
    - description `type: String` `length: 12` `required: Y` `description: 쿠폰 설명`
      - 줄바꿈 사용 불가
    - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
    - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
    - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
    - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
  - receivers `type: KakaoReceiver[ ]` `length: 1,000` `required: Y` `description: 수신자 목록`
    - receiverNum `type: String` `length: 20` `required: Y` `description: 수신번호`
    - receiverName `type: String` `length: 70` `required: N` `description: 수신자명`
    - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
      - 기본값 : false
      - 대량 전송인 경우 입력
    - imageUrl `type: String` `length: 500` `required: 조건부` `description: 이미지 URL`
      - [\[UploadCommerceImage - 커머스 이미지 업로드\]](#UploadCommerceImage) API로 응답받은 URL
      - 대량 전송인 경우 필수
    - imageLink `type: String` `length: 500` `required: N` `description: 이미지 링크 URL`
      - 이미지를 클릭하면 연결되는 URL
      - 대량 전송인 경우 입력
    - addContent `type: String` `length: 34` `required: N` `description: 부가메시지`
      - 줄바꿈 최대 1회
      - 대량 전송인 경우 입력
    - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
      - 대량전송 경우 사용
      - 메시지 길이가 90byte 초과한 경우에만 적용
      - 단위 : byte
      - 대량 전송인 경우 입력
    - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
      - 대체문자 전송 시 필수
      - 단위 : byte
      - 대량 전송인 경우 입력
    - interOPRefKey `type: String` `length: 20` `required: N` `description: 파트너 지정키`
      - 카카오톡 대량/동보전송시 파트너가 개별건마다 입력할 수 있는 값
    - commerce `type: KakaoCommerce` `length: -` `required: 조건부` `description: 커머스 정보`
      - 대량 전송인 경우 필수
      - title `type: String` `length: 30` `required: Y` `description: 상품명`
      - regularPrice `type: Integer` `length: -` `required: Y` `description: 정상가격`
        - 0 \~ 99,999,999
      - discountType `type: String` `length: 1` `required: N` `description: 할인유형`
        - `R`: 할인율
        - `F`: 할인금액
        - 미입력 : 할인없음
      - discount `type: Integer` `length: -` `required: 조건부` `description: 할인율/할인금액`
        - {discountType}="R" 경우 1 \~ 100\
          {discountType}="F" 경우 0 \~ 999,999
      - discountPrice `type: Integer` `length: -` `required: 조건부` `description: 할인가격`
        - 0 \~ 99,999,999
        - 할인 적용 후 최종 가격
        - {discountType} 입력 시 필수
    - btns `type: List<KakaoButton>` `length: 2` `required: 조건부` `description: 버튼 목록`
      - 최소 1개, 최대 2개
      - 대량 전송인 경우 필수
      - n `type: String` `length: 8` `required: Y` `description: 버튼명`
      - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
        - `WL`: 웹링크
        - `AL`: 앱링크
        - `MD`: 메시지전달
        - `BK`: 봇키워드
        - `AC`: 채널추가
      - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 iOS 앱링크 적용
        - {t} = "WL" 경우 Mobile 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
      - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 Android 앱링크 적용
        - {t} = "WL" 경우 PC 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
    - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
      - 채널 쿠폰 사용 시 linkAndroid, linkIos 중 1개 필수
      - 외부 쿠폰 사용 시 linkMobile 필수
      - 대량 전송인 경우 입력
      - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
        - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
        - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
        - `배송비 할인 쿠폰`
        - `#{7자 이내} 무료 쿠폰`
        - `#{7자 이내} UP 쿠폰`
      - description `type: String` `length: 12` `required: Y` `description: 쿠폰 설명`
        - 줄바꿈 사용 불가
      - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
      - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
      - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
      - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 요청에 대한 접수번호(receiptNum)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 6-2. UploadCommerceImage - 커머스 이미지 업로드

브랜드 메시지 커머스 전송에 사용할 이미지를 업로드합니다.

```java
String uploadCommerceImage(String corpNum, File file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: File` `length: -` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 2:1이상 3:4이하
  - 권장 사이즈 - 800\*400px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 이미지 URL(imageUrl)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 6-3. UploadCommerceImageBinary - 커머스 이미지 업로드 (바이너리)

브랜드 메시지 커머스 전송에 사용할 이미지를 업로드합니다.

```java
String uploadCommerceImageBinary(String corpNum, KakaoUploadFile file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: KakaoUploadFile` `length: -` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 2:1이상 3:4이하
  - 권장 사이즈 - 800\*400px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
  - fileName `type: String` `length: -` `required: Y` `description: 파일명`
  - fileData `type: InputStream` `length: -` `required: Y` `description: 바이너리 데이터`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 이미지 URL(imageUrl)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 7-1. SendBMSCarouselCommerce - 캐러셀 커머스 전송

카카오톡 채널을 추가한 사용자 또는 마케팅 정보 수신에 동의한 사용자에게 캐러셀 커머스형 광고성 메시지를 전송합니다. (최대 1,000건)

- 비채널 친구에게 브랜드 메시지를 전송하기 위해서는 등록된 비즈니스 채널에 대해 브랜드 메시지 채널 신청이 필요합니다.
- 전송실패시 대체문자를 전송할 수 있고, 이 경우 문자(SMS/LMS) 요금이 과금됩니다.

```java
String sendBMSCarouselCommerce(String corpNum, BMS bms, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- bms `type: BMS` `length: -` `required: Y` `description: 브랜드 메시지 정보`
  - plusFriendID `type: String` `length: 30` `required: Y` `description: 검색용 아이디`
  - targeting `type: String` `length: 1` `required: Y` `description: 전송대상`
    - `I`: 채널 친구
    - `N`: 비채널 친구
    - `M`: 전체
  - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
    - 기본값 : false
    - 동보 전송인 경우 입력
  - unsubscribeNo `type: String` `length: 13` `required: 조건부` `description: 080 수신거부 번호`
    - {targeting}="N" or "M" 인 경우 필수
  - altYN `type: Boolean` `length: -` `required: N` `description: 대체문자 전송 여부`
    - 기본값 : false
  - sendNum `type: String` `length: 20` `required: 조건부` `description: 발신번호`
    - 대체문자 전송시 필수
    - 팝빌에 등록되지 않은 발신번호를 입력하는 경우 오류 반환
  - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
    - 대체문자 내용이 90byte 초과한 경우에만 적용
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
    - 대체문자 전송 시 필수
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altUnsubscribeNo `type: String` `length: 20` `required: 조건부` `description: 대체문자 080 수신거부 번호`
    - 대체문자 전송 시 필수
  - reserveDT `type: String` `length: 14` `required: N` `description: 전송 예약일시`
    - 형식 : yyyyMMddHHmmss
    - 예약 가능 시간 08:00\~20:50
    - 기본값 : 즉시전송
  - requestNum `type: String` `length: 36` `required: N` `description: 요청번호`
    - 파트너가 접수 단위를 식별하기 위해 할당하는 관리번호
    - 영문 대소문자, 숫자, 특수문자('-', '\_')만 이용 가능
  - head `type: KakaoCarouselHead` `length: -` `required: N` `description: 캐러셀 인트로`
    - 동보 전송인 경우 입력
    - header `type: String` `length: 20` `required: Y` `description: 제목`
    - content `type: String` `length: 50` `required: Y` `description: 내용`
    - imageUrl `type: String` `length: 500` `required: Y` `description: 이미지 URL`
      - [\[UploadCarouselCommerceImage - 캐러셀 커머스 이미지 업로드\]](#UploadCarouselCommerceImage) API로 응답받은 URL
    - linkMobile `type: String` `length: 1,000` `required: N` `description: Mobile 웹링크`
    - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
    - linkAndroid `type: String` `length: 1,000` `required: N` `description: Android 앱링크`
    - linkIos `type: String` `length: 1,000` `required: N` `description: iOS 앱링크`
  - carousel `type: List<KakaoCarousel>` `length: 6` `required: 조건부` `description: 캐러셀 목록`
    - 최소 2개, 최대 6개
    - 동보 전송인 경우 필수
    - imageUrl `type: String` `length: 500` `required: Y` `description: 이미지 URL`
      - [\[UploadCarouselCommerceImage - 캐러셀 커머스 이미지 업로드\]](#UploadCarouselCommerceImage) API로 응답받은 URL
    - imageLink `type: String` `length: 500` `required: N` `description: 이미지 링크 URL`
      - 이미지를 클릭하면 연결되는 URL
    - addContent `type: String` `length: 34` `required: N` `description: 부가메시지`
    - commerce `type: KakaoCommerce` `length: -` `required: Y` `description: 커머스 정보`
      - title `type: String` `length: 30` `required: Y` `description: 상품명`
      - regularPrice `type: Integer` `length: -` `required: Y` `description: 정상가격`
        - 0 \~ 99,999,999
      - discountType `type: String` `length: 1` `required: N` `description: 할인유형`
        - `R`: 할인율
        - `F`: 할인금액
        - 미입력 : 할인없음
      - discount `type: Integer` `length: -` `required: 조건부` `description: 할인율/할인금액`
        - {discountType}="R" 경우 1 \~ 100\
          {discountType}="F" 경우 0 \~ 999,999
      - discountPrice `type: Integer` `length: -` `required: 조건부` `description: 할인가격`
        - 0 \~ 99,999,999
        - 할인 적용 후 최종 가격
        - {discountType} 입력 시 필수
    - btns `type: List<KakaoButton>` `length: 2` `required: N` `description: 버튼 목록`
      - 최소 1개, 최대 2개
      - n `type: String` `length: 8` `required: Y` `description: 버튼명`
      - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
        - `WL`: 웹링크
        - `AL`: 앱링크
        - `MD`: 메시지전달
        - `BK`: 봇키워드
        - `AC`: 채널추가
      - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 iOS 앱링크 적용
        - {t} = "WL" 경우 Mobile 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
      - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
        - {t} = "AL" 경우 Android 앱링크 적용
        - {t} = "WL" 경우 PC 웹링크 적용
        - {t} = "WL" or "AL" 경우 필수
    - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
      - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
        - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
        - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
        - `배송비 할인 쿠폰`
        - `#{7자 이내} 무료 쿠폰`
        - `#{7자 이내} UP 쿠폰`
      - description `type: String` `length: 12` `required: Y` `description: 쿠폰 설명`
        - 줄바꿈 사용 불가
      - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
      - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
      - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
      - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
  - tail `type: KakaoCarouselTail` `length: -` `required: N` `description: 캐러셀 더보기`
    - 동보 전송인 경우 입력
    - linkMobile `type: String` `length: 1,000` `required: Y` `description: Mobile 웹링크`
    - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
    - linkAndroid `type: String` `length: 1,000` `required: N` `description: Android 앱링크`
    - linkIos `type: String` `length: 1,000` `required: N` `description: iOS 앱링크`
  - receivers `type: KakaoReceiver[ ]` `length: 1,000` `required: Y` `description: 수신자 목록`
    - receiverNum `type: String` `length: 20` `required: Y` `description: 수신번호`
    - receiverName `type: String` `length: 70` `required: N` `description: 수신자명`
    - adultYN `type: Boolean` `length: -` `required: N` `description: 성인용 메시지 여부`
      - 기본값 : false
      - 대량 전송인 경우 입력
    - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
      - 대량전송 경우 사용
      - 메시지 길이가 90byte 초과한 경우에만 적용
      - 단위 : byte
      - 대량 전송인 경우 입력
    - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
      - 대체문자 전송 시 필수
      - 단위 : byte
      - 대량 전송인 경우 입력
    - interOPRefKey `type: String` `length: 20` `required: N` `description: 파트너 지정키`
      - 카카오톡 대량/동보전송시 파트너가 개별건마다 입력할 수 있는 값
    - head `type: KakaoCarouselHead` `length: -` `required: N` `description: 캐러셀 인트로`
      - 대량 전송인 경우 입력
      - header `type: String` `length: 20` `required: Y` `description: 제목`
      - content `type: String` `length: 50` `required: Y` `description: 내용`
      - imageUrl `type: String` `length: 500` `required: Y` `description: 이미지 URL`
        - [\[UploadCarouselCommerceImage - 캐러셀 커머스 이미지 업로드\]](#UploadCarouselCommerceImage) API로 응답받은 URL
      - linkMobile `type: String` `length: 1,000` `required: N` `description: Mobile 웹링크`
      - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
      - linkAndroid `type: String` `length: 1,000` `required: N` `description: Android 앱링크`
      - linkIos `type: String` `length: 1,000` `required: N` `description: iOS 앱링크`
    - carousel `type: List<KakaoCarousel>` `length: 6` `required: 조건부` `description: 캐러셀 목록`
      - 최소 2개, 최대 6개
      - 대량 전송인 경우 필수
      - imageUrl `type: String` `length: 500` `required: Y` `description: 이미지 URL`
        - [\[UploadCarouselCommerceImage - 캐러셀 커머스 이미지 업로드\]](#UploadCarouselCommerceImage) API로 응답받은 URL
      - imageLink `type: String` `length: 500` `required: N` `description: 이미지 링크 URL`
        - 이미지를 클릭하면 연결되는 URL
      - addContent `type: String` `length: 34` `required: N` `description: 부가메시지`
      - commerce `type: KakaoCommerce` `length: -` `required: Y` `description: 커머스 정보`
        - title `type: String` `length: 30` `required: Y` `description: 상품명`
        - regularPrice `type: Integer` `length: -` `required: Y` `description: 정상가격`
          - 0 \~ 99,999,999
        - discountType `type: String` `length: 1` `required: N` `description: 할인유형`
          - `R`: 할인율
          - `F`: 할인금액
          - 미입력 : 할인없음
        - discount `type: Integer` `length: -` `required: 조건부` `description: 할인율/할인금액`
          - {discountType}="R" 경우 1 \~ 100\
            {discountType}="F" 경우 0 \~ 999,999
        - discountPrice `type: Integer` `length: -` `required: 조건부` `description: 할인가격`
          - 0 \~ 99,999,999
          - 할인 적용 후 최종 가격
          - {discountType} 입력 시 필수
      - btns `type: List<KakaoButton>` `length: 2` `required: N` `description: 버튼 목록`
        - 최소 1개, 최대 2개
        - n `type: String` `length: 8` `required: Y` `description: 버튼명`
        - t `type: String` `length: 2` `required: Y` `description: 버튼유형`
          - `WL`: 웹링크
          - `AL`: 앱링크
          - `MD`: 메시지전달
          - `BK`: 봇키워드
          - `AC`: 채널추가
        - u1 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
          - {t} = "AL" 경우 iOS 앱링크 적용
          - {t} = "WL" 경우 Mobile 웹링크 적용
          - {t} = "WL" or "AL" 경우 필수
        - u2 `type: String` `length: 1,000` `required: 조건부` `description: 버튼링크`
          - {t} = "AL" 경우 Android 앱링크 적용
          - {t} = "WL" 경우 PC 웹링크 적용
          - {t} = "WL" or "AL" 경우 필수
      - coupon `type: KakaoCoupon` `length: -` `required: N` `description: 쿠폰`
        - title `type: String` `length: 15` `required: Y` `description: 쿠폰 제목`
          - `#{숫자}원 할인 쿠폰`: (숫자 : 1\~99,999,999)
          - `#{숫자}% 할인 쿠폰`: (숫자 : 1\~100)
          - `배송비 할인 쿠폰`
          - `#{7자 이내} 무료 쿠폰`
          - `#{7자 이내} UP 쿠폰`
        - description `type: String` `length: 12` `required: Y` `description: 쿠폰 설명`
          - 줄바꿈 사용 불가
        - linkMobile `type: String` `length: 1,000` `required: 조건부` `description: Mobile 웹링크`
        - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
        - linkAndroid `type: String` `length: 1,000` `required: 조건부` `description: Android 앱링크`
        - linkIos `type: String` `length: 1,000` `required: 조건부` `description: iOS 앱링크`
    - tail `type: KakaoCarouselTail` `length: -` `required: N` `description: 캐러셀 더보기`
      - 대량 전송인 경우 입력
      - linkMobile `type: String` `length: 1,000` `required: Y` `description: Mobile 웹링크`
      - linkPc `type: String` `length: 1,000` `required: N` `description: PC 웹링크`
      - linkAndroid `type: String` `length: 1,000` `required: N` `description: Android 앱링크`
      - linkIos `type: String` `length: 1,000` `required: N` `description: iOS 앱링크`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 요청에 대한 접수번호(receiptNum)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 7-2. UploadCarouselCommerceImage - 캐러셀 커머스 이미지 업로드

브랜드 메시지 캐러셀 커머스 전송에 사용할 이미지를 업로드합니다.

- 캐러셀 커머스 이미지는 모든 업로드 이미지의 비율이 동일해야 합니다.

```java
ListImageResponse uploadCarouselCommerceImage(String corpNum, File[ ] file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: File[ ]` `length: 11` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 2:1이상 3:4이하
  - 권장 사이즈 - 800\*600px 또는 800\*400px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
  - 업로드 요청 최대 파일수 - 11개
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**ListImageResponse**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`
- ImageResult `type: ImageResult[ ]` `length: -` `description: 이미지 업로드 결과`
  - formField `type: String` `length: -` `description: 이미지 인덱스`
    - 이미지 구분을 위한 식별값
  - imageUrl `type: String` `length: -` `description: 이미지 URL`

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 7-3. UploadCarouselCommerceImageBinary - 캐러셀 커머스 이미지 업로드 (바이너리)

브랜드 메시지 캐러셀 커머스 전송에 사용할 이미지를 업로드합니다.

- 캐러셀 커머스 이미지는 모든 업로드 이미지의 비율이 동일해야 합니다.

```java
ListImageResponse uploadCarouselCommerceImageBinary(String corpNum, KakaoUploadFile[] file, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- file `type: KakaoUploadFile[ ]` `length: 11` `required: Y` `description: 이미지 파일`
  - 가로:세로 비율제한 - 2:1이상 3:4이하
  - 권장 사이즈 - 800\*600px 또는 800\*400px(가로 500px 이상)
  - 파일형식 및 크기 - jpg, png / 최대 5MB
  - 업로드 요청 최대 파일수 - 11개
  - fileName `type: String` `length: -` `required: Y` `description: 파일명`
  - fileData `type: InputStream` `length: -` `required: Y` `description: 바이너리 데이터`
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**ListImageResponse**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`
- ImageResult `type: ImageResult[ ]` `length: -` `description: 이미지 업로드 결과`
  - formField `type: String` `length: -` `description: 이미지 인덱스`
    - 이미지 구분을 위한 식별값
  - imageUrl `type: String` `length: -` `description: 이미지 URL`

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 8. SendBMSVariable - 템플릿형 전송

카카오톡 채널을 추가한 사용자 또는 마케팅 정보 수신에 동의한 사용자에게 템플릿형 광고성 메시지를 전송합니다. (최대 1,000건)

- 비채널 친구에게 브랜드 메시지를 전송하기 위해서는 등록된 비즈니스 채널에 대해 브랜드 메시지 채널 신청이 필요합니다.
- 전송실패시 대체문자를 전송할 수 있고, 이 경우 문자(SMS/LMS) 요금이 과금됩니다.

```java
String sendBMSVariable(String corpNum, BMS bms, String userID) throws PopbillException
```

### 요청

**Parameters**

- corpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- bms `type: BMS` `length: -` `required: Y` `description: 브랜드 메시지 정보`
  - templateCode `type: String` `length: 12` `required: Y` `description: 템플릿 코드`
  - targeting `type: String` `length: 1` `required: Y` `description: 전송대상`
    - `I`: 채널 친구
    - `N`: 비채널 친구
    - `M`: 전체
  - unsubscribeNo `type: String` `length: 13` `required: 조건부` `description: 080 수신거부 번호`
    - {targeting}="N" or "M" 인 경우 필수
  - altYN `type: Boolean` `length: -` `required: N` `description: 대체문자 전송 여부`
    - 기본값 : false
  - sendNum `type: String` `length: 20` `required: 조건부` `description: 발신번호`
    - 대체문자 전송시 필수
    - 팝빌에 등록되지 않은 발신번호를 입력하는 경우 오류 반환
  - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
    - 대체문자 내용이 90byte 초과한 경우에만 적용
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
    - 대체문자 전송 시 필수
    - 단위 : byte
    - 동보 전송인 경우 입력
  - altUnsubscribeNo `type: String` `length: 20` `required: 조건부` `description: 대체문자 080 수신거부 번호`
    - 대체문자 전송 시 필수
  - reserveDT `type: String` `length: 14` `required: N` `description: 전송 예약일시`
    - 형식 : yyyyMMddHHmmss
    - 예약 가능 시간 08:00\~20:50
    - 기본값 : 즉시전송
  - requestNum `type: String` `length: 36` `required: N` `description: 요청번호`
    - 파트너가 접수 단위를 식별하기 위해 할당하는 관리번호
    - 영문 대소문자, 숫자, 특수문자('-', '\_')만 이용 가능
  - contentVariable `type: HashMap<String, String>` `length: -` `required: 조건부` `description: 브랜드 메시지 내용 변수`
    - 내용, 헤더, 아이템 제목, 아이템 이미지 링크, 부가메시지에 변수 사용한 경우 필수
    - 동보 전송인 경우 필수
  - buttonVariable `type: HashMap<String, String>` `length: -` `required: 조건부` `description: 브랜드 메시지 버튼 변수`
    - 버튼 링크에 변수 사용한 경우 필수
    - 동보 전송인 경우 필수
  - couponVariable `type: HashMap<String, String>` `length: -` `required: 조건부` `description: 브랜드 메시지 쿠폰 변수`
    - 쿠폰 설명, 링크에 변수 사용한 경우 필수
    - 동보 전송인 경우 필수
  - commerceVariable `type: HashMap<String, String>` `length: -` `required: 조건부` `description: 브랜드 메시지 커머스 변수`
    - 상품명, 정상가격, 할인가격, 할인율, 할인금액에 변수 사용한 경우 필수
    - 동보 전송인 경우 필수
  - carouselVariable `type: List<KakaoCarouselVariable>` `length: -` `required: 조건부` `description: 브랜드 메시지 캐러셀 변수`
    - 캐러셀에 변수 사용한 경우 필수
    - 동보 전송인 경우 필수
    - contentVariable `type: HashMap<String, String>` `length: -` `required: 조건부` `description: 브랜드 메시지 캐러셀 내용 변수`
      - 캐러셀 제목, 캐러셀 내용, 캐러셀 이미지 링크, 캐러셀 부가메시지에 변수 사용한 경우 필수
    - buttonVariable `type: HashMap<String, String>` `length: -` `required: 조건부` `description: 브랜드 메시지 캐러셀 버튼 변수`
      - 버튼 링크에 변수 사용한 경우 필수
    - couponVariable `type: HashMap<String, String>` `length: -` `required: 조건부` `description: 브랜드 메시지 캐러셀 쿠폰 변수`
      - 쿠폰 설명, 링크에 변수 사용한 경우 필수
    - commerceVariable `type: HashMap<String, String>` `length: -` `required: 조건부` `description: 브랜드 메시지 캐러셀 커머스 변수`
      - 상품명, 정상가격, 할인가격, 할인율, 할인금액에 변수 사용한 경우 필수
  - receivers `type: KakaoReceiver[ ]` `length: 1,000` `required: Y` `description: 수신자 목록`
    - receiveNum `type: String` `length: 20` `required: Y` `description: 수신번호`
    - receiverName `type: String` `length: 70` `required: N` `description: 수신자명`
    - altSubject `type: String` `length: 64` `required: N` `description: 대체문자 제목`
      - 대량전송 경우 사용
      - 메시지 길이가 90byte 초과한 경우에만 적용
      - 단위 : byte
      - 대량 전송인 경우 입력
    - altContent `type: String` `length: 2,000` `required: 조건부` `description: 대체문자 내용`
      - 대체문자 전송 시 필수
      - 단위 : byte
      - 대량 전송인 경우 입력
    - interOPRefKey `type: String` `length: 20` `required: N` `description: 파트너 지정키`
      - 카카오톡 대량/동보전송시 파트너가 개별건마다 입력할 수 있는 값
    - contentVariable `type: HashMap<String, String>` `length: -` `required: N` `description: 브랜드 메시지 내용 변수`
      - 내용, 헤더, 아이템 제목, 아이템 이미지 링크, 부가메시지에 변수 사용한 경우 필수
      - 대량 전송인 경우 필수
    - buttonVariable `type: HashMap<String, String>` `length: -` `required: N` `description: 브랜드 메시지 버튼 변수`
      - 버튼 링크에 변수 사용한 경우 필수
      - 대량 전송인 경우 필수
    - couponVariable `type: HashMap<String, String>` `length: -` `required: N` `description: 브랜드 메시지 쿠폰 변수`
      - 쿠폰 설명, 링크에 변수 사용한 경우 필수
      - 대량 전송인 경우 필수
    - commerceVariable `type: HashMap<String, String>` `length: -` `required: N` `description: 브랜드 메시지 커머스 변수`
      - 상품명, 정상가격, 할인가격, 할인율, 할인금액에 변수 사용한 경우 필수
      - 대량 전송인 경우 필수
    - carouselVariable `type: List<KakaoCarouselVariable>` `length: -` `required: N` `description: 브랜드 메시지 캐러셀 변수`
      - 캐러셀에 변수 사용한 경우 필수
      - 대량 전송인 경우 필수
      - contentVariable `type: HashMap<String, String>` `length: -` `required: 조건부` `description: 브랜드 메시지 캐러셀 내용 변수`
        - 캐러셀 제목, 캐러셀 내용, 캐러셀 이미지 링크, 캐러셀 부가메시지에 변수 사용한 경우 필수
      - buttonVariable `type: HashMap<String, String>` `length: -` `required: 조건부` `description: 브랜드 메시지 캐러셀 버튼 변수`
        - 버튼 링크에 변수 사용한 경우 필수
      - couponVariable `type: HashMap<String, String>` `length: -` `required: 조건부` `description: 브랜드 메시지 캐러셀 쿠폰 변수`
        - 쿠폰 설명, 링크에 변수 사용한 경우 필수
      - commerceVariable `type: HashMap<String, String>` `length: -` `required: 조건부` `description: 브랜드 메시지 캐러셀 커머스 변수`
        - 상품명, 정상가격, 할인가격, 할인율, 할인금액에 변수 사용한 경우 필수
- userID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

String - 요청에 대한 접수번호(receiptNum)

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 9. CancelReserve - 예약전송 취소 (접수번호)

팝빌에서 반환받은 접수번호로 예약된 카카오톡을 전송 취소합니다. (예약시간 10분 전까지 가능)

```java
Response cancelReserve(String CorpNum, String ReceiptNum, String UserID) throws PopbillException
```

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- ReceiptNum `type: String` `length: 18` `required: Y` `description: 팝빌에서 할당한 접수번호`
  - 카카오톡 예약전송 요청의 반환값
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**Response**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 10. CancelReservebyRCV - 예약전송 부분 취소 (접수번호)

팝빌에서 반환받은 접수번호로 접수 건을 식별하여 수신번호에 예약된 카카오톡을 전송 취소합니다. (예약시간 10분 전까지 가능)

```java
Response cancelReservebyRCV(String CorpNum, String ReceiptNum, String ReceiveNum, String UserID) throws PopbillException
```

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- ReceiptNum `type: String` `length: 18` `required: Y` `description: 팝빌에서 할당한 접수번호`
  - 카카오톡 예약전송 요청의 반환값
- ReceiveNum `type: String` `length: 20` `required: Y` `description: 예약전송 수신번호`
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**Response**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 11. CancelReserveRN - 예약전송 전체 취소 (요청번호)

파트너가 할당한 요청번호로 예약된 카카오톡을 전송 취소합니다. (예약시간 10분 전까지 가능)

```java
Response cancelReserveRN(String CorpNum, String RequestNum, String UserID) throws PopbillException
```

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- RequestNum `type: String` `length: 36` `required: Y` `description: 파트너가 할당한 요청번호`
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**Response**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`

## 12. CancelReserveRNbyRCV - 예약전송 부분 취소 (요청번호)

파트너가 할당한 요청번호로 접수 건을 식별하여 수신번호에 예약된 카카오톡을 전송 취소합니다. (예약시간 10분 전까지 가능)

```java
Response cancelReserveRNbyRCV(String CorpNum, String RequestNum, String ReceiveNum, String UserID) throws PopbillException
```

### 요청

**Parameters**

- CorpNum `type: String` `length: 10` `required: Y` `description: 팝빌회원 사업자번호 ('-' 제외)`
- RequestNum `type: String` `length: 36` `required: Y` `description: 파트너가 할당한 요청번호`
- ReceiveNum `type: String` `length: 20` `required: Y` `description: 예약전송 수신번호`
- UserID `type: String` `length: 50` `required: N` `description: 팝빌회원 아이디`

### 응답

**Response**

- code `type: long` `length: -` `description: API 처리에 대한 응답코드`
  - `1`: 성공
- message `type: String` `length: -` `description: API 처리에 대한 응답메시지`

### 예외

**PopbillException**

- code `type: long` `length: -` `description: API 처리 실패에 대한 오류코드`
  - 음의 정수 8자리 숫자값 [\[참고\] 오류코드](https://developers.popbill.com/error-code)
- message `type: String` `length: -` `description: API 처리 실패에 대한 오류메시지`
