추천API 사용 가이드

추천API 사용 가이드

이 문서는 추천결과를 받아오는 Recobell Recommendation API의 사용법에 대해서 설명한다.


레코벨의 추천시스템 REST API를 이용하는 방법은 다음과 같다.

레코벨 추천시스템 REST API는 추천 타입에 따라서 요구하는 파라미터가 다르다. 추천 타입별 파라미터는 아래의  Parameter 표에서 확인 할 수 있다.

Recommendation Type

recType
targetTyperesultType
Description
비고
a001상품상품상품 연관 추천
a002상품상품상품 대체재 추천(같은 카테고리)
a003상품상품상품 보완재 추천(다른 카테고리)
a004상품상품상품 연관 추천 (같은 브랜드)
a101상품기획전상품 연관 기획전 추천
c001카테고리상품카테고리 베스트 추천(카테고리 이용)
c002카테고리상품카테고리 외 베스트 추천
b001브랜드브랜드브랜드 연관 추천 (브랜드추천)
b002브랜드브랜드(상품)브랜드 연관 추천(같은 카테고리)
b003브랜드브랜드(상품)브랜드 연관 추천 (다른 카테고리)
b004브랜드상품브랜드 베스트 추천
m001
상품사이트 베스트 추천
m002
상품사이트 클릭 베스트 추천
m003
상품사이트 구매 베스트 추천
m004
상품사이트 검색 베스트 추천
m005
상품사이트 신상품 베스트 추천
m006
검색어사이트 검색어 베스트 추천
m007
검색어사이트 외부유입 키워드 베스트 추천
m101
기획전사이트 기획전 베스트 추천
t001시간상품사이트 시간대별 베스트 추천
s001검색어상품검색어 연관 상품 추천
s101검색어기획전검색어 연관 기획전 추천
d001인구특성상품인구분포추천
p001pcid, (userId)상품최근클릭추천
p002pcid상품최근구매추천
p003pcid상품유저행동이력 기반 세그먼트 추천
p201userId상품최근클릭추천
p202userId상품최근구매추천
p101userId, pcid상품오프라인데이터 추천
p102userid기획전최근클릭기반 기획전추천
x

커스터마이징

RecType 은 계약에 따라서, 열려있지 않은 것들이 존재할 수 있다.

Parameter

O : 필수 , Δ : 옵션, X : 불필요

Parameter Name
Data Type
Description
Example
Default Value
recTypeNote

a001
a002
a003

m001
m002
m003
c001p001
p002
p003
s001
cuidStringclient의 cuidrbTest


OOOOO
formatStringjson, jsonp 반환 포맷 결정jsonp


OOOOO
sizeInteger (< 30)추천 결과 개수20


OOOOO
pcidStringCookie('RB_PCID')1468904633966396362nullp-series
XXXOX
userIdString

nullp101
XXXXX
iidsCSV String추천 대상 상품 아이디13225,1235,p123nulla-series최대 10개 상품까지 가능OXXXX
bidsCSV String추천 대상 브랜드 아이디1102, 13231,a111nullb-series
XXXXX
cidsCSV String

추천 대상 상품 카테고리(c001),

추천 결과 상품 카테고리(c001 제외)

01,c1null

ΔΔOΔΔ
cpcidsCSV String보완로직이 c001일 경우 기준 카테고리1231null

ΔXXΔΔ
exiidsCSV String추천 결과 제외 상품 아이디1212,1233null

ΔΔΔΔΔ
excidsCSV String추천 결과 제외 상품 카테고리02,x1null

ΔΔΔΔΔ
inbidsCSV String추천 결과 대상 상품 브랜드 아이디1001null

XXXXX
exbidsCSV String추천 결과 제외 상품 브랜드 아이디1004null

ΔΔΔΔΔ
datedatetime시간2015-06-25T05:43:18ZCurrentTimestampt001
XXXXX
rgInteger(<5)시간 범위20t001
XXXXX
cpsBoolean방어 로직 사용 유무falsetrue

ΔXΔΔΔ
cptString방어로직의 종류(m001~003, t001)t001m001

ΔXΔΔΔ
callbackStringjsonp의 callback parametercall1123null

