initial
This commit is contained in:
217
ozon/products.go
Normal file
217
ozon/products.go
Normal file
@@ -0,0 +1,217 @@
|
||||
package ozon
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
core "github.com/diphantxm/ozon-api-client"
|
||||
)
|
||||
|
||||
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,omitempty"`
|
||||
|
||||
// Number of values per page. Minimum is 1, maximum is 1000
|
||||
Limit int64 `json:"limit,omitempty"`
|
||||
|
||||
// Filter by product
|
||||
Filter GetStocksInfoFilter `json:"filter,omitempty"`
|
||||
}
|
||||
|
||||
type GetStocksInfoFilter struct {
|
||||
// Filter by the offer_id parameter. It is possible to pass a list of values
|
||||
OfferId string `json:"offer_id,omitempty"`
|
||||
|
||||
// Filter by the product_id parameter. It is possible to pass a list of values
|
||||
ProductId int64 `json:"product_id,omitempty"`
|
||||
|
||||
// Filter by product visibility
|
||||
Visibility string `json:"visibility,omitempty"`
|
||||
}
|
||||
|
||||
type GetStocksInfoResponse struct {
|
||||
core.CommonResponse
|
||||
|
||||
// Method Result
|
||||
Result GetStocksInfoResponseResult `json:"result,omitempty"`
|
||||
}
|
||||
|
||||
type GetStocksInfoResponseResult 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,omitempty"`
|
||||
|
||||
// The number of unique products for which information about stocks is displayed
|
||||
Total int32 `json:"total,omitempty"`
|
||||
|
||||
// Product details
|
||||
Items []GetStocksInfoResponseItem `json:"items,omitempty"`
|
||||
}
|
||||
|
||||
type GetStocksInfoResponseItem struct {
|
||||
// Product identifier in the seller's system
|
||||
OfferId string `json:"offer_id,omitempty"`
|
||||
|
||||
// Product identifier
|
||||
ProductId int64 `json:"product_id,omitempty"`
|
||||
|
||||
// Stock details
|
||||
Stocks []GetStocksInfoResponseStock `json:"stocks,omitempty"`
|
||||
}
|
||||
|
||||
type GetStocksInfoResponseStock struct {
|
||||
// In a warehouse
|
||||
Present int32 `json:"present,omitempty"`
|
||||
|
||||
// Reserved
|
||||
Reserved int32 `json:"reserved,omitempty"`
|
||||
|
||||
// Warehouse type
|
||||
Type string `json:"type,omitempty" default:"ALL"`
|
||||
}
|
||||
|
||||
func (c Client) GetStocksInfo(params *GetStocksInfoParams) (*GetStocksInfoResponse, error) {
|
||||
url := "/v3/product/info/stocks"
|
||||
|
||||
resp := &GetStocksInfoResponse{}
|
||||
|
||||
response, err := c.client.Request(http.MethodPost, url, params, resp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response.CopyCommonResponse(&resp.CommonResponse)
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
type GetProductDetailsParams struct {
|
||||
OfferId string `json:"offer_id"`
|
||||
ProductId int64 `json:"product_id"`
|
||||
SKU int64 `json:"sku"`
|
||||
}
|
||||
|
||||
type GetProductDetailsResponse struct {
|
||||
core.CommonResponse
|
||||
|
||||
Result GetProductDetailsResponseResult `json:"Result"`
|
||||
}
|
||||
|
||||
type GetProductDetailsResponseResult struct {
|
||||
Barcode string `json:"barcode"`
|
||||
Barcodes []string `json:"barcodes"`
|
||||
BuyboxPrice string `json:"buybox_price"`
|
||||
CategoryId int64 `json:"category_id"`
|
||||
ColorImage string `json:"color_image"`
|
||||
Commissions []GetProductDetailsResponseCommission `json:"commissions"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
FBOSKU int64 `json:"fbo_sku"`
|
||||
FBSSKU int64 `json:"fbs_sku"`
|
||||
Id int64 `json:"id"`
|
||||
Images []string `json:"images"`
|
||||
PrimaryImage string `json:"primary_image"`
|
||||
Images360 []string `json:"images360"`
|
||||
HasDiscountedItem bool `json:"has_discounted_item"`
|
||||
IsDiscounted bool `json:"is_discounted"`
|
||||
DiscountedStocks GetProductDetailsResponseDiscountedStocks `json:"discounted_stocks"`
|
||||
IsKGT bool `json:"is_kgt"`
|
||||
IsPrepayment bool `json:"is_prepayment"`
|
||||
IsPrepaymentAllowed bool `json:"is_prepayment_allowed"`
|
||||
CurrencyCode string `json:"currency_code"`
|
||||
MarketingPrice string `json:"marketing_price"`
|
||||
MinOzonPrice string `json:"min_ozon_price"`
|
||||
MinPrice string `json:"min_price"`
|
||||
Name string `json:"name"`
|
||||
OfferId string `json:"offer_id"`
|
||||
OldPrice string `json:"old_price"`
|
||||
PremiumPrice string `json:"premium_price"`
|
||||
Price string `json:"price"`
|
||||
PriceIndex string `json:"price_idnex"`
|
||||
RecommendedPrice string `json:"recommended_price"`
|
||||
Status GetProductDetailsResponseStatus `json:"status"`
|
||||
Sources []GetProductDetailsResponseSource `json:"sources"`
|
||||
Stocks GetProductDetailsResponseStocks `json:"stocks"`
|
||||
UpdatedAt string `json:"updated_at"`
|
||||
VAT string `json:"vat"`
|
||||
VisibilityDetails GetProductDetailsResponseDetails `json:"visibility_details"`
|
||||
Visible bool `json:"visible"`
|
||||
VolumeWeight float64 `json:"volume_weights"`
|
||||
}
|
||||
|
||||
type GetProductDetailsResponseCommission struct {
|
||||
DeliveryAmount float64 `json:"deliveryAmount"`
|
||||
MinValue float64 `json:"minValue"`
|
||||
Percent float64 `json:"percent"`
|
||||
ReturnAmount float64 `json:"returnAmount"`
|
||||
SaleSchema string `json:"saleSchema"`
|
||||
Value float64 `json:"value"`
|
||||
}
|
||||
|
||||
type GetProductDetailsResponseDiscountedStocks struct {
|
||||
Coming int32 `json:"coming"`
|
||||
Present int32 `json:"present"`
|
||||
Reserved int32 `json:"reserved"`
|
||||
}
|
||||
|
||||
type GetProductDetailsResponseStatus struct {
|
||||
State string `json:"state"`
|
||||
StateFailed string `json:"state_failed"`
|
||||
ModerateStatus string `json:"moderate_status"`
|
||||
DeclineReasons []string `json:"decline_reasons"`
|
||||
ValidationsState string `json:"validation_state"`
|
||||
StateName string `json:"state_name"`
|
||||
StateDescription string `json:"state_description"`
|
||||
IsFailed bool `json:"is_failed"`
|
||||
IsCreated bool `json:"is_created"`
|
||||
StateTooltip string `json:"state_tooltip"`
|
||||
ItemErrors []GetProductDetailsResponseItemError `json:"item_errors"`
|
||||
StateUpdatedAt string `json:"state_updated_at"`
|
||||
}
|
||||
|
||||
type GetProductDetailsResponseItemError struct {
|
||||
Code string `json:"code"`
|
||||
State string `json:"state"`
|
||||
Level string `json:"level"`
|
||||
Description string `json:"description"`
|
||||
Field string `json:"field"`
|
||||
AttributeId int64 `json:"attribute_id"`
|
||||
AttributeName string `json:"attribute_name"`
|
||||
OptionalDescriptionElements GetProductDetailsResponseOptionalDescriptionElements `json:"optional_description_elements"`
|
||||
}
|
||||
|
||||
type GetProductDetailsResponseOptionalDescriptionElements struct {
|
||||
PropertyName string `json:"property_name"`
|
||||
}
|
||||
|
||||
type GetProductDetailsResponseSource struct {
|
||||
IsEnabled bool `json:"is_enabled"`
|
||||
SKU int64 `json:"sku"`
|
||||
Source string `json:"source"`
|
||||
}
|
||||
|
||||
type GetProductDetailsResponseStocks struct {
|
||||
Coming int32 `json:"coming"`
|
||||
Present int32 `json:"present"`
|
||||
Reserved int32 `json:"reserved"`
|
||||
}
|
||||
|
||||
type GetProductDetailsResponseDetails struct {
|
||||
ActiveProduct bool `json:"active_product"`
|
||||
HasPrice bool `json:"has_price"`
|
||||
HasStock bool `json:"has_stock"`
|
||||
}
|
||||
|
||||
func (c Client) GetProductDetails(params *GetProductDetailsParams) (*GetProductDetailsResponse, error) {
|
||||
url := "/v2/product/info"
|
||||
|
||||
resp := &GetProductDetailsResponse{}
|
||||
|
||||
response, err := c.client.Request(http.MethodPost, url, params, resp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response.CopyCommonResponse(&resp.CommonResponse)
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
Reference in New Issue
Block a user