Клиент Ozon Seller API на Golang

от автора

Зачем?

Как всем известно, Ozon предоставляет продавцам API для работы с площадкой. В возможности API входит весь функционал площадки, с помощью которого можно работать с карточками товаров, складами, заказами, продвижением своих карточек и даже чатом.

Для чего он нужен и как им можно пользоваться? Например, если вы продаете на нескольких площадках, то целесообразнее было бы хранить информацию о товаре в структурированном виде и добавлять их на площадки при помощи API. Так вы сэкономите время и убережете себя от ошибок. Также легко копировать карточки с одной площадки на другую. Или можно написать сайт с статистикой о продажах по категориям на основе данных продавцов, полученных при помощи API.

404 Not found

На просторах Github я не смог найти какой-либо поддержанной и полной клиентской библиотеки с API Ozon, поэтому я решил написать ее самостоятельно. Ее можно посмотреть на моем github. На момент написания этой статьи она еще находится на стадии добавления всех endpoints, поэтому хотелось бы получить какой-то фидбэк о данной библиотеке и узнать каков на нее спрос.

Как пользоваться

Для начала нужно получить Client-Id и Api-Key в своем личном кабинете продавца на ozon.

Затем необходимо добавить пакет при помощи:

go get github.com/diphantxm/ozon-api-client

Необходимо создать клиент, в который нужно передать полученные ранее Client-Id и Api-Key:

client := ozon.NewClient("my-client-id", "my-api-key")

Функционал библиотеки разделен по структурам. Например, чтобы создать карточку товара, необходимо обратиться к структуре Products в клиенте:

resp, err := client.Products().GetProductDetails(&ozon.GetProductDetailsParams{ ProductId: 123456789, })

В функцию передаем параметры запроса и получаем ответ от Ozon API.

Полный пример:

package main  import ( "fmt" "log" "net/http"  "github.com/diphantxm/ozon-api-client/ozon" )  func main() { // Create a client with your Client-Id and Api-Key // [Documentation]: https://docs.ozon.ru/api/seller/en/#tag/Auth client := ozon.NewClient("my-client-id", "my-api-key")  // Send request with parameters resp, err := client.Products().GetProductDetails(&ozon.GetProductDetailsParams{ ProductId: 123456789, }) if err != nil || resp.StatusCode != http.StatusOK { log.Fatalf("error when getting product details: %s", err) }  // Do some stuff for _, d := range resp.Result.Barcodes { fmt.Printf("Barcode %s\n", d) } }

На данный момент библиотеке находится в процессе реализации всех endpoint, поэтому какого-то функционала еще нет. Если вы хотели бы пользоваться такой библиотекой и вам нужны некоторые функции, можете оставить Issue с списков необходимых методов. Или можете реализовать их сами и отправить Pull Request. Вклад в развитие приветствуется 🙂

Ссылка на Github


ссылка на оригинал статьи https://habr.com/ru/post/724344/