본문으로 건너뛰기

Data Management API

OMNICOMMERCE 의 모든 기능을 사용하기 위해서는 필수적으로 Data Management API를 사용하여야 합니다. Data Management API 는 고객사의 상품 정보를 OMNICOMMERCE 으로 생성 / 수정 / 삭제 하는 역할을 수행 합니다.

주의

한 Request 당 최대 100 개 까지 한번에 create, update, delete 가능 합니다.
Data Management API는 5 RPS(Request per second)의 제한이 있어 많은 데이터를 등록 시 100건씩 POST 로 전달하시는 걸 권장드립니다.


API Endpoint

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

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


상품 정보 관리 API

POST /management/products: 신규 상품 등록

상품 ID 별로 상품 정보를 새롭게 등록합니다.

주의

기존에 동일한 상품ID가 존재하는 경우 데이터를 덮어쓰게 됩니다.

Request Header

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

Request Body

주의

상품 아이디는 내부적으로 Unique Key로 처리되며 API 호출시 URL Path Parameter의 형태로도 사용됩니다. 이에 따라 [RFC3986]기준 URL Unreserved Characters(0-9 a-z A-Z - . _ ~)만 사용이 가능합니다.

Name
RequiredTypeDescription
options선택List[String]입력 옵션. 아래와 같이 미리 정의된 String Enum type으로 넣어줍니다:
BLOCK_DUPLICATES: 이미 Workspace에 포함되어 있는 동일한 상품 ID에 대한 중복 입력이 제한됩니다.
products필수List상품 정보의 List. 최대 100개 까지 가능합니다.
├ products[].id필수String상품 아이디 (최대 50자): 상품 아이디는 해당 Workspace 에서 Unique Key 로 사용됩니다. 중복되는 상품 아이디가 있다면 덮어쓰게 됩니다.
├ products[].url필수String상품의 대표 이미지 URL
├ products[].detection필수StringDetection 정보 에 명시된 값 중 하나를 입력합니다. (예: 판매하는 상품이 상의 인 경우: TOP)
├ products[].salesUrl필수String상품이 판매되고 있는 페이지의 URL
├ products[].mobileSalesUrl선택String상품이 판매되고 있는 페이지의 모바일 버전 URL
└ products[].metadata선택Object상품명, 브랜드, 가격, 시즌, 할인율 등 고객 사가 관리하는 다양한 상품 정보들 입니다. (참조: 상품 Meta정보)
정보

유사상품 추천을 사용하고자 하시는경우, 필히 판매하시는 상품 기준의 Detection 정보를 입력하여 전달해주셔야 추천의 정확도가 좋아집니다.

Request example

1) options가 BLOCK_DUPLICATES 이고, metadata가 있는경우 (name, price)

{
"options": ["BLOCK_DUPLICATES"],
"products": [
{
"id": "A1000",
"url": "https://image-url.jpg",
"salesUrl": "https://sales_url.com",
"mobileSalesUrl": "https://m.sales_url.com",
"detection": "TOP",
"metadata": {
"productName": "product name, 상품명",
"originPrice": 10000,
"currency": "KRW"
}
},
{
"id": "A1001",
"url": "https://image-url2.jpg",
"salesUrl": "https://sales_url.com",
"mobileSalesUrl": "https://m.sales_url.com",
"detection": "WHOLEBODY",
"metadata": {
"productName": "product name2, 상품명2",
"originPrice": 20000,
"currency": "KRW"
}
},
{
"id": "A1002",
"url": "https://image-url3.jpg",
"salesUrl": "https://sales_url3.com",
"mobileSalesUrl": "https://m.sales_url3.com",
"detection": "PANTS",
"metadata": {
"productName": "product name3, 상품명3",
"originPrice": 30000,
"currency": "KRW"
}
}
]
}

2) metadata 입력을 안하는 경우

{
"products": [
{
"id": "A1000",
"url": "https://image-url.jpg",
"salesUrl": "https://sales_url.com",
"detection": "TOP"
},
{
"id": "A1001",
"url": "https://image-url2.jpg",
"salesUrl": "https://sales_url.com",
"detection": "WHOLEBODY"
},
{
"id": "A1002",
"url": "https://image-url3.jpg",
"salesUrl": "https://sales_url3.com",
"mobileSalesUrl": "https://m.sales_url3.com",
"detection": "PANTS"
}
]
}

Response

