# 상품

## **연동 방식**

https 프로토콜을 이용한 Rest API

***

## **필수값**

| 이름      | 내용                     |
| ------- | ---------------------- |
| API Key | 설정 페이지에서 발급한 API Key 값 |

***

## **요청 주소**

[https://api.groobee.io](https://api.groobee.io/)

***

## **공통 사항**

### **요청 방법**

Rest API 요청 시 Header에 x-api-key 키로 API Key를 값으로 포함해야 합니다.

```
curl --location --request GET 'https://api.groobee.io/<요청주소>' \
--header 'x-api-key: <발급 받은 API Key 값>'
```

* **API key 확인 방법**
  * <https://app.groobee.io/> 접속하여 계정 로그인
  * [설정 > 사이트 > 사이트 설정 > Key 관리](https://app.groobee.io/setting/main)에서 key 생성 후 확인 가능

### **응답 결과**

JSON으로 응답하며 형태는 아래를 참고해 주세요.

```
{
    "httpStatus": {
        "code": <http status code>,
        "reasonPhrase": <http status 내용>
    },
    "processCode": <성공여부>,
    "processValue": <요청한 엔드포인트의 응답값>
}

```

### **processCode 코드값**

| 코드 값  | 상태 | 설명                         |
| ----- | -- | -------------------------- |
| 0     | 성공 | -                          |
| -1000 | 실패 | 요청 시 Header에 x-api-key 미존재 |
| -1001 | 실패 | 고객사 미존재                    |
| -1002 | 실패 | 고객사 미승인 상태 (승인 필요)         |
| -1003 | 실패 | 고객사 계약기간 만료                |
| -9997 | 실패 | 데이터가 올바르지 않습니다.            |
| -9998 | 실패 | http 관련 에러                 |
| -9999 | 실패 | 요청 API 서버 에러               |

***

## **엔드 포인트**

### **상품 상태 코드**

| 코드 값 | 설명    |
| ---- | ----- |
| FS   | 판매중   |
| SS   | 판매 중지 |

<br>

### **상품 조회 API**

* 복수 요청 형태 및 데이터 : 조회하고자 하는 상품 코드값을 배열로 요청합니다.

| Method | URI       | 요청/응답 형식 |
| ------ | --------- | -------- |
| GET    | /v1/goods | JSON     |

```
[
    "상품코드값_1",
    "상품코드값_2"
    ...
]

```

* 단일 요청 형태

| Method | URI               | 요청/응답 형식 |
| ------ | ----------------- | -------- |
| GET    | /v1/goods/<상품코드값> | JSON     |

* 공통 응답 데이터

```
{
    "httpStatus": {
        "code": <http status code>,
        "reasonPhrase": <http status 내용>
    },
    "processCode": <성공여부>,
    "processValue": [
        {
            "goodsNm": <상풍명>,
            "goodsCd": <상품코드값>,
            "goodsImg": <상품 이미지 주소>,
            "goodsCateNm": <상품 카테고리명>,
            "goodsCate": <상품 카테고리>,
            "goodsPrc": <단품 가격>,
            "goodsSalePrc": <판매 가격>,
            "goodsStatusCd": <상품상태코드값>
        }
        ...
    ]
}
```

<br>

### **상품 등록 API**

* 요청 형태 및 데이터 : 등록할 상품 정보들을 배열로 요청합니다.

| Method | URI       | 요청/응답 형식 |
| ------ | --------- | -------- |
| POST   | /v1/goods | JSON     |

```
[
    {
        "goodsNm": <상풍명>,
        "goodsCd": <상품코드값>,
        "goodsImg": <상품 이미지 주소>,
        "goodsCateNm": <상품 카테고리명>,
        "goodsCate": <상품 카테고리>,
        "goodsPrc": <단품 가격>,
        "goodsSalePrc": <판매 가격>,
        "goodsStatusCd": <상품상태코드값>
    }
    ...
]
```

* 응답 데이터 : 성공 여부와 상관없이 processValue 키에 해당되는 값은 없습니다.

```
{
    "httpStatus": {
        "code": <http status code>,
        "reasonPhrase": <http status 내용>
    },
    "processCode": <성공여부>,
    "processValue": ""
}
```

<br>

### **상품 정보 변경 API**

{% hint style="warning" %}
상품 정보 키를 다 지정할 필요는 없으며, 변경하고자 하는 상품 정보 키만 등록해도 변경이 가능합니다.

예시) 상품명, 상품 이미지 주소만 변경하는 경우
{% endhint %}

```
{
	"goodsNm": <상풍명>,
	"goodsImg": <상품 이미지 주소>
}
```

* **복수 요청 형태 및 데이터**

| Method | URI       | 요청/응답 형식 |
| ------ | --------- | -------- |
| PUT    | /v1/goods | JSON     |

```
{
    <변경 하고자 하는 상품코드값> : {
        "goodsNm": <상풍명>,
        "goodsCd": <상품코드값>,
        "goodsImg": <상품 이미지 주소>,
        "goodsCateNm": <상품 카테고리명>,
        "goodsCate": <상품 카테고리>,
        "goodsPrc": <단품 가격>,
        "goodsSalePrc": <판매 가격>,
        "goodsStatusCd": <상품상태코드값>
    }
    ...
}
```

* **단일 요청 형태 및 데이터**

| Method | URI               | 요청/응답 형식 |
| ------ | ----------------- | -------- |
| PUT    | /v1/goods/<상품코드값> | JSON     |

```
{
    "goodsNm": <상풍명>,
    "goodsCd": <상품코드값>,
    "goodsImg": <상품 이미지 주소>,
    "goodsCateNm": <상품 카테고리명>,
    "goodsCate": <상품 카테고리>,
    "goodsPrc": <단품 가격>,
    "goodsSalePrc": <판매 가격>,
    "goodsStatusCd": <상품상태코드값>
}
```

<br>

* **공통 응답 데이터**

```
{
    "httpStatus": {
        "code": <http status code>,
        "reasonPhrase": <http status 내용>
    },
    "processCode": <성공여부>,
    "processValue": [
        {
            "goodsCd" : <상품코드>,
            "count" : <변경된 상품 데이터 수>
        }
        ...
    ]
}
```

### **상품 상태 변경 API**

* **요청 형태 및 데이터**

| Method | URI              | 요청/응답 형식 |
| ------ | ---------------- | -------- |
| PUT    | /v1/goods/status | JSON     |

```
[
    {
        "goodsCd" : <상품코드>,
        "goodsStatusCd" : <상품상태코드값>
    }
    ...
]
```

* **응답 데이터**

```
{
    "httpStatus": {
        "code": <http status code>,
        "reasonPhrase": <http status 내용>
    },
    "processCode": <성공여부>,
    "processValue": [
        {
            "goodsCd" : <상품코드>,
            "count" : <변경된 상품 데이터 수>
        }
        ...
    ]
}
```

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.groobee.ai/developer-guide/api-guide/goods.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
