본문으로 건너뛰기

Camera Search API

API Endpoint

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

  • https://api.kr.omnicommerce.ai/2022-08/
  • https://api.kr.omnicommerce.ai/2023-02/

새로운 검색

POST /similar-items/search: 새로운 검색

이미지를 url 또는 Base64 형식으로 업로드하여 새로운 검색을 요청합니다.

Request Header

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

Request Body

주의

transactionId는 내부적으로 Unique Key로 처리되며 API 호출시 URL Path Parameter의 형태로도 사용됩니다. 이에 따라 [RFC3986]기준 URL Unsafe Characters 는 사용이 제한됩니다. <space> / % < > [ ] { } | \ ^

Name
RequiredTypeDescription
image필수Object검색을 요청할 이미지에 대한 정보를 가지는 객체
├ image.type필수Stringurl 또는 base64 중 선택
└ image.content필수Stringimage.type이 url 인 경우: 검색 요청 이미지의 url
image.type이 base64인 경우: base64로 인코딩 된 검색 요청 이미지 파일 (참조: Image Guide)
transactionId선택String재검색을 위한 요청 Id. 값이 없을 경우 임의의 값을 지정하여 할당.
limit선택String추천 결과로 보여줄 상품의 최대 수량 (기본값: 10, 최대값: 100)
showInfo선택List[String]추천 결과로 보여줄 부가 정보 선택 (복수 선택 가능)
[METADATA, IMAGE_INFO, CONTEXT_INFO]
metadataFilterObjectMetadata Filter Query (참조: Metadata Filter)

Request Example

Base64 이미지 검색 예시

{
"image": {
"type": "base64",
"content": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQYV2Poi5b8DwAEfwICWoNPegAAAABJRU5ErkJggg=="
},
"transactionId": "A14425770",
"showInfo" : ["METADATA", "IMAGE_INFO", "CONTEXT_INFO"]
}

Url 이미지 검색 예시

{
"image": {
"type": "url",
"content": "http://imageserver.net/some/image.jpeg"
},
"transactionId": "A14425770",
"showInfo": ["METADATA", "IMAGE_INFO", "CONTEXT_INFO"]
}

filter 적용 예시

{
"image": {
"type": "url",
"content": "http://imageserver.net/some/image.jpeg"
},
"transactionId": "A14425770",
"limit": 100,
"showInfo": ["METADATA", "IMAGE_INFO", "CONTEXT_INFO"],
"metadataFilter" : {
"productName": {
"eq": "skirt"
}
}
}

Response

Name
TypeDescription
transactionIdString재검색을 위한 요청 Id. 값이 없을 경우 임의의 값을 지정하여 할당.
limitinteger추천 결과로 보여줄 상품의 최대 수량
expirationDateString결과 만료 시간 (isoformat, UTC)
showInfoList[String]추천 결과로 보여줄 부가 정보
metadataFilterObjectMetadata Filter Query (참조: Metadata Filter)
resultsList[Object]검색 요청 이미지에서 검출된 상품 및 추천 정보
├ results[].objectObject요청 이미지에서 검출된 object 에 대한 정보
ㅤ├ results[].object.idString검색 요청 이미지에서 검출된 상품에 대한 고유 id
ㅤ├ results[].object.detectionString모델이 예측한 Detection Category 정보 (참조: [Detection 정보])
ㅤ└ results[].object.positionObject검출된 상품의 중심 위치. 이미지 내에서의 중심 위치를 0~1 사이의 값을 가진 상대좌표로 나타냄
ㅤㅤ├ results[].object.position.xNumber상품의 중심 위치의 x축 좌표
ㅤㅤ└ results[].object.position.yNumber상품의 중심 위치의 y축 좌표
└ results[].recommendationList[Recommendation]검출된 상품을 중심으로 한 추천 목록 (아래 표 참조)
추천 결과 항목
Name
TypeDescription
orderInteger유사도 순으로 정렬된 순서 (0부터 시작)
idString추천된 상품 아이디
similarityScorefloat0~1 사이 ,값을 기준으로 높을수록 유사도가 높은 형태 [해당 항목은 2023-02 version 에서만 제공됩니다.]
metadataObject추천된 상품의 Meta 정보. showInfo 의 입력값으로 METADATA 가 있는 경우 [상품 Meta정보] 형식의 데이터를 표시. 값이 없는 경우 null (기본값)
imageInfoObject추천된 상품의 이미지 정보. showInfo 의 입력값으로 IMAGE_INFO가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값)
├ imageInfo.detectionString추천된 상품의 Detection 정보 (참조: [Detection 정보])
└ imageInfo.urlString추천된 상품의 대표이미지 URL
contextInfoObject추천된 상품의 Context 정보. showInfo 의 입력값으로 CONTEXT_INFO가 있는 경우 값을 표시. 값이 없는 경우 null (기본값)
├ contextInfo.salesUrlString추천된 상품의 판매 페이지 URL
└ contextInfo.mobileSalesUrlString추천된 상품의 모바일 버전 판매 페이지 URL

