218 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			218 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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
 | 
						|
}
 |