history
| Version | Date | Description |
|---|---|---|
| 1.6.7 | 2021-04-20 | 결제연동 API 수정, 상품 연동 API 수정 |
| 1.6.7 | 2021-04-20 | 방송 조회, 해시태그 및 previewURL 추가 |
| 1.6.8 | 2021-04-29 | 특정 방송 조회 API 추가 |
| 1.6.9 | 2021-05-13 | 방송 조회 조건 추가 |
| 1.7.0 | 2022-06-09 | 현행화 |
| 1.7.1 | 2023-04-24 | 방송 조회, 큐레이션 연동 API의 returnLimit 설명 추가, 외부상품 연동 API의 지원 중단 |
소개
sauceFlex 연동에 필요한 API 가이드 문서.
sauceFlex 에서 사용되는 날짜 형식은 ISO 8601 형식을 따르며 저장되는 모든 날짜 기준은 London 시로 변경되어 사용 되어야 한다.
서버 정보
API 서버
| Type | URL | Description |
|---|---|---|
| stage | https://stage.api.sauceFlex.com/V1 | sauceFlex 스테이징 서버 |
| prod | https://api.sauceFlex.com/V1 | sauceFlex 운영 서버 |
space 서버
| Type | URL | Description |
|---|---|---|
| stage | https://stage.space.sauceFlex.com | sauceFlex 스테이징 서버 |
| prod | https://space.sauceFlex.com | sauceFlex 운영 서버 |
API 인증방식
apiKey 방식을 사용하며 인증 API 를 통해 발급 받은 accessToken 값을 Header에 넣어 사용한다.
API중 인증이 필요한 API가 있으며 해당 API의 경우 accessToken를 발급 받아 요청 헤더에
X-SauceFlex-Authorize에 추가하여 요청해야 API 사용이 가능하다.
authorize
accessToken 발급
# {server} 서버 endpoint
# {partnerId} 발급 받은 파트너 아이디
# {userId} 파트너 관리자 아이디
# {password} 패스워드
# {lifeTime} 인증 연장 시간 (단위: 일)
curl -X GET "${server}/authorize?partnerId=${partnerId}&id=${userId}&password=${password}&lifeTime=${lifeTime}" \
-H "accept: application/json"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616292396849,
"message": "성공하였습니다.",
"response": {
"accessToken": "ZXlKaGJHY2lPaUpJVXpJMU5pSXNJbl...",
"refreshToken": "ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ...",
"accessIat": 1616292396,
"accessExp": 1616378796,
"refreshIat": 1616292396,
"refreshExp": 1616897196,
"partnerId": "mobidoo",
"partnerName": "모비두",
"userId": "ad6511d376c6444...",
"locale": "ko",
"userName": "모비두슈퍼관리자1",
"roleCode": "sa",
"userNickName": "모비두슈퍼관리자1닉네임"
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
accessToken을 발급 받는다.
HTTP Request
GET /V1/authorize
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| partnerId | string | true | None | 발급받은 파트너 아이디 |
| id | string | true | None | 로그인 아이디 |
| password | string | true | None | 로그인 비밀번호 |
| lifeTime | number | false | None | 인증 만료시간을 기본 24간 + lifeTime 시간만큼 늘린다 (기준값 Day) |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| accessToken | string | true | None | accessToken |
| refreshToken | string | true | None | refreshToken |
| accessIat | number | true | None | accessToken의 생성일시 (1970-01-01 00:00:00 UTC 부터 경과 시간(초)) |
| accessExp | number | true | None | accessToken의 만료일시 |
| refreshIat | number | true | None | refreshToken의 생성일시 |
| refreshExp | number | true | None | refreshToken의 만료일시 |
| locale | string | true | None | 언어(ko, en) |
| partnerId | string | true | None | 파트너 아이디 |
| partnerName | string | true | None | 파트너명 |
| userId | string | true | None | 관리자 아이디 |
| userName | string | true | None | 관리자 이름 |
| userNickName | string | true | None | 관리자 닉네임 |
| roleCode | string | true | None | 역할 코드 |
refreshToken 갱신
# {server} 서버 endpoint
# {refreshToken} 발급 받은 refreshToken
curl -X POST "${server}/token" -H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"refreshToken\":${refreshToken}}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616295242451,
"message": "성공하였습니다.",
"response": {
"accessExp": 1616381642,
"partnerId": "mobidoo",
"locale": "ko",
"userName": "모비두슈퍼관리자1",
"accessIat": 1616295242,
"partnerName": "모비두",
"refreshExp": 1616900042,
"userId": "ad6511d376c644439...",
"refreshIat": 1616295242,
"refreshToken": "ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJ...",
"roleCode": "sa",
"accessToken": "ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJ....",
"userNickName": "모비두슈퍼관리자1닉네임"
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1007",
"timestamp": 1616295499974,
"message": "유효하지 않은 토큰입니다."
}
발급된 refreshToken을 사용하여 accessToken, refreshToken을 갱신한다.
HTTP Request
POST /V1/token
Request Body Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| refreshToken | string | true | None | 발급된 refreshToken |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| accessToken | string | true | None | accessToken |
| refreshToken | string | true | None | refreshToken |
| accessIat | number | true | None | accessToken의 생성일시 (1970-01-01 00:00:00 UTC 부터 경과 시간(초)) |
| accessExp | number | true | None | accessToken의 만료일시 |
| refreshIat | number | true | None | refreshToken의 생성일시 |
| refreshExp | number | true | None | refreshToken의 만료일시 |
| locale | string | true | None | 언어(ko, en) |
| partnerId | string | true | None | 파트너 아이디 |
| partnerName | string | true | None | 파트너명 |
| userId | string | true | None | 관리자 아이디 |
| userName | string | true | None | 관리자 이름 |
| userNickName | string | true | None | 관리자 닉네임 |
| roleCode | string | true | None | 역할 코드 |
accessToken 삭제
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
curl -X DELETE "${server}/token/${accessToken}" -H "accept: application/json"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616296485477,
"message": "성공하였습니다."
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1007 or FA1008",
"message": "유효하지 않은 토큰입니다. or 만료된 토큰입니다."
}
발급된 accessToken를 사용하지 않을시 삭제 처리 한다.
HTTP Request
DELETE /token/{accessToken}
URL Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| accessToken | string | true | None | 발급된 accessToken |
회원 연동
JWT Token 생성
# JWT Header
{
"typ": "JWT",
"alg": "RS256"
}
# JWT Payload
{
"partnerId": "mobidoo", // 파트너사 ID,
"memberId": "userId", // 파트너사 회원의 고유 ID
"nickName": "모비두", // 채팅시 사용할 Nick Name
"age": "20", // 통계데이터 수집용 연령대
"gender": "e", // 통계데이터 수집용 성별
"memberType": "0", // 시청자 타입
}
# JWT Signature
RSASHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
(private Key)
)
private Key 는 id_rsa_priv.pem 파일의 내용으로 서명 한다 회원 연동을 위한 토큰 생성
sauceFlex에서 채팅 또는 통계데이터 수집을 위한 토큰을 생성하여 sauceFlex Player에 queryString으로 전달 하여 회원 로그인 및 채팅 서비스를 이용할 수 있다.
sauceFlex의 토큰은 JWT 토큰을 사용하며 파트너사 가입시 전달하는 "RSA Private Key" 를 사용하여 서명(signature) 하여 전달한다.
해당 토큰이 만료 되면 sauceFlex Player에서 채팅을 할수 없으며 파트너사 로그인 연동 페이지로 redirect 하며 이때 새로운 JWT 토큰을 생성하여 전달하면 된다.
만들어진 토큰은 base64 로 인코딩 후 전달한다.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| partnerId | string | true | None | 발급 받은 파트너사 아이디 |
| memberId | string | true | None | 파트너사 회원의 고유 아이디 |
| nickName | string | false | None | 채팅시 표시되는 닉네임 (주의 : 닉네임은 그대로 노출되기 때문에 실명등을 사용시에는 마스킹 처리 필요) |
| age | string | false | etc | 통계데이터 수집용 연령대 (10대 : 10,20대 : 20,30대 : 30,40대:40,50대: 50,60대: 60,기타: etc) |
| gender | string | false | e | 통계데이터 수집용 성별 (남성 : m, 여성 : w, 기타 : e) |
| memberType | string | false | 0 | 시청자 타입 (회원 : 1, 비회원 : 0) |
샘플 JWT 생성 API
JWT 샘플 생성 API는 초기 연동 작업시 확인 및 테스트를 위해서만 사용되어야 한다.
# {server} 서버 endpoint
curl -X POST "${server}/internal/token" -H "accept: */*" -H "Content-Type: application/json" -d "{\"partnerId\":\"mobidoo\",\"memberId\":\"test\",\"nickName\":\"test1\",\"age\":\"10\",\"gender\":\"m\",\"memberType\":\"1\"}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616302220362,
"message": "성공하였습니다.",
"response": {
"accessToken": "ZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SndZWEowYm1WeVNXUWlPaUp0YjJKcFpHOXZJaXdpYldWdFltVnlTV1FpT2lKMFpYTjBJaXdpYm1samEwNWhiV1VpT2lKMFpYTjBNU0lzSW1GblpTSTZJakV3SWl3aVoyVnVaR1Z5SWpvaWJTSXNJbTFsYldKbGNsUjVjR1VpT2lJeElpd2lhV0YwSWpveE5qRTJNekF5TWpJd0xDSmxlSEFpT2pFMk1UWXpNRGswTWpCOS5Ic3NidnBEQXIyT0dPN2RKbzRjdU1MRmNJa3ZCSVQwMFJHSUZlZ2M3OFI0NXRJN24yVkZ4RFhlSE02dzJmRXJXa1ctWW4wTzJ1eS1mUnduLW9Yc0EzenEzYlJjMUVaajdWYlpqOVZIV0tzckV1TTlhMUY4b0xORjB4NDROSWlKaEFmZUR6akJpc25zNlNFZ3lYTmZaTDZYYjl3elJpZXN1Vm9qTGl4WXpEVHM=",
"partnerId": "mobidoo",
"memberId": "test",
"nickName": "test1",
"age": "10",
"gender": "m",
"memberType": "0"
}
}
JWT 유효성 검증
생성된 JWT 토큰이 sauceFlex에서 유효한지 확인 하는 API 이며 이는 초기 생성시 테스트 용도로 사용한다.
# {server} 서버 endpoint
# {accessToken} 생성된 accessToken
# {tokenType} 토큰 타입 0 : 사용자 , 1 : 관리자
curl -X GET "${server}/internal/token/validation?accessToken=${accessToken}&tokenType=${tokenType}" -H "accept: */*"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616303048080,
"message": "성공하였습니다.",
"response": {
"accessToken": "ZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SndZWEowYm1WeVNXUWlPaUp0YjJKcFpHOXZJaXdpYldWdFltVnlTV1FpT2lKMFpYTjBJaXdpYm1samEwNWhiV1VpT2lKMFpYTjBNU0lzSW1GblpTSTZJakV3SWl3aVoyVnVaR1Z5SWpvaWJTSXNJbTFsYldKbGNsUjVjR1VpT2lJeElpd2lhV0YwSWpveE5qRTJNekF5TWpJd0xDSmxlSEFpT2pFMk1UWXpNRGswTWpCOS5Ic3NidnBEQXIyT0dPN2RKbzRjdU1MRmNJa3ZCSVQwMFJHSUZlZ2M3OFI0NXRJN24yVkZ4RFhlSE02dzJmRXJXa1ctWW4wTzJ1eS1mUnduLW9Yc0EzenEzYlJjMUVaajdWYlpqOVZIV0tzckV1TTlhMUY4b0xORjB4NDROSWlKaEFmZUR6akJpc25zNlNFZ3lYTmZaTDZYYjl3elJpZXN1Vm9qTGl4WXpEVHM=",
"partnerId": "mobidoo",
"memberId": "test",
"nickName": "test1",
"age": "10",
"gender": "m",
"memberType": "0"
}
}
HTTP Request
GET /internal/token/validation?accessToken={accessToken}&tokenType={tokenType}
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| accessToken | string | true | 토큰 |
| tokenType | string | true | 토큰 종류 (0 - 사용자, 1 - 관리자) |
결제 연동
결제 연동을 위한 API , 플레이어에서 상품 클릭시 orderCallBackId queryString 으로 결제 연동 트래킹을 위한 UUID 를 발급하여 전달한다.
해당 orderCallBackId 를 실제 결제가 이뤄지면 아래 API 를 통하여 전송한다.
결제 연동은 sauceFlex Player또는 편성표에서 상품을 클릭하여 파트너사 쇼핑몰에서 상품이 실제 구매가 이뤄지면 해당 구매 이력을 sauceFlex에 전달하여 구매 결제 트래킹 정보를 남기는 API 이다.
결제 이력 등록은 orderCallBackId 를 sauceFlex Player에서 상품 클릭시 파트너사 상품 URL의 queryString 으로 전달한다 이때 Key Name이
orderCallBackId 를 생성하여 전달하며 해당 값은 sauceFlex에서 유니크한 ID값으로 할당된다.
orderCallBackId 를 기반으로 파트너사의 주문 고유 번호인 orderId 를 사용하여 결제 트래킹 정보를 구성하며 하단의 파라메터 정보를 참고하여 API를 호출하면 된다.
결제 트래킹 복수 등록
결제 등록을 복수개 등록 한다. 여러건의 결제 연동 건수를 한번에 등록하는 API.
# {server} 서버 endpoint
curl -X POST "${server}/front/product/payments" -H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"payments\":[{\"orderCallBackId\":${orderCallBackId},\"orderId\":${orderId},\"payClickTime\":${payClickTime},\"productQuantity\":${productQuantity},\"amount\":${amount},\"memberId\":${memberId}}]}"
Response Code 200:
{
"code": "SU0000",
"message": "성공하였습니다.",
"response": {
"success": [
{
"orderCallBackId": "string"
}
],
"fail": [
{
"messageCode": "string",
"orderCallBackId": "string"
}
]
}
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
HTTP Request
POST /front/product/payments
Request Body Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| payments | array | true | None | 결제 정보 Array Object |
payments Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| orderCallBackId | string | true | None | 발급 받은 orderCallBackId |
| orderId | string | true | None | 파트너사 고유 주문 번호 |
| payClickTime | string | true | None | 실제 결제 일시 (2021-01-01T01:00:00.000Z) ISO 8601 |
| productQuantity | string | true | None | 결제 상품 수량 |
| amount | string | true | 0 | 결제 금액 |
| memberId | string | true | None | 파트너사 회원의 고유 ID (accessToken시 사용한 memberId) |
결제 트래킹 등록
결제 등록을 등록 한다.
# {server} 서버 endpoint
# {orderCallBackId} 할당된 id
# {orderId} 파트너사 주문 고유 id
# {payClickTime} 실제 주문한 시간
# {productQuantity} 수량
# {amount} 가격
# {memberId} 주문자 id
curl -X GET "${server}/front/product/payment?orderCallBackId=${orderCallBackId}&orderId=${orderId}&payClickTime=${payClickTime}&productQuantity=${productQuantity}&amount=${amount}&memberId=${memberId}" -H "accept: application/json"
Response Code 200:
{
"code": "SU0000",
"message": "성공하였습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
Request
GET /front/product/payment
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| orderCallBackId | string | true | None | 발급 받은 orderCallBackId |
| orderId | string | true | None | 파트너사 고유 주문 번호 |
| payClickTime | string | true | None | 실제 결제 일시 (2021-01-01T01:00:00.000Z) ISO 8601 |
| productQuantity | string | true | None | 결제 상품 수량 |
| amount | string | true | 0 | 결제 금액 |
| memberId | string | true | None | 파트너사 회원의 고유 ID (accessToken시 사용한 memberId) |
결제 트래킹 수정
이미 등록된 결제 이력 정보를 수정한다.
orderCallBackId, orderId, findProductQuantity, findAmount 기준으로 수정 되며 상품 수량, 결제 금액에 대해 수정이 가능하다.
# {server} 서버 endpoint
# {orderCallBackId} 할당된 id
# {orderId} 파트너사 주문 고유 id
# {findProductQuantity} 수정 대상 상품 수량
# {findAmount} 수정 대상 결제 금액
# {updateProductQuantity} 수정 상품 수량
# {updateAmount} 수정 결제 금액
curl -X PATCH "${server}/front/product/payment" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"orderCallBackId\":\"${orderCallBackId}\",\"orderId\":\"${orderId}\",\"findProductQuantity\":\"${findProductQuantity}\",\"findAmount\":\"${findAmount}\",\"updateProductQuantity\":\"${updateProductQuantity}\",\"updateAmount\":\"${updateAmount}\"}"
Response Code 200:
{
"code": "SU0000",
"message": "성공하였습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
HTTP Request
PATCH /front/product/payment
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| orderCallBackId | string | true | None | 발급 받은 orderCallBackId |
| orderId | string | true | None | 파트너사 고유 주문 번호 |
| findProductQuantity | string | true | None | 수정 대상 상품 수량 |
| findAmount | string | true | None | 수정 대상 결제 금액 |
| updateProductQuantity | string | true | None | 수정 상품 수량 |
| updateAmount | string | true | None | 수정 결제 금액 |
결제 트래킹 삭제
이미 등록된 결제 이력 정보를 삭제 한다
결제 트래킹 취소는 결제 트래킹 등록 이후 해당 상품 구매이력을 취소시 적용하여 sauceFlex 에서 결제 트래킹 정보를 삭제 한다.
orderCallBackId 기준으로 삭제 되며 등록시 사용한 orderId 및 payCancelTime 값을 필수로 넣어주어야 한다.
# {server} 서버 endpoint
# {orderCallBackId} 할당된 id
# {orderId} 파트너사 주문 고유 id
# {payCancelTime} 실제 주문취소 시간
curl -X DELETE "${server}/front/product/payment?orderCallBackId=${orderCallBackId}&orderId=${orderId}&payCancelTime=${payCancelTime}" -H "accept: application/json"
Response Code 200:
{
"code": "SU0000",
"message": "성공하였습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
HTTP Request
DELETE /front/product/payment
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| orderCallBackId | string | true | None | 발급 받은 orderCallBackId |
| orderId | string | true | None | 파트너사 고유 주문 번호 |
| payCancelTime | string | true | None | 실제 결제 취소 일시 (2021-01-01T01:00:00.000Z) ISO 8601 |
쿠폰 연동
파트너사의 쿠폰 API를 연동 하여 소스플렉스 플레이어에서 쿠폰 노출 및 회원 쿠폰 발급을 지원한다.
쿠폰 조회
쿠폰을 소스플렉스 플레이어 화면에 노출 한다.
파트너사의 쿠폰 리스트 API를 소스플렉스 플레이어 진입시 요청하여 파트너사의 쿠폰을 조회한다.
이때 accessToken 정보를 전달 할경우 해당 _accessToken의 소유 쿠폰의 경우 발급 유무를 같이 전달해야 한다.
HTTP Request
GET 파트너사의 쿠폰 API EndPoint를 제공받는다
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| accessToken | string | false | None | 해당 유저가 발급 받을수 있는 쿠폰 리스트 조회, 미 전달시 전체 쿠폰 리스트 조회 |
| broadcastId | string | false | None | 해당 방송에서 발급 받을수 있는 쿠폰 리스트 조회 |
POST 파트너사 상품코드로 제공하는 쿠폰 API EndPoint
Request Body Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| accessToken | string | false | None | 해당 유저가 발급 받을수 있는 쿠폰 리스트 조회, 미 전달시 전체 쿠폰 리스트 조회 |
| externalProductIds | array | false | None | 상품등록시 기입한 파트너사 고유 상품코드 |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| maxIssueCount | number | true | None | 쿠폰 최대 발급 개수 (0이면 발급완료) |
| couponId | string | true | None | 쿠폰의 고유 아이디 |
| couponName | string | true | None | 쿠폰의 이름 |
| partnerId | string | true | None | 발급받은 파트너 id |
| limitMaxPrice | number | true | None | 최대 할인 가능한 금액 |
| dcType | string | true | None | 쿠폰 할인 타입 (할인율=Rate, 할인 금액=Fixed) |
| dcPrice | number | true | None | 할인 금액 |
| dcRate | number | true | None | 할인율 (10%) => 10 |
| possiblePrice | number | true | None | 쿠폰을 사용할 수 있는 최소 주문 금액 |
| startDt | string | true | None | 쿠폰 사용 시작일 |
| endDt | string | true | None | 쿠폰 사용 종료일 |
| isShow | boolean | true | None | 노출 여부 |
쿠폰 발급
파트너사의 쿠폰 발급 API를 호출하여 쿠폰 발급을 받는다.
HTTP Request
파트너사의 쿠폰 API EndPoint를 제공받는다
Request Body Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| accessToken | string | true | None | 해당 유저의 쿠폰 발급 요청시 확인용 |
| couponId | string | true | None | 파트너사의 쿠폰 Id |
| broadcastId | string | false | None | 방송 Id |
Response Body
아래의 경우에 대한 응답을 보내준다.
- 발급 성공
- 발급 실패
- 이미 발급된 쿠폰
상품 연동
sauceFlex 에 상품을 등록 한다.
상품 등록
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {externalProductId} 상품 고유 코드
# {productCategoryId1} 상품 카테고리 Id1
# {productCategoryId2} 상품 카테고리 Id2
# {productEventTypeCode} 상품 이벤트 구분 코드 (basic|event)
# {productTypeCode} 상품 종류 코드 (brand|soho)
# {brandName} 상품 브랜드 이름, 한+양+숫자+특수문자
# {productName} 상품 이름, 한+양+숫자+특수문자
# {productThumbnailUrlList} 상품 썸네일 리스트
# {explanation} 상품 설명 최대 200자
# {priceTypeCode} 상품 가격 구분 코드
# {price} 상품 원가
# {sellingPrice} 상품 판매가
# {discountTypeCode} 상품 할인 구분 코드 (rate|none)
# {discountRate} 상품 할인율
# {redirectUrl} 상품 이동 URL
# {isSoldout} 상품 품절 여부 (1|0)
# {countryId} 국가 코드 (KR)
# {currencyId} 환율 코드 (KRW)
# {languageTag} 언어 태그 (ko-KR)
# {currencyNotation} 환율 표시 기호 (₩)
curl -X POST "${server}/front/product" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}" \
-H "Content-Type: application/json" -d "{\"externalProductId\":${externalProductId},\"productCategoryId1\":${productCategoryId1},\"productCategoryId2\":${productCategoryId2},\"productEventTypeCode\":${productEventTypeCode},\"productTypeCode\":${productTypeCode},\"brandName\":${brandName},\"productName\":${productName},\"productThumbnailUrlList\":${productThumbnailUrlList},\"explanation\":${explanation},\"priceTypeCode\":${priceTypeCode},\"price\":${price},\"sellingPrice\":${sellingPrice},\"discountTypeCode\":${discountTypeCode},\"discountRate\":${discountRate},\"redirectUrl\":${redirectUrl},\"isSoldout\":${isSoldout},\"countryId\":${countryId},\"currencyId\":${currencyId},\"languageTag\":${languageTag},\"currencyNotation\":${currencyNotation}}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616308095455,
"message": "성공하였습니다.",
"response": {
"partnerId": "mobidoo",
"productId": "mobidoo-d7e7fbdea45a44a887f95f8c2c174ec5",
"externalProductId": null,
"partnerName": "mobidoo",
"productCategoryId1": "CAT1",
"productCategoryId2": "CAT1#ETC",
"productEventTypeCode": "basic",
"productTypeCode": "brand",
"brandName": "브랜드명",
"productName": "상품명",
"productThumbnailUrlList": [
{
"thumbnailUrl": "https://~~~~/xxx.png",
"isRepresentative": true
}
],
"explanation": "상품 설명",
"priceTypeCode": "basic",
"price": "1000",
"sellingPrice": "0",
"discountTypeCode": "none",
"discountRate": "0.0",
"redirectUrl": "https://picsum.photos/200/300?random=1",
"vodCount": 0,
"liveCount": 0,
"isSoldout": 0,
"countryId": "KR",
"currencyId": "KRW",
"languageTag": "ko-KR",
"currencyNotation": "₩",
"regDt": "2021-03-21T06:28:14.761Z",
"regName": "system"
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
상품을 등록 한다.
HTTP Request
POST /front/product
Request Body Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| externalProductId | string | false | None | 상품 고유 코드 |
| productCategoryId1 | string | true | None | 상품 카테고리 Id1 (대분류) |
| productCategoryId2 | string | true | None | 상품 카테고리 Id2 (중분류) |
| productEventTypeCode | string | false | basic | 상품 이벤트 구분 코드 (basic, event) |
| productTypeCode | string | false | soho | 상품 종류 코드 (brand, soho) |
| brandName | string | true | None | 상품 브랜드 이름 |
| productName | string | true | None | 상품 이름 |
| productThumbnailUrlList | array | true | None | 상품 썸네일 object 최대 20개 |
| explanation | string | false | None | 상품 설명 최대 200자 |
| priceTypeCode | string | false | None | 상품 가격 구분 코드 (basic, text, hide) |
| price | string | true | None | 상품 원가 |
| sellingPrice | string | false | None | 상품 판매가 |
| discountTypeCode | string | false | none | 상품 할인 구분 코드 (rate, none) |
| discountRate | string | discountTypeCode = rate이면 true | 0.0 | 상품 할인율 |
| redirectUrl | url | true | None | 상품 이동 URL |
| isSoldout | number | true | None | 상품 품절 처리 |
| countryId | string | false | KR | 국가 코드 |
| currencyId | string | false | KRW | 환율 코드 |
| languageTag | string | false | ko-KR | 언어 태그 |
| currencyNotation | string | false | ₩ | 환율 표시 기호 |
productThumbnailUrlList Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| isRepresentative | boolean | true | false | 대표 이미지로 선택되면 true |
| thumbnailUrl | string | true | None | 이미지 Url |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| productId | string | true | None | 상품 Id |
| externalProductId | string | false | None | 상품 고유 코드 |
| productCategoryId1 | string | true | None | 상품 카테고리 Id1 (대분류) |
| productCategoryId2 | string | true | None | 상품 카테고리 Id2 (중분류) |
| productEventTypeCode | string | false | basic | 상품 이벤트 구분 코드 (basic, event) |
| productTypeCode | string | false | soho | 상품 종류 코드 (brand, soho) |
| brandName | string | true | None | 상품 브랜드 이름 |
| productName | string | true | None | 상품 이름 |
| productThumbnailUrlList | array | true | None | 상품 썸네일 object 최대 20개 |
| explanation | string | false | None | 상품 설명 최대 200자 |
| priceTypeCode | string | false | None | 상품 가격 구분 코드 (basic, text, hide) |
| price | string | true | None | 상품 원가 |
| sellingPrice | string | false | None | 상품 판매가 |
| discountTypeCode | string | false | none | 상품 할인 구분 코드 (rate, none) |
| discountRate | string | discountTypeCode = rate이면 true | 0.0 | 상품 할인율 |
| redirectUrl | url | true | None | 상품 이동 URL |
| isSoldout | number | true | None | 상품 품절 처리 |
| liveCount | number | true | None | Live 방송 연결수 |
| vodCount | number | true | None | Catchup/Vod 방송 연결수 |
| countryId | string | false | KR | 국가 코드 |
| currencyId | string | false | KRW | 환율 코드 |
| languageTag | string | false | ko-KR | 언어 태그 |
| currencyNotation | string | false | ₩ | 환율 표시 기호 |
상품 조회
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {productId} 상품 Id
curl -X GET "${server}/front/product/${productId}" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616309815638,
"message": "성공하였습니다.",
"response": {
"productThumbnailUrlList": [
{
"isRepresentative": true,
"thumbnailUrl": "https://d10tn33swurvwl.cloudfront.net/product/mobidoo/mobidoo-d7e7fbdea45a44a887f95f8c2c174ec5/thum/solution_img_01.png"
}
],
"discountRate": "0.0",
"liveCount": 0,
"brandName": "브랜드명",
"regDt": "2021-03-21T06:28:14.761Z",
"externalProductId": null,
"priceTypeCode": "basic",
"vodCount": 0,
"productTypeCode": "brand",
"regName": "system",
"redirectUrl": "https://picsum.photos/200/300?random=1",
"modName": "system",
"productEventTypeCode": "basic",
"sellingPrice": "0",
"discountTypeCode": "none",
"modDt": "2021-03-21T06:28:14.761Z",
"productCategoryId1": "CAT1",
"productCategoryId2": "CAT1#ETC",
"price": "1000",
"isSoldout": 0,
"productId": "mobidoo-d7e7fbdea45a44a887f95f8c2c174ec5",
"explanation": "상품 설명",
"productName": "상품명",
"countryId": "KR",
"currencyId": "KRW",
"languageTag": "ko-KR",
"currencyNotation": "₩",
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
상품을 조회 한다.
HTTP Request
GET /front/product/{productId}
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| productId | string | true | None | 상품 Id |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| productId | string | true | None | 상품 Id |
| externalProductId | string | false | None | 상품 고유 코드 |
| productCategoryId1 | string | true | None | 상품 카테고리 Id1 (대분류) |
| productCategoryId2 | string | true | None | 상품 카테고리 Id2 (중분류) |
| productEventTypeCode | string | false | basic | 상품 이벤트 구분 코드 (basic, event) |
| productTypeCode | string | false | soho | 상품 종류 코드 (brand, soho) |
| brandName | string | true | None | 상품 브랜드 이름 |
| productName | string | true | None | 상품 이름 |
| productThumbnailUrlList | array | true | None | 상품 썸네일 object 최대 20개 |
| explanation | string | false | None | 상품 설명 최대 200자 |
| priceTypeCode | string | false | None | 상품 가격 구분 코드 (basic, text, hide) |
| price | string | true | None | 상품 원가 |
| sellingPrice | string | false | None | 상품 판매가 |
| discountTypeCode | string | false | none | 상품 할인 구분 코드 (rate, none) |
| discountRate | string | discountTypeCode = rate이면 true | 0.0 | 상품 할인율 |
| redirectUrl | url | true | None | 상품 이동 URL |
| isSoldout | number | true | None | 상품 품절 처리 |
| liveCount | number | true | None | Live 방송 연결수 |
| vodCount | number | true | None | Catchup/Vod 방송 연결수 |
| countryId | string | false | KR | 국가 코드 |
| currencyId | string | false | KRW | 환율 코드 |
| languageTag | string | false | ko-KR | 언어 태그 |
| currencyNotation | string | false | ₩ | 환율 표시 기호 |
상품 수정
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {externalProductId} 상품 고유 코드
# {productCategoryId1} 상품 카테고리 Id1
# {productCategoryId2} 상품 카테고리 Id2
# {productEventTypeCode} 상품 이벤트 구분 코드 (basic|event)
# {productTypeCode} 상품 종류 코드 (brand|soho)
# {brandName} 상품 브랜드 이름, 한+양+숫자+특수문자
# {productName} 상품 이름, 한+양+숫자+특수문자
# {productThumbnailUrlList} 상품 썸네일 리스트
# {explanation} 상품 설명 최대 200자
# {priceTypeCode} 상품 가격 구분 코드
# {price} 상품 원가
# {sellingPrice} 상품 판매가
# {discountTypeCode} 상품 할인 구분 코드 (rate|none)
# {discountRate} 상품 할인율
# {redirectUrl} 상품 이동 URL
# {isSoldout} 상품 품절 여부 (1|0)
# {countryId} 국가 코드 (KR)
# {currencyId} 환율 코드 (KRW)
# {languageTag} 언어 태그 (ko-KR)
# {currencyNotation} 환율 표시 기호 (₩)
curl -X PATCH "${server}/front/product" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}" \
-H "Content-Type: application/json" -d "{\"externalProductId\":${externalProductId},\"productCategoryId1\":${productCategoryId1},\"productCategoryId2\":${productCategoryId2},\"productEventTypeCode\":${productEventTypeCode},\"productTypeCode\":${productTypeCode},\"brandName\":${brandName},\"productName\":${productName},\"productThumbnailUrlList\":${productThumbnailUrlList},\"explanation\":${explanation},\"priceTypeCode\":${priceTypeCode},\"price\":${price},\"sellingPrice\":${sellingPrice},\"discountTypeCode\":${discountTypeCode},\"discountRate\":${discountRate},\"redirectUrl\":${redirectUrl},\"isSoldout\":${isSoldout},\"countryId\":${countryId},\"currencyId\":${currencyId},\"languageTag\":${languageTag},\"currencyNotation\":${currencyNotation}}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616308095455,
"message": "성공하였습니다.",
"response": {
"partnerId": "mobidoo",
"productId": "mobidoo-d7e7fbdea45a44a887f95f8c2c174ec5",
"externalProductId": null,
"partnerName": "mobidoo",
"productCategoryId1": "CAT1",
"productCategoryId2": "CAT1#ETC",
"productEventTypeCode": "basic",
"productTypeCode": "brand",
"brandName": "브랜드명",
"productName": "상품명",
"productThumbnailUrlList": [
{
"thumbnailUrl": "https://~~~~/xxx.png",
"isRepresentative": true
}
],
"explanation": "상품 설명",
"priceTypeCode": "basic",
"price": "1000",
"sellingPrice": "0",
"discountTypeCode": "none",
"discountRate": "0.0",
"redirectUrl": "https://picsum.photos/200/300?random=1",
"vodCount": 0,
"liveCount": 0,
"isSoldout": 0,
"countryId": "KR",
"currencyId": "KRW",
"languageTag": "ko-KR",
"currencyNotation": "₩",
"regDt": "2021-03-21T06:28:14.761Z",
"regName": "system"
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
상품 정보를 수정한다.
HTTP Request
PATCH /front/product/{productId}
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| productId | string | true | None | 상품 Id |
Request Body Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| externalProductId | string | false | None | 상품 고유 코드 |
| productCategoryId1 | string | false | None | 상품 카테고리 Id1 (대분류) |
| productCategoryId2 | string | false | None | 상품 카테고리 Id2 (중분류) |
| productEventTypeCode | string | false | basic | 상품 이벤트 구분 코드 (basic, event) |
| productTypeCode | string | false | soho | 상품 종류 코드 (brand, soho) |
| brandName | string | false | None | 상품 브랜드 이름 |
| productName | string | false | None | 상품 이름 |
| productThumbnailUrlList | array | true | None | 상품 썸네일 object 최대 20개 |
| explanation | string | false | None | 상품 설명 최대 200자 |
| priceTypeCode | string | false | None | 상품 가격 구분 코드 (basic, text, hide) |
| price | string | false | None | 상품 원가 |
| sellingPrice | string | false | None | 상품 판매가 |
| discountTypeCode | string | false | none | 상품 할인 구분 코드 (rate, none) |
| discountRate | string | discountTypeCode = rate이면 true | 0.0 | 상품 할인율 |
| redirectUrl | url | false | None | 상품 이동 URL |
| isSoldout | number | false | None | 상품 품절 처리 |
| countryId | string | false | KR | 국가 코드 |
| currencyId | string | false | KRW | 환율 코드 |
| languageTag | string | false | ko-KR | 언어 태그 |
| currencyNotation | string | false | ₩ | 환율 표시 기호 |
productThumbnailUrlList Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| isRepresentative | boolean | true | false | 대표 이미지로 선택되면 true |
| thumbnailUrl | string | true | None | 이미지 Url |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| productId | string | true | None | 상품 Id |
| externalProductId | string | false | None | 상품 고유 코드 |
| productCategoryId1 | string | true | None | 상품 카테고리 Id1 (대분류) |
| productCategoryId2 | string | true | None | 상품 카테고리 Id2 (중분류) |
| productEventTypeCode | string | false | basic | 상품 이벤트 구분 코드 (basic, event) |
| productTypeCode | string | false | soho | 상품 종류 코드 (brand, soho) |
| brandName | string | true | None | 상품 브랜드 이름 |
| productName | string | true | None | 상품 이름 |
| productThumbnailUrlList | array | true | None | 상품 썸네일 object 최대 20개 |
| explanation | string | false | None | 상품 설명 최대 200자 |
| priceTypeCode | string | false | None | 상품 가격 구분 코드 (basic, text, hide) |
| price | string | true | None | 상품 원가 |
| sellingPrice | string | false | None | 상품 판매가 |
| discountTypeCode | string | false | none | 상품 할인 구분 코드 (rate, none) |
| discountRate | string | discountTypeCode = rate이면 true | 0.0 | 상품 할인율 |
| redirectUrl | url | true | None | 상품 이동 URL |
| isSoldout | number | true | None | 상품 품절 처리 |
| liveCount | number | true | None | Live 방송 연결수 |
| vodCount | number | true | None | Catchup/Vod 방송 연결수 |
| countryId | string | false | KR | 국가 코드 |
| currencyId | string | false | KRW | 환율 코드 |
| languageTag | string | false | ko-KR | 언어 태그 |
| currencyNotation | string | false | ₩ | 환율 표시 기호 |
상품 삭제
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {productId} 상품 Id
curl -X DELETE "${server}/front/product/${productId}" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616310656280,
"message": "성공하였습니다.",
"response": {
"productId": "mobidoo-d7e7fbdea45a44a887f95f8c2c174ec5"
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
상품을 삭제 한다.
HTTP Request
DELETE /front/product/{productId}
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| productId | string | true | None | 상품 Id |
방송별 매출데이터 연동
주문 상품 등록
# {server} 서버 endpoint
# {orderId} 파트너사 주문 고유 id
# {orderStatus} 주문 상태(1: 결제완료, 2: 전체취소, 3: 부분취소)
# {orderDate} 주문 날짜
# {memberId} 주문자 id
# {order} 주문 object
curl -X POST "${server}/external/product/order/${broadcastId}" -H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"orderId\":${orderId}, \"orderStatus\":${orderStatus}, \"orderDate\":${orderDate}, \"memberId\":${memberId}, \"order\": {\"orderList\": [{\"productId\":${productId},\"productQuantity\":${productQuantity},\"productName\":${productName},\"productPrice\":${productPrice},\"orderStatus\":${orderStatus},\"currency\":${currency},,\"orderCallBackId\":${orderCallBackId},,\"cancelDate\":${cancelDate}}]}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1680058886982,
"message": "성공하였습니다.",
"response": {
"orderId": "orderId",
"orderStatus": 1,
"orderDate": "2023-03-29T03:01:26.876Z",
"broadcastId": "lkmobidoo-78682f421a5e409c8ca53709d9d3135f",
"memberId": "mobidoo",
"isLive": true,
"order": {
"orderList": [
{
"productId": "mobidoo-e44b22fbb5dc41feb467873a7655b693",
"productQuantity": 1,
"productName": "프로덕트 이름",
"productPrice": 10000,
"orderStatus": 1,
"currency": "KRW",
"orderCallBackId": "orderCallBackId",
"cancelDate": null
}
]
}
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
HTTP Request
POST /external/product/order/{broadcastId}
Request Body Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| orderId | string | true | None | 파트너사 고유 주문 번호 |
| orderStatus | number | true | None | 주문 상태(1: 결제완료, 2: 전체취소, 3: 부분취소) |
| orderDate | string | true | None | 주문 날짜 |
| memberId | string | true | None | 파트너사 회원의 고유 ID (accessToken시 사용한 memberId) |
| order | object | true | None | 주문 목록 |
주문 상품 취소
주문 상품을 취소 한다.
# {server} 서버 endpoint
# {orderId} 파트너사 주문 고유 id
# {orderStatus} 주문 상태(1: 결제완료, 2: 전체취소, 3: 부분취소)
# {memberId} 주문자 id
# {order} 주문 object
curl -X DELETE "${server}/external/product/order/${broadcastId}/{orderId}" -H "accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"orderStatus\":${orderStatus}, \"memberId\":${memberId}, \"order\": {\"orderList\": [{\"productId\":${productId},\"productQuantity\":${productQuantity},\"productName\":${productName},\"productPrice\":${productPrice},\"orderStatus\":${orderStatus},\"currency\":${currency},,\"orderCallBackId\":${orderCallBackId},\"cancelDate\":${cancelDate}}]}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1680058886982,
"message": "성공하였습니다.",
"response": {
"orderId": "orderId",
"orderStatus": 2,
"orderDate": "2023-03-29T03:01:26.876Z",
"broadcastId": "lkmobidoo-78682f421a5e409c8ca53709d9d3135f",
"memberId": "mobidoo",
"isLive": true,
"order": {
"orderList": [
{
"productId": "mobidoo-e44b22fbb5dc41feb467873a7655b693",
"productQuantity": 1,
"productName": "프로덕트 이름",
"productPrice": 10000,
"orderStatus": 2,
"currency": "KRW",
"orderCallBackId": "orderCallBackId",
"cancelDate": null
}
]
}
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
HTTP Request
DELETE /external/product/order/{broadcastId}/{orderId}
Request Body Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| orderStatus | number | true | None | 주문 상태(1: 결제완료, 2: 전체취소, 3: 부분취소) |
| orderDate | string | false | NOW() | 주문 날짜 |
| memberId | string | false | None | 파트너사 회원의 고유 ID (accessToken시 사용한 memberId) |
| order | object | true | None | 주문 목록 |
외부상품 연동
sauceFlex 에 externalProductId를 기준으로 상품을 연동한다.
외부상품 등록
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {externalProductId} 상품 고유 코드, 20자 영어+숫자+"-"문자
# {productCategoryId1} 상품 카테고리 Id1
# {productCategoryId2} 상품 카테고리 Id2
# {productEventTypeCode} 상품 이벤트 구분 코드 (basic|event)
# {productTypeCode} 상품 종류 코드 (brand|soho)
# {brandName} 상품 브랜드 이름, 한+양+숫자+특수문자
# {productName} 상품 이름, 한+양+숫자+특수문자
# {productThumbnailUrlList} 상품 썸네일 리스트
# {explanation} 상품 설명 최대 200자
# {priceTypeCode} 상품 가격 구분 코드
# {price} 상품 원가
# {sellingPrice} 상품 판매가
# {discountTypeCode} 상품 할인 구분 코드 (rate|none)
# {discountRate} 상품 할인율
# {redirectUrl} 상품 이동 URL
# {isSoldout} 상품 품절 여부 (1|0)
curl -X POST "${server}/front/external/products" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}" \
-H "Content-Type: application/json" -d "{\"products\":[\"externalProductId\":${externalProductId},\"productCategoryId1\":${productCategoryId1},\"productCategoryId2\":${productCategoryId2},\"productEventTypeCode\":${productEventTypeCode},\"productTypeCode\":${productTypeCode},\"brandName\":${brandName},\"productName\":${productName},\"productThumbnailUrlList\":${productThumbnailUrlList},\"explanation\":${explanation},\"priceTypeCode\":${priceTypeCode},\"price\":${price},\"sellingPrice\":${sellingPrice},\"discountTypeCode\":${discountTypeCode},\"discountRate\":${discountRate},\"redirectUrl\":${redirectUrl},\"isSoldout\":${isSoldout}]}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1618384817381,
"message": "성공하였습니다.",
"response": {
"success": [
{
"externalProductId": "test01",
"productId": "mobidoo-2ec0b190204049fe926cda9b94243950",
"productName": "상품명",
"regDt": "2021-04-14T07:20:16.311Z"
}
],
"fail": [
{
"externalProductId": "test02",
"messageCode": "FA1035"
}
]
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
externalProductId 기준으로 상품을 등록 한다. (최대 100까지 등록 가능)
externalProductId를 기준으로 등록하므로 externalProductId는 필수로 입력되어야 하며, externalProductId가 중복으로 등록 되지 않는다.
HTTP Request
POST /front/external/products
Request Body Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| products | array | true | None | 등록할 상품 리스트 |
products Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| externalProductId | string | true | None | 상품 고유 코드 |
| productCategoryId1 | string | true | None | 상품 카테고리 Id1 (대분류) |
| productCategoryId2 | string | true | None | 상품 카테고리 Id2 (중분류) |
| productEventTypeCode | string | false | basic | 상품 이벤트 구분 코드 (basic, event) |
| productTypeCode | string | false | soho | 상품 종류 코드 (brand, soho) |
| brandName | string | true | None | 상품 브랜드 이름 |
| productName | string | true | None | 상품 이름 |
| productThumbnailUrlList | array | true | None | 상품 썸네일 object 최대 20개 |
| explanation | string | false | None | 상품 설명 최대 200자 |
| priceTypeCode | string | false | None | 상품 가격 구분 코드 (basic, text, hide) |
| price | string | true | None | 상품 원가 |
| sellingPrice | string | false | None | 상품 판매가 |
| discountTypeCode | string | false | none | 상품 할인 구분 코드 (rate, none) |
| discountRate | string | discountTypeCode = rate이면 true | 0.0 | 상품 할인율 |
| redirectUrl | url | true | None | 상품 이동 URL |
| isSoldout | number | true | None | 상품 품절 처리 |
productThumbnailUrlList Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| isRepresentative | boolean | true | false | 대표 이미지로 선택되면 true |
| thumbnailUrl | string | true | None | 이미지 Url |
외부상품 조회
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {externalProductId} 상품 고유 코드
curl -X GET "${server}/front/external/product/${externalProductId}" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1618385150872,
"message": "성공하였습니다.",
"response": {
"count": 1,
"items": [
{
"productThumbnailUrlList": [
{
"isRepresentative": true,
"thumbnailUrl": "https://~~~/xxx.png"
}
],
"discountRate": "0.0",
"brandName": "브랜드명",
"externalProductId": "test01",
"priceTypeCode": "basic",
"productTypeCode": "brand",
"redirectUrl": "https://picsum.photos/200/300?random=1",
"productEventTypeCode": "basic",
"sellingPrice": "0",
"discountTypeCode": "none",
"productCategoryId1": "CAT1",
"productCategoryId2": "CAT1#ETC",
"price": "10000",
"isSoldout": 0,
"productId": "mobidoo-e4e519fe02904694af1a56ea7212a620",
"explanation": "상품 설명",
"productName": "상품명"
}
]
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
externalProductId 기준으로 상품을 조회 한다.
HTTP Request
GET /front/external/product/{externalProductId}
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| externalProductId | string | true | None | 상품 고유 코드 |
외부상품 수정
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {externalProductId} 상품 고유 코드
# {productCategoryId1} 상품 카테고리 Id1
# {productCategoryId2} 상품 카테고리 Id2
# {productEventTypeCode} 상품 이벤트 구분 코드 (basic|event)
# {productTypeCode} 상품 종류 코드 (brand|soho)
# {brandName} 상품 브랜드 이름, 한+양+숫자+특수문자
# {productName} 상품 이름, 한+양+숫자+특수문자
# {productThumbnailUrlList} 상품 썸네일 리스트
# {explanation} 상품 설명 최대 200자
# {priceTypeCode} 상품 가격 구분 코드
# {price} 상품 원가
# {sellingPrice} 상품 판매가
# {discountTypeCode} 상품 할인 구분 코드 (rate|none)
# {discountRate} 상품 할인율
# {redirectUrl} 상품 이동 URL
# {isSoldout} 상품 품절 여부 (1|0)
curl -X PATCH "${server}/front/external/product/${externalProductId}" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}" \
-H "Content-Type: application/json" -d "{\"externalProductId\":${externalProductId},\"productCategoryId1\":${productCategoryId1},\"productCategoryId2\":${productCategoryId2},\"productEventTypeCode\":${productEventTypeCode},\"productTypeCode\":${productTypeCode},\"brandName\":${brandName},\"productName\":${productName},\"productThumbnailUrlList\":${productThumbnailUrlList},\"explanation\":${explanation},\"priceTypeCode\":${priceTypeCode},\"price\":${price},\"sellingPrice\":${sellingPrice},\"discountTypeCode\":${discountTypeCode},\"discountRate\":${discountRate},\"redirectUrl\":${redirectUrl},\"isSoldout\":${isSoldout}}"
Response Code 200:
Response body
Download
{
"code": "SU0000",
"timestamp": 1618387282338,
"message": "성공하였습니다.",
"response": {
"discountRate": "0.0",
"liveCount": 1,
"brandName": "브랜드명",
"externalProductId": "test01",
"priceTypeCode": "basic",
"productTypeCode": "brand",
"sellingPrice": "0",
"partnerName": "mobidoo",
"productCategoryId1": "CAT1",
"productCategoryId2": "CAT1#ETC",
"productId": "mobidoo-e4e519fe02904694af1a56ea7212a620",
"partnerId": "hjtest",
"productThumbnailUrlList": [
{
"isRepresentative": true,
"thumbnailUrl": "https://~~~/xxx.png"
}
],
"vodCount": 1,
"redirectUrl": "https://picsum.photos/200/300?random=1",
"productEventTypeCode": "basic",
"discountTypeCode": "none",
"price": "1000",
"isSoldout": 0,
"explanation": "상품 설명",
"productName": "상품명"
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
externalProductId 기준으로 상품을 수정 한다.
HTTP Request
PATCH /front/external/product/{externalProductId}
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| externalProductId | string | true | None | 상품 고유 코드 |
Request Body Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| externalProductId | string | false | None | 상품 고유 코드 |
| productCategoryId1 | string | false | None | 상품 카테고리 Id1 (대분류) |
| productCategoryId2 | string | false | None | 상품 카테고리 Id2 (중분류) |
| productEventTypeCode | string | false | basic | 상품 이벤트 구분 코드 (basic, event) |
| productTypeCode | string | false | soho | 상품 종류 코드 (brand, soho) |
| brandName | string | false | None | 상품 브랜드 이름 |
| productName | string | false | None | 상품 이름 |
| productThumbnailUrlList | array | true | None | 상품 썸네일 object 최대 20개 |
| explanation | string | false | None | 상품 설명 최대 200자 |
| priceTypeCode | string | false | None | 상품 가격 구분 코드 (basic, text, hide) |
| price | string | false | None | 상품 원가 |
| sellingPrice | string | false | None | 상품 판매가 |
| discountTypeCode | string | false | none | 상품 할인 구분 코드 (rate, none) |
| discountRate | string | discountTypeCode = rate이면 true | 0.0 | 상품 할인율 |
| redirectUrl | url | false | None | 상품 이동 URL |
| isSoldout | number | false | None | 상품 품절 처리 |
productThumbnailUrlList Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| isRepresentative | boolean | true | false | 대표 이미지로 선택되면 true |
| thumbnailUrl | string | true | None | 이미지 Url |
외부상품 삭제
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {productId} 상품 Id
curl -X DELETE "${server}/front/external/product/${externalProductId}" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1618385559353,
"message": "성공하였습니다.",
"response": {
"productId": "mobidoo-e4e519fe02904694af1a56ea7212a620",
"externalId": "test01",
"delDt": "2021-04-14T07:32:38.258Z",
"delName": "hjadmin"
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
externalProductId 기준으로 상품을 삭제 한다.
HTTP Request
DELETE /front/external/product/{externalProductId}
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| externalProductId | string | true | None | 상품 고유 코드 |
방송 조회
최신 라이브 및 VOD 조회
# {server} 서버 endpoint
# {partnerId} 파트너 Id
# {returnLimit} 반환 개수(min:1, max:100)
curl -X GET "${server}/front/broadcast?partnerId=${partnerId}&returnLimit=${returnLimit}" -H "accept: application/json"
Response Code 200:
{
"code": "SU0000",
"message": "성공하였습니다.",
"response": {
"totalCount": 0,
"nextKey": "string",
"count": 0,
"items": [
{
"thumbnailList": [
{
"thumbnailUrl": "https://www.fnordware.com/superpng/pnggrad16rgb.png",
"isRepresentative": true
}
],
"broadcastThumbnailList": [
{
"thumbnailUrl": "https://www.fnordware.com/superpng/pnggrad16rgb.png",
"isRepresentative": true
}
],
"broadcastId": "string",
"broadcastName": "string",
"explanation": "브로드캐스트 설명",
"broadcastTypeCode": "live",
"broadcastStateCode": "standby",
"programmingStartDt": "2020-12-01T12:59:59.000Z",
"programmingEndDt": "2020-12-01T12:59:59.000Z",
"broadcastStartDt": "2020-12-01T00:00:00.000Z",
"broadcastEndDt": "2020-12-01T00:00:00.000Z",
"totalDuration": 0,
"outputPath": "string",
"shopName": "string",
"partnerProfileImageUrl": "string",
"productListDetail": [
{
"productId": "string",
"productName": "상품 이름",
"productThumbnailUrlList": [
{
"thumbnailUrl": "https://~~~/xxx.png",
"isRepresentative": true
}
],
"priceTypeCode": "basic",
"price": "1000",
"sellingPrice": "0",
"discountTypeCode": "none",
"discountRate": "0.0",
"discountPrice": "0"
}
],
"room": {
"chatCounterInfo": 0,
"incomingCounterInfo": 0,
"reactionCounterInfo": 0
}
}
]
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
생성된 라이브 방송 및 VOD로 전환된 방송 목록을 조회 한다.
HTTP Request
GET /front/broadcast
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| partnerId | string | true | None | 발급받은 파트너 아이디 |
| searchStartDt | string | false | None | 방송 시작일시 |
| searchEndDt | string | false | None | 방송 종료일시 |
| searchWord | string | false | None | 검색어(방송명, 상품명, 상품 브랜드명) |
| searchType | string | false | 0 | 방송종류(0-Live,Catchup, 1-Vod, 2-All, 3-Live, 4-Catchup) |
| returnLimit | string | false | None | 반환 개수(min:1, max:100) |
| nextKey | string | false | None | 다음 페이지 조회 키가 있을시 해당 키를 입력한다 |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| nextKey | string | false | None | 다음 조회 데이터가 있을시 발급 |
| totalCount | number | true | None | 전체 방송 카운트 |
| count | number | true | None | 조회된 방송 카운트 |
| items | array | true | None | 조회된 방송 리스트 |
items Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| broadcastTypeCode | string | true | None | 방송 종류 코드 (live , catchup, vod) |
| programmingStartDt | date | true | None | 방송 편성 시작일 |
| broadcastId | string | true | None | 방송 고유 ID |
| thumbnailList | array | false | None | 편성 썸네일 정보 object array |
| hashTagList | array | false | None | 해시태그 리스트 |
| shortUrl | string | true | None | 방송 shortUrl |
| broadcastThumbnailList | array | false | None | 방송 썸네일 정보 object array |
| programmingEndDt | date | true | None | 방송 편성 종료일 |
| broadcastName | string | true | None | 방송명 |
| broadcastStateCode | string | true | None | 방송상태코드 (하단 코드 참고) |
| explanation | string | false | None | 방송 설명 min:2 , max: 200 자까지 |
| totalDuation | number | false | None | 총방송 시간 |
| outputPath | string | false | None | 방송 플레이어 URL |
| room | object | false | None | 방송 수치 정보 , 채팅카운트, 조회수, 좋아요수 |
| shopName | string | false | None | 상점 이름 |
| partnerProfileImageUrl | string | false | None | 상점 이미지 |
| productListDetail | array | false | None | 방송 매핑된 상품 리스트 |
| previewUrl | string | false | None | 방송 프리뷰 URL, Live일경우 방송 URL |
room Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| chatCounterInfo | number | true | None | 채팅 카운트 |
| incomingCounterInfo | number | true | None | 조회수 |
| reactionCounterInfo | number | true | None | 좋아요수 |
thumbnailList Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| isRepresentative | boolean | true | false | 대표 이미지로 선택되면 true |
| thumbnailUrl | string | true | None | 이미지 Url |
productListDetail Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| productId | string | true | None | 상품 Id |
| productName | string | true | None | 상품명 |
| productThumbnailUrlList | object | true | None | 상품 썸네일 object |
| priceTypeCode | string | true | None | 상품 가격 구분 코드 |
| price | string | true | None | 상품 원가 |
| sellingPrice | number | true | None | 상품 판매가 |
| discountTypeCode | string | true | None | 상품 할인 구분 코드 |
| discountRate | number | true | None | 상품 할인율 |
| discountPrice | number | true | None | 상품 할인금액 |
productThumbnailUrlList Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| isRepresentative | boolean | true | false | 대표 이미지로 선택되면 true |
| thumbnailUrl | string | true | None | 이미지 Url |
예정 방송 조회
# {server} 서버 endpoint
# {returnLimit} 반환 개수(min:1, max:100)
curl -X GET "${server}/front/broadcast/schedule?partnerId=mobidoo&returnLimit=10" -H "accept: application/json"
Response Code 200:
{
"code": "SU0000",
"message": "성공하였습니다.",
"response": {
"totalCount": 0,
"nextKey": "string",
"count": 0,
"items": [
{
"thumbnailList": [
{
"thumbnailUrl": "https://www.fnordware.com/superpng/pnggrad16rgb.png",
"isRepresentative": true
}
],
"broadcastThumbnailList": [
{
"thumbnailUrl": "https://www.fnordware.com/superpng/pnggrad16rgb.png",
"isRepresentative": true
}
],
"broadcastId": "string",
"broadcastName": "string",
"explanation": "브로드캐스트 설명",
"broadcastTypeCode": "live",
"broadcastStateCode": "standby",
"programmingStartDt": "2020-12-01T12:59:59.000Z",
"programmingEndDt": "2020-12-01T12:59:59.000Z",
"broadcastStartDt": "2020-12-01T00:00:00.000Z",
"broadcastEndDt": "2020-12-01T00:00:00.000Z",
"totalDuration": 0,
"outputPath": "string",
"shopName": "string",
"partnerProfileImageUrl": "string",
"productListDetail": [
{
"productId": "string",
"productName": "상품 이름",
"productThumbnailUrlList": [
{
"thumbnailUrl": "https://~~~/xxx.png",
"isRepresentative": true
}
],
"priceTypeCode": "basic",
"price": "1000",
"sellingPrice": "0",
"discountTypeCode": "none",
"discountRate": "0.0",
"discountPrice": "0"
}
],
"room": {
"chatCounterInfo": 0,
"incomingCounterInfo": 0,
"reactionCounterInfo": 0
}
}
]
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
예정된 다음 방송 리스트를 조회 한다.
HTTP Request
GET /front/broadcast/schedule
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| partnerId | string | true | None | 발급받은 파트너 아이디 |
| searchStartDt | string | false | None | 방송 시작일시 |
| searchEndDt | string | false | None | 방송 종료일시 |
| searchWord | string | false | None | 검색어(방송명, 상품명, 상품 브랜드명) |
| returnLimit | string | false | 10 | 반환 개수(min:1, max:100) |
| nextKey | string | false | None | 다음 페이지 조회 키가 있을시 해당 키를 입력한다 |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| nextKey | string | false | None | 다음 조회 데이터가 있을시 발급 |
| totalCount | number | true | None | 전체 방송 카운트 |
| count | number | true | None | 조회된 방송 카운트 |
| items | array | true | None | 조회된 방송 리스트 |
items Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| broadcastTypeCode | string | true | None | 방송 종류 코드 (live , catchup, vod) |
| programmingStartDt | date | true | None | 방송 편성 시작일 |
| broadcastId | string | true | None | 방송 고유 ID |
| thumbnailList | array | false | None | 편성 썸네일 정보 object array |
| hashTagList | array | false | None | 해시태그 리스트 |
| shortUrl | string | true | None | 방송 shortUrl |
| broadcastThumbnailList | array | false | None | 방송 썸네일 정보 object array |
| programmingEndDt | date | true | None | 방송 편성 종료일 |
| broadcastName | string | true | None | 방송명 |
| broadcastStateCode | string | true | None | 방송상태코드 (하단 코드 참고) |
| explanation | string | false | None | 방송 설명 min:2 , max: 200 자까지 |
| totalDuation | number | false | None | 총방송 시간 |
| outputPath | string | false | None | 방송 플레이어 URL |
| room | object | false | None | 방송 수치 정보 , 채팅카운트, 조회수, 좋아요수 |
| shopName | string | false | None | 상점 이름 |
| partnerProfileImageUrl | string | false | None | 상점 이미지 |
| productListDetail | array | false | None | 방송 매핑된 상품 리스트 |
room Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| chatCounterInfo | number | true | None | 채팅 카운트 |
| incomingCounterInfo | number | true | None | 조회수 |
| reactionCounterInfo | number | true | None | 좋아요수 |
thumbnailList Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| isRepresentative | boolean | true | false | 대표 이미지로 선택되면 true |
| thumbnailUrl | string | true | None | 이미지 Url |
productListDetail Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| productId | string | true | None | 상품 Id |
| productName | string | true | None | 상품명 |
| productThumbnailUrlList | object | true | None | 상품 썸네일 object |
| priceTypeCode | string | true | None | 상품 가격 구분 코드 |
| price | string | true | None | 상품 원가 |
| sellingPrice | number | true | None | 상품 판매가 |
| discountTypeCode | string | true | None | 상품 할인 구분 코드 |
| discountRate | number | true | None | 상품 할인율 |
| discountPrice | number | true | None | 상품 할인금액 |
productThumbnailUrlList Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| isRepresentative | boolean | true | false | 대표 이미지로 선택되면 true |
| thumbnailUrl | string | true | None | 이미지 Url |
특정 방송 조회
HTTP Request
GET /front/broadcast/{partnerId}/{broadcastId}
# {server} 서버 endpoint
# {partnerId} Id
curl -X GET "${server}/front/broadcast/${partnerId}/${broadcastId}" -H "accept: application/json"
Response Code 200:
{
"code": "SU0000",
"message": "성공하였습니다.",
"response": {
"nextKey": null,
"totalCount": 1,
"count": 1,
"items": [
{
"partnerId": "mobidoo",
"broadcastTypeCode": "live",
"programmingStartDt": "2021-04-15T09:20:00.000Z",
"broadcastId": "lkmobidoo-85724e3b9655489ea76a4d0d79799133",
"roomId": "lkmobidoo-85724e3b9655489ea76a4d0d79799133",
"thumbnailList": [
{
"isRepresentative": true,
"thumbnailUrl": "https://~~~/xxx.png"
}
],
"hashTagList": [],
"shortUrl": "https://stage.sflex.us/xxxxxx",
"broadcastThumbnailList": [
{
"isRepresentative": true,
"thumbnailUrl": "https://~~~/xxx.png"
}
],
"programmingEndDt": "2021-04-15T12:20:00.000Z",
"broadcastName": "방송 이름",
"broadcastStateCode": "vod",
"explanation": "방송 설명입니다.",
"totalDuration": "134.634667",
"outputPath": "https://stage.player.sauceflex.com/broadcast/lkmobidoo-85724e3b9655489ea76a4d0d79799133",
"room": {
"chatCounterInfo": 3,
"incomingCounterInfo": 89,
"reactionCounterInfo": 0
},
"shopName": "mobidoo",
"partnerProfileImageUrl": "https://~~~/xxx.jpeg",
"productListDetail": [
{
"productThumbnailUrlList": [
{
"isRepresentative": true,
"thumbnailUrl": "https://~~~/xxx.jpg"
}
],
"discountRate": "0",
"sellingPrice": "0",
"discountPrice": "0",
"discountTypeCode": "none",
"externalProductId": "test01",
"price": "10000",
"priceTypeCode": "basic",
"productId": "mobidoo-fec6e32b891f4da48931d06aebfc497a",
"productName": "상품명"
}
],
"previewUrl": "https://~~~/xxx.m3u8"
}
]
}
}
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| count | number | true | None | 조회된 방송 카운트 |
| items | array | true | None | 조회된 방송 리스트 |
items Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| broadcastTypeCode | string | true | None | 방송 종류 코드 (live , catchup, vod) |
| programmingStartDt | date | true | None | 방송 편성 시작일 |
| broadcastId | string | true | None | 방송 고유 ID |
| thumbnailList | array | false | None | 편성 썸네일 정보 object array |
| hashTagList | array | false | None | 해시태그 리스트 |
| shortUrl | string | true | None | 방송 shortUrl |
| broadcastThumbnailList | array | false | None | 방송 썸네일 정보 object array |
| programmingEndDt | date | true | None | 방송 편성 종료일 |
| broadcastName | string | true | None | 방송명 |
| broadcastStateCode | string | true | None | 방송상태코드 (하단 코드 참고) |
| explanation | string | false | None | 방송 설명 min:2 , max: 200 자까지 |
| totalDuation | number | false | None | 총방송 시간 |
| outputPath | string | false | None | 방송 플레이어 URL |
| room | object | false | None | 방송 수치 정보 , 채팅카운트, 조회수, 좋아요수 |
| shopName | string | false | None | 상점 이름 |
| partnerProfileImageUrl | string | false | None | 상점 이미지 |
| productListDetail | array | false | None | 방송 매핑된 상품 리스트 |
| previewUrl | string | false | None | 방송 미리보기 Url |
room Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| chatCounterInfo | number | true | None | 채팅 카운트 |
| incomingCounterInfo | number | true | None | 조회수 |
| reactionCounterInfo | number | true | None | 좋아요수 |
thumbnailList Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| isRepresentative | boolean | true | false | 대표 이미지로 선택되면 true |
| thumbnailUrl | string | true | None | 이미지 Url |
productListDetail Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| productId | string | true | None | 상품 Id |
| productName | string | true | None | 상품명 |
| productThumbnailUrlList | object | true | None | 상품 썸네일 object |
| priceTypeCode | string | true | None | 상품 가격 구분 코드 |
| price | string | true | None | 상품 원가 |
| sellingPrice | number | true | None | 상품 판매가 |
| discountTypeCode | string | true | None | 상품 할인 구분 코드 |
| discountRate | number | true | None | 상품 할인율 |
| discountPrice | number | true | None | 상품 할인금액 |
productThumbnailUrlList Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| isRepresentative | boolean | true | false | 대표 이미지로 선택되면 true |
| thumbnailUrl | string | true | None | 이미지 Url |
방송 알림
브로드캐스트 및 파트너별로 브로드캐스트 알림 멤버를 추가하고 조회할 수 있다.
회원 조회
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {partnerId} 파트너 ID
# {broadcastId} 방송 고유 ID
curl -X GET "${server}/external/notification/${partnerId}/${broadcastId}" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}"
Response Code 200:
broadcastId: all
{
"code": "SU0000",
"timestamp": 1668749987552,
"message": "성공하였습니다.",
"response": [
{
"partnerId": "mobidoo",
"broadcastId": "all",
"memberName": null,
"memberId": "jinhyuk",
"regDt": "2022-11-18T03:52:50.477Z",
"phone": null
},
{
"partnerId": "mobidoo",
"broadcastId": "all",
"memberName": null,
"memberId": "test02",
"regDt": "2022-10-18T02:33:18.691Z",
"phone": null
}
]
}
broadcastId: ${broadcastId}
{
"code": "SU0000",
"timestamp": 1668750414931,
"message": "성공하였습니다.",
"response": [
{
"partnerId": "mobidoo",
"programmingStartDt": "2022-11-15T06:50:00.000Z",
"broadcastId": "lkmobidoo-bed3789330864a32a675d7343d99a54e",
"memberName": null,
"memberId": "jinhyuk",
"regDt": "2022-11-18T05:46:01.624Z",
"broadcastName": "테스트방송2",
"phone": null,
"shortUrl": "https://dev.sflex.us/bByXUfS"
}
]
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
방송 알림 회원 조회한다.
HTTP Request
GET /external/notification/{partnerId}/{broadcastId}
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| broadcastId | string | true | None | 방송 고유 ID |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| memberId | string | true | None | 멤버 ID |
| partnerId | string | true | None | 파트너 ID |
| regDt | string | true | None | 등록일 |
| memberName | string | false | None | 멤버 이름 (비회원 전용) |
| phone | string | false | None | 모바일 번호 (비회원 전용) |
| broadcastId | string | true | None | 방송 고유 ID ("all", ${broadcastId}) |
| broadcastName | string | true | None | 방송 이름 |
| shortUrl | string | true | None | 단축 Url |
| programmingStartDt | string | true | None | 방송 시작 예정일 |
큐레이션 연동
큐레이션 조회
# {server} 서버 endpoint
# {returnLimit} 반환 개수(min:1, max:100)
# {partnerId} 파트너 Id
curl -X GET "${server}/front/curation/${partnerId}?returnLimit=${returnLimit}" -H "accept: application/json"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616723534995,
"message": "성공하였습니다.",
"response": {
"nextKey": "\"eyJQSyI6IlBBUiNzYXVjZWZsZXgxIiwiU0siOiJDVVIjYTdzenpLNTZ0Zmt1RlVUVG1YQUZ1ZiJ9\"",
"totalCount": 18,
"count": 1,
"items": [
{
"curationName": "HOT Live",
"partnerId": "sauceflex1",
"imageUrl": "https://d10tn33swurvwl.cloudfront.net/curation/sauceflex1/a7szzK56tfkuFUTTmXAFuf/thum/7803f773-835e-4eef-b0c5-f93c9b756361.jpg",
"liveCount": 25,
"ord": 1,
"curationId": "a7szzK56tfkuFUTTmXAFuf",
"partnerName": "sauceflex",
"regDt": "2021-02-15T07:15:44.837Z",
"isPublic": true,
"vodCount": 3
}
]
}
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
파트너사에 생성된 큐레이션 목록을 조회 한다.
HTTP Request
GET /front/curation/{partnerId}
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| partnerId | string | true | None | 발급받은 파트너 아이디 |
| returnLimit | string | false | 10 | 반환 개수(min:1, max:100) |
| nextKey | string | false | None | 다음 페이지 조회 키가 있을시 해당 키를 입력한다 |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| nextKey | string | false | None | 다음 조회 데이터가 있을시 발급 |
| totalCount | number | true | None | 전체 큐레이션 카운트 |
| items | array | true | None | 조회된 큐레이션 리스트 |
items Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| curationName | string | false | None | 큐레이션 명 |
| partnerId | string | true | None | 파트너 Id |
| curationId | string | true | None | 큐레이션 Id |
| imageUrl | string | true | None | 큐레이션 이미지 URL |
| ord | number | true | None | 순서 |
| partnerName | string | true | None | 파트너 명 |
| isPublic | boolean | true | None | 공개 여부 (true-공개, false-비공개) |
| liveCount | number | true | None | LIVE 방송 개수 |
| vodCount | number | true | None | VOD 방송 개수 |
| regDt | date | true | None | 등록일시 |
큐레이션 상세조회
# {server} 서버 endpoint
# {partnerId} 파트너 Id
# {curationId} 큐레이션 Id
curl -X GET "${server}/front/curation/${partnerId}/${curationId}" -H "accept: application/json"
Response Code 200:
{
"code": "SU0000",
"message": "성공하였습니다.",
"response": {
"count": 0,
"items": [
{
"thumbnailList": [
{
"thumbnailUrl": "https://www.fnordware.com/superpng/pnggrad16rgb.png",
"isRepresentative": true
},
{
"thumbnailUrl": "https://www.fnordware.com/superpng/pnggrad8rgb.png",
"isRepresentative": false
}
],
"broadcastThumbnailList": [
{
"thumbnailUrl": "https://www.fnordware.com/superpng/pnggrad16rgb.png",
"isRepresentative": true
},
{
"thumbnailUrl": "https://www.fnordware.com/superpng/pnggrad8rgb.png",
"isRepresentative": false
}
],
"broadcastId": "string",
"broadcastName": "string",
"explanation": "브로드캐스트 설명",
"broadcastTypeCode": "live",
"broadcastStateCode": "standby",
"programmingStartDt": "2020-12-01T12:59:59.000Z",
"programmingEndDt": "2020-12-01T12:59:59.000Z",
"broadcastStartDt": "2020-12-01T00:00:00.000Z",
"broadcastEndDt": "2020-12-01T00:00:00.000Z",
"totalDuration": 0,
"outputPath": "string",
"shopName": "string",
"partnerProfileImageUrl": "string",
"productListDetail": [
{
"productId": "string",
"productName": "상품 이름",
"productThumbnailUrlList": [
{
"thumbnailUrl": "http://www.sauceflex.com/kr/wp-content/uploads/2021/03/solution_img_01.png",
"isRepresentative": true
}
],
"priceTypeCode": "basic",
"price": "1000",
"sellingPrice": "0",
"discountTypeCode": "none",
"discountRate": "0.0",
"discountPrice": "0"
}
],
"room": {
"chatCounterInfo": 0,
"incomingCounterInfo": 0,
"reactionCounterInfo": 0
}
}
]
}
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
큐레이션에 속한 방송을 조회
HTTP Request
GET /front/curation/{partnerId}/{curationId}
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| partnerId | string | true | None | 발급받은 파트너 아이디 |
| curationId | string | true | None | 큐레이션 Id |
| returnLimit | string | false | 10 | 반환 개수(min:1, max:100) |
| nextKey | string | false | None | 다음 페이지 조회 키가 있을시 해당 키를 입력한다 |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| nextKey | string | false | None | 다음 조회 데이터가 있을시 발급 |
| totalCount | number | true | None | 전체 방송 카운트 |
| items | array | true | None | 조회된 방송 리스트 |
items Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| broadcastTypeCode | string | true | None | 방송 종류 코드 (live , catchup, vod) |
| programmingStartDt | date | true | None | 방송 편성 시작일 |
| broadcastId | string | true | None | 방송 고유 ID |
| thumbnailList | array | false | None | 방송 썸네일 정보 object array |
| broadcastThumbnailList | array | false | None | 방송 썸네일 정보 object array |
| programmingStartDt | date | true | None | 방송 편성 종료일 |
| broadcastName | string | true | None | 방송명 |
| broadcastStateCode | string | true | None | 방송상태코드 (하단 코드 참고) |
| explanation | string | false | None | 방송 설명 min:2 , max: 200 자까지 |
| totalDuation | number | false | None | 총방송 시간 |
| outputPath | string | false | None | 방송 플레이어 URL |
| room | object | false | None | 방송 수치 정보 , 채팅카운트, 조회수, 좋아요수 |
| shopName | string | false | None | 상점 이름 |
| partnerProfileImageUrl | string | false | None | 상점 이미지 |
| productListDetail | array | false | None | 방송 매핑된 상품 리스트 |
thumbnailList Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| isRepresentative | boolean | true | false | 대표 이미지로 선택되면 true |
| thumbnailUrl | string | true | None | 이미지 Url |
productListDetail Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| productId | string | true | None | 상품 Id |
| productName | string | true | None | 상품명 |
| productThumbnailUrlList | object | true | None | 상품 썸네일 object |
| priceTypeCode | string | true | None | 상품 가격 구분 코드 |
| price | string | true | None | 상품 원가 |
| sellingPrice | number | true | None | 상품 판매가 |
| discountTypeCode | string | true | None | 상품 할인 구분 코드 |
| discountRate | number | true | None | 상품 할인율 |
| discountPrice | number | true | None | 상품 할인금액 |
productThumbnailUrlList Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| isRepresentative | boolean | true | false | 대표 이미지로 선택되면 true |
| thumbnailUrl | string | true | None | 이미지 Url |
상품 카테고리 연동
상품 카테고리를 등록/조회/수정/삭제하는 API.
이는 상품 연동 API 사용시 상품 카테고리 입력 데이터를 조회하는데 사용된다.
상품 카테고리 등록
sauceFlex 에 상품 카테고리를 등록 한다. 최대 50개까지 한번에 등록 가능.
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {parentCategoryId} 상위 카테고리 Id
# {categoryName} 카테고리 이름
curl -X POST "${server}/front/category/product" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}" -H "Content-Type: application/json" -d "{\"categories\":[{\"parentCategoryId\":${parentCategoryId},\"categoryName\":${categoryName}}]}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616311462219,
"message": "성공하였습니다.",
"response": {
"success": [
{
"parentCategoryId": "string",
"categoryId": "string",
"categoryName": "string"
}
],
"fail": [
{
"parentCategoryId": "string",
"categoryName": "string",
"message": "string"
}
]
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
HTTP Request
POST /front/category/product
Request body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| categories | array | true | None | 등록할 카테고리 리스트 |
categories Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| parentCategoryId | string | true | None | 상위 카테고리 Id |
| categoryName | string | true | None | 카테고리 이름 |
상품 카테고리 조회
sauceFlex 에 상품 카테고리를 조회 한다.
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {categoryId} 카테고리 Id
curl -X GET "${server}/front/category/product?categoryId=${categoryId}" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616311462219,
"message": "성공하였습니다.",
"response": {
"count": 200,
"items": [
{
"categoryName": "여성의류",
"categoryId": "CAT1"
},
{
"categoryName": "남성의류",
"categoryId": "CAT2"
}
]
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
카테고리를 조회 한다. categoryId를 입력안하면 1 Depth 카테고리를 조회 한다.
HTTP Request
GET /front/category/product?categoryId={categoryId}
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| categoryId | string | false | None | 상품 카테고리 Id |
상품 카테고리 수정
sauceFlex 에 상품 카테고리를 수정 한다. 최대 50개까지 한번에 수정 가능.
# {server} 서버 endpoin개
# {accessToken} 발급 받은 accessToken
# {parentCategoryId} 상위 카테고리 Id
# {categoryName} 카테고리 이름
curl -X POST "${server}/front/category/product" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}" -H "Content-Type: application/json" -d "{\"categories\":[{\"parentCategoryId\":${parentCategoryId},\"categoryId\":${categoryId},\"categoryName\":${categoryName}}]}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616311462219,
"message": "성공하였습니다.",
"response": {
"success": [
{
"parentCategoryId": "string",
"categoryId": "string",
"categoryName": "string"
}
],
"fail": [
{
"parentCategoryId": "string",
"categoryId": "string",
"categoryName": "string",
"message": "string"
}
]
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
HTTP Request
PATCH /front/category/product
Request body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| categories | array | true | None | 수정할 카테고리 리스트 |
categories Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| parentCategoryId | string | true | None | 상위 카테고리 Id |
| categoryId | string | true | None | 카테고리 Id |
| categoryName | string | true | None | 카테고리 이름 |
상품 카테고리 삭제
sauceFlex 에 상품 카테고리를 삭제 한다. 최대 50개까지 한번에 삭제 가능.
# {server} 서버 endpoin제
# {accessToken} 발급 받은 accessToken
# {parentCategoryId} 상위 카테고리 Id
curl -X POST "${server}/front/category/product" -H "accept: application/json" -H "X-SauceFlex-Authorize: ${accessToken}" -H "Content-Type: application/json" -d "{\"categories\":[{\"parentCategoryId\":${parentCategoryId},\"categoryId\":${categoryId}]}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1616311462219,
"message": "성공하였습니다.",
"response": {
"success": [
{
"parentCategoryId": "string",
"categoryId": "string"
}
],
"fail": [
{
"parentCategoryId": "string",
"categoryId": "string",
"message": "string"
}
]
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다.",
"response": {
"validError": ["'some-key' is not allowed"]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다."
}
Response Code 500:
{
"code": "some-code",
"message": "some-message"
}
HTTP Request
PATCH /front/category/product
Request body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| categories | array | true | None | 삭제할 카테고리 리스트 |
categories Object
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| parentCategoryId | string | true | None | 상위 카테고리 Id |
| categoryId | string | true | None | 카테고리 Id |
통계 데이터 조회
라이브 방송 및 VOD로 전환된 방송에서 집계된 이벤트 데이터 수치를 조회 한다.
방송별 이벤트 총계 수치 조회
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {partnerId} 발급 받은 파트너 ID
# {broadcastId} 방송 공유 ID
# {tzo} 지역 표준시 (한국: -540)
# {searchStartDt} 조회 시작 일시
# {searchEndDt} 조회 종료 일시
# {broadcastTypeCode} 방송 유형 (live|vod)
curl -X GET \
"${server}/front/analysis/broadcast/${partnerId}/${broadcastId}" \
-H "accept: application/json" \
-H "X-SauceFlex-Authorize: ${accessToken}" \
-H "Content-Type: application/json" \
-d "{\"tzo\":${tzo},\"searchStartDt\":${searchStartDt},\"searchEndDt\":${searchEndDt},\"broadcastTypeCode\":${broadcastTypeCode}}"
예시)\
curl -X GET \
"https://api.sauceflex.com/V1/front/analysis/broadcast/mobidoo/lkmobidoo-afbcddbcba534d3683774497333251bb"\
-H "accept: application/json" \
-H "X-SauceFlex-Authorize: \"12341234\"" \
-H "Content-Type: application/json" \
-d "{\"tzo\"=\"-540\",\"searchStartDt\"=\"2022-08-08T17:54:40\",\"searchEndDt\"=\"2022-08-08T19:04:08\",\"broadcastTypeCode\"=\"live\"}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1664539088628,
"message": "성공하였습니다.",
"response": {
"chatCount": 218,
"orderCount": 0,
"playTime": 550830,
"likeCount": 1381,
"uniqueVisitor": 12186,
"productClickCount": 351,
"pageView": 14116,
"avgPlayTime": 45.2,
"avgProductClickCount": 0.03,
"age": {
"10": {
"uniqueVisitor": 1,
"pageView": 2
},
"20": {
"uniqueVisitor": 5,
"pageView": 6
},
"30": {
"uniqueVisitor": 7,
"pageView": 23
},
"40": {
"uniqueVisitor": 6,
"pageView": 10
},
"50": {
"uniqueVisitor": 2,
"pageView": 2
},
"gte60": {
"uniqueVisitor": 0,
"pageView": 0
},
"etc": {
"uniqueVisitor": 12160,
"pageView": 14039
}
}
}
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다",
"response": {
"validError": [
"'some-key' is not allowed"
]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다"
}
Response Code 500:
{
"code": "some-code",
"message": "내부 서버 오류"
}
방송별 이벤트 총계 수치를 조회한다.
HTTP Request
GET /front/analysis/broadcast/{partnerId}/{broadcastId}
Request Body Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| partnerId | string | true | None | 발급 받은 파트너 ID |
| broadcastId | string | true | None | 방송 고유 ID |
| tzo | number | true | None | 지역 표준시 (한국: -540) |
| searchStartDt | string | true | None | 조회 시작일시 |
| searchEndDt | string | true | None | 조회 종료일시 |
| broadcastTypeCode | string | false | None | 방송 유형 (live, vod) |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| chatCount | number | true | None | 채팅 수 |
| orderCount | number | true | None | 주문 수량 |
| playTime | number | true | None | 총 시청시간 (단위: 초) |
| likeCount | number | true | None | 좋아요 수 |
| uniqueVisitor | number | true | None | 순 시청자 수 |
| productClickCount | number | true | None | 상품클릭 수 |
| pageView | number | true | None | 조회수 |
| avgPlayTime | number | true | None | 평균 시청시간 (분모: 순 시청자 수, 단위: 초) |
| avgProductClickCount | number | true | None | 평균 상품클릭 수 (분모: 순 시청자 수) |
방송별 이벤트 시계열 단위 총계 수치 조회
# {server} 서버 endpoint
# {accessToken} 발급 받은 accessToken
# {partnerId} 발급 받은 파트너 ID
# {broadcastId} 방송 공유 ID
# {tzo} 지역 표준시 (한국: -540)
# {searchStartDt} 조회 시작 일시
# {searchEndDt} 조회 종료 일시
# {interval} 시계열 구간 단위 (1m, 10m, 1h)
# {broadcastTypeCode} 방송 유형 (live|vod)
curl -X GET \
"${server}/front/analysis/broadcast/${partnerId}/${broadcastId}/timeSeries" \
-H "accept: application/json" \
-H "X-SauceFlex-Authorize: ${accessToken}" \
-H "Content-Type: application/json" \
-d "{\"tzo\":${tzo},\"searchStartDt\":${searchStartDt},\"searchEndDt\":${searchEndDt},\"interval\":${interval}},\"broadcastTypeCode\":${broadcastTypeCode}}"
예시)\
curl -X GET \
"https://api.sauceflex.com/V1/front/analysis/broadcast/mobidoo/lkmobidoo-afbcddbcba534d3683774497333251bb/timeSeries"\
-H "accept: application/json" \
-H "X-SauceFlex-Authorize: \"12341234\"" \
-H "Content-Type: application/json" \
-d "{\"tzo\"=\"-540\",\"searchStartDt\"=\"2022-08-08T17:54:40\",\"searchEndDt\"=\"2022-08-08T19:04:08\",\"interval\"=\"10m\",\"broadcastTypeCode\"=\"live\"}"
Response Code 200:
{
"code": "SU0000",
"timestamp": 1664540440875,
"message": "성공하였습니다.",
"response": [
{
"date": "2022-08-08 17:50:00",
"chatCount": 1,
"orderCount": 0,
"likeCount": 0,
"uniqueVisitor": 27,
"productClickCount": 3,
"pageView": 33
},
{
"date": "2022-08-08 18:00:00",
"chatCount": 33,
"orderCount": 0,
"likeCount": 378,
"uniqueVisitor": 4622,
"productClickCount": 98,
"pageView": 5198
},
{
"date": "2022-08-08 18:10:00",
"chatCount": 37,
"orderCount": 0,
"likeCount": 873,
"uniqueVisitor": 4170,
"productClickCount": 132,
"pageView": 4604
},
{
"date": "2022-08-08 18:20:00",
"chatCount": 57,
"orderCount": 0,
"likeCount": 108,
"uniqueVisitor": 1488,
"productClickCount": 47,
"pageView": 1585
},
{
"date": "2022-08-08 18:30:00",
"chatCount": 33,
"orderCount": 0,
"likeCount": 2,
"uniqueVisitor": 975,
"productClickCount": 27,
"pageView": 1040
},
{
"date": "2022-08-08 18:40:00",
"chatCount": 27,
"orderCount": 0,
"likeCount": 6,
"uniqueVisitor": 761,
"productClickCount": 13,
"pageView": 825
},
{
"date": "2022-08-08 18:50:00",
"chatCount": 19,
"orderCount": 0,
"likeCount": 11,
"uniqueVisitor": 546,
"productClickCount": 21,
"pageView": 578
},
{
"date": "2022-08-08 19:00:00",
"chatCount": 11,
"orderCount": 0,
"likeCount": 3,
"uniqueVisitor": 248,
"productClickCount": 10,
"pageView": 253
}
]
}
Response Code 400:
{
"code": "FA1010",
"message": "파라미터가 잘못되었습니다",
"response": {
"validError": [
"'some-key' is not allowed"
]
}
}
Response Code 401:
{
"code": "FA1008",
"message": "권한이 없습니다"
}
Response Code 500:
{
"code": "some-code",
"message": "내부 서버 오류"
}
방송별 이벤트 시계열 단위 총계 수치를 조회한다.
HTTP Request
GET /front/analysis/broadcast/{partnerId}/{broadcastId}/timeSeries
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| partnerId | string | true | None | 발급 받은 파트너 ID |
| broadcastId | string | true | None | 방송 고유 ID |
| tzo | number | true | None | 지역 표준시 (한국: -540) |
| searchStartDt | string | true | None | 조회 시작일시 |
| searchEndDt | string | true | None | 조회 종료일시 |
| interval | string | true | None | 시계열 구간 단위 (1m, 10m, 1h) |
| broadcastTypeCode | string | false | None | 방송 유형 (live, vod) |
Response Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| chatCount | number | true | None | 채팅 수 |
| orderCount | number | true | None | 주문 수량 |
| likeCount | number | true | None | 좋아요 수 |
| uniqueVisitor | number | true | None | 순 시청자 수 |
| productClickCount | number | true | None | 상품클릭 수 |
| pageView | number | true | None | 조회수 |
broadcastStateCode
방송 조회 broadcastStateCode:
| Code | Meaning |
|---|---|
| accepted | 방송 수락 |
| standby | 방송 대기 |
| ready | 방송 준비완료 |
| onair | 방송중 |
| vod | vod 전환 완료 |
| error | 장애 발생 |
| warning | 방송중 연결 끊김 |
| converting | vod로 변환중 |
| rehearsal | 리허설준비 |
| rehearsalonair | 리허설중 |
| cancel | 방송 취소 |
priceTypeCode
priceTypeCode:
| Code | Meaning |
|---|---|
| basic | 일반 |
| text | 텍스트 |
| hide | 미표시 |
discountTypeCode
discountTypeCode:
| Code | Meaning |
|---|---|
| rate | 할인율 |
| none | 없음 |
Errors
Response code:
| Code | Meaning |
|---|---|
| MSG_SU0000 | 성공하였습니다. |
| MSG_FA1000 | 존재하지 않는 계정입니다. |
| MSG_FA1001 | 상위 역할의 계정은 생성할 수 없습니다. |
| MSG_FA1002 | 존재하지 않는 서비스 관리자입니다. |
| MSG_FA1003 | 존재하지 않는 서비스 매니저입니다. |
| MSG_FA1004 | 존재하지 않는 역할입니다. |
| MSG_FA1005 | 중복된 아이디입니다. |
| MSG_FA1006 | 계정 정보가 일치하지 않습니다. |
| MSG_FA1007 | 유효하지 않은 토큰입니다. |
| MSG_FA1008 | 만료된 토큰입니다. |
| MSG_FA1009 | 권한이 없습니다. |
| MSG_FA1010 | 파라미터가 잘못되었습니다. |
| MSG_FA1011 | 서버 내부 에러가 발생하였습니다. |
| MSG_FA1012 | 존재하지 않는 파트너입니다. |
| MSG_FA1013 | 존재하지 않는 인코딩입니다. |
| MSG_FA1014 | 중복된 파트너 아이디입니다. |
| MSG_FA1015 | 잘못된 파트너 아이디 or 사용자 아이디입니다. |
| MSG_FA1016 | 중복된 크리에이터 아이디입니다. |
| MSG_FA1017 | 잘못된 크리에이터 아이디입니다. |
| MSG_FA1018 | 잘못된 큐레이션 아이디입니다. |
| MSG_FA1019 | 저장에 실패하였습니다. |
| MSG_FA1020 | 잘못된 공지사항 아이디입니다. |
| MSG_FA1021 | 잘못된 FAQ 아이디입니다. |
| MSG_FA1022 | 잘못된 댓글 아이디입니다. |
| MSG_FA1023 | 댓글은 작성자만 수정이 가능합니다. |
| MSG_FA1024 | 잘못된 채팅신고 아이디 or 신고자 아이디입니다. |
| MSG_FA1025 | 동일한 상품이 이미 등록되어있습니다. |
| MSG_FA1026 | 등록되지 않은 상품입니다. |
| MSG_FA1027 | 등록되지 않은 주문콜백 아이디입니다. |
| MSG_FA1028 | 이미 사용된 주문 콜백 아이디입니다. |
| MSG_FA1029 | 주문 처리가 되지 않은 콜백 아이디입니다. |
| MSG_FA1030 | 존재하지 않는 시청자입니다. |
| MSG_FA1031 | 주문콜백아이디, 주문 아이디와 일치하는 이력이 없습니다. |
| MSG_FA1032 | 사용중지된 파트너입니다. |
| MSG_FA1033 | 사용중지된 계정입니다. |
| MSG_FA1034 | 삭제에 실패하였습니다. |
| MSG_FA1035 | 중복된 externalProductId 입니다. |
| MSG_FA1036 | 상품 썸네일 등록에 실패하였습니다. |
| MSG_FA1040 | 잘못된 쿠폰 아이디입니다. |
| MSG_FA1041 | 이미 발급된 쿠폰입니다. |
| MSG_FA1042 | 쿠폰 발급에 실패하였습니다. |
| MSG_FA1125 | 이미 삭제된 결제 내역입니다. |