Response Example

400 Bad Request

잘못된 입력 Format

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

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

주의

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

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

HTTP Status Code : 200

아래와 같은 경우

  1. 이미지로부터 어떠한 상품도 검출되지 않은 경우
  2. 상품이 존재하지 않는 경우
{
"transactionId": "b3057c85-676d-4dec-9b45-d2eec1594df8",
"limit": 10,
"expirationDate": "2022-09-20T00:05:23",
"metadataFilter" : {
"productName": {"eq": "skirt"}
},
"showInfo": [
"METADATA",
"IMAGE_INFO",
"CONTEXT_INFO"
],
"results": []
}

3개의 상품을 검출했지만 검출된 3개의 상품 모두 추천 결과가 없는 경우

펼쳐서 보기

{
"transactionId": "b3057c85-676d-4dec-9b45-d2eec1594df8",
"limit": 10,
"showInfo": [
"METADATA",
"IMAGE_INFO",
"CONTEXT_INFO"
],
"expirationDate": "2022-09-20T00:05:23",
"metadataFilter" : {"productName": {"eq": "skirt"}},
"results": [
{
"object": {
"id": "0",
"detection": "TOP",
"position": {
"x": 0.36875,
"y": 0.46640627500000004
}
},
"recommendation": []
},
{
"object": {
"id": "1",
"detection": "BAG",
"position": {
"x": 0.36875,
"y": 0.46640627500000004
}
},
"recommendation": []
},
{
"object": {
"id": "2",
"detection": "SHOES",
"position": {
"x": 0.36875,
"y": 0.46640627500000004
}
},
"recommendation": []
}
]
}

HTTP Status Code : 201

3개의 상품이 검출되었고, 검출된 상품 중 하나 이상의 추천 결과가 있는 경우

펼쳐서 보기

{
"transactionId": "b3057c85-676d-4dec-9b45-d2eec1594df8",
"limit": 10,
"showInfo": [
"METADATA",
"IMAGE_INFO",
"CONTEXT_INFO"
],
"expirationDate": "2022-09-20T00:05:23",
"metadataFilter" : {"productName": {"eq": "skirt"}},
"results": [
{
"object": {
"id": "0",
"detection": "TOP",
"position": {
"x": 0.36875,
"y": 0.46640627500000004
}
},
"recommendation": []
},
{
"object": {
"id": "1",
"detection": "BAG",
"position": {
"x": 0.36875,
"y": 0.46640627500000004
}
},
"recommendation": [
{
"order": 0,
"id": "66ff313a806eddfe0ffd8276d670131a",
"similarityScore": 0.99,
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"detection": "TOP",
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",,
"mobileSalesUrl": "https://www.example.com/p/example",
}
},
{
"order": 1,
"id": "98deb22e5caf6239fcf7191e09630fa9",
"similarityScore": 0.98,
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"detection": "TOP",
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",,
"mobileSalesUrl": "http://imageserverurl/some.image.jpg"
}
},
{
"order": 2,
"id": "df8335f51c53addbe3d4eee529eac8fb",
"similarityScore": 0.97,
"metadata": {
"name": "d",
"price": 400
},
"imageInfo": {
"detection": "TOP",
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "https://www.example.com/p/example",
"mobileSalesUrl": "http://imageserverurl/m/example"
}
}
]
},
{
"object": {
"id": "2",
"detection": "SHOES",
"position": {
"x": 0.36875,
"y": 0.46640627500000004
}
},
"recommendation": []
}
]
}


