# 사용자 중심 API

## registerUser

`POST` `https://api.pushwoosh.com/json/1.3/registerUser`

외부 사용자 ID를 지정된 기기와 연결합니다.

#### 요청 헤더

| 이름 | 필수 | 값 | 설명 |
|---------------|----------|---------------|------------------------------------------------------------|
| Authorization | 예 | Token `XXXX` | Device API에 접근하기 위한 [API Device Token](/ko/developer/api-reference/api-access-token/#device-api-token)입니다. `XXXX`를 실제 Device API 토큰으로 교체하세요. |

#### 요청 본문

| 이름 | 필수 | 유형 | 설명 |
| ----------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------ |
| userId | 아니요 | string | 기기와 연결할 [User ID](/ko/developer/api-reference/api-identifiers/#user-id)입니다. 비어 있는 경우 hwid를 사용합니다. |
| application | 예 | string | [Pushwoosh 애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code) |
| hwid | 예 | string | [Pushwoosh HWID](/ko/developer/api-reference/api-identifiers/#hardware-id) |
| tz_offset | 아니요 | integer | 기기의 시간대 오프셋(초 단위)입니다. |
| device_type| 아니요 | integer | [기기 유형](/ko/developer/api-reference/api-identifiers/#device-type)입니다. 가능한 값은 `/registerDevice`를 참조하세요. |

나중에 [`/createMessage`](/ko/developer/api-reference/messages-api/#createmessage) API 호출(_users_ 매개변수)에서 사용할 수 있습니다.\
푸시 토큰을 받기 전과 [`/registerDevice`](/ko/developer/api-reference/device-api/#registerdevice)를 호출하기 전에 이 함수를 호출할 수 있습니다.

#### 요청 예시

```json
{
  "request": {
    "userId": "user_3078a",                     // 선택 사항. 비어 있는 경우 hwid 사용
    "application": "XXXXX-XXXXX",               // 필수. Pushwoosh 애플리케이션 코드
    "hwid": "8f65b16df378e7a6bece9614e1530fb2", // 필수. 하드웨어 기기 ID
    "tz_offset": -3600,                         // 선택 사항. 시간대 오프셋(초 단위)
    "device_type": 3                            // 선택 사항. 기기 유형, /registerDevice 참조
                                                //           기기 유형에 대해
  }
}
```

#### 응답 예시

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200, 
  "status_message": "OK",
  "response": null
}
```
</TabItem>
</Tabs>

<Aside type="note">
이메일의 경우, [`/registerEmailUser`](/ko/developer/api-reference/email-api/#registeremailuser)를 호출하세요.
</Aside>

## deleteUser

`POST` `https://api.pushwoosh.com/api/v2/device-api/deleteUser`

애플리케이션 내에서 지정된 [User ID](/ko/developer/api-reference/api-identifiers/#user-id)와 연결된 사용자와 모든 기기를 삭제합니다. 요청은 비동기적으로 처리되며, 삭제 요청이 처리되도록 수락되는 즉시 엔드포인트는 `200 OK`를 반환합니다.

#### 요청 헤더

| 이름 | 필수 | 값 | 설명 |
|---------------|----------|------------------|------------------------------------------------------------|
| Authorization | 예 | Token `XXXX` | Device API에 접근하기 위한 [API Device Token](/ko/developer/api-reference/api-access-token/#device-api-token)입니다. `XXXX`를 실제 Device API 토큰으로 교체하세요. |
| Content-Type | 예 | application/json | |

#### 요청 본문

| 이름 | 필수 | 유형 | 설명 |
| ----------- | -------- | ------ | --------------------------------------------------------------------------------------------------------------- |
| application | 예 | string | [Pushwoosh 애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code) |
| user_id | 예 | string | 삭제할 [User ID](/ko/developer/api-reference/api-identifiers/#user-id)입니다. 지정된 애플리케이션에서 이 사용자와 연결된 모든 기기가 제거됩니다. |


#### 요청 예시

```json
{
  "application": "XXXXX-XXXXX",   // 필수. Pushwoosh 애플리케이션 코드
  "user_id": "user_3078a"         // 필수. 삭제할 User ID
}
```

#### 응답 예시

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": null
}
```
</TabItem>
</Tabs>

##### 상태 코드

| HTTP 상태 코드 | status_code | 설명 |
| ---------------- | ------------ | -------------------------------------------------- |
| 200 | 200 | 삭제 요청 수락됨 |
| 200 | 210 | 인수 오류. 자세한 내용은 status_message를 참조하세요. |
| 400 | N/A | 잘못된 형식의 요청 문자열 |
| 401 | N/A | Authorization 토큰이 없거나 유효하지 않음 |
| 500 | 500 | 내부 오류 |

## postEvent

`POST` `https://api.pushwoosh.com/json/1.3/postEvent`

이벤트를 트리거합니다.

#### 요청 헤더

| 이름 | 필수 | 값 | 설명 |
|---------------|----------|---------------|------------------------------------------------------------|
| Authorization | 예 | Token `XXXX` | Device API에 접근하기 위한 [API Device Token](/ko/developer/api-reference/api-access-token/#device-api-token)입니다. `XXXX`를 실제 Device API 토큰으로 교체하세요. |


#### 요청 본문

| 이름 | 필수 | 유형 | 설명 |
| ---------------- | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| hwid | 예 | string | /registerDevice 요청에 사용된 [하드웨어 기기 ID](/ko/developer/api-reference/api-identifiers/#hardware-id)입니다. 이벤트를 트리거한 사용자를 식별하기 위해 'userId'와 함께 사용할 수 있습니다. |
| application | 예 | string | [Pushwoosh 애플리케이션 코드](/ko/developer/api-reference/api-identifiers/#application-code) |
| event | 예 | string | Pushwoosh Control Panel에서 생성된 것과 정확히 동일한 [이벤트 이름](/ko/developer/api-reference/api-identifiers/#event-name)입니다. |
| attributes | 예 | object | 이벤트 속성을 포함하는 JSON 객체입니다. 전달할 속성이 없는 경우 비워 둡니다. |
| timestampUTC | 아니요 | integer | UTC 타임스탬프입니다. |
| timestampCurrent | 아니요 | integer | 현지 시간 타임스탬프입니다. |
| userId | 예 | string | 이벤트를 트리거한 사용자와 연결된 [User ID](/ko/developer/api-reference/api-identifiers/#user-id)입니다. HWID로 대체하거나 함께 사용할 수 있습니다. |
| device_type | 아니요 | integer | [가능한 값 보기](/ko/developer/api-reference/api-identifiers/#device-type) |

요청의 이벤트 이름은 Pushwoosh Control Panel의 이벤트 이름과 일치해야 합니다. 이벤트에 속성이 없는 경우 "attributes" 속성은 비어 있을 수 있지만(생략 불가) 생략할 수 없습니다.

#### 요청 예시

```json
{
  "request":{ 
    "hwid": "8f65b16df378e7a6bece9614e1530fb2", // 필수. /registerDevice API에서 사용되는 하드웨어 기기 ID.
                                                //           userId와 함께 사용하여
                                                //           이벤트를 트리거한 사용자를 식별할 수 있습니다.
    "application": "XXXXX-XXXXX",               // 필수. Pushwoosh 애플리케이션 코드
    "event": "activityCompleted",               // 필수. Pushwoosh Control Panel에서 생성된 것과 정확히 동일한 이벤트 이름
    "attributes": {                             // 필수. 전달할 속성이 없는 경우 비워 둡니다. 
      "login": "facebook",
      "success": "yes",
      "internet": "wifi"
    },
    "timestampUTC": 1435228403,                 // 선택 사항. UTC 타임스탬프
    "timestampCurrent": 1435253603,             // 선택 사항. 현지 시간 타임스탬프
    "userId": "someuser@user.com",              // 필수. 식별에 사용되는 사용자 ID
                                                //           여러 기기의 사용자. 다음으로 대체 가능
                                                //           하거나 HWID와 함께 사용할 수 있습니다.
    "device_type": 1                            // 선택 사항.
  }
}

```

#### 응답 예시

<Tabs>
<TabItem label="200">
```json
{
  "status_code": 200,
  "status_message": "OK",
  "response": {
    "code": "61BC9-84DD0"
  }
}
```
</TabItem>
</Tabs>