본문으로 건너뛰기

Styling Recommendation API

API Endpoint

기본 API Endpoint는 아래와 같으며, 현재 최신 버전은 2022-08 입니다.

https://api.kr.omnicommerce.ai/2022-08/


스타일링 추천 API

GET /styling-recommend/<product id>: 상품 아이디에 어울리는 상품 추천

Request Header

NameRequiredTypeDescription
X-Api-Key필수StringAPI Key (참조: API 인증 가이드)

Request Parameter

주의

추천 결과의 퀄리티를 위해 gender 정보 입력을 권창합니다. gender 정보가 입력으로 오지 않은 경우 성별 정보에 대한 구분 없이 상품을 추천합니다.

NameRequiredTypeDescription
limit선택String추천 결과로 보여줄 상품의 최대 수량 (기본값: 3, 최대값: 10)
showInfo선택List[String]추천 결과로 보여줄 부가 정보 선택 (복수 선택 가능)
[METADATA, IMAGE_INFO, CONTEXT_INFO]
gender선택String추천 결과로 보여줄 성별 (아래 항목 중 하나만 선택)
[MALE, FEMALE, UNISEX]

Request Example

/styling-recommend/A1101?limit=500&showInfo=IMAGE_INFO&showInfo=METADATA&showInfo=CONTEXT_INFO&gender=FEMALE

Response

Name
TypeDescription
idString추천의 기준이 되는 상품의 아이디
limitinteger추천 결과 항목의 최대 수량 (1 ~ 10)
genderString추천 결과로 보여줄 성별
[MALE, FEMALE, UNISEX] 중 하나
showInfoList[String]추천 결과로 보여줄 부가 정보
resultsList[Object]추천 결과 항목
├ results[].orderinteger추천 순서 : 스타일링 추천 적합성이 높은 순서
└ results[].recommendationList[Recommendation]추천 결과 항목 (아래 표 참조)
Recommendation
Name
TypeDescription
idString추천된 상품 아이디
detectionString추천된 상품의 Detection 정보 (참조: Detection Field)
metadataObject추천된 상품의 Meta 정보. showInfo 의 입력값으로 METADATA 가 있는 경우 상품 Metadata 형식의 데이터를 표시.
값이 없는 경우 Null (기본값)
imageInfoObject추천된 상품의 이미지 정보. showInfo 의 입력값으로 IMAGE_INFO가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값)
└ imageInfo.urlString추천된 상품의 대표이미지 URL
contextInfoObject추천된 상품의 Context 정보. showInfo 의 입력값으로 CONTEXT_INFO가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값)
├ contextInfo.salesUrlString추천된 상품의 판매 페이지 URL
└ contextInfo.mobileSalesUrlString추천된 상품의 모바일 버전 판매 페이지 URL

Example Responses

400 Bad Request

잘못된 입력 format

{
"errors": "json format error."
}

400 Bad Request

Index가 준비되지 않아 상품 추천을 할 수 없는 경우.

주의

Index 계산은 하루에 한 번(0시) 이루어집니다. 만약 Workspace에 상품 정보를 새로 입력한 경우 하루가 지난 이후부터 추천이 정상적으로 이루어집니다.

{
"errors": "No product id exists."
}

HTTP Status Code : 200

아래와 같은 경우

  1. 0 개의 상품이 추천 된경우
  2. 상품이 존재하지 않은 경우
  3. 당일 신규로 등록한 상품으로 유사상품 추천을 요청하는 경우
주의

Index 계산은 하루에 한 번(0시) 이루어집니다. 당일에는 Index가 계산되지 않으므로 해당 상황에서는 추천 결과가 나오지 않습니다.

{
"id": "AT000123FB",
"limit": 10,
"showInfo": ["METADATA","IMAGE_INFO"],
"gener": "MALE",
"results": []
}

HTTP Status Code : 201

1 개 이상의 스타일이 추천된 경우