NameTypeDescription
acceptInteger비동기적인 등록 작업이 성공적으로 요청된 항목의 수
failureInteger비동기적인 등록 작업이 실패한 항목의 수
failureListList실패 사유에 대한 정보
├ failureList[].idString상품 아이디
└ failureList[].errorsString실패 사유에 대한 설명

Response Example

202 Accepted

요청한 모든 항목에 대해 Error가 발생한 경우

{
"accept": 0,
"failure": 3,
"failureList": [
{
"id": "A1000",
"errors": "bad reqeust"
},
{
"id": "A1001",
"errors": "fail to prove image from url."
},
{
"id": "A1002",
"errors": "Block duplicate products."
}
]
}

하나의 항목이라도 요청이 들어간 경우

{
"accept": 3,
"failure": 0,
"failureList": []
}
{
"accept": 1,
"failure": 2,
"failureList": [
{
"id": "A1000",
"errors": "bad reqeust"
},
{
"id": "A1002",
"errors": "Block duplicate products."
}
]
}

PUT /management/products: 상품 정보 수정

상품 아이디를 기준으로 상품의 정보를 수정 하기 위해 사용 합니다.

예시) 상품의 “상품명"이 변경 된경우

변경 전
  • 상품아이디 : AE00001
  • 상품명 : 린넨여름팬츠
  • 가격 : 10,000
변경 요청
  • 상품명 : 린넨팬츠
변경 후
  • 상품아이디 : AE00001
  • 상품명 : 린넨팬츠
  • 가격 : 10,000
정보

요청한 정보만 수정 되고 다른 정보들은 그대로 유지 됩니다.

Request Header

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

Request Body

Name
RequiredTypeDescription
products필수List상품 정보의 List. 최대 100개 까지 가능합니다.
products[].id필수String상품 아이디: 상품 아이디는 해당 Workspace 에서 Unique Key 로 사용됩니다. 중복되는 상품 아이디가 있다면 덮어쓰게 됩니다.
├ products[].salesUrl필수String상품이 판매되고 있는 페이지의 URL
├ products[].mobileSalesUrl선택String상품이 판매되고 있는 페이지의 모바일 버전 URL
└ products[].metadata선택Object상품명, 브랜드, 가격, 시즌, 할인율 등 고객 사가 관리하는 다양한 상품 정보들 입니다. (참조: 상품 Meta정보)

Request Example

{
"products": [
{
"id": "A1000",
"metadata": {
"productName": "product name3, 상품명"
}
},
{
"id": "A1001",
"metadata": {
"productName": "product name4, 상품명4",
"originPrice": 20000
}
}
]
}

Response

NameTypeDescription
acceptInteger비동기적인 등록 작업이 성공적으로 요청된 항목의 수
failureInteger비동기적인 등록 작업이 실패한 항목의 수
failureListList실패 사유에 대한 정보
├ failureList[].idString상품 아이디
└ failureList[].errorsString실패 사유에 대한 설명

Response Example

202 Accepted

모든 항목에서 에러가 발생한 경우

{
"accept": 0,
"failure": 2,
"failureList": [
{
"id": "A1000",
"errors": "bad reqeust"
},
{
"id": "A1001",
"errors": "fail to prove image from url."
}
]
}

하나의 항목이라도 요청이 들어간 경우

{
"accept": 2,
"failure": 0,
"failureList": []
}
{
"accept": 1,
"failure": 1,
"failureList": [
{
"id": "A1000",
"errors": "bad reqeust"
}
]
}

DELETE /management/products: 등록된 상품 삭제

상품 아이디를 기준으로 Workspace 에 등록된 상품을 삭제합니다.

Request Header

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

Request Body

NameRequiredTypeDescription
productIds필수List[String]상품 아이디의 List. 최대 100개 까지 가능합니다.

Request example

{
"productIds": [
"A1000", "A1001", "A1002"
]
}

Response

NameTypeDescription
acceptInteger비동기적인 등록 작업이 성공적으로 요청된 항목의 수
failureInteger비동기적인 등록 작업이 실패한 항목의 수
failureListList실패 사유에 대한 정보
├ failureList[].idString상품 아이디
└ failureList[].errorsString실패 사유에 대한 설명

Response Example

202 Accepted

  • 요청 성공
{
"accept": 3,
"failure": 0,
"failureList": []
}

모든 항목에서 에러가 발생한 경우

{
"accept": 0,
"failure": 2,
"failureList": [
{
"id": "A1000",
"errors": "bad reqeust"
}
]
}