결과 내 재검색

요청 이미지를 새롭게 업로드하지 않고 POST /similar-items/search: 새로운 검색 의 Response로 받은 Transaction ID와 Object ID 에 해당하는 검색 결과를 가져옵니다. 새로운 검색과 다르게 빠르게 응답을 받을 수 있고 Metadata 기준으로 추천 결과 값을 Filtering 할 수 있습니다.

정보

결과 내 재검색 결과는 일정 시간이 지나면 만료가 됩니다. 만료 시각은 Response 값의 expirationDate Field 를 통해 확인할 수 있으며, 만료가 된 결과를 요청하면 400 Bad Request 를 리턴합니다.

Transaction ID와 Object ID 에 해당하는 검색 결과를 가져옵니다.

Request Header

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

Path Parameter

NameRequiredTypeDescription
transaction id필수String새로운 검색 API 호출 시 응답으로 받은 요청 id
object id필수String새로운 검색 API 호출 시 검출된 상품에 대한 고유 id (results[].id)

Request Parameter

NameRequiredTypeDescription
limit선택String추천 결과로 보여줄 상품의 최대 수량 (기본값: 10, 최대값: 500)
showInfo선택List[String]추천 결과로 보여줄 부가 정보 선택 (복수 선택 가능)
[METADATA, IMAGE_INFO, CONTEXT_INFO]
metadataFilter선택StringMetadata Filter Query (참조: Metadata Filter)

Request Example

1. metadata, imageInfo, contextInfo 정보를 모두 포함하여 최대 100개 까지의 추천 결과를 받고자 하는 경우
GET /similar-items/search/b3057c85-676d-4dec-9b45-d2eec1594df8/0/?limit=100&showInfo=IMAGE_INFO&showInfo=METADATA&showInfo=CONTEXT_INFO
2. metadata, contextInfo 정보만 포함하고, 최대 100개 까지의 추천 결과를 받으며, 추천결과 각 상품의 metadata 의 name 은 skirt 인 경우
GET /similar-items/search/b3057c85-676d-4dec-9b45-d2eec1594df8/0/?limit=100&showInfo=METADATA&showInfo=CONTEXT_INFO&metadataFilter.name.eq=skirt
3. contextInfo 정보만 포함하고, 최대 500개 까지의 추천 결과를 받으며, 추천결과 각 상품의 metadata 의 name 은 skirt 이며 각 상품의 item 은 cardigun 인 경우
GET /similar-items/search/b3057c85-676d-4dec-9b45-d2eec1594df8/0/?limit=500&showInfo=CONTEXT_INFO&metadataFilter.name.eq=skirt

Response

Name
TypeDescription
transactionIdString새로운 검색 API 호출 시 응답으로 받은 요청 id
limitinteger추천 결과로 보여줄 상품의 최대 수량
expirationDateString결과 만료 시간 (isoformat, UTC)
showInfoList[String]추천 결과로 보여줄 부가 정보
metadataFilterObjectMetadata Filter Query (참조: Metadata Filter)
objectObject검색 요청 이미지에서 검출된 상품 정보
├ object.idString검색 요청 이미지에서 검출된 상품에 대한 고유 id
├ object.detectionString모델이 예측한 Detection Category 정보 (참조: [Detection 정보])
└ object.positionObject검출된 상품의 중심 위치. 이미지 내에서의 중심 위치를 0~1 사이의 값을 가진 상대좌표로 나타냄
ㅤ├ object.position.xNumber상품의 중심 위치의 x축 좌표
ㅤ└ object.position.yNumber상품의 중심 위치의 y축 좌표
recommendationList[Recommendation]추천 결과 항목 (아래 표 참조)
Recommendation
Name
TypeDescription
orderInteger유사도 순으로 정렬된 순서 (0부터 시작)
idString추천된 상품 아이디
similarityScorefloat0~1 사이 ,값을 기준으로 높을수록 유사도가 높은 형태 [해당 항목은 2023-02 version 에서만 제공됩니다.]
metadataObject추천된 상품의 Meta 정보. showInfo 의 입력값으로 METADATA 가 있는 경우 상품 Metadata 형식의 데이터를 표시.
값이 없는 경우 Null (기본값)
imageInfoObject추천된 상품의 이미지 정보. showInfo 의 입력값으로 IMAGE_INFO가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값)
├ imageInfo.detectionString추천된 상품의 Detection 정보
└ imageInfo.urlString추천된 상품의 대표이미지 URL
contextInfoObject추천된 상품의 Context 정보. showInfo 의 입력값으로 CONTEXT_INFO가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값)
├ contextInfo.salesUrlString추천된 상품의 판매 페이지 URL
└ contextInfo.mobileSalesUrlString추천된 상품의 모바일 버전 판매 페이지 URL

