Ozon Seller API Client
A Ozon Seller API client written in Golang
Ozon is a marketplace for small and medium enterprises to launch and grow their businesses in Russia.
Read full documentation
You can check list of supported endpoints
How to start
API
Get Client-Id and Api-Key in your seller profile here
Just add dependency to your project and you're ready to go.
go get github.com/diphantxm/ozon-api-client
A simple example on how to use this library:
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
ctx, _ := context.WithTimeout(context.Background(), testTimeout)
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)
}
}
Notifications
Ozon can send push-notifications to your REST server. There is an implementation of REST server that handles notifications in this library.
How to use:
package main
import (
"log"
"github.com/diphantxm/ozon-api-client/ozon/notifications"
)
func main() {
// Create server
port := 5000
server := notifications.NewNotificationServer(port)
// Register handlers passing message type and handler itself
server.Register(notifications.ChatClosedType, func(req interface{}) error {
notification := req.(*notifications.ChatClosed)
// Do something with the notification here...
log.Printf("chat %s has been closed\n", notification.ChatId)
return nil
})
// Run server
if err := server.Run(); err != nil {
log.Printf("error while running notification server: %s", err)
}
}
Contribution
If you need some endpoints ASAP, create an issue and list all the endpoints. I will add them to library soon.
Or you can implement them and contribute to the project. Contribution to the project is welcome.