# 회원 API v1.1.1

{% hint style="info" %}
**오프사이트 캠페인의 발송** 시 사용되는 회원의 정보를 그루비에 전송하는 API 입니다.&#x20;

[회원 API ](/developer-guide/api-guide/member.md)문서를 참고해 주세요.회원 API v1 과 v2는 혼용하여 사용할 수 없습니다.
{% endhint %}

## **연동 방식**

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 값>' 
```

### **응답 결과**

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

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

### **processCode 코드값**

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

***

## **엔드 포인트**

### **회원 공통**

**processCode 코드값**

| 코드 값  | 상태 | 설명                   |
| ----- | -- | -------------------- |
| -1005 | 실패 | 진행 중인 프로세스 있음        |
| -1006 | 실패 | 회원 ID가 올바르지 않습니다.    |
| -1007 | 실패 | 회원 전화번호가 올바르지 않습니다.  |
| -1012 | 실패 | 회원 SMS 수신동의 여부 필드 누락 |
| -1013 | 실패 | 회원 이름 길이 초과(20자 이하)  |

***

## **회원**

### **회원 정보 조회**

회원의 정보를 조회합니다.

* **요청 형태**

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

* **매개 변수**

쿼리 스트링으로 조회하며 아래 파라미터에서 1개 이상이 필수입니다.

| Parameter Name | Description |
| -------------- | ----------- |
| memberId       | 조회 회원 ID    |
| phoneNumber    | 조회 회원 전화번호  |

* **응답 데이터**

```
  {
    "httpStatus": { 
    "code": <http status code>,
    "reasonPhrase": <http status 내용>
    },
    "processCode": <성공 여부>, 
    "processValue": [
        {
        "memberId":<검색된 회원 ID>,
        "phoneNumber": <검색된 회원 전화번호 (저장된 형식과 무관하게 010-9999-1111 와 같이 하이픈이 있는 형식)>,
        "isReceive":<검색된 회원 수신 동의 여부(true | false)>,
        "name":<검색된 회원 이름>
        }
    ]
}
```

<br>

### **회원 정보 저장/수정**

회원 정보를 저장 및 수정합니다.

{% hint style="warning" %}
한 회원에 여러 전화번호가 있을 경우 요청한 번호로 모두 변경됩니다.
{% endhint %}

* **요청 형태**

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

* **매개 변수**

| Parameter        | Parameter Name                  | Description   | 필수 |
| ---------------- | ------------------------------- | ------------- | -- |
| users (max 1000) | memberId                        | 회원 ID         | O  |
|                  | phoneNumber                     | 회원 전화번호       | O  |
|                  | isReceive (Y = true, N = false) | 회원 수신 동의 여부   | O  |
|                  | name                            | 회원 이름(20자 이하) | X  |

* **요청 데이터**

등록할 회원 정보들을 배열로 요청합니다.

```
[ 
        {
            "memberId":<회원 ID>,
            "phoneNumber":<회원 전화번호>,
            "isReceive":<회원 수신 동의 여부>,
            "name":<회원 이름>
      }
      ...
]
```

* **응답 데이터**

성공 여부와 상관없이 processValue 키에 해당되는 값은 없습니다.

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

{% hint style="warning" %}

* isReceive 필드에 대한 값 미전송 시 '수신 거부' 로 응답합니다.
* isReceive가 '수신 거부' 상태일 경우 SMS와 브랜드 메시지(비친구 대상) 발송만 제한되며, 그외 캠페인은 수신 거부 여부와 관계없이 발송 가능합니다.
* 회원 정보 저장/수정 시 name 필드는에 대한 값을 미전송할 경우 데이터가 없는 상태로 응답합니다.
  {% endhint %}

### **회원 정보 삭제**

* **요청 형태**

| Method | URI           | 요청/응답 형식 |
| ------ | ------------- | -------- |
| DELETE | /v1/users/sms | JSON     |

* **매개 변수**

| Parameter        | Parameter Name | Description |
| ---------------- | -------------- | ----------- |
| users (max 1000) | memberId       | 회원 ID       |

* **요청 데이터**

등록할 회원 ID들을 배열로 요청합니다.

```
  [
	<회원 ID>, ... 
  ]
```

* **응답 데이터**

성공 여부와 상관없이 processValue 키에 해당되는 값은 없습니다.

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

### **회원 정보 삭제 : POST 방식 (신규)**

회원 정보를 삭제합니다.

* 입력된 회원의 ID를 기준으로 요청한 회원의 정보를 모두 삭제합니다.

* POST 요청으로 수행되며, 쿼리 파라미터 'delete' 를 인자로 추가합니다.

* 삭제 시 입력되었던 회원의 정보는 복구할 수 없습니다.

* **기본 정보**

| Method | URL                                          | 인증 방식   |
| ------ | -------------------------------------------- | ------- |
| POST   | <https://api.groobee.io/v1/users/sms?delete> | API Key |

* **요청 헤더**

| 이름           | 설명                             | 필수 |
| ------------ | ------------------------------ | -- |
| x-api-key    | x-api-key: ${x-api-key}        | O  |
| Content-Type | Content-Type: application/json | O  |

* **쿼리 파라미터**

| 이름     | 타입 | 설명         | 필수 | 비고                    |
| ------ | -- | ---------- | -- | --------------------- |
| delete | -  | 삭제 명령 파라미터 | O  | 파라미터 값(value)이 없어도 동작 |

* **요청 본문**

| 이름       | 타입     | 설명          | 필수 | 비고 |
| -------- | ------ | ----------- | -- | -- |
| memberId | String | 삭제할 회원의 아이디 | O  |    |

* **응답**

회원정보 '삭제' 응답은 성공/실패 시 모두 정상 응답하며 입력받은 회원 정보의 오류가 있으면 공통 에러코드에 정의한 에러 코드를 반환합니다.

***

## **예제**

### **요청**

```
curl -X POST "https://api.groobee.io/v1/users/sms" \ 
       -H "x-api-key: ${x-api-key}" \
       -H "Content-Type": application/json \
       -d '[
            {
              "memberId": "groobee",
            },
            {
              "memberId": "plateer",
           }
         ]'
```

### **응답(성공)**

```
  { 
        "httpStatus": 
            { "code": "200",
            "reasonPhrase": "OK"
        },
        "processCode": "0", 
        "processValue": [
        ]
}
```

### **응답(실패)**

* 데이터 오류가 있을 경우 실패 응답에 실패한 데이터 및 오류코드를 함께 응답합니다.

```
{
        "httpStatus": {
            "code": "503",
            "reasonPhrase": "Service Unavailable"
        },
        "processCode": "-1006",
        "processValue": ""
}
```


---

# 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/member/v1.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.
