Зачем?
Как всем известно, 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. Вклад в развитие приветствуется :)