# API 액세스 토큰

API 액세스 토큰은 계정의 특정 프로젝트 또는 여러 프로젝트에 할당된 고유 식별자입니다. API를 통해 프로젝트를 관리하기 위해 계정을 인증하며, 계정 수정, 메시지 전송, 프로젝트 편집 등을 포함합니다.

## API 액세스 토큰 유형

Pushwoosh는 **서버(Server)**와 **디바이스(Device)** 두 가지 다른 API 액세스 토큰 유형을 제공합니다.

각 토큰 유형은 특정 API 범위에 대해서만 유효합니다. 잘못된 토큰을 사용하면 인증 오류가 발생합니다.

#### 서버 API 토큰

서버 API 토큰은 디바이스 API에 속한 메서드를 제외한 모든 API 메서드와 함께 사용됩니다. 요청 본문의 `auth` 필드에 포함되어야 합니다.

#### 디바이스 API 토큰

디바이스 API 토큰은 디바이스 API 메서드에서만 독점적으로 사용됩니다. `Authorization` 헤더를 사용하여 HTTP 요청 헤더에 포함되어야 합니다.
아래는 올바른 헤더 형식의 예입니다:

```
Authorization: Token <device_api_token>
```
`<device_api_token>`을 실제 디바이스 API 토큰 값으로 바꾸세요.

<Aside type="caution" title="디바이스 API 토큰이 필요한 메서드">

