# Токен доступа API

Токен доступа API — это уникальный идентификатор, присваиваемый одному или нескольким проектам в вашей учетной записи. Он аутентифицирует вашу учетную запись для управления проектами через API, включая изменение учетной записи, отправку сообщений, редактирование проектов и т. д.

## Типы токенов доступа API

Pushwoosh предоставляет два различных типа токенов доступа API: **серверный** (Server) и **для устройств** (Device).

Каждый тип токена действителен только для своей конкретной области применения API. Если используется неверный токен, произойдет ошибка аутентификации.

#### Серверный токен API

Серверный токен API используется со всеми методами API, за исключением тех, которые относятся к API устройств. Он должен быть включен в тело запроса в поле `auth`.

#### Токен API устройства

Токен API устройства используется исключительно с методами API устройств. Он должен быть включен в заголовки HTTP-запроса с использованием заголовка `Authorization`.
Ниже приведен пример правильного формата заголовка:

```
Authorization: Token <device_api_token>
```
Замените `<device_api_token>` на фактическое значение вашего токена API устройства.

<Aside type="caution" title="Методы, требующие токен API устройства">

Следующие методы API **требуют токен API устройства** для авторизации:
- [`registerDevice`](/ru/developer/api-reference/device-api/#registerdevice)
- [`unregisterDevice`](/ru/developer/api-reference/device-api/#unregisterdevice)
- [`deleteDevice`](/ru/developer/api-reference/device-api/#deletedevice)
- [`setTags`](/ru/developer/api-reference/device-api/#settags)
- [`getTags`](/ru/developer/api-reference/device-api/#gettags)
- [`setBadge`](/ru/developer/api-reference/device-api/#setbadge)
- [`applicationOpen`](/ru/developer/api-reference/device-api/#applicationopen)
- [`pushStat`](/ru/developer/api-reference/device-api/#pushstat)
- [`messageDeliveryEvent`](/ru/developer/api-reference/device-api/#messagedeliveryevent)
- [`registerUser`](/ru/developer/api-reference/user-centric-api/#registeruser)
- [`deleteUser`](/ru/developer/api-reference/user-centric-api/#deleteuser)
- [`postEvent`](/ru/developer/api-reference/user-centric-api/#postevent)
- [`registerEmail`](/ru/developer/api-reference/email-api/#registeremail)
- [`deleteEmail`](/ru/developer/api-reference/email-api/#deleteemail)
- [`setEmailTags`](/ru/developer/api-reference/email-api/#setemailtags)
- [`registerEmailUser`](/ru/developer/api-reference/email-api/#registeremailuser)
- [`getInboxMessages`](/ru/developer/api-reference/message-inbox/#getinboxmessages)
- [`inboxStatus`](/ru/developer/api-reference/message-inbox/#inboxstatus)
</Aside>

## Создание и управление токенами доступа API

Вы можете просматривать, создавать и управлять своими токенами доступа API в разделе **API Access** Панели управления Pushwoosh. Чтобы получить к нему доступ, перейдите в **Settings → API Access**.
![Токен Pushwoosh Demo App](/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", // paste your server token here
    "notifications": [{
      "send_date": "now",
      "content": "Hello world"
    }]
  }
}
```

#### Для методов API устройства

Используйте **токен устройства**. Включите его в заголовок HTTP-запроса в следующем формате:

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

Замените `<device_api_token>` на фактическое значение вашего токена.
<Aside type="caution">
Убедитесь, что тип токена соответствует используемому методу API. Если токен не соответствует требуемому типу, запрос вернет ошибку аутентификации.
</Aside>