diff --git a/ozon/finance.go b/ozon/finance.go index da6ab85..557573c 100644 --- a/ozon/finance.go +++ b/ozon/finance.go @@ -152,7 +152,7 @@ type ReturnCommission struct { // // Report is returned no later than the 5th day of the next month func (c Finance) ReportOnSoldProducts(ctx context.Context, params *ReportOnSoldProductsParams) (*ReportOnSoldProductsResponse, error) { - url := "/v1/finance/realization" + url := "/v2/finance/realization" resp := &ReportOnSoldProductsResponse{} diff --git a/ozon/products.go b/ozon/products.go index 4089fdb..210fcd3 100644 --- a/ozon/products.go +++ b/ozon/products.go @@ -13,13 +13,11 @@ type Products struct { } type GetStocksInfoParams struct { - // Identifier of the last value on the page. Leave this field blank in the first request. - // - // To get the next values, specify last_id from the response of the previous request. - LastId string `json:"last_id"` + // Cursor for the next data sample + Cursor string `json:"cursor"` - // Number of values per page. Minimum is 1, maximum is 1000 - Limit int64 `json:"limit"` + // Limit on number of entries in a reply. Default value is 1000. Maximum value is 1000 + Limit int32 `json:"limit"` // Filter by product Filter GetStocksInfoFilter `json:"filter"` @@ -34,20 +32,24 @@ type GetStocksInfoFilter struct { // Filter by product visibility Visibility string `json:"visibility,omitempty"` + + // Products at the “Economy” tariff + WithQuant GetStocksInfoFilterWithQuant `json:"with_quant"` } -type GetStocksInfoResponse struct { - core.CommonResponse +type GetStocksInfoFilterWithQuant struct { + // Active economy products + Created bool `json:"created"` - // Method Result - Result GetStocksInfoResult `json:"result"` + // Economy products in all statuses + Exists bool `json:"exists"` } -type GetStocksInfoResult struct { - // Identifier of the last value on the page - // - // To get the next values, specify the recieved value in the next request in the last_id parameter - LastId string `json:"last_id"` +type GetStocksInfoResponse struct { + core.CommonResponse + + // Cursor for the next data sample + Cursor string `json:"cursor"` // The number of unique products for which information about stocks is displayed Total int32 `json:"total"` @@ -76,6 +78,12 @@ type GetStocksInfoResultItemStock struct { // Warehouse type Type string `json:"type" default:"ALL"` + + // Packaging type + ShipmentType string `json:"shipment_type"` + + // Product identifier in the Ozon system, SKU + SKU int64 `json:"sku"` } // Returns information about the quantity of products in stock: @@ -84,7 +92,7 @@ type GetStocksInfoResultItemStock struct { // // * how many are reserved by customers. func (c Products) GetStocksInfo(ctx context.Context, params *GetStocksInfoParams) (*GetStocksInfoResponse, error) { - url := "/v3/product/info/stocks" + url := "/v4/product/info/stocks" resp := &GetStocksInfoResponse{} diff --git a/ozon/products_test.go b/ozon/products_test.go index 13532a2..e1bb509 100644 --- a/ozon/products_test.go +++ b/ozon/products_test.go @@ -24,7 +24,7 @@ func TestGetStocksInfo(t *testing.T) { map[string]string{"Client-Id": "my-client-id", "Api-Key": "my-api-key"}, &GetStocksInfoParams{ Limit: 100, - LastId: "", + Cursor: "", Filter: GetStocksInfoFilter{ OfferId: []string{"136834"}, ProductId: []int64{214887921}, @@ -32,28 +32,23 @@ func TestGetStocksInfo(t *testing.T) { }, }, `{ - "result": { - "items": [ - { - "product_id": 214887921, - "offer_id": "136834", - "stocks": [ - { - "type": "fbs", - "present": 170, - "reserved": 0 - }, - { - "type": "fbo", - "present": 0, - "reserved": 0 - } - ] - } - ], - "total": 1, - "last_id": "anVsbA==" - } + "cursor": "string", + "items": [ + { + "offer_id": "string", + "product_id": 123, + "stocks": [ + { + "present": 0, + "reserved": 0, + "shipment_type": "SHIPMENT_TYPE_GENERAL", + "sku": 0, + "type": "string" + } + ] + } + ], + "total": 0 }`, }, // Test No Client-Id or Api-Key @@ -85,14 +80,14 @@ func TestGetStocksInfo(t *testing.T) { } if resp.StatusCode == http.StatusOK { - if len(resp.Result.Items) > int(test.params.Limit) { + if len(resp.Items) > int(test.params.Limit) { t.Errorf("Amount of items in response cannot be bigger than limit") } - if len(resp.Result.Items) > 0 { - if resp.Result.Items[0].ProductId == 0 { + if len(resp.Items) > 0 { + if resp.Items[0].ProductId == 0 { t.Errorf("Product id cannot be 0") } - if resp.Result.Items[0].OfferId == "" { + if resp.Items[0].OfferId == "" { t.Errorf("Offer id cannot be empty") } }