Styling Recommendation API
API Endpoint
기본 API Endpoint는 아래와 같으며, 현재 최신 버전은 2022-08
입니다.
https://api.kr.omnicommerce.ai/2022-08/
스타일링 추천 API
GET /styling-recommend/<product id>: 상품 아이디에 어울리는 상품 추천
Request Header
Name | Required | Type | Description |
---|---|---|---|
X-Api-Key | 필수 | String | API Key (참조: API 인증 가이드) |
Request Parameter
추천 결과의 퀄리티를 위해 gender 정보 입력을 권창합니다. gender 정보가 입력으로 오지 않은 경우 성별 정보에 대한 구분 없이 상품을 추천합니다.
Name | Required | Type | Description |
---|---|---|---|
limit | 선택 | String | 추천 결과로 보여줄 상품의 최대 수량 (기본값: 3, 최대값: 10) |
showInfo | 선택 | List[String] | 추천 결과로 보여줄 부가 정보 선택 (복수 선택 가능) [METADATA, IMAGE_INFO, CONTEXT_INFO] |
gender | 선택 | String | 추천 결과로 보여줄 성별 (아래 항목 중 하나만 선택) [MALE, FEMALE, UNISEX] |
Request Example
Response
Name | Type | Description |
---|---|---|
id | String | 추천의 기준이 되는 상품의 아이디 |
limit | integer | 추천 결과 항목의 최대 수량 (1 ~ 10) |
gender | String | 추천 결과로 보여줄 성별 [MALE, FEMALE, UNISEX] 중 하나 |
showInfo | List[String] | 추천 결과로 보여줄 부가 정보 |
results | List[Object] | 추천 결과 항목 |
├ results[].order | integer | 추천 순서 : 스타일링 추천 적합성이 높은 순서 |
└ results[].recommendation | List[Recommendation] | 추천 결과 항목 (아래 표 참조) |
Recommendation
Name | Type | Description |
---|---|---|
id | String | 추천된 상품 아이디 |
detection | String | 추천된 상품의 Detection 정보 (참조: Detection Field) |
metadata | Object | 추천된 상품의 Meta 정보. showInfo 의 입력값으로 METADATA 가 있는 경우 상품 Metadata 형식의 데이터를 표시. 값이 없는 경우 Null (기본값) |
imageInfo | Object | 추천된 상품의 이미지 정보. showInfo 의 입력값으로 IMAGE_INFO가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값) |
└ imageInfo.url | String | 추천된 상품의 대표이미지 URL |
contextInfo | Object | 추천된 상품의 Context 정보. showInfo 의 입력값으로 CONTEXT_INFO 가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값) |
├ contextInfo.salesUrl | String | 추천된 상품의 판매 페이지 URL |
└ contextInfo.mobileSalesUrl | String | 추천된 상품의 모바일 버전 판매 페이지 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
아래와 같은 경우
- 0 개의 상품이 추천 된경우
- 상품이 존재하지 않은 경우
- 당일 신규로 등록한 상품으로 유사상품 추천을 요청하는 경우
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
Name | Required | Type | Description |
---|---|---|---|
X-Api-Key | 필수 | String | API Key (참조: API 인증 가이드) |
Content-Type | 필수 | String | 요청 Type. Application/json 만 지원합니다. |
Request Body
추천 결과의 퀄리티를 위해 gender 정보 입력을 권창합니다. gender 정보가 입력으로 오지 않은 경우 성별 정보에 대한 구분 없이 상품을 추천합니다.
Name | Required | Type | Description |
---|---|---|---|
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 | Type | Description |
---|---|---|
id | String | 추천의 기준이 되는 상품의 아이디 |
limit | integer | 추천 결과 항목의 최대 수량 (1 ~ 10) |
gender | String | 추천 결과로 보여줄 성별 [MALE, FEMALE, UNISEX] 중 하나 |
showInfo | List[String] | 추천 결과로 보여줄 부가 정보 |
results | List[Object] | 추천 결과 항목 |
├ results[].order | integer | 추천 순서 |
└ results[].recommendation | List[Recommendation] | 추천 결과 항목 (아래 표 참조) |
Recommendation
Name | Type | Description |
---|---|---|
id | String | 추천된 상품 아이디 |
detection | String | 추천된 상품의 Detection 정보 (참조: Detection Field) |
metadata | Object | 추천된 상품의 Meta 정보. showInfo 의 입력값으로 METADATA 가 있는 경우 상품 Metadata 형식의 데이터를 표시. 값이 없는 경우 Null (기본값) |
imageInfo | Object | 추천된 상품의 이미지 정보. showInfo 의 입력값으로 IMAGE_INFO가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값) |
└ imageInfo.url | String | 추천된 상품의 대표이미지 URL |
contextInfo | Object | 추천된 상품의 Context 정보. showInfo 의 입력값으로 CONTEXT_INFO 가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값) |
├ contextInfo.salesUrl | String | 추천된 상품의 판매 페이지 URL |
└ contextInfo.mobileSalesUrl | String | 추천된 상품의 모바일 버전 판매 페이지 URL |
Example Responses
400 Bad Request
잘못된 입력 format
{
"errors": "json format error."
}
Index가 준비되지 않아 상품 추천을 할 수 없는 경우.
Index 계산은 하루에 한 번(0시) 이루어집니다. 만약 Workspace에 상품 정보를 새로 입력한 경우 하루가 지난 이후부터 추천이 정상적으로 이루어집니다.
{
"errors": "No product id exists."
}
HTTP Status Code : 200
- 0 개의 상품이 추천 된경우
- 상품이 존재하지 않은 경우
- 당일 신규로 등록한 상품으로 유사상품 추천을 요청하는 경우
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",
}
}
]
}
]
}