Example Responses

HTTP Status Code: 400 Bad Request

결과가 존재하지 않거나 만료된 경우

{
"errors": "Transaction 'b3057c85-676d-4dec-9b45-d2eec1594df8' not exist or expired"
}

HTTP Status Code : 200

이미지로부터 어떠한 상품도 검출되지 않은 경우

{
"transactionId": "b3057c85-676d-4dec-9b45-d2eec1594df8",
"limit": 10,
"expirationDate": "2022-09-20T00:05:23",
"showInfo": ["METADATA","IMAGE_INFO"],
"metadataFilter": {
"productName": {
"eq": "skirt"
}
},
"object": {
"id": "0",
"detection": "TOP",
"position": {
"x": 0.36875,
"y": 0.46640627500000004
}
},
"recommendation": []
}

HTTP Status Code : 201

한 개 이상의 상품이 추천 된경우

펼쳐서 보기

{
"transactionId": "b3057c85-676d-4dec-9b45-d2eec1594df8",
"limit": 10,
"expirationDate": "2022-09-20T00:05:23",
"showInfo": [],
"metadataFilter": {
"productName": {
"eq": "skirt"
}
},
"object": {
"id": "0",
"detection": "TOP",
"position": {
"x": 0.36875,
"y": 0.46640627500000004
}
},
"recommendation": [
{
"order": 0,
"id": "AT000123FB",
"similarityScore": 0.99,
"metadata": null,
"imageInfo": null,
"contextInfo": null
},
{
"order": 1,
"id": "AT00158AE",
"similarityScore": 0.98,
"metadata": null,
"imageInfo": null,
"contextInfo": null
},
{
"order": 2,
"id": "F800158GA",
"similarityScore": 0.97,
"metadata": null,
"imageInfo": null,
"contextInfo": null
},
{
"order": 3,
"id": "AF10881GK",
"similarityScore": 0.96,
"metadata": null,
"imageInfo": null,
"contextInfo": null
}
]
}

Metadata 정보 포함, ImageInfo 정보, contextInfo 정보 포함

펼쳐서 보기

{
"transactionId": "b3057c85-676d-4dec-9b45-d2eec1594df8",
"limit": 10,
"expirationDate": "2022-09-20T00:05:23",
"showInfo": ["METADATA","IMAGE_INFO", "CONTEXT_INFO"],
"metadataFilter": {
"productName": {
"eq": "skirt"
}
},
"object": {
"id": "0",
"detection": "TOP",
"position": {
"x": 0.36875,
"y": 0.46640627500000004
}
},
"recommendation": [
{
"order": 0,
"id": "AT000123FB",
"similarityScore": 0.99,
"metadata": {
"productName": "a",
"originPrice": 100
},
"imageInfo": {
"detection": "TOP",
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "http://imageserverurl/some.image.jpg",
"mobileSalesUrl": "http://imageserverurl/some.image.jpg"
}
},
{
"order": 1,
"id": "AT00158AE",
"similarityScore": 0.98,
"metadata": {
"productName": "b",
"originPrice": 200
},
"imageInfo": {
"detection": "TOP",
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "http://imageserverurl/some.image.jpg",
"mobileSalesUrl": "http://imageserverurl/some.image.jpg"
}
},
{
"order": 2,
"id": "F800158GA",
"similarityScore": 0.97,
"metadata": {
"productName": "c",
"originPrice": 300
},
"imageInfo": {
"detection": "TOP",
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "http://imageserverurl/some.image.jpg",
"mobileSalesUrl": null
}
},
{
"order": 3,
"id": "AF10881GK",
"similarityScore": 0.96,
"metadata": {
"productName": "d",
"originPrice": 400
},
"imageInfo": {
"detection": "TOP",
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": null,
"mobileSalesUrl": "http://imageserverurl/some.image.jpg"
}
}
]
}

