92 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Ozon Seller API Client
 | 
						|
A Ozon Seller API client written in Golang
 | 
						|
 | 
						|
[](https://coveralls.io/github/diPhantxm/ozon-api-client)
 | 
						|

 | 
						|
 | 
						|
[Ozon](https://ozon.ru) is a marketplace for small and medium enterprises to launch and grow their businesses in Russia.
 | 
						|
 | 
						|
Read full [documentation](https://docs.ozon.ru/api/seller/en/#tag/Introduction)
 | 
						|
 | 
						|
## How to start
 | 
						|
### API
 | 
						|
Get Client-Id and Api-Key in your seller profile [here](https://seller.ozon.ru/app/settings/api-keys?locale=en)
 | 
						|
 | 
						|
Just add dependency to your project and you're ready to go.
 | 
						|
```bash
 | 
						|
go get git.denco.store/fakz9/ozon-api-client
 | 
						|
```
 | 
						|
A simple example on how to use this library:
 | 
						|
```Golang
 | 
						|
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
	"fmt"
 | 
						|
	"log"
 | 
						|
	"net/http"
 | 
						|
 | 
						|
	"git.denco.store/fakz9/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
 | 
						|
	opts := []ozon.ClientOption{
 | 
						|
		ozon.WithAPIKey("api-key"),
 | 
						|
		ozon.WithClientId("client-id"),
 | 
						|
	}
 | 
						|
	c := ozon.NewClient(opts...)
 | 
						|
 | 
						|
	// Send request with parameters
 | 
						|
	resp, err := client.Products().GetProductDetails(context.Background(), &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.
 | 
						|
 | 
						|
[Official documentation](https://docs.ozon.ru/api/seller/en/#tag/push_intro)
 | 
						|
 | 
						|
How to use:
 | 
						|
```Golang
 | 
						|
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"log"
 | 
						|
 | 
						|
	"git.denco.store/fakz9/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)
 | 
						|
	}
 | 
						|
}
 | 
						|
```
 |