# Инструмент Wildberries
## Описание
Инструмент `wildberries` — это универсальный gRPC-сервис на Go, который выступает в роли универсального клиента для **Wildberries API**. Он позволяет агенту выполнять аутентифицированные запросы к любой конечной точке Wildberries API, используя различные HTTP-методы (`GET`, `POST`, `PUT`, `DELETE`, `PATCH`).
Инструмент автоматически прикрепляет заголовок `Authorization` с API-ключом из своего конфигурационного файла к каждому запросу.
## Параметры
Инструмент принимает следующие аргументы в виде JSON-объекта:
| Параметр | Тип | Обязательный | Описание |
|----------------|----------|--------------|------------------------------------------------------------------------------------------------------|
| `method` | `string` | **Да** | HTTP-метод для использования (например, `GET`, `POST`). |
| `endpoint` | `string` | **Да** | Путь к конечной точке API, который должен начинаться с `/` (например, `/api/v3/orders`). |
| `query_params` | `object` | Нет | Необязательный JSON-объект с парами ключ-значение для отправки в качестве URL-параметров для `GET` запросов. |
| `json_body` | `object` | Нет | Необязательный JSON-объект или массив для тела запроса (для `POST`, `PUT`, `PATCH` запросов). |
## Ответ
* **Успешный запрос:** Если вызов API успешен, инструмент возвращает ответ от Wildberries API.
* Если ответ является валидным JSON, он возвращается как JSON-объект или массив.
* Если ответ не является JSON или пуст, возвращается сообщение об успехе.
* **Ошибка:** Если API возвращает ошибку, учетные данные не настроены или возникает другая ошибка, инструмент возвращает сообщение об ошибке.
## Пример использования
Вот пример использования инструмента `wildberries` для получения списка новых заказов. Это соответствует `GET`-запросу к конечной точке `/api/v3/orders` в документации Wildberries API.
**Запрос:**
```bash
curl -X POST http://localhost:8002/v1/tools:run \
-d '{
"name": "wildberries",
"arguments": {
"method": "GET",
"endpoint": "/api/v3/orders",
"query_params": {
"limit": 10,
"next": 0,
"dateFrom": 1672531200
}
}
}'
```
**Успешный ответ (от Wildberries API):**
```json
{
"result": {
"structValue": {
"fields": {
"next": { "numberValue": 10 },
"orders": {
"listValue": {
"values": [
{ "structValue": { "fields": { "id": { "numberValue": 12345 }, "article": { "stringValue": "PRODUCT-A" } } } },
{ "structValue": { "fields": { "id": { "numberValue": 12346 }, "article": { "stringValue": "PRODUCT-B" } } } }
]
}
}
}
}
}
}
```
## Конфигурация
Инструменту требуется файл `config.json` с его портом и вашим API-ключом Wildberries.
**Пример `config.json`:**
```json
{
"port": 50061,
"command": ["go", "run", "."],
"wildberries_api": {
"api_key": "your-standard-wildberries-api-key"
}
}
```
## Проверки состояния и логирование
* **Проверки состояния:** Реализует стандартный протокол gRPC Health Checking Protocol.
* **Логирование:** Использует структурированный JSON-логгер (`slog`) для наблюдаемости.
## Тестирование
Для тестирования инструмента вы можете запустить предоставленные интеграционные тесты. Перейдите в директорию инструмента и выполните:
```bash
go test ./...
```