POST /similar-items/search/<transaction id>/<object id>: 결과 내 재검색

Transaction ID와 Object ID 에 해당하는 검색 결과를 가져옵니다.

Request Header

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

Path Parameter

NameRequiredTypeDescription
transaction id필수String새로운 검색 API 호출 시 응답으로 받은 요청 id
object id필수String새로운 검색 API 호출 시 검출된 상품에 대한 고유 id (results[].id)

Request Body

NameRequiredTypeDescription
limit선택String추천 결과로 보여줄 상품의 최대 수량 (기본값: 10, 최대값: 500)
showInfo선택List[String]추천 결과로 보여줄 부가 정보 선택 (복수 선택 가능)
[METADATA, IMAGE_INFO, CONTEXT_INFO]
metadataFilter선택StringMetadata Filter Query (참조: Metadata Filter)

Request Example

metadata, imageInfo, contextInfo 정보를 모두 포함하여 최대 100개 까지의 추천 결과를 받고자 하는 경우
POST /similar-items/search/b3057c85-676d-4dec-9b45-d2eec1594df8/0
{
"limit": 100,
"showInfo": ["METADATA", "IMAGE_INFO", "CONTEXT_INFO"],
}
metadata, contextInfo 정보만 포함하고, 최대 100개 까지의 추천 결과를 받으며, 추천결과 각 상품의 metadata 의 name 은 skirt 인 경우
POST /similar-items/search/b3057c85-676d-4dec-9b45-d2eec1594df8/0
{
"limit": 100,
"showInfo": ["METADATA", "CONTEXT_INFO"],
"metadataFilter" : {
"productName": {
"eq": "skirt"
}
}
}

Response

Name
TypeDescription
transactionIdString새로운 검색 API 호출 시 응답으로 받은 요청 id
limitinteger추천 결과로 보여줄 상품의 최대 수량
expirationDateString결과 만료 시간 (isoformat, UTC)
showInfoList[String]추천 결과로 보여줄 부가 정보
metadataFilterObjectMetadata Filter Query (참조: Metadata Filter)
objectObject검색 요청 이미지에서 검출된 상품 정보
├ object.idString검색 요청 이미지에서 검출된 상품에 대한 고유 id
├ object.detectionString모델이 예측한 Detection Category 정보 (참조: [Detection 정보])
└ object.positionObject검출된 상품의 중심 위치. 이미지 내에서의 중심 위치를 0~1 사이의 값을 가진 상대좌표로 나타냄
ㅤ├ object.position.xNumber상품의 중심 위치의 x축 좌표
ㅤ└ object.position.yNumber상품의 중심 위치의 y축 좌표
recommendationList[Recommendation]추천 결과 항목 (아래 표 참조)
Recommendation
Name
TypeDescription
orderInteger유사도 순으로 정렬된 순서 (0부터 시작)
idString추천된 상품 아이디
similarityScorefloat0~1 사이 ,값을 기준으로 높을수로 유사도가 높은 형태 [해당 항목은 2023-02 version 에서만 제공됩니다.]
metadataObject추천된 상품의 Meta 정보. showInfo 의 입력값으로 METADATA 가 있는 경우 상품 Metadata 형식의 데이터를 표시.
값이 없는 경우 Null (기본값)
imageInfoObject추천된 상품의 이미지 정보. showInfo 의 입력값으로 IMAGE_INFO가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값)
├ imageInfo.detectionString추천된 상품의 Detection 정보
└ imageInfo.urlString추천된 상품의 대표이미지 URL
contextInfoObject추천된 상품의 Context 정보. showInfo 의 입력값으로 CONTEXT_INFO가 있는 경우 값을 표시. 값이 없는 경우 Null (기본값)
├ contextInfo.salesUrlString추천된 상품의 판매 페이지 URL
└ contextInfo.mobileSalesUrlString추천된 상품의 모바일 버전 판매 페이지 URL