ΔΔΔΔΔ
stString검색어 (searchTerm)원피스nulls-series
XXXXO
genderString성별Mnulld001
XXXXX
ageInt(20,30,40,50)나이20nulld001
XXXXX
minpint보여주고자하는 최저 가격1000null

ΔΔΔΔΔ
maxpint보여주고자하는 최고 가격2000null

ΔΔΔΔΔ
rndBoolean방어로직 Randomnesstruefalse

ΔΔΔΔΔ
channelString피씨 / 모바일 특화 로직일 경우pc, monull

ΔΔΔΔΔ

** s001 (검색추천) 의 경우에는 cps 의 기본값이 false 로 설정되어있음.

*** p101 (오프라인 데이터 추천) 의 경우에는 오프라인 데이터 연결을 위한 별도의 작업필요


PCID

레코벨이 유저를 구분하는 방법은 Cookie 에 임의의 String 을 발급하는 형식이며, 이 쿠키의 이름은 아래와 같다.

RB_PCID


REST API Url Pattern

REST API Url Pattern
http://rb-rec-api-apne1.recobell.io/rec/{recType}?cuid=...&format=...&size=...&iids=...&cids=...&exiids=...&excids=...&cps=...&callback=...&fields=...


Response Data Model

recType : a001, a002, a003 

Field NameData TypeDescriptionExample
recTypeString추천타입a001
iidsCSV String추천 대상 상품 아이디(최대 10개)123,12
cidsCSV String추천 대상 상품 카테고리01,03
exiidsCSV String추천 결과 제외 상품 아이디11,123
excidsCSV String추천 결과 제외 상품 카테고리01,c1
productsList<Product>추천 대상 상품 정보
{"itemId":"","itemName":"","itemImage":"","originalPrice":"","salePrice":"","category1":"","category2":"","category3":"","regDate":"","updateDate":"","expireDate":"","stock":"","state":"","description":"","extraImage":"","locale":""}
resultsList<RankedProduct>추천 결과 상품 정보
{"itemId":"","categoryId":"","rank":"","score":"","isCompensation":"","product":{"itemId":"","itemName":"","itemImage":"","originalPrice":"","salePrice":"","category1":"","category2":"","category3":"","regDate":"","updateDate":"","expireDate":"","stock":"","state":"","description":"","extraImage":"","locale":""}}




recType : c001

Field NameData TypeDescriptionExample
recTypeString추천타입c001
cidsCSV String추천 대상 상품 카테고리01,03
exiidsCSV String추천 결과 제외 상품 아이디11,123
excidsCSV String추천 결과 제외 상품 카테고리01,c1
resultsList<RankedProduct>추천 결과 상품 정보
{"itemId":"","categoryId":"","rank":"","score":"","isCompensation":"","product":{"itemId":"","itemName":"","itemImage":"","originalPrice":"","salePrice":"","category1":"","category2":"","category3":"","regDate":"","updateDate":"","expireDate":"","stock":"","state":"","description":"","extraImage":"","locale":""}}


recType : m001, m002, m003

Field NameData TypeDescriptionExample
recTypeString추천타입r001
exiidsCSV String추천 결과 제외 상품 아이디11,123
excidsCSV String추천 결과 제외 상품 카테고리01,c1
resultsList<RankedProduct>추천 결과 상품 정보
{"itemId":"","categoryId":"","rank":"","score":"","isCompensation":"","product":{"itemId":"","itemName":"","itemImage":"","originalPrice":"","salePrice":"","category1":"","category2":"","category3":"","regDate":"","updateDate":"","expireDate":"","stock":"","state":"","description":"","extraImage":"","locale":""}}

RankedProduct

Field NameData TypeDescriptionExample
indexInteger추천 결과 리스트 내 순위1
logicTypeString적용 된 추천타입a001, m001, a001-cps-b001, a002-rff-m001
itemIdString상품코드11
categoryIdString상품 카테고리123
rankInteger추천 결과 내 순위1
scoreDouble추천 결과 점수123.45
isCompensationBoolean방어 로직으로 나온 결과값인지 여부false
productProduct추천 결과 상품 정보
{"itemId":"","itemName":"","itemImage":"","originalPrice":"","salePrice":"","category1":"","category2":"","category3":"","regDate":"","updateDate":"","expireDate":"","stock":"","state":"","description":"","extraImage":"","locale":""}