{
"id": "queryproduct""limit": 3,
"gender": "MALE",
"showInfo": [
"METADATA",
"IMAGE_INFO",
"CONTEXT_INFO"
],
"results": [
{
"order": 0,
"recommendation": [
{
"detection": "TOP",
"id": "a1",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"detection": "PANTS",
"id": "b1",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"detection": "BAG",
"id": "c1",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
}
]
},
{
"order": 1,
"recommendation": [
{
"detection": "BAG",
"id": "a2",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"detection": "BAG",
"id": "b2",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"detection": "BAG",
"id": "c2",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"order": 2,
"recommendation": [
{
"detection": "BAG",
"id": "a3",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"detection": "TOP",
"id": "b3",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"detection": "TOP",
"id": "c3",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
}
]
}
]
}

POST /styling-recommend/<product id>: 상품 아이디에 어울리는 상품 추천

Request Header

NameRequiredTypeDescription
X-Api-Key필수StringAPI Key (참조: API 인증 가이드)
Content-Type필수String요청 Type. Application/json 만 지원합니다.

Request Body

주의

추천 결과의 퀄리티를 위해 gender 정보 입력을 권창합니다. gender 정보가 입력으로 오지 않은 경우 성별 정보에 대한 구분 없이 상품을 추천합니다.

NameRequiredTypeDescription
limit선택String추천 결과로 보여줄 상품의 최대 수량 (기본값: 10, 최대값: 500)
showInfo선택List[String]추천 결과로 보여줄 부가 정보 선택 (복수 선택 가능)
[METADATA, IMAGE_INFO, CONTEXT_INFO]
gender선택String추천 결과로 보여줄 성별 (아래 항목 중 하나만 선택)
[MALE, FEMALE, UNISEX]

Request Example

#### Request Example

```json{
"id": "AT000123FB",
"limit": 500,
"gender": "UNISEX"
"showInfo": ["METADATA", "IMAGE_INFO", "CONTEXT_INFO"],
}

Response

Name
TypeDescription
idString추천의 기준이 되는 상품의 아이디
limitinteger추천 결과 항목의 최대 수량 (1 ~ 10)
genderString추천 결과로 보여줄 성별
[MALE, FEMALE, UNISEX] 중 하나
showInfoList[String]추천 결과로 보여줄 부가 정보
resultsList[Object]추천 결과 항목
├ results[].orderinteger추천 순서
└ results[].recommendationList[Recommendation]추천 결과 항목 (아래 표 참조)
Recommendation
Name
TypeDescription
idString추천된 상품 아이디
detectionString추천된 상품의 Detection 정보 (참조: Detection Field)
metadataObject추천된 상품의 Meta 정보. showInfo 의 입력값으로 METADATA 가 있는 경우 상품 Metadata 형식의 데이터를 표시.
값이 없는 경우 Null (기본값)
imageInfoObject추천된 상품의 이미지 정보. showInfo 의 입력값으로 IMAGE_INFO가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값)
└ imageInfo.urlString추천된 상품의 대표이미지 URL
contextInfoObject추천된 상품의 Context 정보. showInfo 의 입력값으로 CONTEXT_INFO가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값)
├ contextInfo.salesUrlString추천된 상품의 판매 페이지 URL
└ contextInfo.mobileSalesUrlString추천된 상품의 모바일 버전 판매 페이지 URL

Example Responses

400 Bad Request

잘못된 입력 format

{
"errors": "json format error."
}

Index가 준비되지 않아 상품 추천을 할 수 없는 경우.

주의

Index 계산은 하루에 한 번(0시) 이루어집니다. 만약 Workspace에 상품 정보를 새로 입력한 경우 하루가 지난 이후부터 추천이 정상적으로 이루어집니다.

{
"errors": "No product id exists."
}

HTTP Status Code : 200

  1. 0 개의 상품이 추천 된경우
  2. 상품이 존재하지 않은 경우
  3. 당일 신규로 등록한 상품으로 유사상품 추천을 요청하는 경우
주의

Index 계산은 하루에 한 번(0시) 이루어집니다. 당일에는 Index가 계산되지 않으므로 해당 상황에서는 추천 결과가 나오지 않습니다.

{
"id": "AT000123FB",
"limit": 10,
"showInfo": ["METADATA","IMAGE_INFO"],
"gener": "MALE",
"results": []
}

HTTP Status Code : 201

1 개 이상의 스타일이 추천된 경우

{
"id": "queryproduct""limit": 3,
"gender": "UNISEX",
"showInfo": [
"METADATA",
"IMAGE_INFO",
"CONTEXT_INFO"
],
"results": [
{
"order": 0,
"recommendation": [
{
"detection": "TOP",
"id": "a1",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"detection": "PANTS",
"id": "b1",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"detection": "BAG",
"id": "c1",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
"mobileSalesUrl": "https://www.example.com/p/example",

}
}
]
},
{
"order": 1,
"recommendation": [
{
"detection": "TOP",
"id": "a2",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"detection": "PANTS",
"id": "b2",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"detection": "TOP",
"id": "c2",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"order": 2,
"recommendation": [
{
"detection": "TOP",
"id": "a3",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"detection": "PANTS",
"id": "b3",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
},
{
"detection": "BAG",
"id": "c3",
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
,
"mobileSalesUrl": "https://www.example.com/p/example",

}
}
]
}
]
}