다음 API 메서드는 인증을 위해 **디바이스 API 토큰이 필요합니다**:
- [`registerDevice`](/ko/developer/api-reference/device-api/#registerdevice)
- [`unregisterDevice`](/ko/developer/api-reference/device-api/#unregisterdevice)
- [`deleteDevice`](/ko/developer/api-reference/device-api/#deletedevice)
- [`setTags`](/ko/developer/api-reference/device-api/#settags)
- [`getTags`](/ko/developer/api-reference/device-api/#gettags)
- [`setBadge`](/ko/developer/api-reference/device-api/#setbadge)
- [`applicationOpen`](/ko/developer/api-reference/device-api/#applicationopen)
- [`pushStat`](/ko/developer/api-reference/device-api/#pushstat)
- [`messageDeliveryEvent`](/ko/developer/api-reference/device-api/#messagedeliveryevent)
- [`registerUser`](/ko/developer/api-reference/user-centric-api/#registeruser)
- [`deleteUser`](/ko/developer/api-reference/user-centric-api/#deleteuser)
- [`postEvent`](/ko/developer/api-reference/user-centric-api/#postevent)
- [`registerEmail`](/ko/developer/api-reference/email-api/#registeremail)
- [`deleteEmail`](/ko/developer/api-reference/email-api/#deleteemail)
- [`setEmailTags`](/ko/developer/api-reference/email-api/#setemailtags)
- [`registerEmailUser`](/ko/developer/api-reference/email-api/#registeremailuser)
- [`getInboxMessages`](/ko/developer/api-reference/message-inbox/#getinboxmessages)
- [`inboxStatus`](/ko/developer/api-reference/message-inbox/#inboxstatus)
</Aside>

## API 액세스 토큰 생성 및 관리

Pushwoosh 제어판의 **API Access** 섹션에서 API 액세스 토큰을 보고, 생성하고, 관리할 수 있습니다. 여기에 액세스하려면 **Settings → API Access**로 이동하세요.
![Pushwoosh 데모 앱 토큰](/api-reference-api-access-token-1.webp)

기본적으로 각 계정에는 서버 토큰으로 설정된 **Pushwoosh Demo App**이라는 토큰이 포함되어 있습니다.

### 새 API 액세스 토큰 생성

새 API 액세스 토큰을 생성하려면:

1. 제어판의 **API Access** 섹션으로 이동합니다.

2. **Generate New Token**을 클릭합니다.

3. 나타나는 창에서 토큰 유형을 선택합니다:

   * [**서버**](#server-api-token) 대부분의 API 메서드(디바이스 API 메서드 제외)에 사용됩니다.

   * [**디바이스**](#device-api-token) 디바이스 API 메서드에만 사용됩니다.

4. 토큰의 이름을 입력합니다.

5. **Generate**를 클릭하여 토큰을 생성합니다.

![새 토큰 생성](/api-reference-api-access-token-4.webp)

> **중요:** Pushwoosh 제어판에서 토큰에 올바른 앱에 대한 액세스 권한을 부여해야 합니다. [자세히 알아보기](#edit-token)

새 토큰이 API Access 목록에 나타납니다. 거기에서 API 요청에 사용할 값을 복사하거나 필요에 따라 액세스 권한을 관리할 수 있습니다.

### 토큰 관리

기존 API 토큰을 관리하려면 **API Access** 섹션의 토큰 항목 옆에 있는 **세 점 메뉴(⋮)**를 클릭하세요.

![토큰 관리](/api-reference-api-access-token-2.webp)

다음 옵션을 사용할 수 있습니다:

#### 모든 프로젝트에 액세스 권한 부여

토큰에 계정의 모든 프로젝트에 대한 액세스 권한을 부여합니다. 이를 통해 모든 프로젝트에서 API를 완전히 사용할 수 있습니다.

<Aside type="tip">
필요한 토큰에만 전체 액세스 권한을 부여하세요. 이는 데이터를 안전하게 보호하고 액세스를 제어하는 데 도움이 됩니다.
</Aside>

#### 모든 프로젝트에서 액세스 권한 철회

계정의 모든 프로젝트에 대한 토큰의 액세스 권한을 제거합니다. 액세스 권한이 다시 부여될 때까지 토큰은 더 이상 API를 사용할 수 없습니다.

#### 토큰 편집

**Edit API Token Permissions** 화면이 열리며, 여기서 다음을 수행할 수 있습니다:

* 토큰 이름 변경

* 토큰 값 복사

* 목록에서 프로젝트를 선택하거나 선택 취소하여 토큰이 액세스할 수 있는 프로젝트를 선택

![토큰 관리](/api-reference-api-access-token-3.webp)

변경을 마친 후 **Save**를 클릭하여 적용합니다.

<Aside type="tip">
토큰에는 필요한 프로젝트에 대한 액세스 권한만 부여하세요. 이는 계정을 보호하고 각 토큰이 할 수 있는 작업을 제어하는 데 도움이 됩니다.
</Aside>

#### 토큰 삭제

계정에서 토큰을 영구적으로 제거합니다.

<Aside type="caution">

이 작업은 되돌릴 수 없습니다. 삭제된 토큰은 복구할 수 없습니다. 삭제하기 전에 토큰이 더 이상 사용되지 않는지 확인하세요.

</Aside>

## API 요청 인증

API 요청을 인증하려면 호출하는 API 메서드의 유형에 따라 올바른 유형의 API 액세스 토큰을 사용하세요:

#### 서버 API 메서드의 경우

요청 본문의 "auth" 필드에 토큰을 포함시키세요:

예:

```json
{
  "request": {
    "application": "XXXXX-XXXXX",
    "auth": "yxoPUlwqm…………pIyEX4H", // 여기에 서버 토큰을 붙여넣으세요
    "notifications": [{
      "send_date": "now",
      "content": "Hello world"
    }]
  }
}
```

#### 디바이스 API 메서드의 경우

**디바이스 토큰**을 사용하세요. 다음 형식을 사용하여 HTTP 요청 헤더에 포함시키세요:

```
Authorization: Token <device_api_token>
```

`<device_api_token>`을 실제 토큰 값으로 바꾸세요.
<Aside type="caution">
사용 중인 API 메서드와 토큰 유형이 일치하는지 확인하세요. 토큰이 필요한 유형과 일치하지 않으면 요청은 인증 오류를 반환합니다.
</Aside>