NAV
shell javascript

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 기준으로 삭제 되며 등록시 사용한 orderIdpayCancelTime 값을 필수로 넣어주어야 한다.

# {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 이미 삭제된 결제 내역입니다.