# Инструмент Ozon
## Описание
Инструмент `ozon` — это gRPC-сервис на Go, который выступает в роли универсального клиента для **Ozon Seller API**. Он позволяет агенту выполнять аутентифицированные `POST` запросы к любой конечной точке Ozon API, предоставляя путь к конечной точке и JSON-полезную нагрузку.
Инструмент автоматически прикрепляет `Client-Id` и `Api-Key` из своего конфигурационного файла к каждому запросу.
## Параметры
Инструмент принимает следующие аргументы в виде JSON-объекта:
| Параметр | Тип | Обязательный | Описание |
|------------|----------|--------------|----------------------------------------------------------------------------|
| `endpoint` | `string` | **Да** | Путь к конечной точке API для вызова (например, `/v2/product/info`). |
| `payload` | `object` | **Да** | JSON-объект, представляющий тело запроса для отправки в Ozon API. |
## Ответ
* **Успешный запрос:** Если вызов API успешен (HTTP 200 OK), инструмент возвращает JSON-ответ от Ozon API напрямую.
* **Ошибка:** Если API возвращает статус-код, отличный от 200, учетные данные не настроены или возникает другая ошибка, инструмент возвращает сообщение об ошибке.
## Пример использования
Вот пример использования инструмента `ozon` для получения информации о конкретном товаре по его `product_id`. Это соответствует конечной точке `/v2/product/info` в документации Ozon Seller API.
**Запрос:**
```bash
curl -X POST http://localhost:8002/v1/tools:run \
-d '{
"name": "ozon",
"arguments": {
"endpoint": "/v2/product/info",
"payload": {
"product_id": 123456789
}
}
}'
```
**Успешный ответ (от Ozon API):**
```json
{
"result": {
"structValue": {
"fields": {
"result": {
"structValue": {
"fields": {
"id": { "numberValue": 123456789 },
"name": { "stringValue": "Пример названия товара" },
"offer_id": { "stringValue": "PROD-001" },
"barcode": { "stringValue": "A1B2C3D4E5" },
"price": { "stringValue": "1999.00" }
}
}
}
}
}
}
}
```
## Конфигурация
Инструменту требуется файл `config.json` с портом и учетными данными Ozon Seller API.
**Пример `config.json`:**
```json
{
"port": 50059,
"command": ["go", "run", "."],
"ozon_api": {
"client_id": "your-client-id-from-ozon",
"api_key": "your-api-key-from-ozon"
}
}
```
* `port`: Порт, на котором будет слушать gRPC-сервер инструмента.
* `command`: Команда и аргументы для запуска инструмента.
* `ozon_api`: Ваши учетные данные Ozon Seller API.
## Проверки состояния и логирование
* **Проверки состояния:** Реализует стандартный протокол gRPC Health Checking Protocol.
* **Логирование:** Использует структурированный JSON-логгер (`slog`) для наблюдаемости.
## Тестирование
Для тестирования инструмента вы можете запустить предоставленные интеграционные тесты. Перейдите в директорию инструмента и выполните:
```bash
go test ./...
```