Example Responses

HTTP Status Code: 400 Bad Request

결과가 존재하지 않거나 만료된 경우

{
"errors": "Transaction 'b3057c85-676d-4dec-9b45-d2eec1594df8' not exist or expired"
}

HTTP Status Code : 200

이미지로부터 어떠한 상품도 검출되지 않은 경우

{
"transactionId": "b3057c85-676d-4dec-9b45-d2eec1594df8",
"limit": 10,
"showInfo": ["METADATA","IMAGE_INFO"],
"metadataFilter": {
"productName": {
"eq": "skirt"
}
},
"object": {
"id": "0",
"detection": "TOP",
"position": {
"x": 0.36875,
"y": 0.46640627500000004
}
},
"recommendation": []
}

HTTP Status Code : 201

한 개 이상의 상품이 추천 된경우

펼쳐서 보기

{
"transactionId": "b3057c85-676d-4dec-9b45-d2eec1594df8",
"limit": 10,
"expirationDate": "2022-09-20T00:05:23",
"showInfo": [],
"metadataFilter": {
"productName": {
"eq": "skirt"
}
},
"object": {
"id": "0",
"detection": "TOP",
"position": {
"x": 0.36875,
"y": 0.46640627500000004
}
},
"recommendation": [
{
"order": 0,
"id": "AT000123FB",
"similarityScore": 0.99,
"metadata": null,
"imageInfo": null,
"contextInfo": null
},
{
"order": 1,
"id": "AT00158AE",
"similarityScore": 0.98,
"metadata": null,
"imageInfo": null,
"contextInfo": null
},
{
"order": 2,
"id": "F800158GA",
"similarityScore": 0.97,
"metadata": null,
"imageInfo": null,
"contextInfo": null
},
{
"order": 3,
"id": "AF10881GK",
"similarityScore": 0.96,
"metadata": null,
"imageInfo": null,
"contextInfo": null
}
]
}

Metadata 정보 포함, ImageInfo 정보, contextInfo 정보 포함

펼쳐서 보기

{
"transactionId": "b3057c85-676d-4dec-9b45-d2eec1594df8",
"limit": 10,
"expirationDate": "2022-09-20T00:05:23",
"showInfo": ["METADATA","IMAGE_INFO", "CONTEXT_INFO"],
"metadataFilter": {
"productName": {
"eq": "skirt"
}
},
"object": {
"id": "0",
"detection": "TOP",
"position": {
"x": 0.36875,
"y": 0.46640627500000004
}
},
"recommendation": [
{
"order": 0,
"id": "AT000123FB",
"similarityScore": 0.99,
"metadata": {
"productName": "a",
"originPrice": 100
},
"imageInfo": {
"detection": "TOP",
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "http://imageserverurl/some.image.jpg",
"mobileSalesUrl": "http://imageserverurl/some.image.jpg"
}
},
{
"order": 1,
"id": "AT00158AE",
"similarityScore": 0.98,
"metadata": {
"productName": "b",
"originPrice": 200
},
"imageInfo": {
"detection": "TOP",
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "http://imageserverurl/some.image.jpg",
"mobileSalesUrl": "http://imageserverurl/some.image.jpg"
}
},
{
"order": 2,
"id": "F800158GA",
"similarityScore": 0.97,
"metadata": {
"productName": "c",
"originPrice": 300
},
"imageInfo": {
"detection": "TOP",
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": "http://imageserverurl/some.image.jpg",
"mobileSalesUrl": null
}
},
{
"order": 3,
"id": "AF10881GK",
"similarityScore": 0.96,
"metadata": {
"productName": "d",
"originPrice": 400
},
"imageInfo": {
"detection": "TOP",
"url": "http://imageserverurl/some.image.jpg"
},
"contextInfo": {
"salesUrl": null,
"mobileSalesUrl": "http://imageserverurl/some.image.jpg"
}
}
]
}