Response Example

ex) recType=a001,format=json
{
	"recType": "a001",
	"iids": "123",
	"cids": "01",
	"exiids": "1234",
	"excids": "02",
	"products": [{
		"itemId": "123",
		"itemName": "testItem",
		"itemImage": "http://test.com",
		"originalPrice": 3500,
		"salePrice": 3500,
		"category1": "01",
		"category2": "101002",
		"category3": "101002100204",
		"regDate": null,
		"updateDate": null,
		"expireDate": null,
		"stock": 0,
		"state": null,
		"description": null,
		"extraImage": null,
		"locale": null
	}],
	"results": [{
		"itemId": "123456",
		"categoryId": "010101",
		"rank": 1,
		"score": 0.5,
		"isCompensation": false,
		"product": {
			"itemId": "123456",
			"itemName": "resultItem1",
			"itemImage": "http://itemImage1.com",
			"originalPrice": 12000,
			"salePrice": 12000,
			"category1": "01",
			"category2": "010101",
			"category3": "010101010101",
			"regDate": null,
			"updateDate": null,
			"expireDate": null,
			"stock": 0,
			"state": null,
			"description": null,
			"extraImage": null,
			"locale": null
		}
	}, {
		"itemId": "12345678",
		"categoryId": "010101010101",
		"rank": 2,
		"score": 0.3,
		"isCompensation": false,
		"product": {
			"itemId": "12345678",
			"itemName": "resultItem2",
			"itemImage": "http://itemImage2.com",
			"originalPrice": 1234,
			"salePrice": 120,
			"category1": "01",
			"category2": "010101",
			"category3": "010101010101",
			"regDate": null,
			"updateDate": null,
			"expireDate": null,
			"stock": 0,
			"state": null,
			"description": null,
			"extraImage": null,
			"locale": null
		}
	}]
}
ex) recType=m001,format=jsonp
callbackexample(
{
	"recType": "m001",
	"iids": null,
	"exiids": "1234",
	"excids": "02",
	"results": [
		{
			"itemId": "123456",
			"categoryId": "010101",
			"rank": 1,
			"score": 0.5,
			"isCompensation": false,
			"product": {
				"itemId": "123456",
				"itemName": "resultItem1",
				"itemImage": "http://itemImage1.com",
				"originalPrice": 12000,
				"salePrice": 12000,
				"category1": "01",
				"category2": "010101",
				"category3": "010101010101",
				"regDate": null,
				"updateDate": null,
				"expireDate": null,
				"stock": 0,
				"state": null,
				"description": null,
				"extraImage": null,
				"locale": null,
			}
		},
		{
			"itemId": "12345678",
			"categoryId": "010101",
			"rank": 2,
			"score": 0.3,
			"isCompensation": false,
			"product": {
				"itemId": "12345678",
				"itemName": "resultItem2",
				"itemImage": "http://itemImage2.com",
				"originalPrice": 1234,
				"salePrice": 120,
				"category1": "01",
				"category2": "010101",
				"category3": "010101010101",
				"regDate": null,
				"updateDate": null,
				"expireDate": null,
				"stock": 0,
				"state": null,
				"description": null,
				"extraImage": null,
				"locale": null,
			}
		}
	]
}
)


레코벨 Logger 에 정보를 전달하는 방법

추천영역이 삽입되고, 그 추천영역에서의 기여도를 레코벨 Logger 에서 보고싶다면 아래와 같은 parameter 를 상품상세로 가는 href 에 추가하면 된다.

<a href="상품링크?a=b&rccode={parameter value}">link</a>

parameter value 는 자유롭게 가능하다. 예를 들면 아래와 같은 값들을 가진다.

rccode=recobell_pc_detail

rccode=pc_main_rec1

레코벨 API 서버의 도메인 및 대역폭

위에 있는 것처럼 레코벨 API 서버는

rb-rec-apne1.recobell.io

도메인을 가지고 있다.

이에 할당된 IP 는 Amazon Elastic LoadBalancer 의 특성상 유동적이며 변화할 수 있다.

따라서 outbound Firewall 을 이용할 시에는 도메인을 이용하여야한다.