❗️Аутентификация Яндекс Еды в системе Партнёра

Для авторизации pull-методов всегда используется OAuth 2.0, без refresh token. Партнёру необходимо настроить схему на своём сервере. Затем требуется передать доступы через менеджера, а именно:

  • адрес сервера для отправки запросов (только домен, IP-адреса не поддерживаются);
  • client_id;
  • client_secret.

Яндекс Еда с полученными доступами запрашивает токен, делая POST-запрос по адресу {host}/security/oauth/token. В параметрах grant_type и scope передаются значения client_credentials и read write соответственно.

Ожидаемый заголовок ответа Content-type: application/json.

С полученным токеном Еда выполняет следующие запросы, размещая его в заголовке как Authorization: Bearer token.

Пример запроса
curl --location --request POST 'https://test.ru/security/oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=abv123' \
--data-urlencode 'client_secret=456vba' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scope=read write'

Примечание

Заголовок Content-type в запросе и ответе отличаются.

Request

POST

/security/oauth/token

Body

application/x-www-form-urlencoded
{
  "client_id": "987",
  "client_secret": "g8bKdBiIR9MutCObuexDm7nsgkaXU",
  "grant_type": "client_credentials",
  "scope": "read write"
}

Name

Description

client_id

Type: string

Example: 987

client_secret

Type: string

Example: g8bKdBiIR9MutCObuexDm7nsgkaXU

grant_type

Type: string

Example: client_credentials

scope

Type: string

Example: read write

Responses

200 OK

Успешная аутентификация.

Body

application/json
{
  "access_token": "CObuexDm7nsgkaXUg8bKdBiIR9Mut",
  "expires_in": 300
}

Name

Description

access_token

Type: string

Example: example

expires_in

Type: integer

Время жизни токена в секундах. Дефолтные значения для nomenclature - 5 минут, для orders 1 час.

400 Bad Request

Ошибка в запросе. В ответе ожидается массив с объектом из списка ошибок.

Body

application/json
[
  {
    "code": 400,
    "description": "Description of error"
  }
]

Type: ErrorItem[]

ErrorItem

Name

Description

code

Type: integer

Согласованный с Яндекс Едой числовой код ошибки.

description

Type: string

Описание ошибки

Example: Description of error

Example
{
  "code": 400,
  "description": "Description of error"
}

500 Internal Server Error

Ошибка в запросе. В ответе ожидается массив с объектом из списка ошибок.

Body

application/json
[
  {
    "code": 400,
    "description": "Description of error"
  }
]

Type: ErrorItem[]

No longer supported, please use an alternative and newer version.