[API 도메인]
도메인 |
---|
https://api-aifashion.nhncloudservice.com |
[Header]
이름 | 값 | 설명 |
---|---|---|
Authorization | {secretKey} | 콘솔에서 발급 받은 보안 키 |
이름 | 필드명 |
---|---|
카테고리 1depth | category1Id |
카테고리 2depth | category2Id |
카테고리 3depth | category3Id |
필터 1 | s1 |
필터 2 | s2 |
filter.{필드명}
=연산자
:값
조건 | 연산자 | 예제 | 설명 |
---|---|---|---|
equal(default) | equal | filter.category2Id=1003,1005 or filter.category2Id=equal:1003 or filter.category2Id=equal:1003&filter.s1=equal:1 |
대상 필드의 값이 파라미터 값과 같은 문서만 결과로 응답합니다. 콤마(,)로 구분하여 OR 검색이 가능합니다. |
not equal | !equal | filter.category2Id=!equal:1003 or filter.category2Id=!equal:1003,1005 or filter.category2Id=!equal:1003,1005&filter.s1=!equal:1 |
대상 필드의 값이 파라미터 값과 다른 문서만 결과로 응답합니다. 콤마(,)로 구분하여 OR 검색이 가능합니다. |
[응답 본문 헤더]
이름 | 타입 | 설명 |
---|---|---|
header.isSuccessful | boolean | true: 정상 false: 오류 |
header.resultCode | integer | 0: 정상 0보다 큼: 부분 성공 음수: 오류 |
header.resultMessage | string | "SUCCESS": 정상 그 외: 오류 메시지 반환 |
[성공 응답 본문 예]
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
}
}
[실패 응답 본문 예]
{
"header": {
"isSuccessful": false,
"resultCode": -40000,
"resultMessage": "InvalidParam"
}
}
[URI]
메서드 | URI |
---|---|
POST | /v2.0/appkeys/{appKey}/services |
[Path Variable]
이름 | 설명 |
---|---|
appKey | 통합 앱키 또는 서비스 앱키 |
[Request Body]
이름 | 설명 |
---|---|
serviceName | 서비스명 |
curl -X POST -H "Authorization: {secretKey}" -H "Content-Type: application/json;charset=UTF-8" "${domain}/v2.0/appkeys/{appKey}/services" -d '{
"serviceName": "my-servicename"
}'
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
}
}
resultCode | resultMessage | 설명 |
---|---|---|
-40000 | InvalidParam | 파라미터에 오류가 있음 |
-41005 | UnauthorizedAppKeyOrSecretKey | 승인되지 않은 앱키 또는 비밀 키 |
-42010 | DuplicateServiceName | 중복된 서비스명 |
-42030 | ServiceQuotaExceededException | 허용된 서비스 개수 초과 |
-50000 | InternalServerError | 서버 오류 |
[URI]
메서드 | URI |
---|---|
DELETE | /v2.0/appkeys/{appKey}/services/{serviceName} |
[Path Variable]
이름 | 설명 |
---|---|
appKey | 통합 앱키 또는 서비스 앱키 |
serviceName | 서비스명 |
curl -X DELETE -H "Authorization: {secretKey}" "${domain}/v2.0/appkeys/{appKey}/services/{serviceName}"
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
}
}
resultCode | resultMessage | 설명 |
---|---|---|
-40000 | InvalidParam | 파라미터에 오류가 있음 |
-41005 | UnauthorizedAppKeyOrSecretKey | 승인되지 않은 앱키 또는 비밀 키 |
-42000 | NotExistService | 존재하지 않는 서비스 |
-50000 | InternalServerError | 서버 오류 |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appkeys/{appKey}/services |
[Path Variable]
이름 | 설명 |
---|---|
appKey | 통합 앱키 또는 서비스 앱키 |
curl -X GET -H "Authorization: {secretKey}" "${domain}/v2.0/appkeys/{appKey}/services"
[응답 본문 데이터]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
data.totalCount | integer | O | 2 | 총 검색 결과 개수 |
data.items[].serviceName | string | O | my-service | 서비스명 |
data.items[].documentCount | string | O | 100 | 전체 문서 개수 |
data.items[].remainInsertCount | integer | O | 3 | 서비스 당 추가 가능한 문서 수 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
},
"data": {
"totalCount": 2,
"items": [{
"serviceName": "my-servicename",
"documentCount": 100
},
{
"serviceName": "second_service",
"documentCount": 50
}
]
}
}
resultCode | resultMessage | 설명 |
---|---|---|
-40000 | InvalidParam | 파라미터에 오류가 있음 |
-41005 | UnauthorizedAppKeyOrSecretKey | 승인되지 않은 앱키 또는 비밀 키 |
-50000 | InternalServerError | 서버 오류 |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appkeys/{appKey}/services/{serviceName} |
[Path Variable]
이름 | 설명 |
---|---|
appKey | 통합 앱키 또는 서비스 앱키 |
serviceName | 서비스명 |
curl -X GET -H "Authorization: {secretKey}" "${domain}/v2.0/appkeys/{appKey}/services/my-service"
[응답 본문 데이터]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
data.serviceName | string | O | my-service | 서비스명 |
data.documentCount | string | O | 100 | 전체 문서 개수 |
data.remainInsertCount | integer | O | 3 | 서비스 당 추가 가능한 문서 수 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
},
"data": {
"serviceName": "my-service",
"documentCount": 100,
"remainInsertCount": 3
}
}
resultCode | resultMessage | 설명 |
---|---|---|
-40000 | InvalidParam | 파라미터에 오류가 있음 |
-41005 | UnauthorizedAppKeyOrSecretKey | 승인되지 않은 앱키 또는 비밀 키 |
-50000 | InternalServerError | 서버 오류 |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appkeys/{appKey}/services/{serviceName}/products/{productId}/search |
[Path Variable]
이름 | 설명 |
---|---|
appKey | 통합 앱키 또는 서비스 앱키 |
serviceName | 서비스명 |
productId | 상품 아이디 |
[URL Parameter]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
limit | integer | O | 100 | 최대 크기 1 이상 200 이하로 설정 가능 |
filter.category1Id | string | X | equal:3 | category1Id 값으로 필터링 |
filter.category2Id | string | X | !equal:3 | category2Id 값으로 필터링 |
filter.category3Id | string | X | !equal:3 | category3Id 값으로 필터링 |
filter.s1 | string | X | equal:3 | s1 값으로 필터링 |
filter.s2 | string | X | !equal:3 | s2 값으로 필터링 |
minSimilarity | float | X | 0.8 | 매칭 여부를 판단하는 유사도 최소 기준값 data.items[].similarity >= minSimilarity 항목만 매칭되는 것으로 판단합니다. 0 초과 1.0 이하로 설정 가능 |
includeDuplicates | boolean | X | false | 중복 이미지 포함 여부(기본값: false) 중복 이미지 포함 여부가 false인 경우 동일한 상품은 중복 제거가 되므로, 응답 결과가 요청한 문서 수 보다 적을 수 있습니다. 이를 원치 않을 경우 중복 이미지 포함 여부를 true로 설정하여 요청하시기 바랍니다. |
curl -X GET -H "Authorization: {secretKey}" "${domain}/v2.0/appkeys/{appKey}/services/{serviceName}/products/{productId}/search?limit=100&filter.s1=equal:1"
[응답 본문 데이터]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
data.totalCount | integer | O | 100 | 총 검색 결과 개수 |
data.query | string | O | productId=10234455&limit=100 | 검색 질의 |
data.items[].similarity | float | O | 0.91234 | 검색 유사도 점수 |
data.items[].productId | string | O | 8980335 | 상품 아이디 |
data.items[].name | string | O | AAA red onepiece | 상품명 |
data.items[].imageUrl | string | O | http://url.com | 접근 가능한 이미지 URL |
data.items[].category1Id | string | X | 72 | 카테고리 1depth 아이디 |
data.items[].category2Id | string | X | 72 | 카테고리 2depth 아이디 |
data.items[].category3Id | string | X | 72 | 카테고리 3depth 아이디 |
data.items[].s1 | string | X | 72 | 제한 검색을 위한 필터1 |
data.items[].s2 | string | X | 72 | 제한 검색을 위한 필터2 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
},
"data": {
"totalCount": 1,
"query": "productId=10234455&limit=100",
"items": [{
"similarity": 0.91234,
"productId": "8980335",
"name": "AAA red onepiece",
"imageUrl": "http://url.com"
}
]
}
}
resultCode | resultMessage | 설명 |
---|---|---|
-40000 | InvalidParam | 파라미터에 오류가 있음 |
-40050 | NotFoundProductId | 상품 아이디가 없음 |
-41005 | UnauthorizedAppKeyOrSecretKey | 승인되지 않은 앱키 또는 비밀 키 |
-42000 | NotExistService | 존재하지 않는 서비스 |
-50000 | InternalServerError | 서버 오류 |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appkeys/{appKey}/services/{serviceName}/detect |
[Path Variable]
이름 | 설명 |
---|---|
appKey | 통합 앱키 또는 서비스 앱키 |
serviceName | 서비스명 |
[URL Parameter]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
path | string | O | https://imagecdn.co.kr/sample_image.jpg |
URL 인코딩된 이미지의 URL |
curl -X GET -H "Authorization: {secretKey}" "${domain}/v2.0/appkeys/{appKey}/services/{serviceName}/detect?path=https%3A%2F%2Fimagecdn.co.kr%2Fsample_image.jpg"
[응답 본문 데이터]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
data.totalCount | integer | O | 100 | 총 검색 결과 개수 |
data.query | string | O | path=https://imagecdn.co.kr/sample_image.jpg |
검색 질의 |
data.items[].link | string | O | eyJwYXRoIjoHR0cHM6Ly9zMy11cy13ZXN0LTIuW...VlfX0= | 감지된 패션 아이템으로 유사 상품 검색에서 사용할 값 |
data.items[].center | double array | O | [0.825047801147227, 0.330948979591837] | 감지된 아이템의 중앙 x, y 좌표 % |
data.items[].b0 | double array | O | [0.676864247418738, 0.219377551020408] | 감지된 아이템의 x0, y0 좌표 % |
data.items[].b1 | double array | O | [0.973231355525813, 0.4426204081632654] | 감지된 아이템의 x1, y1 좌표 % |
data.items[].score | float | O | 0.9732 | 감지된 아이템의 신뢰도 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
},
"data": {
"totalCount": 2,
"query": "path=https%3A%2F%2Fimagecdn.co.kr%2Fsample_image.jpg",
"items": [{
"link": "eyJwYXRoIjoHR0cHM6Ly9zMy11cy13ZXN0LTIuW1hem9uYXdzLmNvbS9mZy1pbWFnZS1zZWFyY2gvMjAxOTEyMDIvNDIyMDZmWYtYWI0Ni00Zjk2LThkYWItZGRkZjllMTI3VjLm9jdGV0LXN0cmVbsInR5cGUiOiJBTEwiLCJpbnB1dHMiOlt7ImJveCI6eyJsZWZ0IjozNQsInRvcCI6MTcyLCJ3aWR0aCI6MTU1LCJoZWlnaHQiOjE3NX0sInNjb3JlIjowg4NjAyODcwNzAyNzQzNTMsInR5cGUiOiJKQUNLRVfV0sImNvbmZpZ3MiOnsiY2FtZXJjp0cnVlfX0=",
"center": [0.825047801172275, 0.330998979591837],
"b0": [0.676864244718738, 0.219387751020408],
"b1": [0.973231357555813, 0.4426020401632654],
"score": 0.97323
},
{
"link": "eyJwYXRoIjoiaHR0cHM6Ly9zMy11cy13ZXN0LTIuW1hem9uYXdzLmNvbS9mZy1pbWFnZSZWFyY2gvMjAxOTEyMDIvNDIyMDZmWYtYWI0Ni00Zjk2LThkYWItZGRkZjllMTI3OWVm9jdGV0LXN0cmSIsInR5cGUiOiJBTEwiLpbnB1dHMiOlt7ImJveCI6eyJsZWZ0IjozNQsInRvcCI6MyLCJ3aWR0aCI6MTU1LCJoZWlnaHQiOjE3NX0sInNjb3JlIjowLjg4NjAyODcwNzAyNzQzNTMsInR5cGUiOiJKQUNLRVQifV0sImNvbmZpZiOnsiY2FtZXJhIjp0cnVlfX0=",
"center": [0.3929254301032506, 0.572066265306123],
"b0": [0.3288718929253023, 0.506377551204082],
"b1": [0.456978967952199, 0.637751020408163],
"score": 0.97123
}
]
}
}
resultCode | resultMessage | 설명 |
---|---|---|
-40000 | InvalidParam | 파라미터에 오류가 있음 |
-41005 | UnauthorizedAppKeyOrSecretKey | 승인되지 않은 앱키 또는 비밀 키 |
-42000 | NotExistService | 존재하지 않는 서비스 |
-45020 | ImageTooLargeException | 이미지 파일의 크기가 너무 큼 이미지 가이드 참고 |
-45040 | InvalidImageFormatException | 지원하지 않는 이미지 파일 형식 이미지 가이드 참고 |
-45050 | InvalidImageURLException | 접근할 수 없는 URL |
-45060 | ImageTimeoutError | 이미지 다운로드 시간 초과 |
-50000 | InternalServerError | 서버 오류 |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appkeys/{appKey}/services/{serviceName}/search |
[Path Variable]
이름 | 설명 |
---|---|
appKey | 통합 앱키 또는 서비스 앱키 |
serviceName | 서비스 아이디 |
[URL Parameter]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
limit | integer | O | 100 | 최대 크기 1 이상 200 이하로 설정 가능 |
link | string | O | eyJwYXRoIjoHR0cHM6Ly9zMy11cy13ZXN0LTIuW...VlfX0%3D | detect API에서 전달받은 link(URL 인코딩 필요) |
filter.category1Id | string | X | equal:3 | category1Id 값으로 필터링 |
filter.category2Id | string | X | !equal:3 | category2Id 값으로 필터링 |
filter.category3Id | string | X | !equal:3 | category3Id 값으로 필터링 |
filter.s1 | string | X | equal:3 | s1 값으로 필터링 |
filter.s2 | string | X | !equal:3 | s2 값으로 필터링 |
minSimilarity | float | X | 0.8 | 매칭 여부를 판단하는 유사도 최소 기준값 data.items[].similarity >= minSimilarity 항목만 매칭되는 것으로 판단합니다. 0 초과 1.0 이하로 설정 가능 |
includeDuplicates | boolean | X | false | 중복 이미지 포함 여부(기본값: false) 중복 이미지 포함 여부가 false인 경우 동일한 상품은 중복 제거가 되므로, 응답 결과가 요청한 문서 수 보다 적을 수 있습니다. 이를 원치 않을 경우 중복 이미지 포함 여부를 true로 설정하여 요청하시기 바랍니다. |
curl -X GET -H "Authorization: {secretKey}" "${domain}/v2.0/appkeys/{appKey}/services/{serviceName}/image?limit=100&link=eyJwYXRoIjoiaHR0cHM6Ly9zMy11cy13ZXN0LTIuW1hem9u1XdzLmNvbS9mZy1pbWFnZSZWFyY2gvMjAxOTEyMDIvNDIyMDZmWYtYWI0Ni00Zjk2LThkYWItZGRkZjllMTI3OWVm9jdGV0LXN0cmSIsInR5cGUi0iJBTEwiLpbnB1dHMiOlt7ImJveCI6eyJsZWZ0IjozNQaInRvcCI6MyLCJ3aWR0aCI6MTU1LCJoZWlnaHQiOjE3NX0sInNjb3JlIjowLjg4NjAyODcwNzAyNzQzNTMsInR5cGUiOiJKQUNLRVQifV0sImNvbmZpZiOnsiY2FtZXJhIjp0cnVlfX0%3D&filter.s1=equal:1"
[응답 본문 데이터]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
data.totalCount | integer | O | 100 | 총 검색 결과 개수 |
data.query | string | O | link=eyJwYXRoIjoHR0cHM6Ly9zMy11cy13ZXN0LTIuW...VlfX0=&limit=100 | 검색 질의 |
data.items[].similarity | float | O | 0.91234 | 검색 유사도 점수 |
data.items[].productId | string | O | 8980335 | 상품 아이디 |
data.items[].name | string | O | AAA red onepiece | 상품명 |
data.items[].imageUrl | string | O | http://url.com | 접근 가능한 이미지 URL |
data.items[].category1Id | string | X | 72 | 카테고리 1depth 아이디 |
data.items[].category2Id | string | X | 72 | 카테고리 2depth 아이디 |
data.items[].category3Id | string | X | 72 | 카테고리 3depth 아이디 |
data.items[].s1 | string | X | 72 | 제한 검색을 위한 필터1 |
data.items[].s2 | string | X | 72 | 제한 검색을 위한 필터2 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
},
"data": {
"totalCount": 1,
"query": "link=eyJwYXRoIjoiaHR0cHM6Ly9zMy11cy13ZXN0LTIuW1hem9uYXdzLmNvbS9mZy1pbWfnZSZWFyY2gvMjAxOTEyMDIvNDIyMDZmWYtYWI0Ni00Zjk2LThkYWItZGRkZjllMTI3OWVm9jdGV0LXN0cmSIsInR5cGUiOiJBTEwiLpbnB1dHMi0lt7ImJveCI6eyJsZWZ0IjozNQsInRvcCI6MyLCJ3aWa0aCI6MTU1LCJozWlnaHQiOjE3NX0sInNjb3JlIjowLjg4NjAyODcwNzAyNzQzNTMsInR5cGUiOiJKQUNLRVQifV0sImNvbmZpZiOnsiY2FtZXJhIjp0cnVlfX0=&limit=100",
"items": [{
"similarity": 0.91234,
"productId": "8980335",
"name": "AAA red onepiece",
"imageUrl": "http://url.com"
}
]
}
}
resultCode | resultMessage | 설명 |
---|---|---|
-40000 | InvalidParam | 파라미터에 오류가 있음 |
-41005 | UnauthorizedAppKeyOrSecretKey | 승인되지 않은 앱키 또는 비밀 키 |
-42000 | NotExistService | 존재하지 않는 서비스 |
-45020 | ImageTooLargeException | 이미지 파일의 크기가 너무 큼 이미지 가이드 참고 |
-45040 | InvalidImageFormatException | 지원하지 않는 이미지 파일 형식 이미지 가이드 참고 |
-45050 | InvalidImageURLException | 접근할 수 없는 URL |
-45060 | ImageTimeoutError | 이미지 다운로드 시간 초과 |
-45070 | NoDetectedFashionItems | 감지된 패션 아이템 없음 |
-50000 | InternalServerError | 서버 오류 |
[URI]
메서드 | URI |
---|---|
POST | /v2.0/appkeys/{appKey}/services/{serviceName}/search |
[Path Variable]
이름 | 설명 |
---|---|
appKey | 통합 앱키 또는 서비스 앱키 |
serviceName | 서비스명 |
[Request Body]
Content-Type : multipart/form-data
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
imageUrl | string | △ | http://url.com | 이미지의 URL |
imageFile | file | △ | image.png | 이미지 파일 |
limit | integer | O | 100 | 최대 크기 1 이상 200 이하로 설정 가능 |
filter.category1Id | string | X | equal:3 | category1Id 값으로 필터링 |
filter.category2Id | string | X | !equal:3 | category2Id 값으로 필터링 |
filter.category3Id | string | X | !equal:3 | category3Id 값으로 필터링 |
filter.s1 | string | X | equal:3 | s1 값으로 필터링 |
filter.s2 | string | X | !equal:3 | s2 값으로 필터링 |
minSimilarity | float | X | 0.8 | 매칭 여부를 판단하는 유사도 최소 기준값 data.items[].similarity >= minSimilarity 항목만 매칭되는 것으로 판단합니다. 0 초과 1.0 이하로 설정 가능 |
includeDuplicates | boolean | X | false | 중복 이미지 포함 여부(기본값: false) 중복 이미지 포함 여부가 false인 경우 동일한 상품은 중복 제거가 되므로, 응답 결과가 요청한 문서 수 보다 적을 수 있습니다. 이를 원치 않을 경우 중복 이미지 포함 여부를 true로 설정하여 요청하시기 바랍니다. |
curl -X POST -H "Authorization: {secretKey}" -H "Content-Type: multipart/form-data" -F imageFile=@image.png -F limit=100 "${domain}/v2.0/appkeys/{appKey}/services/{serviceName}/search"
[응답 본문 데이터]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
data.totalCount | integer | O | 100 | 총 검색 결과 개수 |
data.items[].productId | string | O | 8980335 | 상품 아이디 |
data.items[].similarity | float | O | 0.91234 | 검색 유사도 점수 |
data.items[].name | string | O | AAA red onepiece | 상품명 |
data.items[].imageUrl | string | O | http://url.com | 접근 가능한 이미지 URL |
data.items[].category1Id | string | X | 72 | 카테고리 1depth 아이디 |
data.items[].category2Id | string | X | 72 | 카테고리 2depth 아이디 |
data.items[].category3Id | string | X | 72 | 카테고리 3depth 아이디 |
data.items[].s1 | string | X | 72 | 제한 검색을 위한 필터1 |
data.items[].s2 | string | X | 72 | 제한 검색을 위한 필터2 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
},
"data": {
"totalCount": 1,
"query": "productId=10234455&limit=100",
"items": [{
"productId": "8980335",
"similarity": 0.91234,
"name": "AAA red onepiece",
"imageUrl": "http://url.com"
}
]
}
}
resultCode | resultMessage | 설명 |
---|---|---|
-40000 | InvalidParam | 파라미터에 오류가 있음 |
-41005 | UnauthorizedAppKeyOrSecretKey | 승인되지 않은 앱키 또는 비밀 키 |
-42000 | NotExistService | 존재하지 않는 서비스 |
-45020 | ImageTooLargeException | 이미지 파일의 크기가 너무 큼 이미지 가이드 참고 |
-45040 | InvalidImageFormatException | 지원하지 않는 이미지 파일 형식 이미지 가이드 참고 |
-45050 | InvalidImageURLException | 접근할 수 없는 URL |
-45060 | ImageTimeoutError | 이미지 다운로드 시간 초과 |
-45070 | NoDetectedFashionItems | 감지된 패션 아이템 없음 |
-50000 | InternalServerError | 서버 오류 |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appkeys/{appKey}/services/{serviceName}/tag |
[Path Variable]
이름 | 설명 |
---|---|
appKey | 통합 앱키 또는 서비스 앱키 |
serviceName | 서비스명 |
[URL Parameter]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
path | string | O | https://imagecdn.co.kr/sample_image.jpg |
URL 인코딩된 이미지 URL |
lang | string | X | ko | 라벨의 언어(기본값: en) en: English ko: Korean ja: Japanese |
itemLimit | integer | X | 3 | 이미지에서 발견된 패션 아이템 중 태그 정보를 응답할 아이템 숫자 아이템의 너비가 긴 순서로 정렬(기본값: 1) 최대 크기 1 이상 4 이하로 설정 가능 |
curl -X GET -H "Authorization: {secretKey}" "${domain}/v2.0/appkeys/{appKey}/services/{serviceName}/tag?path=https%3A%2F%2Fimagecdn.co.kr%2Fsample_image.jpg&lang=ko&itemLimit=3"
[응답 본문 데이터]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
data.totalCount | integer | O | 2 | 총 검색 결과 개수 |
data.query | string | O | path=https://imagecdn.co.kr/sample_image.jpg&lang=ko&itemLimit=3 |
검색 질의 |
data.items[].type | string | O | JACKET | 감지된 아이템의 유형 |
data.items[].score | float | O | 0.9515 | 감지된 아이템의 신뢰도 |
data.items[].tags | array | O | 감지된 아이템 태그 정보의 배열 | |
data.items[].tags[].attribute | string | O | category | 태그의 속성 |
data.items[].tags[].labels | array | O | 태그 라벨의 배열 | |
data.items[].tags[].labels[].label | string | O | 블라우스 | Blouse | 태그 라벨 URL 파라미터의 lang에 의해 응답 언어가 달라짐 |
data.items[].tags[].labels[].score | float | O | 0.9545 | 태그 라벨의 신뢰도 |
data.items[].center | double array | O | [0.825047801147227, 0.330948979591837] | 감지된 아이템의 중앙 x, y 좌표 % |
data.items[].b0 | double array | O | [0.676864247418738, 0.219377551020408] | 감지된 아이템의 x0, y0 좌표 % |
data.items[].b1 | double array | O | [0.973231355525813, 0.4426204081632654] | 감지된 아이템의 x1, y1 좌표 % |
응답 본문 예
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
},
"data": {
"totalCount": 2,
"query": "path=https%3A%2F%2Fimagecdn.co.kr%2Fsample_image.jpg&lang=ko&itemLimit=3",
"items": [{
"type": "SHIRT",
"tags": [{
"attribute": "category", "labels": [{ "label": "블라우스", "score": 0.9966272115707397 }]
}, {
"attribute": "color", "labels": [{ "label": "베이지/아이보리", "score": 0.7692235112190247 }]
}, {
"attribute": "pattern", "labels": [{ "label": "무지", "score": 0.9893960356712341 }]
}, {
"attribute": "fabric", "labels": [{ "label": "실크", "score": 0.586938738822937 }]
}, {
"attribute": "neckline", "labels": [{ "label": "셔츠칼라", "score": 0.9922573566436768 }]
}, {
"attribute": "shoulder", "labels": [{ "label": "퍼프/볼륨", "score": 0.5369117856025696 }]
}, {
"attribute": "sleeve_length", "labels": [{ "label": "긴소매", "score": 0.6998409032821655 }]
}, {
"attribute": "sleeve_shape", "labels": [{ "label": "스트레이트/일자", "score": 0.689109206199646 }]
}, {
"attribute": "length_up", "labels": [{ "label": "허리선", "score": 0.9575495719909668 }]
}, {
"attribute": "age", "labels": [{ "label": "어른", "score": 0.9985153079032898 }]
}, {
"attribute": "gender", "labels": [{ "label": "여성", "score": 0.9960111379623413 }]
}, {
"attribute": "detail", "labels": [{ "label": "버튼", "score": 0.9440848231315613 }]
}, {
"attribute": "fit", "labels": [{ "label": "기본핏/레귤러핏", "score": 0.789472222328186 }]
}],
"center": [ 0.46125, 0.34125 ],
"b0": [ 0.1875, 0.0175 ],
"b1": [ 0.735, 0.665 ],
"score": 0.93118
}, {
"type": "SKIRT",
"tags": [{
"attribute": "category", "labels": [{ "label": "스커트", "score": 0.9997897744178772 }]
}, {
"attribute": "color", "labels": [{ "label": "브라운/갈색", "score": 0.8597127199172974 }]
}, {
"attribute": "pattern", "labels": [{ "label": "무지", "score": 0.988312304019928 }]
}, {
"attribute": "fabric", "labels": [{ "label": "캔버스", "score": 0.24775846302509308 }]
}, {
"attribute": "length_lo", "labels": [{ "label": "숏", "score": 0.9987099170684814 }]
}, {
"attribute": "age", "labels": [{ "label": "어른", "score": 0.9993846416473389 }]
}, {
"attribute": "gender", "labels": [{ "label": "여성", "score": 0.9950520396232605 }]
}, {
"attribute": "detail", "labels": [{ "label": "랩스타일", "score": 0.7058117985725403 }]
}, {
"attribute": "fit", "labels": [{ "label": "기본핏/레귤러핏", "score": 0.9844645857810974 }]
}, {
"attribute": "shape", "labels": [{ "label": "A라인/플레어", "score": 0.9432026743888855 }]
}],
"center": [ 0.5, 0.69125 ],
"b0": [ 0.28, 0.445 ],
"b1": [ 0.72, 0.9375 ],
"score": 0.939945
}]
}
}
resultCode | resultMessage | 설명 |
---|---|---|
-40000 | InvalidParam | 파라미터에 오류가 있음 |
-41005 | UnauthorizedAppKeyOrSecretKey | 승인되지 않은 앱키 또는 비밀 키 |
-42000 | NotExistService | 존재하지 않는 서비스 |
-45020 | ImageTooLargeException | 이미지 파일의 크기가 너무 큼 이미지 가이드 참고 |
-45040 | InvalidImageFormatException | 지원하지 않는 이미지 파일 형식 이미지 가이드 참고 |
-45050 | InvalidImageURLException | 접근할 수 없는 URL |
-45060 | ImageTimeoutError | 이미지 다운로드 시간 초과 |
-50000 | InternalServerError | 서버 오류 |
이름 | field | value type | 필수 | max length | 비고 |
---|---|---|---|---|---|
상품ID | productId | string | O | 72 | 유니크 키 |
상태 | status | string | O | 7 | enable: 추가 또는 업데이트 disable: 삭제 |
상품이름 | name | string | O | 256 | 상품명 |
카테고리 1depth | category1Id | string | O | 72 | 카테고리 1depth 아이디 |
카테고리 2depth | category2Id | string | O | 72 | 카테고리 2depth 아이디 |
카테고리 3depth | category3Id | string | O | 72 | 카테고리 3depth 아이디 |
이미지url | imageUrl | string | O | 1000 | 접근 가능한 이미지 URL |
필터1 | s1 | string | O | 72 | 제한 검색을 위한 필터1 |
필터2 | s2 | string | O | 72 | 제한 검색을 위한 필터2 |
{"productId": "10001", "status": "enable", "name": "AAA red onepiece", "category1Id": "1", "category2Id": "1", "category3Id": "2", "imageUrl": "http://aaaaaaa.bbbbb.jpg", "s1": "1", "s2": "2"}
{"productId": "10002", "status": "disable", "name": "BBB blue onepiece", "category1Id": "1", "category2Id": "1", "category3Id": "2", "imageUrl": "http://bbbbbbb.ccccc.jpg", "s1": "s1", "s2": "2"}
{"productId": "10003", "status": "enable", "name": "BBB blue blouse", "category1Id": "1", "category2Id": "1", "category3Id": "3", "imageUrl": "http://bbbbbbb.ddddd.jpg", "s1": "", "s2": "s2"}
...
10001,enable,AAA red onepiece,1,1,2,http://aaaaaaa.bbbbb.jpg,1,2
10002,disable,BBB blue onepiece,1,1,2,http://bbbbbbb.ccccc.jpg,s1,2
10003,enable,BBB blue blouse,1,1,3,http://bbbbbbb.ddddd.jpg,,s2
...
[URI]
메서드 | URI |
---|---|
POST | /v2.0/appkeys/{appKey}/services/{serviceName}/indexes |
[Path Variable]
이름 | 설명 |
---|---|
appKey | 통합 앱키 또는 서비스 앱키 |
serviceName | 서비스명 |
[Request Body]
Content-Type : multipart/form-data
이름 | 타입 | 필수 여부 | 예제 | 설명 |
---|---|---|---|---|
format | string | O | jsonl | jsonl 또는 csv |
link | string | △ | https://cdn.my-domain.com/202106251000_product.jsonl | 데이터 파일 URL |
file | file | △ | @filename | 데이터 파일 link가 file보다 우선순위가 높아서 link가 있으면 file은 무시됨 |
curl -X POST -H "Authorization: {secretKey}" "${domain}/v2.0/appkeys/{appKey}/services/{serviceName}/indexes" -H "Content-Type: multipart/form-data" -F "file=@/home/user1/202106251000_product.jsonl -F format=jsonl"
curl -X POST "${domain}/v2.0/appkeys/{appKey}/services/{serviceName}/indexes" -H "Content-Type: multipart/form-data" -F "link=https://cdn.my-domain.com/202106251000_product.jsonl -F format=jsonl"
[응답 본문 데이터]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
data.indexId | string | O | 24bb94b3-8a6b-488e-b038-4f6038da2596 | 인덱스 ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
},
"data": {
"indexId": "24bb94b3-8a6b-488e-b038-4f6038da2596"
}
}
resultCode | resultMessage | 설명 |
---|---|---|
-40000 | InvalidParam | 파라미터에 오류가 있음 |
-40010 | InvalidFileError | 파일 전달에 오류가 있는 경우 |
-40020 | NoDataError | 전달된 파일이 빈 파일인 경우 |
-40030 | ExceedDataSizeError | 전달된 파일이 정해진 용량 또는 정해진 데이터 개수를 초과한 경우 |
-40080 | TooManyRequestError | 동시에 여러 번 요청을 한 경우 |
-41005 | UnauthorizedAppKeyOrSecretKey | 승인되지 않은 앱키 또는 비밀 키 |
-42000 | NotExistService | 존재하지 않는 서비스 |
-50000 | InternalServerError | 서버 오류 |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appkeys/{appKey}/services/{serviceName}/indexes |
[Path Variable]
이름 | 설명 |
---|---|
appKey | 통합 앱키 또는 서비스 앱키 |
serviceName | 서비스명 |
[URL Parameter]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
start | integer | O | 0 | 시작 인덱스 0부터 시작 |
limit | integer | O | 100 | 최대 100 start:0, limit: 100의 경우 1부터 100까지 start: 200, limit: 100 이면 201부터 300까지 |
order | string | X | requestedTime:desc | 정렬 조건(기본값: requestedTime:desc) 설정 가능 조건은 정렬 참조 |
statuses | string array | X | running,finished | 색인의 상태 값 |
curl -X GET -H "Authorization: {secretKey}" "${domain}/v2.0/appkeys/{appKey}/services/{serviceName}/indexes?start=0&limit=100&status=running,finished&order=startTime:desc"
[응답 본문 데이터]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
data.total | integer | O | 100 | 검색된 전체 문서 개수 |
data.items[].service | string | O | test | 서비스명 |
data.items[].id | string | O | 24bb94b3-8a6b-488e-b038-4f6038da2596 | 색인 ID |
data.items[].filename | string | O | 202106251000_product.jsonl | 색인 파일 이름 |
data.items[].status | string | O | reserved | 현재 색인 상태를 나타냅니다. reserved: 대기 running: 진행 중 failed: 전체 실패 finished: 완료(부분 실패 포함) |
data.items[].requestedTime | unix timestamp | O | 1625098033 | 색인 요청 등록 시간 |
data.items[].startTime | unix timestamp | O | 1625098033 | 색인 시작 시간 |
data.items[].finishTime | unix timestamp | O | 1625098033 | 색인이 완료된 시간 |
data.items[].addedCount | integer | O | 234 | 추가된 문서 개수 |
data.items[].failedCount | integer | O | 31 | 실패한 문서 개수 이미지 다운로드 실패 등이 포함되며, 패션 아이템을 찾지 못한 경우도 포함. |
data.items[].exceededCount | integer | O | 31 | 제한 사용량을 넘어서 색인할 수 없는 문서 개수 |
data.items[].deletedCount | integer | O | 31 | 삭제된 문서 개수 |
data.items[].updatedCount | integer | O | 592 | 수정된 문서 개수 |
data.items[].totalCount | integer | O | 888 | 색인 총 문서 개수 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
},
"data": {
"total": 100,
"items":[{
"id": "24bb94b3-8a6b-488e-b038-4f6038da2596",
"serviceName": "test",
"filename": "202106251000_product.jsonl",
"status": "reserved",
"requestedTime": 1627018935,
"startTime": 1627018935,
"finishTime": 1627018935,
"addedCount": 234,
"failedCount": 31,
"exceededCount": 31,
"deletedCount": 31,
"updatedCount": 592,
"totalCount": 888
}]
}
}
resultCode | resultMessage | 설명 |
---|---|---|
-40000 | InvalidParam | 파라미터에 오류가 있음 |
-41005 | UnauthorizedAppKeyOrSecretKey | 승인되지 않은 앱키 또는 비밀 키 |
-42000 | NotExistService | 존재하지 않는 서비스 |
-50000 | InternalServerError | 서버 오류 |
[URI]
메서드 | URI |
---|---|
GET | /v2.0/appkeys/{appKey}/services/{serviceName}/indexes/{indexId} |
[Path Variable]
이름 | 설명 |
---|---|
appKey | 통합 앱키 또는 서비스 앱키 |
serviceName | 서비스명 |
indexId | 색인 ID |
curl -X GET -H "Authorization: {secretKey}" "${domain}/v2.0/appkeys/{appKey}/services/{serviceName}/indexes/{indexId}"
[응답 본문 데이터]
이름 | 타입 | 필수 | 예제 | 설명 |
---|---|---|---|---|
data.total | integer | O | 100 | 검색된 전체 문서 개수 |
data.items[].serviceName | string | O | test | 서비스명 |
data.items[].id | string | O | 24bb94b3-8a6b-488e-b038-4f6038da2596 | 색인 ID |
data.items[].filename | string | O | 202106251000_product.jsonl | 색인 파일 이름 |
data.items[].status | string | O | reserved | 현재 색인 상태를 나타냅니다. reserved: 대기 running: 진행 중 failed: 전체 실패 finished: 완료(부분 실패 포함) |
data.items[].requestedTime | unix timestamp | O | 1625098033 | 색인 요청 등록 시간 |
data.items[].startTime | unix timestamp | O | 1625098033 | 색인 시작 시간 |
data.items[].finishTime | unix timestamp | O | 1625098033 | 색인이 완료된 시간 |
data.items[].addedCount | integer | O | 234 | 추가된 문서 개수 |
data.items[].addedProductIds | string array | O | [10001, 10002] | 추가된 문서 ID 목록 |
data.items[].failedCount | integer | O | 31 | 실패한 문서 개수 이미지 다운로드 실패 등이 포함되며, 패션 아이템을 찾지 못한 경우도 포함. |
data.items[].failedProductIds | string array | O | [10001, 10002] | 실패한 문서 ID 목록 |
data.items[].exceededCount | integer | O | 31 | 제한 사용량을 넘어서 색인할 수 없는 문서 개수 |
data.items[].exceededProductIds | string array | O | [10001, 10002] | 제한 사용량을 넘어서 색인할 수 없는 문서 ID 목록 |
data.items[].deletedCount | integer | O | 31 | 삭제된 문서 개수 |
data.items[].deletedProductIds | string array | O | [10001, 10002] | 삭제된 문서 ID 목록 |
data.items[].updatedCount | integer | O | 592 | 수정된 문서 개수 |
data.items[].updatedProductIds | string array | O | [10001, 10002] | 수정된 문서 ID 목록 |
data.items[].totalCount | integer | O | 888 | 색인 총 문서 개수 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "SUCCESS"
},
"data": {
"total": 100,
"items":[{
"id": "24bb94b3-8a6b-488e-b038-4f6038da2596",
"serviceName": "test",
"filename": "202106251000_product.jsonl",
"status": "reserved",
"requestedTime": 1627018935,
"startTime": 1627018935,
"finishTime": 1627018935,
"addedCount": 234,
"addedProductIds": ["10001", "10002"],
"failedCount": 31,
"failedProductIds": ["10001", "10002"],
"exceededCount": 31,
"exceededProductIds": ["10001", "10002"],
"deletedCount": 31,
"deletedProductIds": ["10001", "10002"],
"updatedCount": 592,
"updatedProductIds": ["10001", "10002"],
"totalCount": 888
}]
}
}
resultCode | resultMessage | 설명 |
---|---|---|
-40000 | InvalidParam | 파라미터에 오류가 있음 |
-40090 | NotFoundIndexId | 색인 id가 없음 |
-41005 | UnauthorizedAppKeyOrSecretKey | 승인되지 않은 앱키 또는 비밀 키 |
-42000 | NotExistService | 존재하지 않는 서비스 |
-50000 | InternalServerError | 서버 오류 |